:root{color-scheme:dark;--bg:#102f2b;--bg-deep:#09241f;--panel:#1b3c34;--panel-2:#23473b;--cream:#fff7e6;--ink:#17372b;--mint:#c6eea3;--muted:#a9bbb0;--line:rgba(224,238,211,.15);--gold:#e9be72;--red:#bd4053;--radius:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--cream);min-width:320px}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--mint);outline-offset:3px}button{color:inherit}h1,h2,h3,p{margin:0}h1,h2{letter-spacing:-.045em}p{line-height:1.55}button svg{pointer-events:none}.app-shell{max-width:1120px;margin:0 auto;padding:calc(22px + env(safe-area-inset-top)) 28px calc(100px + env(safe-area-inset-bottom));min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:30px}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--cream)}.brand img{height:46px;width:46px;border-radius:12px}.brand-title{font-size:23px;letter-spacing:-1px;font-weight:800;line-height:1.02}.brand-title small{display:block;font-size:9px;letter-spacing:4px;font-weight:600;margin-top:7px;color:var(--mint)}.top-actions{display:flex;align-items:center;gap:9px}.lang-switch{background:var(--panel);border:1px solid var(--line);border-radius:30px;padding:4px;display:flex;gap:2px}.lang-switch button{border:0;background:none;color:var(--muted);font-size:11px;font-weight:800;border-radius:20px;min-width:32px;min-height:30px}.lang-switch button.active{background:var(--cream);color:var(--ink)}.icon-button{border:1px solid var(--line);background:transparent;border-radius:50%;height:42px;width:42px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.icon-button svg{height:19px;width:19px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;color:var(--mint);display:inline-flex;align-items:center;gap:7px}.dot{display:inline-block;width:6px;height:6px;background:currentColor;border-radius:50%}.hero{position:relative;isolation:isolate;overflow:hidden;border:1px solid var(--line);background:linear-gradient(130deg,#234a3e,#163b31);border-radius:32px;padding:38px 40px;min-height:295px;display:flex;align-items:center;margin-bottom:24px}.hero-copy{max-width:63%;position:relative;z-index:2}.hero h1{font:500 57px/.99 Georgia,serif;letter-spacing:-2.8px;margin:17px 0 19px}.hero h1 em{color:var(--mint);font-style:normal}.hero p{font-size:14px;color:#c3d0c4;max-width:360px}.hero-art{position:absolute;width:240px;height:250px;right:35px;top:37px;display:flex;align-items:center;justify-content:center}.hero-art:before{content:"";position:absolute;width:240px;height:240px;border-radius:50%;border:1px solid rgba(219,238,185,.16)}.hero-art:after{content:"";position:absolute;width:195px;height:195px;border-radius:50%;border:1px solid rgba(219,238,185,.1)}.hero-art .playing-card{position:absolute;width:105px;height:151px;box-shadow:0 16px 25px #05170c44}.hero-art .art-back{transform:translate(-40px,8px) rotate(-20deg);background:var(--mint);color:var(--ink)}.hero-art .art-front{transform:translate(34px,-3px) rotate(15deg);z-index:2}.hero-art .playing-card .card-rank{font-size:28px}.hero-art .playing-card .card-symbol{font-size:64px}.hero-art .spark{position:absolute;color:var(--gold);font-size:28px;right:5px;top:18px;z-index:3}.meta-row{display:flex;align-items:center;gap:20px;color:var(--muted);font-size:12px;margin:0 6px 24px}.meta-row span{display:flex;align-items:center;gap:6px}.meta-row svg{height:15px;width:15px}.mode-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}.mode-card{border:1px solid var(--line);border-radius:24px;background:var(--panel);padding:24px;text-align:left;position:relative;min-height:186px;transition:transform .15s,background .15s}.mode-card:hover{transform:translateY(-3px);background:var(--panel-2)}.mode-card.primary{background:var(--mint);color:var(--ink);border-color:var(--mint)}.mode-icon{display:flex;align-items:center;justify-content:center;height:44px;width:44px;border-radius:14px;background:#ffffff0a;color:var(--gold);margin-bottom:23px}.primary .mode-icon{background:#17372b12;color:var(--ink)}.mode-icon svg{width:23px;height:23px}.mode-card h2{font-size:19px;letter-spacing:-.5px;margin-bottom:7px}.mode-card p{font-size:12px;color:var(--muted);max-width:180px}.mode-card.primary p{color:#3d5c3c}.mode-card .arrow{position:absolute;right:20px;top:26px;color:var(--muted)}.mode-card.primary .arrow{color:var(--ink)}.learn-banner{margin-top:22px;padding:22px 25px;background:#ffffff04;border:1px solid var(--line);border-radius:22px;display:flex;gap:20px;justify-content:space-between;align-items:center}.learn-banner h3{font-size:15px;margin-bottom:4px}.learn-banner p{color:var(--muted);font-size:12px}.text-button{border:0;background:transparent;padding:10px 0;color:var(--mint);font-weight:700;font-size:13px;white-space:nowrap}.footer-line{font-size:10px;letter-spacing:.3px;text-align:center;color:#8ba095;margin-top:26px}.bottom-nav{position:fixed;z-index:15;bottom:0;left:0;right:0;background:#0d2824f2;border-top:1px solid var(--line);backdrop-filter:blur(18px);padding:12px 20px calc(12px + env(safe-area-inset-bottom));display:flex;justify-content:center;gap:75px}.bottom-nav button{border:0;background:none;color:#90a79a;min-width:65px;display:flex;gap:5px;align-items:center;flex-direction:column;font-size:10px;font-weight:700}.bottom-nav svg{height:21px;width:21px}.bottom-nav .selected{color:var(--mint)}.page-heading{margin:12px 0 28px}.page-heading h1{font:500 40px/1.15 Georgia,serif;letter-spacing:-1.4px;margin:10px 0}.page-heading p{font-size:14px;color:var(--muted);max-width:600px}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.guide-card{border:1px solid var(--line);border-radius:22px;padding:25px;background:var(--panel)}.step-num{font-size:11px;color:var(--gold);letter-spacing:1px;font-weight:700;margin-bottom:16px}.guide-card h2{font-size:19px;margin-bottom:11px}.guide-card p{font-size:13px;color:#c2d0c3}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:25px}.panel h2{font-size:19px;margin-bottom:20px}.field{display:block;margin-bottom:19px}.field>span{display:block;color:var(--cream);font-size:12px;font-weight:700;margin-bottom:9px}.field small{display:block;color:var(--muted);font-size:11px;line-height:1.6;margin-top:8px}input,select{width:100%;min-height:49px;padding:12px 14px;border:1px solid #c8d7c72b;border-radius:12px;color:var(--cream);background:#0c2923;outline:none;font-size:14px}input::placeholder{color:#799184}input:focus,select:focus{border-color:var(--mint)}.btn{border:1px solid var(--line);border-radius:14px;min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:13px 20px;background:var(--panel-2);color:var(--cream);font-weight:750;font-size:13px;transition:filter .15s}.btn:hover{filter:brightness(1.07)}.btn svg{height:17px;width:17px}.btn.primary{background:var(--mint);color:var(--ink);border-color:var(--mint)}.btn.secondary{background:transparent}.btn.danger{border-color:#eea89750;color:#f4b9aa;background:#842d2114}.btn:disabled{opacity:.45}.btn.full{width:100%}.button-row{display:flex;gap:10px;flex-wrap:wrap}.button-row>*{flex:1}.divider{height:1px;background:var(--line);margin:20px 0}.small-copy{font-size:12px;color:var(--muted);line-height:1.6}.check-row{display:flex;gap:12px;align-items:center;font-size:13px;line-height:1.45;margin:18px 0}.check-row input{width:19px;height:19px;min-height:19px;accent-color:var(--mint)}.info-box{padding:14px 16px;border:1px solid #e9be722f;background:#e9be7209;color:#d7c59e;border-radius:13px;font-size:12px;line-height:1.65;margin:16px 0}.status-pill{font-size:10px;border:1px solid var(--line);padding:6px 9px;border-radius:20px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.status-pill.good{color:var(--mint)}.status-pill.bad{color:#ffd3a5}.modal-backdrop{position:fixed;inset:0;z-index:70;background:#03100dd1;display:flex;align-items:center;justify-content:center;padding:22px;backdrop-filter:blur(8px)}.modal{width:100%;max-width:440px;background:#17382e;border:1px solid #90ba983d;border-radius:26px;padding:28px;max-height:90dvh;overflow:auto;box-shadow:0 30px 70px #0005}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:19px}.modal h2{font:500 30px/1.12 Georgia,serif;letter-spacing:-1px}.modal p{color:var(--muted);font-size:13px;margin-bottom:20px}.modal .icon-button{width:34px;height:34px}.tabs{display:flex;background:#0d2a22;border:1px solid var(--line);border-radius:13px;padding:4px;margin-bottom:20px;gap:5px}.tabs button{flex:1;background:none;border:0;border-radius:10px;padding:11px 8px;font-size:12px;font-weight:700;color:var(--muted)}.tabs button.active{background:var(--panel-2);color:var(--cream)}.error-line{color:#ffc3b5;font-size:12px;line-height:1.5;min-height:18px;margin-bottom:12px}#toast{position:fixed;z-index:100;left:50%;bottom:calc(93px + env(safe-area-inset-bottom));transform:translate(-50%,16px);background:var(--cream);color:var(--ink);border-radius:14px;padding:13px 18px;font-size:13px;max-width:min(90vw,480px);box-shadow:0 10px 40px #0004;pointer-events:none;opacity:0;transition:opacity .18s,transform .18s}#toast.show{opacity:1;transform:translate(-50%,0)}.loading{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.loading-mark{font-size:76px;color:var(--mint)}.loading small{display:block;font-size:10px;text-align:center;letter-spacing:7px;margin-top:10px}.loading p{font-size:13px;color:var(--muted)}
/* Playing surface */
.game-shell{max-width:850px;margin:auto;padding:calc(15px + env(safe-area-inset-top)) 22px calc(18px + env(safe-area-inset-bottom))}.game-topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:13px}.game-title{text-align:center}.game-title h1{font-size:18px;letter-spacing:-.6px}.game-title span{font-size:9px;color:var(--mint);letter-spacing:1.6px}.scoreboard{display:grid;grid-template-columns:1fr 70px 1fr;gap:12px;padding:15px 20px;border:1px solid var(--line);border-radius:18px;background:#173a30;align-items:center}.score-cell{display:flex;align-items:center;gap:13px}.score-cell.right{justify-content:flex-end;text-align:right}.score-num{font-size:32px;font-weight:750;letter-spacing:-1px;color:var(--cream)}.score-label{font-size:10px;color:var(--muted);line-height:1.5}.score-label strong{display:block;color:var(--cream);font-size:11px}.score-target{text-align:center;font-size:9px;color:var(--muted);line-height:1.5}.score-target strong{font-size:16px;display:block;color:var(--gold)}.game-meta{display:flex;justify-content:space-between;align-items:center;margin:14px 3px 0;font-size:11px;color:var(--muted)}.game-meta b{color:var(--cream);font-weight:600}.trump-chip{display:flex;align-items:center;gap:7px}.suit-dot{color:var(--cream);font-size:16px}.suit-dot.red{color:#f4a4a7}.court{height:325px;position:relative;margin:8px 0 0}.felt{position:absolute;inset:39px 48px 29px;background:radial-gradient(ellipse at 50% 45%,#28533f,#1c4333 65%);border:1px solid #87a87a26;border-radius:43%;box-shadow:inset 0 0 0 9px #06271b1f}.felt:before{content:"";position:absolute;inset:11px;border:1px solid #b6d89a1c;border-radius:43%}.felt-mark{position:absolute;top:48%;left:50%;transform:translate(-50%,-50%);font-size:13px;letter-spacing:5px;color:#bce89b17;white-space:nowrap;font-weight:700}.seat{position:absolute;text-align:center;width:112px;z-index:2}.seat.north{left:50%;transform:translateX(-50%);top:0}.seat.west{left:0;top:131px}.seat.east{right:0;top:131px}.seat.south{left:50%;transform:translateX(-50%);bottom:0}.avatar{height:42px;width:42px;margin:0 auto 5px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:750;background:#496943;color:var(--cream);box-shadow:0 0 0 4px var(--bg);position:relative}.avatar.team-b{background:#745d48}.seat.active .avatar{outline:2px solid var(--mint);outline-offset:3px}.seat.talking .avatar{box-shadow:0 0 0 4px #a8eb7966}.seat-name{font-size:11px;font-weight:700;max-width:106px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:auto}.seat-note{font-size:8px;color:var(--muted);margin-top:4px;display:flex;align-items:center;justify-content:center;gap:5px}.tiny-bot{font-size:7px;color:#d2c195;border:1px solid #d2c19542;border-radius:3px;padding:1px 3px}.card-count{font-size:8px;background:#284237;border-radius:3px;padding:1px 4px}.played-cards{position:absolute;top:67px;bottom:55px;left:110px;right:110px;z-index:4;pointer-events:none}.played-slot{position:absolute}.played-slot.north{top:0;left:50%;transform:translateX(-50%)}.played-slot.south{bottom:0;left:50%;transform:translateX(-50%)}.played-slot.west{left:0;top:50%;transform:translateY(-50%) rotate(-8deg)}.played-slot.east{right:0;top:50%;transform:translateY(-50%) rotate(8deg)}.playing-card{border:1px solid #f4e5c2;border-radius:9px;background:var(--cream);color:var(--ink);position:relative;box-shadow:0 3px 0 #0003;overflow:hidden;display:block;user-select:none;-webkit-user-select:none;aspect-ratio:0.69}.playing-card.red{color:var(--red)}.card-rank{position:absolute;left:8px;top:6px;font-size:20px;font-weight:750;line-height:1}.card-small-suit{position:absolute;left:9px;top:29px;font-size:16px;line-height:1}.card-symbol{position:absolute;left:50%;top:54%;transform:translate(-50%,-50%);font-size:40px;line-height:1}.card-bottom{position:absolute;right:5px;bottom:4px;font-size:11px;transform:rotate(180deg);font-weight:700}.played-slot .playing-card{width:63px;height:89px}.played-slot .card-symbol{font-size:33px}.played-slot .card-rank{font-size:20px}.played-slot .card-small-suit{font-size:13px;top:28px}.turn-banner{margin:8px 0 11px;background:#c6eea310;border:1px solid #c6eea333;border-radius:13px;min-height:43px;display:flex;align-items:center;justify-content:center;padding:9px 14px;font-size:12px;font-weight:650;color:var(--mint);text-align:center}.turn-banner.waiting{color:var(--muted);background:#ffffff04;border-color:var(--line)}.hand-head{display:flex;align-items:center;justify-content:space-between;margin:13px 2px 9px;font-size:11px;color:var(--muted)}.hand-head strong{color:var(--cream)}.hand-cards{display:grid;grid-template-columns:repeat(13,minmax(0,1fr));gap:5px;margin-bottom:10px}.hand-cards .playing-card{width:100%;padding:0;transition:transform .14s,filter .14s;min-height:72px}.hand-cards .playing-card:disabled{filter:brightness(.54);box-shadow:none;border-color:#536144}.hand-cards .playing-card.playable{box-shadow:0 0 0 1px var(--mint),0 4px 0 #0003}.hand-cards .playing-card.playable:hover{transform:translateY(-7px)}.hand-cards .playing-card .card-rank{font-size:18px;left:5px;top:5px}.hand-cards .playing-card .card-small-suit{left:6px;top:24px;font-size:12px}.hand-cards .playing-card .card-symbol{font-size:28px;top:59%}.hand-cards .playing-card .card-bottom{font-size:9px;right:4px}.hand-cards.five{grid-template-columns:repeat(5,minmax(0,58px));justify-content:center;gap:9px}.hand-cards.five .playing-card{min-height:84px}.hidden-hand{border:1px dashed var(--line);padding:28px 20px;text-align:center;border-radius:16px;color:var(--muted);font-size:12px;grid-column:1/-1}.trump-choice{padding:21px;background:#1b4233;border:1px solid #c6eea347;border-radius:20px;margin:8px 0 16px;text-align:center}.trump-choice h2{font:500 27px Georgia,serif;letter-spacing:-.7px;margin-bottom:7px}.trump-choice p{font-size:12px;color:var(--muted);margin-bottom:16px}.suit-options{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.suit-options button{background:var(--cream);color:var(--ink);border:0;border-radius:12px;min-height:75px;padding:9px 4px;display:flex;align-items:center;flex-direction:column;gap:5px;font-size:9px;font-weight:750}.suit-options button span{font-size:32px;line-height:1}.suit-options button.red{color:var(--red)}.voice-bar{border:1px solid var(--line);border-radius:16px;padding:10px 13px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#0b2821;margin-top:17px}.voice-copy{display:flex;align-items:center;gap:9px}.voice-copy>svg{color:var(--muted);height:18px;width:18px}.voice-copy strong{display:block;font-size:11px}.voice-copy small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.voice-actions{display:flex;align-items:center;gap:7px}.voice-actions .btn{min-height:36px;padding:8px 11px;font-size:10px;border-radius:10px}.voice-actions .icon-button{height:34px;width:34px}.voice-actions .mic-muted{color:#efb3a1;border-color:#efb3a14d}.voice-person{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.voice-person .btn{font-size:10px;min-height:33px;padding:6px 9px}.ptt-button{touch-action:none;user-select:none;-webkit-user-select:none}.ptt-button.held{background:var(--gold);color:var(--ink)}.results{border:1px solid #e9be7259;border-radius:25px;background:linear-gradient(150deg,#2c4c37,#1b382b);padding:30px;text-align:center;margin-top:20px}.result-suit{font-size:48px;color:var(--gold);margin-bottom:9px}.results h2{font:500 32px/1.05 Georgia,serif;margin:10px 0 12px;letter-spacing:-1px}.results p{font-size:13px;color:var(--muted);margin-bottom:23px}.lobby-title{text-align:center;margin:22px 0}.lobby-title h1{font:500 36px Georgia,serif;letter-spacing:-1px;margin-bottom:11px}.lobby-title p{color:var(--muted);font-size:13px;max-width:400px;margin:auto}.code-display{border:1px solid #e9be7247;border-radius:22px;background:#e9be720a;text-align:center;padding:23px;margin:24px auto;max-width:480px}.code-display small{display:block;font-size:10px;color:var(--muted);letter-spacing:1.5px;margin-bottom:10px}.code-display strong{display:block;font-size:30px;letter-spacing:7px;color:var(--gold);font-variant-numeric:tabular-nums;margin-bottom:15px}.lobby-seats{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:480px;margin:20px auto}.lobby-seat{border:1px solid var(--line);border-radius:18px;padding:16px;display:flex;gap:12px;align-items:center;background:var(--panel)}.lobby-seat .avatar{margin:0;flex-shrink:0}.lobby-seat.empty{border-style:dashed;background:none;color:var(--muted)}.lobby-seat strong{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}.lobby-seat small{font-size:9px;color:var(--muted);display:block;margin-top:5px}.lobby-controls{max-width:480px;margin:24px auto}.address-display{font:12px/1.7 ui-monospace,monospace;word-break:break-all;color:var(--mint)}.below-game{font-size:9px;color:var(--muted);text-align:center;margin-top:13px}.reduced-motion *{animation:none!important;transition:none!important}.hidden{display:none!important}
@media(min-width:800px){.hero-art{right:70px}.game-shell{padding-top:28px}.court{height:365px}.seat.west,.seat.east{top:151px}.played-cards{top:83px;bottom:72px;left:230px;right:230px}.hand-cards .playing-card{min-height:79px}.game-shell .court{max-width:690px;margin:12px auto 0}.game-shell .played-cards{left:190px;right:190px}.game-shell .felt{inset:39px 74px 29px}}
@media(max-width:650px){.app-shell{padding:calc(19px + env(safe-area-inset-top)) 20px calc(94px + env(safe-area-inset-bottom))}.topbar{margin-bottom:24px}.brand-title{font-size:21px}.brand img{height:41px;width:41px}.brand-title small{font-size:8px}.top-actions{gap:7px}.top-actions>.icon-button{display:none}.hero{padding:26px 23px;min-height:267px;border-radius:26px}.hero-copy{max-width:70%}.hero h1{font-size:39px;letter-spacing:-1.8px;line-height:1.04;margin:14px 0}.hero p{font-size:12px;max-width:205px;line-height:1.5}.hero .eyebrow{font-size:8px;letter-spacing:1.3px}.hero-art{width:130px;height:190px;right:-4px;top:60px;opacity:.88;transform:rotate(7deg)}.hero-art:before{width:168px;height:168px}.hero-art:after{width:125px;height:125px}.hero-art .playing-card{width:67px;height:99px}.hero-art .art-back{transform:translate(-14px,8px) rotate(-22deg)}.hero-art .art-front{transform:translate(31px,-1px) rotate(11deg)}.hero-art .playing-card .card-rank{font-size:19px;left:6px;top:7px}.hero-art .playing-card .card-small-suit{font-size:13px;top:27px;left:7px}.hero-art .playing-card .card-symbol{font-size:41px}.hero-art .spark{right:15px;top:12px;font-size:21px}.meta-row{gap:13px;font-size:9px;margin:0 2px 20px}.meta-row svg{height:13px;width:13px}.mode-grid{grid-template-columns:1fr;gap:11px}.mode-card{padding:18px 18px 18px 76px;min-height:92px;border-radius:19px}.mode-icon{position:absolute;left:18px;top:21px;height:43px;width:43px;margin:0}.mode-card h2{font-size:17px;margin:4px 0 6px;letter-spacing:-.45px}.mode-card p{font-size:11px;max-width:200px;padding-right:10px}.mode-card .arrow{right:16px;top:35px}.learn-banner{padding:18px;border-radius:18px;gap:10px;margin-top:16px}.learn-banner h3{font-size:13px}.learn-banner p{font-size:10px;max-width:170px}.learn-banner .text-button{font-size:10px}.bottom-nav{gap:54px}.footer-line{margin-top:20px;font-size:9px}.page-heading h1{font-size:35px}.guide-grid,.settings-grid{grid-template-columns:1fr}.guide-card{padding:23px}.modal-backdrop{padding:16px}.modal{padding:24px;border-radius:23px}.game-shell{padding:calc(12px + env(safe-area-inset-top)) 14px calc(18px + env(safe-area-inset-bottom))}.game-topbar{margin-bottom:11px}.game-title h1{font-size:16px}.game-title span{font-size:8px}.game-topbar .icon-button{height:35px;width:35px}.scoreboard{padding:11px 13px;gap:7px;grid-template-columns:1fr 54px 1fr}.score-cell{gap:9px}.score-num{font-size:28px}.score-label{font-size:9px}.score-label strong{font-size:10px}.court{height:288px}.felt{inset:37px 31px 19px}.seat{width:81px}.seat.north{top:1px}.seat.west,.seat.east{top:119px}.seat.south{bottom:0}.avatar{height:36px;width:36px;font-size:12px}.seat-name{font-size:10px;max-width:78px}.seat-note{font-size:7px}.seat.south .seat-note{display:none}.played-cards{top:64px;bottom:40px;left:88px;right:88px}.played-slot .playing-card{width:52px;height:75px;border-radius:7px}.played-slot .card-rank{font-size:17px;left:5px;top:5px}.played-slot .card-small-suit{font-size:11px;left:6px;top:24px}.played-slot .card-symbol{font-size:29px;top:58%}.played-slot .card-bottom{font-size:8px}.hand-cards{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:0 3px 8px}.hand-cards .playing-card{min-height:65px;max-height:78px}.hand-cards .playing-card .card-rank{font-size:17px}.hand-cards .playing-card .card-symbol{font-size:25px}.hand-cards .playing-card .card-small-suit{font-size:10px;top:24px}.hand-cards.five{grid-template-columns:repeat(5,minmax(0,52px));gap:7px}.hand-cards.five .playing-card{min-height:74px}.turn-banner{margin-top:8px;font-size:11px;min-height:39px}.hand-head{font-size:10px;margin-top:11px}.game-meta{font-size:10px;margin:11px 2px 0}.trump-choice{padding:17px 16px;margin-top:10px}.trump-choice h2{font-size:25px}.trump-choice p{font-size:11px}.suit-options button{min-height:67px;font-size:8px}.suit-options button span{font-size:28px}.voice-bar{margin-top:14px}.voice-actions .btn{padding:8px 10px;max-width:149px;font-size:10px}.lobby-title h1{font-size:31px}.lobby-title p{font-size:12px}.code-display{padding:20px}.code-display strong{font-size:25px;letter-spacing:5px}.lobby-seat{padding:13px;gap:9px}.lobby-seat strong{max-width:100px}.lobby-controls{margin-top:20px}.lobby-controls .btn{font-size:12px}}
@media(max-width:360px){.app-shell{padding-left:15px;padding-right:15px}.hero h1{font-size:35px}.hero p{max-width:176px}.meta-row{gap:10px;font-size:8px}.game-shell{padding-left:10px;padding-right:10px}.played-cards{left:74px;right:74px}.seat.west{left:-2px}.seat.east{right:-2px}.hand-cards .playing-card{min-height:61px}.voice-copy strong{font-size:10px}.score-label strong{font-size:9px}.lobby-seats{gap:8px}.lobby-seat strong{max-width:78px}.hero-art{right:-10px}}

/* v0.2: clear scoring, an on-device journal and creator attribution. */
.creator-credit{margin:25px 0 5px;padding:14px 8px 4px;border-top:1px solid var(--line);font-size:11px;line-height:1.6;text-align:center;color:var(--muted);letter-spacing:.1px;overflow-wrap:anywhere}
.bottom-nav{gap:clamp(9px,6vw,58px)}
.bottom-nav button{min-width:56px;min-height:42px}
.game-top-actions{display:flex;align-items:center;gap:7px}
.score-caption{display:flex;justify-content:space-between;align-items:center;margin:0 3px 6px;gap:12px}
.score-caption>span{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.score-caption .text-button{font-size:11px;padding:8px 0;white-space:normal;text-align:right}
.score-num{font-variant-numeric:tabular-nums}
.points-award{display:inline-block;padding:8px 20px;border-radius:30px;color:var(--ink);background:var(--mint);font-size:24px;font-weight:850;margin:5px 0 15px;letter-spacing:-.5px}
.results.result-won{border-color:#c6eea380}
.result-totals{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0;margin:13px 0 20px;font-size:12px;color:var(--muted)}
.result-totals strong{font-size:28px;color:var(--cream);font-variant-numeric:tabular-nums;white-space:nowrap}
.results .saved-note{display:flex;justify-content:center;align-items:center;gap:6px;color:var(--mint);font-size:11px;margin-bottom:16px}
.saved-note svg{height:15px;width:15px;flex-shrink:0}
.result-links{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.result-links .btn{flex:1;min-height:42px;font-size:11px;padding:9px}
.game-tools{display:flex;justify-content:center;gap:10px;margin:17px 0 11px}
.game-tools .btn{min-height:42px;font-size:11px;padding:9px 16px}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}
.stats-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr));margin:12px 0 0}
.stat-tile{background:var(--panel);padding:23px 17px;border:1px solid var(--line);border-radius:20px;display:flex;flex-direction:column;gap:7px;min-width:0}
.stat-tile strong{font-size:32px;color:var(--mint);letter-spacing:-1px;font-variant-numeric:tabular-nums}
.stat-tile span{font-size:11px;color:var(--muted);line-height:1.4}
.practice-summary{margin-top:25px}.summary-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.summary-heading h3{font-size:15px}.summary-heading .text-button{font-size:12px}
.empty-results{margin:25px 0;text-align:center;padding:30px}.empty-results>svg{height:45px;width:45px;color:var(--mint);margin-bottom:15px}.empty-results h2{margin-bottom:10px}.empty-results p{font-size:13px;color:var(--muted);margin-bottom:20px}
.journal{margin-top:30px}.journal>h2{font-size:21px;margin-bottom:15px}.journal-row{display:flex;justify-content:space-between;align-items:center;gap:18px;border-bottom:1px solid var(--line);padding:19px 0}.journal-row>div>strong{font-size:14px}.journal-row small{display:block;font-size:11px;color:var(--muted);margin-top:6px}.journal-score{font-size:26px;white-space:nowrap;letter-spacing:-.7px;font-variant-numeric:tabular-nums}
.resume-box{border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:20px}.modal .resume-box p{margin-bottom:12px;font-size:12px}
.score-ledger{max-height:40vh;overflow:auto;margin-bottom:10px}.ledger-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:16px;border-top:1px solid var(--line);padding:15px 0;font-size:12px}.ledger-row small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.ledger-row>strong{color:var(--mint);font-size:18px}.ledger-row>span{font-variant-numeric:tabular-nums;color:var(--muted)}
.review-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:20px 0}.review-cards .playing-card{width:100%;height:98px}.review-cards small{display:block;font-size:10px;overflow-wrap:anywhere;text-align:center;margin-top:8px}.hint-card{display:flex;justify-content:center;margin:15px 0 22px}.hint-card .playing-card{width:90px;height:126px}
.invite-preview{font-size:11px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere;margin:-4px 0 18px}
@media(max-width:620px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-tile{padding:18px 14px}.compact .stat-tile{padding:17px 11px}.compact .stat-tile strong{font-size:27px}.compact .stat-tile span{font-size:10px}.creator-credit{font-size:10px;margin-top:20px}.game-title{text-align:left;min-width:0;flex:1}.game-title h1{font-size:15px}.game-title span{letter-spacing:.6px;font-size:7px}.game-topbar{gap:8px}.game-top-actions{gap:5px}.game-topbar .lang-switch{padding:3px}.game-topbar .lang-switch button{min-width:27px;font-size:10px}.results{padding:23px 18px}.result-links .btn{flex-basis:130px}}
@media(max-width:360px){.game-title h1{font-size:13px}.game-topbar .icon-button{width:31px;height:31px}.game-topbar{gap:6px}.game-topbar .lang-switch button{min-width:24px}.creator-credit{font-size:9px}.score-caption>span{font-size:10px}.score-caption .text-button{font-size:10px}.review-cards .playing-card{height:84px}.review-cards .card-symbol{font-size:32px}}

/* v0.3: named teams, one four-card pile for each won trick. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.score-label{min-width:0}.score-label strong{overflow-wrap:anywhere}.score-cell{min-width:0}
.trick-collection{margin:12px 0 6px}
.collection-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:0 3px 7px;color:var(--muted);font-size:10px}
.collection-heading strong{letter-spacing:1.15px;font-size:9px}.collection-heading>span{text-align:right}
.trick-banks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.trick-bank{--team:#c6eea3;min-width:0;position:relative;background:#163b33;border:1px solid #c6eea333;border-radius:17px;padding:11px 13px 8px;overflow:hidden}
.trick-bank.bank-other{--team:#e8c177;background:#353d31;border-color:#e8c17744}
.bank-heading{display:flex;align-items:center;justify-content:space-between;gap:7px}.bank-heading>div:first-child{min-width:0}
.bank-name{display:block;color:var(--team);font-size:13px;overflow-wrap:anywhere;line-height:1.3}
.bank-members{display:block;font-size:9px;color:var(--muted);line-height:1.3;margin-top:3px;overflow-wrap:anywhere}
.trick-tally{display:flex;flex-direction:column;text-align:right;flex-shrink:0}.trick-tally strong{font-size:31px;line-height:.95;letter-spacing:-1px;font-variant-numeric:tabular-nums;color:var(--cream)}.trick-tally span{font-size:9px;margin-top:4px;color:var(--muted)}
.won-card-piles{height:41px;position:relative;margin:6px 3px 3px}
.won-pile{position:absolute;width:27px;height:33px;left:calc(var(--pile)*(100% - 29px)/12);bottom:1px;z-index:calc(1 + var(--pile));transform:rotate(-5deg)}
.pile-card{position:absolute;width:23px;height:30px;border:1px solid #fff5d3;border-radius:3px;background:repeating-linear-gradient(45deg,#315c50,#315c50 2px,#284b42 2px,#284b42 4px);left:calc(var(--card)*1px);top:calc(3px - var(--card)*1px);box-shadow:1px 2px 2px #0004;font-style:normal;display:grid;place-items:center;color:#dfc277;font-size:13px}
.bank-other .pile-card{background:repeating-linear-gradient(45deg,#6c5940,#6c5940 2px,#51482f 2px,#51482f 4px)}
.empty-pile{display:flex;align-items:center;justify-content:center;height:33px;border:1px dashed #ffffff24;border-radius:7px;font-size:9px;color:var(--muted)}
.bank-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:8px;color:var(--muted);line-height:1.5}.bank-foot strong{color:var(--team);white-space:nowrap}
.just-won{border-color:var(--team)}.won-pile.arriving{animation:stack-collect .45s ease-out both}
@keyframes stack-collect{from{opacity:0;transform:translateY(-20px) rotate(15deg)}to{opacity:1;transform:translateY(0) rotate(-5deg)}}
.game-meta{justify-content:space-between}
@media(max-width:650px){.trick-bank{padding:10px 10px 8px}.bank-name{font-size:12px}.trick-tally strong{font-size:29px}.trick-banks{gap:8px}.court{height:268px}.seat.west,.seat.east{top:109px}.played-cards{top:56px}}
@media(max-width:360px){.bank-name{font-size:11px}.bank-members{font-size:8px}.trick-bank{padding:9px 8px 7px}.trick-tally strong{font-size:26px}.collection-heading{font-size:9px}.bank-foot{font-size:7px}}
/* A short, skippable in-app credit, not a system launch-screen delay. */
body.intro-visible{overflow:hidden}
.creator-intro{position:fixed;inset:0;z-index:1000;overflow:auto;background:radial-gradient(ellipse at 50% 32%,#22483c 0,#102b26 46%,#071b19 100%);color:#fff7e6;padding:calc(18px + env(safe-area-inset-top)) 24px calc(25px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:center}
.intro-inner{width:100%;max-width:600px;text-align:center;margin:auto;position:relative}
.intro-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.intro-top .eyebrow{font-size:10px;letter-spacing:1.6px;color:#e7c588}.intro-skip{border:1px solid #e5c48b44;background:#ffffff07;color:#eee4cf;border-radius:30px;font:inherit;font-size:11px;padding:10px 14px;min-height:40px;cursor:pointer}
.intro-illustration{width:clamp(165px,55vw,280px);margin:0 auto 23px;position:relative;filter:drop-shadow(0 16px 30px #0006)}
.intro-illustration img{width:100%;height:auto;display:block;border-radius:27px;mask-image:linear-gradient(to bottom,transparent,#000 9%,#000 90%,transparent)}
.intro-created{color:#ceb883;font-size:12px;letter-spacing:4px;text-transform:uppercase;margin:8px 0 11px}
.intro-name{font-family:Georgia,'Times New Roman',serif;font-size:clamp(35px,7.8vw,64px);line-height:1.07;letter-spacing:-1.5px;margin:0 auto 16px;max-width:100%;text-wrap:balance}
.intro-company{display:flex;align-items:center;justify-content:center;gap:10px;font-size:clamp(23px,5.7vw,34px);letter-spacing:3px;font-weight:700;color:#eac884;text-transform:uppercase}
.intro-monogram{display:grid;place-items:center;width:37px;height:39px;font-family:Georgia,serif;font-style:italic;color:#0c2824;background:linear-gradient(145deg,#f5ddb0,#cba357);border-radius:8px;font-size:29px;letter-spacing:-4px;padding-right:4px}
.intro-tagline{margin-top:22px;font-size:13px;line-height:1.5;color:#c9d5c8}.intro-rule{display:block;height:2px;width:42px;margin:22px auto 0;background:#d8b774;border-radius:2px}
@media(max-height:680px){.intro-top{margin-bottom:10px}.intro-illustration{width:155px;margin-bottom:13px}.intro-name{font-size:35px}.intro-tagline{margin-top:14px}.intro-rule{margin-top:13px}}
@media(orientation:landscape) and (max-height:500px){.intro-inner{max-width:800px;padding-left:225px;text-align:center}.intro-top{margin-bottom:18px}.intro-illustration{position:absolute;width:180px;left:5px;top:15px}.intro-name{font-size:36px}.intro-created{margin-top:20px}}
@media(prefers-reduced-motion:reduce){.won-pile.arriving{animation:none}}
.reduced-motion .won-pile.arriving{animation:none}

.invite-qr{text-align:center;margin:18px auto;max-width:320px}.invite-qr img{background:#fff;border-radius:12px;max-width:100%;height:auto;image-rendering:pixelated}.invite-qr p{font-size:13px;margin:8px 12px}.code-display .invitation-code{font-size:clamp(16px,5vw,28px);overflow-wrap:anywhere;letter-spacing:1px}
