*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--red: #c41e3a;--red-dark: #8b1528;--gold: #d4af37;--green: #1a5c2a;--bg: #0d1f0f;--surface: #132416;--surface2: #1e3320;--border: #2d4a30;--text: #f0ead6;--text-muted: #b1c2a5;--card-bg: #fdf5e6;--card-border: #c8a96e;--radius: 8px;--shadow: 0 4px 16px rgba(0,0,0,.4)}body{font-family:Inter,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}h1,h2,h3{font-family:Cinzel,serif}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:4px}:focus:not(:focus-visible){outline:none}.spinner{width:42px;height:42px;margin:0 auto 1rem;border:3px solid rgba(212,175,55,.25);border-top-color:var(--gold);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#1a3320,#0d1f0f 70%);padding:1rem}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2.5rem;width:100%;max-width:420px;box-shadow:var(--shadow)}.auth-logo{text-align:center;margin-bottom:2rem}.auth-logo h1{color:var(--gold);font-size:2rem;letter-spacing:2px}.auth-logo p{color:var(--text-muted);font-size:.85rem;margin-top:.25rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-size:.875rem;color:var(--text-muted);margin-bottom:.4rem;font-weight:500}.form-group input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:.65rem .9rem;color:var(--text);font-size:.95rem;transition:border-color .2s}.form-group input:focus{outline:none;border-color:var(--gold)}.hint{font-size:.75rem;color:var(--text-muted);margin-top:.3rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem 1.5rem;border:none;border-radius:var(--radius);font-size:.95rem;font-weight:600;cursor:pointer;transition:opacity .2s,transform .1s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.98)}.btn-primary{background:var(--red);color:#fff}.btn-primary:hover:not(:disabled){background:var(--red-dark)}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--gold)}.btn-gold{background:var(--gold);color:#1a0a00}.btn-gold:hover:not(:disabled){background:#b8962e}.btn-full{width:100%}.btn-mini{padding:.4rem .8rem;font-size:.8rem}.visibility-toggle{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9rem;color:var(--text);text-align:left}.visibility-toggle input{width:auto;cursor:pointer;flex-shrink:0}.visibility-toggle small{color:var(--text-muted);font-size:.78rem}.error-msg{background:#c41e3a26;border:1px solid rgba(196,30,58,.4);color:#f89;border-radius:var(--radius);padding:.6rem .9rem;font-size:.875rem;margin-bottom:1rem}.success-msg{background:#1a5c2a4d;border:1px solid rgba(26,92,42,.6);color:#7ddc96;border-radius:var(--radius);padding:.6rem .9rem;font-size:.875rem;margin-bottom:1rem}.auth-links{text-align:center;margin-top:1.25rem;font-size:.875rem;color:var(--text-muted)}.auth-links a{color:var(--gold);text-decoration:none;margin-left:.3rem}.auth-links a:hover{text-decoration:underline}.lobby-page{min-height:100vh;padding:1.5rem;background:radial-gradient(ellipse at top,#1a3320,#0d1f0f 60%)}.lobby-header{display:flex;align-items:center;justify-content:space-between;max-width:900px;margin:0 auto 2rem}.lobby-header h1{color:var(--gold);font-size:1.5rem}.lobby-content{max-width:900px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}@media (max-width: 600px){.lobby-content{grid-template-columns:1fr}}.card-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem}.card-panel h2{color:var(--gold);font-size:1.1rem;margin-bottom:1rem}.player-list{list-style:none}.player-item{display:flex;align-items:center;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.9rem}.player-item:last-child{border-bottom:none}.team-badge{font-size:.7rem;padding:.15rem .5rem;border-radius:20px;font-weight:600}.team-1{background:#c41e3a33;color:#f89;border:1px solid rgba(196,30,58,.4)}.team-2{background:#1a64b433;color:#8bf;border:1px solid rgba(26,100,180,.4)}.seat-controls{margin-left:auto;display:inline-flex;gap:.25rem}.seat-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text-muted);border-radius:4px;width:26px;height:26px;font-size:.7rem;line-height:1;cursor:pointer;transition:border-color .15s,color .15s}.seat-btn:hover:not(:disabled){border-color:var(--gold);color:var(--gold)}.seat-btn:disabled{opacity:.3;cursor:not-allowed}.online-dot{width:8px;height:8px;border-radius:50%;background:#4caf50;flex-shrink:0}.offline-dot{width:8px;height:8px;border-radius:50%;background:var(--border);flex-shrink:0}.invite-box{display:flex;gap:.5rem;margin-top:.75rem}.invite-box input{flex:1;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:.55rem .75rem;color:var(--text-muted);font-size:.8rem;cursor:text}.lang-toggle{display:flex;gap:.5rem;align-items:center}.lang-btn{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:4px;padding:.25rem .6rem;font-size:.8rem;cursor:pointer;transition:all .2s}.lang-btn.active{border-color:var(--gold);color:var(--gold);background:#d4af371a}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table th{text-align:left;color:var(--gold);font-weight:600;padding:.5rem .6rem;border-bottom:1px solid var(--border);white-space:nowrap}.admin-table td{padding:.55rem .6rem;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.game-page{height:100vh;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.game-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.score-board{display:flex;gap:2rem;align-items:center}.score-team{text-align:center}.score-team .team-name{font-size:.75rem;color:var(--text-muted)}.score-team .score{font-size:2rem;font-family:Cinzel,serif;color:var(--gold);line-height:1}.pierna-dots{display:flex;gap:4px;justify-content:center;margin-top:3px}.pierna-dot{width:8px;height:8px;border-radius:50%;border:1.5px solid var(--text-muted);background:transparent;display:inline-block}.pierna-dot.won{background:var(--gold);border-color:var(--gold)}.score-divider{color:var(--text-muted);font-size:1.2rem}.spectator-badge{font-size:.72rem;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--gold);border:1px solid var(--gold);border-radius:20px;padding:.2rem .6rem}.game-area{flex:1;display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;position:relative;overflow:hidden;padding:1rem}.table-zone{display:flex;align-items:center;justify-content:center;gap:1rem;flex:1}.played-cards{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;min-height:100px;align-items:center}.played-card-in{animation:card-in .38s cubic-bezier(.2,.8,.3,1) backwards}.played-card-in.from-bottom{--dx: 0px;--dy: 90px}.played-card-in.from-top{--dx: 0px;--dy: -90px}.played-card-in.from-left{--dx: -110px;--dy: 0px}.played-card-in.from-right{--dx: 110px;--dy: 0px}@keyframes card-in{0%{opacity:0;transform:translate(var(--dx, 0px),var(--dy, 0px)) scale(1.15) rotate(-4deg)}}.playing-card{width:76px;height:126px;background-color:#fbf6ea;background-image:url(/cards-v1.webp);background-size:600% 500%;background-repeat:no-repeat;border-radius:7px;cursor:pointer;transition:transform .2s cubic-bezier(.2,.7,.3,1),box-shadow .2s;position:relative;-webkit-user-select:none;user-select:none;box-shadow:0 1px 2px #00000040,0 7px 16px #00000061}.playing-card:hover{transform:translateY(-12px) rotate(-1.5deg) scale(1.04);box-shadow:0 3px 6px #0000004d,0 22px 38px #0000008c;z-index:5}.playing-card:focus-visible{outline:3px solid var(--gold);outline-offset:3px;transform:translateY(-8px)}.playing-card:not(.disabled):not(.face-down):active{transform:translateY(-4px) scale(.96);transition-duration:.08s}.playing-card.disabled{cursor:default;filter:saturate(.85) brightness(.97)}.playing-card.disabled:hover{transform:none;box-shadow:0 1px 2px #00000040,0 7px 16px #00000061}.playing-card.face-down{background-position:0% 100%;cursor:default}.playing-card.face-down:hover{transform:none;box-shadow:0 1px 2px #00000040,0 7px 16px #00000061}.playing-card.small-card{border-radius:5px}.hand-zone{display:flex;justify-content:center;gap:.75rem;padding:.5rem;min-height:135px;align-items:flex-end}.opponent-zone{display:flex;justify-content:center;gap:.5rem;min-height:90px;align-items:flex-start}.player-label{font-size:.85rem;color:var(--text-muted);text-align:center;margin-bottom:.3rem}.player-label.team1{color:#eb788cf2}.player-label.team2{color:#82afebf2}.player-label.active{color:var(--gold);font-weight:600}.score-team.mine{border:1px solid rgba(212,175,55,.6);background:#d4af3714;border-radius:10px;padding:.2rem .6rem .3rem}.my-team-tag{font-size:.58rem;color:var(--gold);text-transform:uppercase;letter-spacing:.08em;margin-top:.15rem}.call-badges{display:flex;gap:.3rem;justify-content:center;margin-top:.25rem}.call-badge{font-size:.6rem;padding:.08rem .45rem;border-radius:999px;border:1px solid;white-space:nowrap}.call-badge.truc{color:var(--gold);border-color:#d4af37bf;background:#d4af3724}.call-badge.envit{color:#9fd89f;border-color:#6ebe6eb3;background:#6ebe6e1f}.call-badge.pending{animation:badge-pulse 1s ease-in-out infinite}@keyframes badge-pulse{50%{opacity:.4}}.action-panel{display:flex;gap:.75rem;justify-content:center;padding:.75rem;flex-wrap:wrap;background:#0003;border-radius:8px;margin-top:.5rem}.challenge-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100}.challenge-modal{background:var(--surface);border:2px solid var(--gold);border-radius:12px;padding:2rem;text-align:center;max-width:360px;width:90%}.challenge-modal h2{color:var(--gold);margin-bottom:.5rem}.challenge-modal p{color:var(--text-muted);margin-bottom:1.5rem;font-size:.9rem}.challenge-actions{display:flex;gap:1rem;justify-content:center}.toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.75rem 1.5rem;font-size:.9rem;z-index:200;animation:fadeInUp .3s ease;white-space:nowrap}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.winner-banner{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:200}.winner-card{background:var(--surface);border:2px solid var(--gold);border-radius:16px;padding:3rem 2rem;text-align:center;max-width:400px}.winner-card h1{color:var(--gold);font-size:2.5rem;margin-bottom:.5rem}.winner-card p{color:var(--text-muted);margin-bottom:2rem}.tricks-indicator{display:flex;gap:.5rem;justify-content:center;margin-top:.5rem}.trick-chip{font-size:.72rem;font-family:inherit;padding:.2rem .6rem;border-radius:999px;border:1px solid var(--border);background:#ffffff0a;color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:filter .15s,box-shadow .15s}.trick-chip.team1{background:#c41e3a38;border-color:#c41e3abf;color:#f0b7c0}.trick-chip.team2{background:#1a64b438;border-color:#1a64b4bf;color:#b9d4f2}.trick-chip.team0{background:#aaaaaa1f;border-color:#aaaaaa80}.trick-chip.pending{cursor:default;opacity:.5}.trick-chip:not(.pending):hover{filter:brightness(1.3);box-shadow:0 0 6px #d4af3780}.status-bar{text-align:center;padding:.4rem;font-size:.95rem;color:var(--text-muted)}.status-bar.your-turn{color:var(--gold);font-weight:600}.turn-timer-wrap{display:flex;align-items:center;gap:.5rem;padding:0 .25rem}.turn-timer-bar-bg{flex:1;height:4px;background:var(--surface2);border-radius:2px;overflow:hidden}.turn-timer-bar{height:100%;background:var(--gold);border-radius:2px;transition:width .5s linear,background .3s}.turn-timer-bar.urgent{background:#ff8c00}.turn-timer-bar.critical{background:var(--red)}.turn-timer-label{font-size:.75rem;color:var(--text-muted);min-width:2.5rem;text-align:right;font-variant-numeric:tabular-nums}.turn-timer-label.my-turn{color:var(--gold);font-weight:600}.chat-panel{display:flex;flex-direction:column;height:100%;min-height:320px;max-height:520px}.chat-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.4rem;margin-bottom:.75rem;padding-right:.25rem}.chat-messages::-webkit-scrollbar{width:4px}.chat-messages::-webkit-scrollbar-track{background:transparent}.chat-messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.chat-msg{display:flex;flex-direction:column;gap:.15rem;max-width:85%;align-self:flex-start}.chat-msg.mine{align-self:flex-end;align-items:flex-end}.chat-author{font-size:.7rem;color:var(--text-muted);padding:0 .3rem}.chat-text{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:.4rem .7rem;font-size:.875rem;color:var(--text);word-break:break-word;line-height:1.4}.chat-msg.mine .chat-text{background:#d4af371a;border-color:#d4af374d}.chat-form{display:flex;gap:.5rem;flex-shrink:0}.chat-input{flex:1;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:.55rem .75rem;color:var(--text);font-size:.875rem;transition:border-color .2s}.chat-input:focus{outline:none;border-color:var(--gold)}textarea.form-control{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:.65rem .9rem;color:var(--text);font-size:.875rem;resize:vertical;min-height:80px}textarea.form-control:focus{outline:none;border-color:var(--gold)}.chat-toggle-btn{position:relative;background:var(--surface2);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:.3rem .7rem;font-size:.8rem;cursor:pointer;transition:border-color .2s;white-space:nowrap}.chat-toggle-btn:hover{border-color:var(--gold);color:var(--text)}.chat-badge{position:absolute;top:-5px;right:-5px;background:var(--red);color:#fff;font-size:.65rem;font-weight:700;border-radius:50%;width:16px;height:16px;display:flex;align-items:center;justify-content:center}.ingame-chat{position:fixed;bottom:5rem;right:1rem;width:280px;height:360px;background:var(--surface);border:1px solid var(--border);border-radius:12px;display:flex;flex-direction:column;z-index:150;box-shadow:var(--shadow);animation:fadeInUp .2s ease}.ingame-chat-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem .9rem;border-bottom:1px solid var(--border);font-family:Cinzel,serif;font-size:.9rem;color:var(--gold);flex-shrink:0}.ingame-chat-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.85rem;padding:.1rem .3rem;border-radius:4px}.ingame-chat-close:hover{color:var(--text);background:var(--surface2)}.ingame-chat-messages{flex:1;overflow-y:auto;padding:.6rem;display:flex;flex-direction:column;gap:.35rem}.ingame-chat-messages::-webkit-scrollbar{width:3px}.ingame-chat-messages::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:5px;vertical-align:middle}.status-dot.on{background:#4caf50;box-shadow:0 0 5px #4caf50b3}.status-dot.off{background:var(--text-muted);opacity:.5}@media (max-width: 640px){.lobby-header{flex-direction:column;gap:.75rem;align-items:center;text-align:center}.lobby-header h1{font-size:1.25rem}.lobby-header>div{flex-wrap:wrap;justify-content:center}.game-header{flex-wrap:wrap;gap:.5rem .75rem;padding:.5rem .75rem;justify-content:space-between}.score-board{gap:1.25rem}.score-team .score{font-size:1.6rem}.playing-card{width:58px;height:96px}.hand-zone{min-height:104px;gap:.45rem}.opponent-zone{min-height:70px}.played-cards{min-height:84px}.action-panel{gap:.4rem;padding:.5rem}.action-panel .btn{padding:.55rem .8rem;font-size:.85rem}.toast{white-space:normal;max-width:90vw;text-align:center}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.playing-card:hover{transform:none}}.credits{margin:2rem auto 1rem;text-align:center;font-size:.75rem;line-height:1.6;color:var(--text-muted)}.credits a{color:inherit;text-decoration:underline}.credits a:hover{color:var(--gold)}
