@font-face{font-family:Courier Prime;src:url('assets/fonts/courier_prime_regular.ttf') format('truetype');font-weight:400;font-display:swap}@font-face{font-family:Courier Prime;src:url('assets/fonts/courier_prime_bold.ttf') format('truetype');font-weight:700;font-display:swap}
:root{--forest:#103c2e;--deep:#0b2b22;--felt:#16503b;--cream:#f5f2e8;--paper:#fffcf4;--gold:#d5b66e;--ink:#243d32;--muted:#748075;--line:#dcded2;--red:#a53f35;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);background:var(--cream);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button{border:0}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #b98423;outline-offset:4px}button{transition:background .16s,transform .16s,box-shadow .16s}button:active:not(:disabled){transform:translateY(1px)}h1,h2,h3,p{margin-top:0}p{line-height:1.65}h2{font-size:29px;font-weight:600;letter-spacing:-1px;margin-bottom:20px}h3{font-size:16px}.loading{padding:100px;text-align:center}.app-header{max-width:1280px;margin:auto;padding:25px 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-family:'Courier Prime',monospace;font-weight:700;font-size:32px;letter-spacing:-2px}.brand-symbol{font-size:35px;color:var(--forest)}.brand-dot{color:#a47e37}.header-actions{display:flex;align-items:center;gap:22px}.connection{font-size:12px;display:flex;align-items:center;gap:8px;color:#59685b}.connection i{width:6px;height:6px;border-radius:50%;background:#638765}.connection i.offline{background:#ad8236}.icon-btn{border:1px solid #cbd2c4;width:32px;height:32px;border-radius:50%;background:transparent;font-family:'Courier Prime',monospace;font-size:18px;color:var(--ink)}.quiet{background:transparent;color:var(--ink);padding:7px;font-size:12px}.quiet:hover{background:#e6e8dc;border-radius:6px}.eyebrow{display:block;font-size:10px;font-weight:700;letter-spacing:2px;color:#7e866e}.app-footer{max-width:1200px;margin:0 auto;padding:24px 0;display:flex;justify-content:space-between;gap:15px;font-size:11px;color:var(--muted)}.home{max-width:1100px;min-height:690px;margin:0 auto;display:grid;grid-template-columns:1fr 450px;gap:75px;align-items:center;padding:45px 15px}.welcome{padding:10px 0}.welcome .eyebrow{margin-bottom:24px}.welcome h1{font-family:'Courier Prime',monospace;font-size:62px;line-height:1.02;letter-spacing:-3px;font-weight:400;margin-bottom:23px}.welcome h1>span{color:#ab843a}.welcome>p{font-size:15px;color:#6c776a;line-height:1.8}.hero-cards{height:230px;position:relative;margin-top:20px;width:390px}.hero-cards>img{position:absolute;width:111px;border-radius:9px;left:calc(45px + var(--i)*52px);top:20px;box-shadow:0 9px 16px #1e39211a;transform:rotate(calc((var(--i) - 1.5)*12deg)) translateY(calc((var(--i) - 1.5)*(var(--i) - 1.5)*8px))}.hero-stamp{position:absolute;right:0;bottom:5px;border:1px solid #b5b9a6;border-radius:50%;width:92px;height:92px;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-12deg);background:var(--cream);font-size:11px;line-height:1.7;color:#6c745d}.hero-stamp strong{font-size:10px}.home-notes{display:flex;flex-wrap:wrap;gap:20px;margin-top:17px;color:#7c836f;font-size:11px}.setup-panel{padding:35px 30px;background:var(--paper);border:1px solid #d8ddcf;border-radius:16px;box-shadow:0 9px 35px #223d2606}.setup-panel>.eyebrow{margin-bottom:13px}.setup-panel h2{margin-bottom:30px}.label-line{display:flex;align-items:center;justify-content:space-between;gap:8px}.label-line>label,.field-label,legend{font-size:12px;font-weight:600}.label-line>select{width:auto;border:0;background:transparent;font-size:11px;padding:5px 20px 5px 5px;color:#7d826e}.player-choices{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:15px 0 26px}.player-choice{border:1px solid var(--line);border-radius:8px;background:transparent;text-align:left;padding:10px;display:flex;gap:9px;align-items:center;font-size:12px;color:var(--ink)}.player-choice.selected{border-color:#527c5b;background:#edf1e6}.mini-avatar{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#e8eadd;color:#69775e;font-family:'Courier Prime',monospace}.selected .mini-avatar{background:var(--forest);color:var(--cream)}fieldset{border:0;padding:0;margin:0 0 22px}legend{padding:0;margin-bottom:11px}.segmented{display:flex;border:1px solid var(--line);padding:4px;border-radius:8px;background:#f0f0e6}.segmented label{flex:1;cursor:pointer;position:relative}.segmented input{position:absolute;opacity:0}.segmented span{display:block;font-size:12px;padding:11px 6px;text-align:center;border-radius:5px}.segmented input:checked+span{background:var(--paper);box-shadow:0 1px 5px #233c2917;font-weight:600}.segmented input:focus-visible+span{outline:3px solid var(--gold)}.field-label{display:block;margin:16px 0 11px}select{display:block;width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink)}.primary,.secondary{border-radius:7px;padding:13px 19px;font-size:13px;font-weight:600;line-height:1.3;min-height:44px}.primary{color:#fffdf4;background:var(--forest)}.primary:hover{background:#23563e}.secondary{background:#f7f6ee;border:1px solid #cdd6c7;color:var(--ink)}.secondary:hover{background:#e6ebde}.primary .suit{color:inherit}.start-button{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:25px;padding:16px 18px}.start-button>span{font-size:20px;font-weight:400}.setup-hint{margin:14px 0 0;text-align:center;font-size:10px;color:#858a7d;line-height:1.8}.check{display:flex;gap:7px;align-items:center;font-size:12px;line-height:1.5;margin:-8px 0 18px}.check[hidden]{display:none}.resume-box{background:#edf1e5;padding:15px;border-radius:8px;margin-bottom:23px;font-size:12px}.resume-box p{font-size:11px;margin:6px 0 12px}.resume-box .secondary{padding:8px 12px;min-height:35px;font-size:11px}.muted{color:var(--muted);font-size:12px}.game-layout{max-width:1200px;margin:25px auto 0;display:grid;grid-template-columns:minmax(0,1fr) 225px;gap:25px;padding:0 15px}.game-main{min-width:0}.scoreboard{display:flex;align-items:center;justify-content:space-between;background:var(--forest);color:var(--cream);padding:18px 28px;border-radius:13px 13px 0 0}.score-us,.score-them{display:flex;align-items:center;gap:15px;width:160px}.score-them{justify-content:flex-end}.score-us>span,.score-them>span{font-size:13px;opacity:.8}.score-us>strong,.score-them>strong{font-family:'Courier Prime',monospace;font-size:32px;font-weight:400}.score-center{display:flex;flex-direction:column;align-items:center;gap:4px;white-space:nowrap}.score-center>span{font-size:8px;letter-spacing:2px;color:var(--gold)}.score-center>strong{font-weight:500;font-size:13px}.score-center>small{font-size:9px;color:#b7cab6}.felt{height:420px;position:relative;background:radial-gradient(ellipse at 50% 45%,#1d5a41,var(--forest) 80%);border:8px solid #193e2d;border-top:0;border-radius:0 0 18px 18px;overflow:hidden}.felt-inner{position:absolute;inset:15px;border:1px solid #d1bc7840;border-radius:110px;pointer-events:none}.table-watermark{position:absolute;bottom:38px;right:45px;font-family:'Courier Prime',monospace;font-size:32px;color:#c9d7b91c;letter-spacing:-2px}.seat{position:absolute;display:flex;align-items:center;color:#d9e2c9;z-index:2}.seat.north{top:22px;left:50%;transform:translateX(-50%);flex-direction:column}.seat.west{left:27px;top:44%;flex-direction:column}.seat.east{right:27px;top:44%;flex-direction:column}.seat.south{bottom:22px;left:50%;transform:translateX(-50%);gap:10px}.avatar{position:relative;background:#31533f;border:1px solid #8b9d7f;color:#dce3cc;border-radius:50%;width:39px;height:39px;display:grid;place-items:center;font-family:'Courier Prime',monospace;font-size:20px}.active .avatar{background:#b19750;color:#173e2b;box-shadow:0 0 0 4px #c7b56625;border-color:#dfc989}.active>strong{color:#e2c786}.seat>strong{font-size:12px;font-weight:500;margin-top:6px;white-space:nowrap}.seat.south>strong{margin-top:0}.seat strong small{display:block;font-size:9px;color:#afc2a6;margin-top:3px}.seat-role{font-size:8px;margin-top:4px;color:#99b192}.dealer{position:absolute;width:16px;height:16px;right:-3px;bottom:-3px;border-radius:50%;background:var(--gold);color:var(--forest);display:grid;place-items:center;font:10px system-ui}.backs{display:block;width:60px;height:34px;position:relative;margin-top:7px}.backs img{position:absolute;width:19px;height:29px;left:calc(20px + (var(--i) - (var(--n) - 1)/2)*6px);border:1px solid #e8e7d5;border-radius:2px;transform:rotate(calc((var(--i) - (var(--n) - 1)/2)*7deg));transform-origin:50% 150%}.seat.north .backs{position:absolute;top:70px;display:none}.trick-area{position:absolute;width:260px;height:240px;left:50%;top:51%;transform:translate(-50%,-50%)}.card-image{display:block;width:100%;aspect-ratio:300/435;object-fit:fill;border-radius:5px}.played-card{position:absolute;width:67px;filter:drop-shadow(1px 5px 5px #0003);animation:none}.played-card.north{top:5px;left:96px;transform:rotate(-4deg)}.played-card.west{top:66px;left:30px;transform:rotate(-12deg)}.played-card.east{top:66px;right:30px;transform:rotate(12deg)}.played-card.south{bottom:5px;left:96px;transform:rotate(4deg)}.card-face.winning-card{outline:3px solid var(--gold);outline-offset:4px}.turned-card{display:flex;flex-direction:column;align-items:center;gap:9px;color:#c9d9ba;height:100%;justify-content:center}.turned-card>.card-image{width:75px;box-shadow:0 7px 15px #0003;transform:rotate(-5deg)}.turned-card>span{font-size:10px;text-transform:uppercase;letter-spacing:2px}.turned-card>small{font-size:10px}.auction-center{display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;height:100%;color:#dce5cb;text-align:center}.auction-center>.eyebrow{color:#9eb894;font-size:8px}.auction-center>strong{font:42px 'Courier Prime',monospace;color:#e3cc92}.auction-center>strong>span{display:block;font:11px system-ui;color:#a5bea0;letter-spacing:0}.auction-center>span:not(.eyebrow){font-size:14px}.auction-center>small{font-size:10px;color:#b7c9a9}.auction-center>.multiplier{font-size:10px!important;padding:5px 10px;border:1px solid #a98d5255;border-radius:20px;color:#dec789}.suit{font-family:system-ui}.suit.red{color:#b94e42}.felt .suit.red{color:#edaaa0}.contract-chip{position:absolute;bottom:23px;left:30px;display:flex;flex-direction:column;gap:6px;color:#e1e7d2;background:#0d30249c;padding:10px 13px;border:1px solid #b2c29229;border-radius:6px;max-width:190px}.contract-chip>span{font-size:11px}.contract-chip>small{font-size:9px;color:#b7caac}.contract-chip>b{font-size:10px;color:#e0bf72}.trick-count{position:absolute;bottom:24px;right:30px;font-size:10px;color:#afc4a1}.hand-panel{margin-top:15px;background:var(--paper);border:1px solid #d9dfd0;border-radius:12px;padding:13px 20px 15px}.turn-line{display:flex;align-items:center;gap:8px;margin-bottom:10px;min-height:32px}.turn-line h1{font-size:13px;font-weight:500;margin:0;flex:1}.turn-light{width:6px;height:6px;border-radius:50%;background:#b7bdab}.turn-light.on{background:#4e865b;box-shadow:0 0 0 3px #4e865b16}.hand{display:flex;justify-content:center;align-items:flex-end;min-height:130px;padding:8px 0 2px}.hand-card{position:relative;flex:0 1 76px;min-width:0;background:transparent;padding:0;border-radius:6px;box-shadow:0 4px 9px #253a2319;margin-right:7px}.hand-card:last-child{margin-right:0}.hand-card:not(:disabled):hover,.hand-card:not(:disabled):focus-visible{transform:translateY(-9px);box-shadow:0 10px 14px #253a2329}.hand-card.unplayable{opacity:.33;filter:grayscale(.6)}.card-value{position:absolute;top:-20px;left:0;right:0;text-align:center;font:10px 'Courier Prime',monospace;color:#738164;white-space:nowrap}.game-controls{min-height:65px;display:flex;flex-direction:column;justify-content:center;text-align:center;padding-top:8px}.action-row{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.play-message{font-size:12px;color:#6e7b66;margin:0;line-height:1.8}.advice{color:var(--forest);font-weight:600}.wait-message{font-size:11px;color:#8b927f;margin:0}.thinking-dots{letter-spacing:3px;color:#b2bba4;margin-right:5px}.bid-controls{display:flex;align-items:flex-end;justify-content:center;gap:8px}.bid-controls>label{font-size:10px;text-align:left}.bid-controls select{font-size:12px;margin-top:5px;padding:10px;min-height:43px}.bid-controls button{padding:10px 14px;min-height:43px}.game-sidebar{background:#eeeee2;border:1px solid #d9dfce;border-radius:12px;padding:8px 20px;align-self:start}.sidebar-section{padding:22px 0;border-bottom:1px solid #d6ddcd}.round-points{display:flex;justify-content:space-between;gap:15px;margin:17px 0 8px}.round-points>span{display:flex;flex-direction:column;gap:5px;font-size:11px;color:#7e8775}.round-points strong{font:27px 'Courier Prime',monospace;color:var(--forest)}.sidebar-section .muted{font-size:10px;margin:8px 0 0;line-height:1.8}.last-cards{display:flex;margin-top:15px}.last-cards img{width:25%;border-radius:4px;border:1px solid #d9dccd}.last-winner{font-size:11px;margin:10px 0 0;display:flex;justify-content:space-between;color:#76846a}.last-winner strong{color:var(--forest)}.journal ol{padding:0;list-style:none;margin:15px 0 0}.journal li{font-size:10px;line-height:1.8;margin-bottom:9px;color:#7f8874}.journal li:first-child{color:var(--ink)}.rules-button{font-size:10px;width:100%;padding:10px 5px;min-height:37px;margin-top:20px}.save-note{font-size:9px;text-align:center;color:#939a85;line-height:1.8;margin:15px 0}.empty-hand{color:#8c957f;font-size:12px}.table-result{position:absolute;inset:50px 0;display:flex;flex-direction:column;justify-content:center;gap:15px;background:transparent;color:#dfc88d;font:20px 'Courier Prime',monospace}.table-result span{font:11px system-ui;color:#b8c9aa}.modal-backdrop{position:fixed;inset:0;background:#09251e9c;backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:10}.modal{position:relative;width:560px;max-width:100%;max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;background:var(--paper);border-radius:16px;padding:35px;box-shadow:0 20px 80px #0003;outline:none}.modal>.eyebrow{margin-bottom:14px}.modal h2{padding-right:20px;line-height:1.2}.modal>p{font-size:13px}.modal-close{position:absolute;top:15px;right:15px;border:0;font:24px system-ui}.result-banner{background:#e8efdf;border-radius:9px;padding:18px;margin:23px 0}.result-banner>span{font-size:10px;color:#708361}.result-banner>div{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:8px;font:24px 'Courier Prime',monospace}.result-banner strong{font-weight:400}.result-banner.lost{background:#f0eade}.score-detail{width:100%;border-collapse:collapse;font-size:12px}.score-detail th,.score-detail td{padding:10px 4px;text-align:right}.score-detail th:first-child{text-align:left;font-weight:400}.score-detail thead{color:#8b947e;font-size:10px}.score-detail .subtotal{border-top:1px solid #dedfce}.score-detail .total-row{border-top:1px solid #b9c8af;font-weight:700;font-size:14px}.score-detail .total-row th{font-weight:700}.result-note{font-size:10px!important;color:#7f896f}.full-width{display:block;width:100%;margin-top:20px}.option-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 0;border-bottom:1px solid var(--line);font-size:13px}.option-row small{display:block;color:var(--muted);font-size:11px;line-height:1.6;margin-top:5px}.option-row input{width:20px;height:20px;accent-color:var(--forest)}.last-detail{display:flex;gap:10px;margin-top:25px}.last-detail>div{flex:1;min-width:0;text-align:center;font-size:11px}.last-detail img{margin-bottom:10px}.rules-block{background:#eef0e3;border-radius:8px;padding:20px;margin:20px 0}.rules-block h3{margin:0 0 10px}.rules-block h3:not(:first-child){margin-top:25px}.rank-order{font-family:'Courier Prime',monospace;margin-bottom:4px;word-spacing:3px}.rules-block .muted{margin:0;font-size:10px}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);background:var(--deep);color:var(--cream);font-size:12px;padding:13px 20px;border-radius:8px;box-shadow:0 4px 20px #0002;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:20;max-width:90%;width:max-content}#toast.visible{opacity:1;transform:translate(-50%,0)}@keyframes deal-in{from{opacity:0;scale:.85}to{opacity:1;scale:1}}
@media(min-width:1400px){.home{min-height:760px}.felt{height:460px}.hand{min-height:145px}.hand-card{flex-basis:84px}}
@media(max-width:1000px){.home{gap:35px;padding:45px 30px;grid-template-columns:1fr 400px}.welcome h1{font-size:50px}.hero-cards{width:300px}.hero-cards>img{width:90px;left:calc(15px + var(--i)*43px)}.hero-stamp{width:75px;height:75px;right:5px;bottom:25px;font-size:9px}.home-notes{gap:10px;font-size:9px}.app-footer{padding:23px 30px}.game-layout{gap:15px;grid-template-columns:minmax(0,1fr) 190px}.game-sidebar{padding:6px 15px}.hand-panel{padding:10px 12px}.hand-card{margin-right:3px}.felt{height:400px}.seat.west{left:15px}.seat.east{right:15px}.contract-chip{left:18px;bottom:18px;max-width:145px}.trick-count{right:18px;bottom:18px}.table-watermark{right:25px}.bid-controls{gap:5px}.bid-controls button{font-size:11px;padding:10px}.bid-controls select{font-size:11px}}
@media(max-width:760px){.app-header{padding:16px 20px}.brand{font-size:27px}.brand-symbol{font-size:30px}.header-actions{gap:13px}.connection{font-size:10px}.home{grid-template-columns:1fr;gap:25px;max-width:500px;padding:30px 20px}.welcome{position:relative;min-height:180px;padding-top:10px}.welcome .eyebrow{font-size:8px;margin-bottom:16px}.welcome h1{font-size:42px;letter-spacing:-2px;margin-bottom:15px}.welcome>p{font-size:12px;max-width:210px}.hero-cards{position:absolute;width:170px;height:150px;top:23px;right:0;margin:0;pointer-events:none}.hero-cards>img{width:58px;left:calc(5px + var(--i)*27px);top:15px}.hero-stamp{right:0;bottom:0;width:65px;height:65px;font-size:8px}.hero-stamp strong{font-size:8px}.home-notes{margin-top:18px;gap:16px;font-size:10px}.setup-panel{padding:27px 24px}.setup-panel h2{font-size:26px;margin-bottom:22px}.app-footer{font-size:9px;padding:22px 20px;gap:10px}.app-footer>span:last-child{text-align:right}.game-layout{display:block;margin-top:15px;padding:0 12px}.scoreboard{padding:13px 18px}.score-us,.score-them{gap:10px;width:95px}.score-us>strong,.score-them>strong{font-size:27px}.score-us>span,.score-them>span{font-size:12px}.score-center>strong{font-size:11px}.score-center>span{font-size:7px}.score-center>small{font-size:8px}.felt{height:370px;border-width:5px;border-top:0}.felt-inner{inset:12px;border-radius:95px}.seat.north{top:17px}.seat.west{top:42%;left:17px}.seat.east{top:42%;right:17px}.avatar{width:34px;height:34px;font-size:18px}.seat>strong{font-size:10px}.seat.south{bottom:17px}.seat-role{font-size:7px}.trick-area{scale:.88;transform:translate(-56.8%,-56.8%);top:51%}.contract-chip{padding:8px 9px;max-width:130px;left:17px;bottom:17px;gap:4px}.contract-chip>span{font-size:9px}.contract-chip>small{font-size:8px}.contract-chip>b{font-size:8px}.trick-count{font-size:8px;bottom:19px;right:17px}.table-watermark{font-size:25px;right:20px;bottom:38px}.hand-panel{margin-top:10px;padding:9px 12px 13px}.turn-line h1{font-size:12px}.hand{min-height:110px;padding-top:13px}.hand-card{flex-basis:68px;margin-right:calc(clamp(-17px, (100vw - 590px)/12, 3px))}.hand-card>.card-image{border-radius:4px}.hand-card:not(:disabled):hover{transform:translateY(-5px)}.game-controls{min-height:60px}.action-row{gap:7px}.action-row button{font-size:11px;padding:11px 12px}.suit-choices button{padding:10px 9px;font-size:10px}.play-message{font-size:10px}.wait-message{font-size:10px}.game-sidebar{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:0 20px;padding:0 18px}.sidebar-section{padding:18px 0}.journal{grid-column:1/-1;border-bottom:0;display:none}.game-sidebar .rules-button{grid-column:1/-1;margin:13px 0 0}.save-note{grid-column:1/-1;margin:10px 0 15px}.save-note br{display:none}.round-points{margin-top:12px;justify-content:flex-start;gap:30px}.round-points strong{font-size:24px}.last-cards{max-width:170px;margin-top:11px}.last-winner{max-width:170px;font-size:10px}.game-sidebar .eyebrow{font-size:8px;letter-spacing:1.5px}.sidebar-section .muted{font-size:9px}.modal{padding:28px 23px}.modal h2{font-size:25px}.result-banner>div{font-size:21px}.bid-controls{flex-wrap:wrap;gap:7px}.bid-controls>label{flex:1;min-width:90px}.bid-controls>button{flex:1}.bid-controls select{width:100%}.score-detail{font-size:11px}.score-detail th,.score-detail td{padding:9px 3px}}
@media(max-width:370px){.welcome h1{font-size:36px}.hero-cards{right:-8px;scale:.85;transform-origin:right center}.home-notes{font-size:8px}.felt{height:350px}.seat.west{left:10px}.seat.east{right:10px}.trick-area{scale:.8;transform:translate(-62.5%,-62.5%)}.contract-chip{max-width:110px;left:12px}.seat.south{left:57%}.hand-card{margin-right:-20px}.turn-line .quiet span{display:none}.connection>span{display:none}.scoreboard{padding:12px}.score-us,.score-them{width:80px;gap:7px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Cartes web : indices constants, dessins non étirés et mêmes dimensions. */
.card-face{position:relative;display:block;container-type:inline-size;background:#fffefa;border:1px solid #c4c2b8;border-radius:7px;aspect-ratio:5/7;color:#16241f;overflow:hidden;box-shadow:0 1px 2px #172c1b14;text-align:left;user-select:none}
.card-face.red-card{color:#b72d32}.card-corner{position:absolute;z-index:2;display:flex;flex-direction:column;align-items:center;line-height:.98;font-family:'Courier Prime',monospace;font-size:clamp(9px,18cqw,22px);font-weight:700;letter-spacing:-1px}.card-corner.top{left:5%;top:4%}.card-corner.bottom{right:5%;bottom:4%;transform:rotate(180deg)}.card-corner>span{font-family:serif;letter-spacing:0;font-size:1.05em}.card-corner>b{font-weight:700}.card-portrait{position:absolute;inset:18% 17%;display:flex;align-items:center;justify-content:center;border-top:1px solid #e3d9bd;border-bottom:1px solid #e3d9bd;background:#fff}.card-portrait>img{display:block;width:100%;height:100%;object-fit:contain}.card-ace{position:absolute;inset:25%;display:grid;place-items:center;font:50cqw Georgia,serif}.card-pips{position:absolute;inset:21% 29%}.card-pips>i{position:absolute;display:block;font:26cqw Georgia,serif;line-height:1;font-style:normal;transform:translate(-50%,-50%) rotate(var(--flip))}.hero-card{position:absolute;width:111px;left:calc(45px + var(--i)*52px);top:20px;transform:rotate(calc((var(--i) - 1.5)*12deg)) translateY(calc((var(--i) - 1.5)*(var(--i) - 1.5)*8px));box-shadow:0 9px 16px #1e39211a;border-radius:7px}.last-cards>.card-face{width:25%;border-radius:4px}.last-detail .card-face{margin-bottom:10px}.card-value{font-size:10px;font-family:system-ui;letter-spacing:0}.hand-card{box-shadow:0 3px 8px #253a231c}.hand-card.unplayable{opacity:.48;filter:grayscale(.4)}.hand-card:not(:disabled):hover .card-face,.hand-card:not(:disabled):focus-visible .card-face{border-color:#9a7b39;box-shadow:0 0 0 2px #d5b66e80}.card-motion-layer{position:fixed;inset:0;pointer-events:none;z-index:9;overflow:hidden}.flying-card{position:absolute;will-change:transform,opacity;filter:drop-shadow(0 8px 10px #0004)}.flying-card>.card-face{width:100%;height:100%;aspect-ratio:auto}.is-playing .app-header{padding-block:12px}
@media(min-width:761px){.is-playing .game-layout{margin-top:16px}.felt{height:clamp(280px,calc(100dvh - 460px),420px)}.hand{min-height:0;padding-top:16px}.hand-card{flex-basis:80px}.hand-panel{margin-top:12px}.game-controls{min-height:55px}.is-playing .app-footer{padding-block:16px}}
@media(min-width:761px) and (max-height:850px){.trick-area{scale:.78;transform:translate(-64.1%,-64.1%)}.seat.north{top:12px}.seat.south{bottom:12px}.felt-inner{inset:10px}.hand-card{flex-basis:68px}.hand-panel{padding-block:9px}.game-controls{min-height:48px}.turn-line{margin-bottom:4px}}
@media(max-width:1000px){.hero-card{width:90px;left:calc(15px + var(--i)*43px)}}
@media(max-width:760px){.hero-card{width:58px;left:calc(5px + var(--i)*27px);top:15px}.is-playing .app-header{padding-block:12px}.hand-card{flex-basis:66px}.card-face{border-radius:5px}.card-corner{font-size:18cqw}.card-value{font-size:9px}.hand-card:not(:disabled):focus-visible{position:relative;z-index:3}}

/* Positions sans rotation : le rectangle animé et celui d’arrivée coïncident. */
.played-card.north,.played-card.west,.played-card.east,.played-card.south,.turned-card>.card-image{transform:none}
.played-card{animation:none}
.card-corner{font-size:18cqw}
.flying-card>.card-face{box-shadow:0 1px 2px #172c1b14}
.flying-card{filter:none;transform-origin:50% 50%}

/* Dernière annonce de chaque joueur, sans masquer sa précédente enchère. */
.seat-bid{position:absolute;left:calc(100% + 10px);top:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:57px;max-width:105px;padding:6px 9px;border:1px solid #adbf9b70;border-radius:7px;background:#f5f2e8;color:#394c3c;box-shadow:0 3px 8px #0002;white-space:nowrap;line-height:1.2;pointer-events:none}
.seat-bid.leading{border-color:#ddbe73;background:#f5e8c3}.seat-bid .bid-value{font:700 15px 'Courier Prime',monospace;color:#173e2d}.seat-bid .bid-action{font:10px system-ui;color:#65705b}.seat-bid .suit.red{color:#b72d32}.seat.west .seat-bid{left:0;top:auto;bottom:calc(100% + 9px)}.seat.east .seat-bid{left:auto;right:0;top:auto;bottom:calc(100% + 9px)}.seat.south .seat-bid{top:0}
@media(max-width:760px){.seat-bid{padding:5px 7px;max-width:92px;min-width:49px;left:calc(100% + 7px)}.seat-bid .bid-value{font-size:13px}.seat-bid .bid-action{font-size:9px}.seat.south .seat-bid{left:50%;top:auto;bottom:calc(100% + 8px);transform:translateX(-50%)}}

/* Une liste de niveaux dans chacune des quatre couleurs. */
.suit-bid-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto auto;gap:8px;text-align:left;width:100%}.suit-bid-controls>.suit-bid-choice{display:block;min-width:0;font-size:11px;font-weight:600}.suit-bid-choice>span{display:block;white-space:nowrap;padding:0 3px}.suit-bid-choice select{width:100%;min-width:0;padding:10px 7px;font-size:12px;background:var(--paper)}.suit-bid-choice.chosen select{border-color:#7a986b;background:#eef2e4;box-shadow:0 0 0 1px #7a986b22}.suit-bid-controls>button:disabled{opacity:.45;cursor:default}
@media(max-width:760px){.suit-bid-controls{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.suit-bid-controls>.suit-bid-choice{font-size:10px;min-width:0}.suit-bid-choice>span{padding:0}.suit-bid-choice select{font-size:11px;padding:10px 5px}.suit-bid-controls>button{grid-column:span 2;margin-top:3px}}

/* Accueil mobile : illustration dans le flux, après le titre et le texte. */
@media(max-width:760px){
  .welcome{min-height:0}
  .welcome>p{max-width:none}
  .hero-cards{position:relative;top:auto;right:auto;width:220px;height:150px;margin:12px auto 0;pointer-events:none;scale:1;transform:none}
  .hero-card{width:65px;left:calc(16px + var(--i)*32px);top:9px}
  .hero-stamp{right:0;bottom:0}
  .home-notes{margin-top:16px}
}

/* Annonces orales de belote, attachées au joueur pendant trois secondes. */
.belote-bubble{position:absolute;left:calc(100% + 10px);top:0;z-index:3;padding:8px 11px;background:#fff1c8;border:1px solid #d5b66e;border-radius:9px;color:#214635;box-shadow:0 3px 10px #0002;white-space:nowrap;font-size:11px;font-weight:700;line-height:1.3;pointer-events:none;animation:belote-pop .16s ease-out}
.belote-bubble::after{content:'';position:absolute;left:-4px;top:11px;width:6px;height:6px;background:#fff1c8;border-left:1px solid #d5b66e;border-bottom:1px solid #d5b66e;transform:rotate(45deg)}
.seat.west .belote-bubble,.seat.east .belote-bubble{left:50%;top:auto;bottom:calc(100% + 9px);transform:translateX(-50%)}
.seat.west .belote-bubble::after,.seat.east .belote-bubble::after{left:calc(50% - 3px);top:auto;bottom:-4px;border-left:0;border-right:1px solid #d5b66e}
@keyframes belote-pop{from{opacity:0;scale:.9}to{opacity:1;scale:1}}
@media(max-width:760px){.belote-bubble{font-size:10px;padding:7px 9px}.seat.south .belote-bubble{left:50%;top:auto;bottom:calc(100% + 8px);transform:translateX(-50%)}.seat.south .belote-bubble::after{left:calc(50% - 3px);top:auto;bottom:-4px;border-left:0;border-right:1px solid #d5b66e}}

/* Lecture mobile : indices des cartes prioritaires, textes et commandes agrandis. */
@media(max-width:760px){
  .welcome>p{font-size:15px;line-height:1.7}
  .eyebrow,.welcome .eyebrow,.setup-panel>.eyebrow{font-size:11px;letter-spacing:1.5px}
  .home-notes{font-size:12px;gap:12px}
  .label-line>label,.field-label,legend{font-size:15px}
  .label-line>select,.player-choice,.segmented span,.check{font-size:14px}
  .primary,.secondary,.action-row button{font-size:15px}
  .resume-box{font-size:15px}.resume-box p,.resume-box .secondary{font-size:14px}
  .setup-hint,.muted{font-size:13px}
  .scoreboard{padding:14px 15px;gap:8px}
  .score-us,.score-them{width:auto;min-width:0;gap:7px;flex:1}
  .score-us>span,.score-them>span{font-size:15px}
  .score-us>strong,.score-them>strong{font-size:32px;font-weight:700}
  .score-center>span{font-size:10px;letter-spacing:1px}
  .score-center>strong{font-size:14px}.score-center>small{font-size:11px}
  .seat>strong{font-size:14px;font-weight:600}
  .seat strong small{font-size:11px}.seat-role{font-size:10px}
  .avatar{width:38px;height:38px;font-size:22px}
  .seat.west{left:13px}.seat.east{right:13px}
  .contract-chip{max-width:140px;padding:9px}
  .contract-chip>span{font-size:12px}.contract-chip>small,.contract-chip>b{font-size:11px}
  .trick-count{font-size:11px}
  .turn-line h1{font-size:16px;line-height:1.4}
  .turn-line .quiet{font-size:14px}
  .hand{min-height:125px;padding-top:20px}
  .hand-card{flex-basis:clamp(64px,20vw,84px);margin-right:clamp(-34px,calc((100vw - 900px)/16),-14px)}
  .hand-card:last-child{margin-right:0}
  .card-corner{font-size:24cqw;line-height:1;font-family:system-ui,sans-serif;font-weight:800;letter-spacing:-.5px}
  .card-corner>b{font-weight:800}.card-corner>span{font-size:1em}
  .card-corner.top{left:5%;top:3%}.card-corner.bottom{right:5%;bottom:3%}
  .card-portrait{inset:22% 22%}
  .card-pips{inset:24% 31%}
  .card-value{font-size:12px;top:-21px;color:#465d3e}
  .play-message,.wait-message{font-size:14px;line-height:1.65}
  .game-controls{padding-top:12px;min-height:65px}
  .suit-bid-controls>.suit-bid-choice{font-size:12px}
  .suit-bid-choice select{font-size:16px;padding:11px 4px;min-height:46px}
  .suit-bid-controls>button{font-size:15px;min-height:46px}
  .seat-bid{min-width:57px;padding:6px 9px;max-width:105px}
  .seat-bid .bid-value{font-size:17px}.seat-bid .bid-action{font-size:12px}
  .belote-bubble{font-size:14px;padding:8px 10px}
  .auction-center>.eyebrow{font-size:10px}.auction-center>strong{font-size:48px}
  .auction-center>small,.turned-card>small{font-size:13px}
  .auction-center>span:not(.eyebrow){font-size:17px}
  .turned-card>span{font-size:12px}
  .game-sidebar .eyebrow{font-size:11px;letter-spacing:1px}
  .round-points>span{font-size:14px}.round-points strong{font-size:30px}
  .sidebar-section .muted,.last-winner,.save-note{font-size:12px}
  .game-sidebar .rules-button{font-size:14px;min-height:44px}
  .modal>p,.option-row{font-size:15px}.option-row small{font-size:13px}
  .score-detail{font-size:14px}.score-detail thead{font-size:12px}
  .score-detail .total-row{font-size:16px}.result-note{font-size:12px!important}
  .rules-block .muted{font-size:12px}.rank-order{font-size:16px;word-spacing:0}
  .last-detail>div{font-size:14px}
}
@media(max-width:370px){
  .scoreboard{padding-inline:10px;gap:5px}
  .score-us,.score-them{gap:5px}
  .score-us>span,.score-them>span{font-size:13px}
  .score-us>strong,.score-them>strong{font-size:29px}
  .score-center>strong{font-size:13px}.score-center>small{font-size:10px}
  .suit-bid-controls>.suit-bid-choice{font-size:11px}
  .seat.north .seat-bid{left:calc(100% + 5px);padding-inline:6px}
  .seat.north .belote-bubble{left:calc(100% + 5px);padding-inline:6px;font-size:13px}
  .contract-chip{left:12px;max-width:120px}.contract-chip>span{font-size:11px}
}
@media(max-width:760px){.contract-chip{max-width:calc((100% - 130px)/2)}.contract-chip>small{overflow-wrap:anywhere}}

@media(max-width:760px){.card-value{font-weight:600}.card-value small{font-size:9px;font-weight:400}.seat-bid .bid-action{white-space:normal;text-align:center}}
@media(max-width:370px){.score-us,.score-them{flex-direction:column;align-items:flex-start;gap:2px}.score-them{align-items:flex-end}.seat.north .seat-bid{max-width:calc(50vw - 70px)}.seat.north .seat-bid .bid-value{font-size:16px}}
@media(min-width:761px){.card-value small{font-size:inherit}}
@media(max-width:370px){.player-choice{padding:10px 7px;gap:7px;min-width:0}}

/* Chaque carte possède sa propre couche : les indices ne traversent pas la voisine. */
.card-face{isolation:isolate;background-color:#fffefa}
.hand-card{isolation:isolate;z-index:0;opacity:1}
.hand-card.unplayable{opacity:1;filter:none}
.hand-card.unplayable>.card-face{background-color:#e6e8df;filter:grayscale(1)}
.hand-card.unplayable>.card-face::after{content:'';position:absolute;inset:0;z-index:3;background:rgba(235,236,226,.52);pointer-events:none}
.hand-card:not(:disabled):focus-visible{z-index:3}
@media(hover:hover){.hand-card:not(:disabled):hover{z-index:2}}
@media(hover:none){.hand-card:not(:disabled):hover{transform:none}}
@media(max-width:760px){
  .hand{--card-width:clamp(64px,20vw,84px)}
  .hand-card{flex:0 0 var(--card-width);margin-right:min(5px,calc((100% - var(--count)*var(--card-width))/max(1,calc(var(--count) - 1))))}
  .hand-card:last-child{margin-right:0}
  .card-pips{inset:28% 35%}
  .card-pips>i{font-size:19cqw}
  .hand-card,.card-face{box-shadow:0 2px 5px #253a2314}
}
@media(max-width:760px){.hand-card:not(:last-child) .card-corner.bottom{visibility:hidden}}

/* Cartes épurées : grands indices en haut à droite, un symbole en bas à droite. */
.card-corner.top{left:auto;right:6%;top:4%;font:800 29cqw/1 system-ui,sans-serif;letter-spacing:-.7px}
.card-corner.top>b{font-weight:800}.card-corner.top>span{font-size:1em;line-height:1}
.card-single-suit{position:absolute;right:7%;bottom:7%;font:36cqw/1 Georgia,serif}
.card-face>.card-portrait{inset:18% 35% 10% 8%;border:0;background:transparent}
.hand-card{z-index:var(--card-layer,0)}
.hand-card:not(:disabled):focus-visible{z-index:100}
.card-value{left:auto;right:6%;text-align:right}
@media(hover:hover){.hand-card:not(:disabled):hover{z-index:100}}
.card-face>.card-portrait{inset:46% 5% 6% 45%}

/* Indices à gauche ; le dessin occupe tout l’espace disponible en dessous. */
.card-corner.top{left:5%;right:auto;top:4%}
.card-single-suit{right:5%;bottom:4%;font-size:64cqw;line-height:1}
.card-face>.card-portrait{inset:calc(4% + 63cqw) 4% 4%}
.card-value{left:5%;right:auto;text-align:left}

/* Sur mobile, la partie utilise la hauteur visible entre les barres du navigateur. */
.mobile-match-bar{display:none}
@media(max-width:760px){
  body.is-playing{height:100dvh;overflow:hidden}
  .is-playing #app{height:100%;min-height:0}
  .is-playing .app-header,.is-playing .app-footer,.is-playing .game-sidebar{display:none}
  .is-playing .game-layout{height:100%;min-height:0;margin:0;padding:max(6px,env(safe-area-inset-top)) 8px max(6px,env(safe-area-inset-bottom));display:grid;grid-template-rows:minmax(0,1fr) 32px;gap:6px}
  .is-playing .game-main{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto}
  .is-playing .scoreboard{padding:8px 12px;min-height:62px}
  .is-playing .felt{height:auto;min-height:0;border-width:4px;border-top:0}
  .is-playing .felt-inner{inset:8px;border-radius:70px}
  .is-playing .seat.north{top:8px;flex-direction:row;gap:7px}
  .is-playing .seat.north>strong{margin:0}
  .is-playing .seat.south{bottom:8px}
  .is-playing .seat.west,.is-playing .seat.east{top:50%;transform:translateY(-50%)}
  .is-playing .seat.north .seat-bid{left:calc(100% + 5px);top:0;max-width:calc(50vw - 80px)}
  .is-playing .seat.north .belote-bubble{left:calc(100% + 5px);font-size:13px;padding-inline:6px}
  .is-playing .contract-chip{left:10px;bottom:8px;padding:6px 8px;gap:3px}
  .is-playing .trick-count{right:12px;bottom:10px}
  .is-playing .table-watermark{display:none}
  .is-playing .trick-area{width:168px;height:min(150px,calc(100% - 96px));top:50%;left:50%;scale:none;transform:translate(-50%,-50%)}
  .is-playing .played-card{width:52px}
  .is-playing .played-card.north,.is-playing .played-card.south{left:50%;transform:translateX(-50%)}
  .is-playing .played-card.north{top:0}
  .is-playing .played-card.south{bottom:0}
  .is-playing .played-card.west,.is-playing .played-card.east{top:50%;transform:translateY(-50%)}
  .is-playing .played-card.west{left:0}.is-playing .played-card.east{right:0}
  .is-playing .turned-card{gap:4px}
  .is-playing .turned-card>.card-image{width:52px}
  .is-playing .turned-card>span,.is-playing .turned-card>small{font-size:11px;line-height:1.2}
  .is-playing .auction-center{gap:5px}
  .is-playing .auction-center>strong{font-size:34px;line-height:1}
  .is-playing .auction-center>.eyebrow{font-size:9px}
  .is-playing .auction-center>small{font-size:12px}
  .is-playing .auction-center>span:not(.eyebrow){font-size:15px}
  .is-playing .hand-panel{margin-top:6px;padding:6px 8px;min-height:0}
  .is-playing .turn-line{min-height:26px;margin-bottom:4px}
  .is-playing .turn-line h1{font-size:15px;line-height:1.25}
  .is-playing .turn-line .quiet{font-size:13px;padding:4px}
  .is-playing .hand{--card-width:clamp(60px,18vw,76px);min-height:0;padding:4px 0 2px}
  .is-playing .hand:has(.card-value){padding-top:19px}
  .is-playing .game-controls{min-height:0;padding-top:6px}
  .is-playing .play-message,.is-playing .wait-message{font-size:13px;line-height:1.4}
  .is-playing .game-controls>.muted{font-size:12px;line-height:1.3;margin:0 0 4px}
  .is-playing .action-row button{min-height:40px;padding:8px 10px;font-size:14px}
  .is-playing .suit-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
  .is-playing .suit-bid-controls{gap:5px}
  .is-playing .suit-bid-controls>.suit-bid-choice{font-size:11px;line-height:1.2}
  .is-playing .suit-bid-choice select{min-height:40px;padding:8px 3px;margin-top:3px;font-size:16px}
  .is-playing .suit-bid-controls>button{min-height:40px;padding:8px 10px;margin-top:0;font-size:14px}
  .is-playing .mobile-match-bar{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;padding:3px 7px;border:1px solid var(--line);border-radius:7px;background:var(--paper);font-size:12px;line-height:1.2}
  .mobile-match-bar>span{min-width:0}.mobile-match-bar b{font-weight:600}
  .mobile-match-bar .quiet{padding:3px 0;font-size:12px;white-space:nowrap}
}
@media(max-width:370px){
  .is-playing .score-us,.is-playing .score-them{flex-direction:row;align-items:center}
  .is-playing .trick-area{width:144px}
  .is-playing .played-card{width:44px}
  .is-playing .seat.west{left:6px}.is-playing .seat.east{right:6px}
  .is-playing .seat>strong{font-size:12px}
  .is-playing .seat.south{left:55%}
  .is-playing .mobile-match-bar{font-size:11px}
}
@media(max-width:760px) and (orientation:landscape) and (max-height:500px){
  .is-playing .game-main{grid-template-columns:minmax(0,1fr) minmax(240px,.9fr);grid-template-rows:auto minmax(0,1fr);gap:0 7px}
  .is-playing .scoreboard{grid-column:1;grid-row:1}
  .is-playing .felt{grid-column:1;grid-row:2}
  .is-playing .hand-panel{grid-column:2;grid-row:1/span 2;margin-top:0;display:flex;flex-direction:column;justify-content:center}
  .is-playing .hand{--card-width:60px;flex-shrink:0}
  .is-playing .score-center>small{display:none}
  .is-playing .scoreboard{min-height:46px;padding-block:5px}
}
@media(max-width:760px){
  .is-playing .felt{container-type:inline-size;container-name:table}
  .game-layout[data-phase=bid] .game-controls{min-height:110px}
  .game-layout[data-phase=take2] .game-controls{min-height:110px}
  .game-layout[data-phase=take1] .game-controls,.game-layout[data-phase=double] .game-controls,.game-layout[data-phase=redouble] .game-controls{min-height:46px}
  .game-layout[data-phase=play] .game-controls,.game-layout[data-phase=collect] .game-controls{min-height:56px}
}
@container table (max-width:310px){
  .is-playing .trick-area{width:144px}
  .is-playing .played-card{width:44px}
  .is-playing .seat.west{left:6px}.is-playing .seat.east{right:6px}
  .is-playing .seat>strong{font-size:12px}
}
@media(max-width:760px){.is-playing .game-layout{grid-template-columns:minmax(0,1fr)}.is-playing .game-main{grid-column:1;grid-row:1}.is-playing .mobile-match-bar{grid-column:1;grid-row:2}}
@media(max-width:760px){
  .is-playing .seat.north .seat-bid{max-width:max(57px,calc(50cqw - 62px))}
  .is-playing .seat.east .seat-bid{top:calc(100% + 5px);bottom:auto;right:0;flex-direction:row;max-width:110px;padding:4px 6px;gap:4px}
  .is-playing .seat.south .seat-bid{left:calc(100% + 5px);top:auto;bottom:0;transform:none;max-width:max(57px,calc(50cqw - 66px))}
  .game-layout:not([data-phase=play]):not([data-phase=collect]) .trick-count{display:none}
}
@media(max-width:760px){
  .game-layout:not([data-phase=play]):not([data-phase=collect]):not([data-phase=roundEnd]) .backs,
  .game-layout:not([data-phase=play]):not([data-phase=collect]):not([data-phase=roundEnd]) .contract-chip{display:none}
  .is-playing .seat.west .seat-bid{bottom:calc(100% + 5px)}
  .is-playing .seat.south .seat-bid{left:auto;right:calc(100% + 5px);bottom:0}
}

/* Le contrat suit le preneur, sans occuper un emplacement fixe du tapis. */
.player-contract{position:absolute;display:block;left:calc(100% + 7px);top:0;width:76px;padding:5px 6px;border:1px solid #d5b66e;border-radius:7px;background:#f5f2e8;color:#173e2d;font-size:12px;font-weight:600;line-height:1.25;text-align:center;white-space:normal;pointer-events:none;box-shadow:0 2px 6px #0002}
.player-contract .suit.red{color:#b72d32}.player-contract .contract-mult{font-size:10px;white-space:nowrap}
.seat.west .player-contract{left:0;top:calc(100% + 4px)}
.seat.east .player-contract{left:auto;right:0;top:calc(100% + 4px)}
.seat.south .player-contract{left:auto;right:calc(100% + 7px);top:auto;bottom:0}
@media(max-width:760px){.is-playing .seat.north .player-contract{left:calc(100% + 5px);max-width:min(76px,calc(50cqw - 55px))}.is-playing .seat.south .player-contract{right:calc(100% + 5px)}}
.seat.north .belote-bubble{left:auto;right:calc(100% + 7px)}
@media(max-width:760px){.is-playing .seat.north .belote-bubble{left:auto;right:calc(100% + 5px)}}

/* Accueil plus compact sur ordinateur, formulaire prioritaire sur mobile. */
@media(min-width:761px){
  body:not(.is-playing) .app-header{padding-block:18px}
  .home{min-height:0;padding-block:20px}
  .setup-panel{padding:26px 28px}
  .setup-panel h2{margin-bottom:20px}
  .player-choices{margin:10px 0 18px}
  .setup-panel fieldset{margin-bottom:16px}
  .resume-box{padding:12px;margin-bottom:18px}
  .start-button{margin-top:18px;padding-block:14px}
  .field-label{margin:12px 0 8px}
  body:not(.is-playing) .app-footer{padding-block:16px}
}
@media(min-width:761px) and (max-height:850px){
  body:not(.is-playing) .app-header{padding-block:12px}
  .home{padding-block:12px}
  .welcome h1{font-size:50px}
  .hero-cards{height:175px}
  .hero-card{width:90px;left:calc(45px + var(--i)*45px);top:10px}
  .hero-stamp{width:75px;height:75px;bottom:0}
  .setup-panel{padding:20px 24px}
  .setup-panel>.eyebrow{margin-bottom:8px}
  .setup-panel h2{font-size:25px;margin-bottom:12px}
  .resume-box{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;margin-bottom:12px}
  .resume-box p{margin:4px 0 0}
  .resume-box .secondary{flex-shrink:0}
  .player-choices{gap:7px;margin:10px 0 14px}
  .player-choice{padding:8px 10px}
  .setup-panel fieldset{margin-bottom:10px}
  .setup-panel legend{margin-bottom:8px}
  .segmented span{padding-block:8px}
  .field-label{margin:10px 0 8px}
  #target{padding-block:10px}
  .start-button{margin-top:14px;padding-block:12px}
  .dry-option{margin:0 0 8px}
  body:not(.is-playing) .app-footer{padding-block:12px}
}
@media(max-width:760px){
  .home{display:flex;flex-direction:column;gap:26px;padding-top:18px}
  .home>.setup-panel{order:0;width:100%}
  .home>.welcome{order:1;width:100%}
}
@media(max-width:760px) and (max-height:850px){
  body:not(.is-playing) .app-header{padding-block:12px}
  .home{padding-top:10px}
  .home>.setup-panel{padding:18px 20px}
  .setup-panel>.eyebrow{margin-bottom:8px}
  .setup-panel h2{font-size:24px;margin-bottom:16px}
  .resume-box{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px;margin-bottom:12px}
  .resume-box strong{display:none}
  .resume-box p{font-size:12px;line-height:1.4;margin:0}
  .resume-box .secondary{flex-shrink:0;font-size:13px;min-height:38px;padding:8px 10px}
  .player-choices{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:10px 0 14px}
  .player-choice{min-width:0;flex-direction:column;padding:7px 3px;gap:4px;font-size:13px;text-align:center}
  .setup-panel legend{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .setup-panel fieldset{margin-bottom:12px}
  .segmented span{padding-block:9px;font-size:14px}
  .target-field{display:flex;align-items:center;gap:8px}
  .target-field .field-label{flex:1;margin:0;font-size:14px;line-height:1.3}
  .target-field #target{flex:0 0 130px;width:130px;padding:9px;font-size:15px}
  .start-button{margin-top:14px;padding-block:12px}
  .dry-option{margin:0 0 10px}
}
@media(max-width:370px) and (max-height:850px){
  .home>.setup-panel{padding:16px 18px}
  .player-choice{font-size:12px;padding-inline:1px}
  .target-field #target{flex-basis:112px;width:112px;font-size:14px}
}
@media(max-width:760px) and (max-height:620px){
  body:not(.is-playing) .app-header{padding-block:8px}
  .home{padding-top:6px}
  .home>.setup-panel{padding:12px 16px}
  .setup-panel h2{font-size:22px;margin-bottom:10px}
  .resume-box{margin-bottom:8px}
  .player-choices{margin-top:8px;margin-bottom:8px}
  .start-button{margin-top:10px}
}
