:root{--felt-deep: #081c15;--felt: #1b4332;--felt-light: #2d6a4f;--wood: #2b1d12;--cream: #f1ede2;--cream-dim: #cfc8b8;--gold: #e0b45c;--gold-deep: #b8862f;--red: #c0564b;--green-pos: #8fd0a5;--shadow-card: 0 6px 18px rgba(0, 0, 0, .45);--font-display: "Cormorant Garamond", Georgia, serif;--font-body: "Alegreya Sans", "Segoe UI", sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);color:var(--cream);background:var(--felt-deep);overflow:hidden}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 22px;background:linear-gradient(180deg,#17110a,var(--wood));border-bottom:1px solid rgba(224,180,92,.35);box-shadow:0 2px 14px #00000080;z-index:5}.brand{display:flex;align-items:baseline;gap:12px}.brand-name{font-family:var(--font-display);font-weight:700;font-size:26px;letter-spacing:3px;text-transform:uppercase;color:var(--gold)}.brand-game{font-family:var(--font-display);font-style:italic;font-size:18px;color:var(--cream-dim)}.topbar-right{display:flex;align-items:center;gap:14px}.hand-counter{color:var(--cream-dim);font-size:14px;letter-spacing:.4px}.layout{display:flex;flex:1;min-height:0}.table-wrap{flex:1;padding:18px;display:flex}.table{position:relative;flex:1;border-radius:26px;background:radial-gradient(ellipse at 50% 38%,var(--felt-light) 0%,var(--felt) 45%,#12352a 78%,var(--felt-deep) 100%);box-shadow:inset 0 0 0 3px #e0b45c40,inset 0 0 0 10px #081c158c,inset 0 0 90px #0000008c,0 10px 40px #0009;overflow:hidden}.table:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E")}.opponent{position:absolute;top:42px;display:flex;flex-direction:column;align-items:center;gap:6px;z-index:2}.opponent-left{left:7%}.opponent-right{right:7%}.avatar{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-size:28px;font-weight:600;color:var(--felt-deep);background:radial-gradient(circle at 35% 30%,#f5e2b8,var(--gold) 60%,var(--gold-deep));box-shadow:0 4px 14px #00000080;transition:box-shadow .3s ease,transform .3s ease}.avatar.is-acting{box-shadow:0 0 0 3px var(--gold),0 0 26px #e0b45c8c;transform:scale(1.06);animation:breathe 1.6s ease-in-out infinite}@keyframes breathe{0%,to{box-shadow:0 0 0 3px var(--gold),0 0 18px #e0b45c59}50%{box-shadow:0 0 0 3px var(--gold),0 0 32px #e0b45cb3}}.opponent-meta{display:flex;align-items:center;gap:8px}.seat-name{font-size:15px;letter-spacing:.5px;color:var(--cream-dim)}.seat-name.is-acting{color:var(--gold);font-weight:700}.badge{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--felt-deep);background:var(--gold);border-radius:20px;padding:2px 9px;font-weight:700}.mini-stack{display:flex;margin-top:4px}.mini-back{width:88px;border-radius:7px;box-shadow:3px 0 8px #00000073}.mini-back:not(:first-child){margin-left:-64px}@media (max-width: 1500px){.opponent{top:92px}.mini-back{width:64px}.mini-back:not(:first-child){margin-left:-47px}}@media (max-height: 820px){.opponent{top:34px}.mini-back{width:56px}.mini-back:not(:first-child){margin-left:-41px}}.trick-area{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:340px;height:240px}.trick-slot{position:absolute}.trick-slot .card-img{width:96px}.slot-left{left:24px;top:34px;transform:rotate(-7deg)}.slot-right{right:24px;top:34px;transform:rotate(7deg)}.slot-bottom{left:50%;bottom:0;transform:translate(-50%) rotate(1.5deg)}.trick-slot .card-img{animation:playCard .34s cubic-bezier(.2,.8,.3,1)}@keyframes playCard{0%{opacity:0;transform:translateY(26px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.table-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--font-display);font-style:italic;font-size:20px;color:#f1ede280;white-space:nowrap}.action-panel{position:absolute;left:50%;bottom:218px;transform:translate(-50%);display:flex;align-items:center;gap:12px;z-index:4}.panel-note{font-size:14px;color:var(--cream-dim);font-style:italic}.btn{font-family:var(--font-body);font-size:15px;font-weight:700;letter-spacing:.6px;padding:10px 22px;border-radius:10px;border:1px solid rgba(224,180,92,.5);background:#081c15bf;color:var(--cream);cursor:pointer;transition:all .18s ease}.btn:hover:not(:disabled){background:#e0b45c29;transform:translateY(-1px)}.btn:disabled{opacity:.4;cursor:default}.btn-gold{background:linear-gradient(180deg,#f0cd85,var(--gold) 55%,var(--gold-deep));color:#241703;border-color:var(--gold-deep);box-shadow:0 4px 16px #e0b45c59}.btn-gold:hover:not(:disabled){background:linear-gradient(180deg,#f7dc9f,#ecc36b)}.btn-ghost{border-color:#f1ede24d;font-weight:500}.btn-wide{width:100%;margin-top:18px}.error-toast{position:absolute;left:50%;bottom:300px;transform:translate(-50%);background:#7a221aeb;border:1px solid var(--red);color:#ffd9d4;padding:8px 18px;border-radius:10px;font-size:14px;cursor:pointer;z-index:6}.hand-fan{position:absolute;left:50%;bottom:8px;transform:translate(-50%);display:flex;z-index:3;padding:0 10px}.fan-card{margin:0 -17px;transition:transform .2s ease;transform-origin:50% 120%}.card-img{width:104px;border-radius:7px;display:block;box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease,opacity .2s ease,outline .1s ease}.card-img.is-clickable{cursor:pointer}.fan-card:hover .card-img.is-clickable{transform:translateY(-22px);box-shadow:0 14px 30px #0000008c,0 0 0 2px #e0b45cb3}.card-img.is-dimmed{opacity:.45;filter:saturate(.6)}.card-img.is-selected{outline:3px solid var(--gold);transform:translateY(-26px)}.discard-mode .card-img.is-clickable:not(.is-selected):hover{transform:translateY(-14px)}.player-corner{position:absolute;left:4%;bottom:30px;display:flex;flex-direction:column;align-items:center;gap:6px;z-index:4}.sidebar{width:280px;padding:20px 18px;overflow-y:auto;background:linear-gradient(180deg,#14100a,#0d0a06);border-left:1px solid rgba(224,180,92,.25)}.sidebar-title{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold);margin:14px 0 10px}.sidebar-title:first-child{margin-top:0}.totals{display:flex;flex-direction:column;gap:6px}.total-row{display:flex;justify-content:space-between;font-size:16px;padding:8px 12px;border-radius:8px;background:#f1ede20d}.pos{color:var(--green-pos);font-weight:700}.neg{color:#e8a49c;font-weight:700}.history{list-style:none;display:flex;flex-direction:column;gap:4px}.history-row{display:flex;align-items:baseline;gap:8px;font-size:13.5px;padding:6px 10px;border-radius:6px;background:#f1ede20a}.history-no{color:var(--cream-dim);font-size:12px;min-width:26px}.history-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-empty{color:var(--cream-dim);font-style:italic;font-size:14px;padding:6px 10px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;background:#040c09b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.result-card,.declare-card{width:min(440px,92vw);background:linear-gradient(165deg,#1d150c,#120d07);border:1px solid rgba(224,180,92,.45);border-radius:18px;padding:30px 34px;box-shadow:0 24px 70px #000000b3;animation:rise .3s cubic-bezier(.2,.9,.3,1.1)}@keyframes rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.result-headline{font-family:var(--font-display);font-size:34px;font-weight:700;color:var(--gold);margin-bottom:16px;text-align:center}.result-headline em{font-style:italic;font-weight:500;color:var(--cream-dim)}.result-details{display:flex;flex-direction:column;gap:8px}.result-details div{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed rgba(224,180,92,.2)}.result-details dt{color:var(--cream-dim)}.result-details dd{font-weight:700}.declare-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 14px}.choice{display:flex;align-items:center;gap:9px;font-family:var(--font-body);font-size:15px;font-weight:700;padding:11px 14px;border-radius:10px;cursor:pointer;border:1px solid rgba(241,237,226,.2);background:#f1ede20d;color:var(--cream);transition:all .15s ease}.choice:hover{border-color:#e0b45c99}.choice.is-on{border-color:var(--gold);background:#e0b45c29;box-shadow:0 0 0 1px var(--gold)}.suit-dot{width:13px;height:13px;border-radius:50%;box-shadow:0 0 6px #00000080}.declare-options{display:flex;flex-direction:column;gap:8px;margin-bottom:6px;font-size:15px}.declare-options label{display:flex;align-items:center;gap:9px;cursor:pointer}.declare-options label.is-off{opacity:.45}.declare-options input{accent-color:var(--gold);width:16px;height:16px}.declare-card .action-panel{position:static;transform:none;margin-top:16px;justify-content:center}.game-info{position:absolute;left:50%;top:12px;transform:translate(-50%);z-index:3;display:flex;flex-direction:row;align-items:stretch;gap:0;padding:8px 6px;border-radius:14px;background:#081c15b8;border:1px solid rgba(224,180,92,.3);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:13.5px;white-space:nowrap}.info-row{display:flex;flex-direction:column;align-items:center;gap:2px;padding:0 18px;border-right:1px solid rgba(224,180,92,.18)}.info-row:last-child{border-right:none}.info-row span{color:var(--cream-dim);font-size:12px;text-transform:uppercase;letter-spacing:.8px}.info-row strong{font-weight:700;font-size:17px}.info-row:first-child strong,.info-acting strong{color:var(--gold)}.role-chip{font-size:10.5px;text-transform:uppercase;letter-spacing:1px;color:var(--cream-dim);border:1px solid rgba(241,237,226,.25);border-radius:20px;padding:1px 8px}.skat-widget{position:absolute;right:22px;top:50%;transform:translateY(-50%);z-index:2;display:flex;flex-direction:column;align-items:center;gap:6px}.skat-cards{display:flex;gap:5px}.skat-cards .card-img.is-small{width:88px}.result-skat-cards .card-img.is-small{width:56px}.skat-slot{width:88px;aspect-ratio:360 / 561;border-radius:7px;border:2px dashed rgba(224,180,92,.4);background:#081c154d}.skat-note{font-size:12px;color:var(--cream-dim);letter-spacing:.5px;background:#081c1599;padding:2px 10px;border-radius:12px;white-space:nowrap}.card-img.is-winner{outline:3px solid var(--gold);box-shadow:0 0 26px #e0b45ca6}.trick-winner-note{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--font-display);font-style:italic;font-size:19px;color:var(--gold);white-space:nowrap;background:#081c15bf;padding:5px 16px;border-radius:20px;animation:fadeIn .4s ease}.turn-timer{font-variant-numeric:tabular-nums;font-weight:700;font-size:15px;color:var(--cream-dim);border:1px solid rgba(224,180,92,.4);border-radius:20px;padding:4px 12px;background:#081c15b3}.turn-timer.is-danger{color:#ff9d8f;border-color:var(--red);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.55}}.play-timer{position:absolute;left:50%;bottom:218px;transform:translate(-50%);z-index:4}.chat{display:flex;flex-direction:column;gap:8px}.chat-log{display:flex;flex-direction:column;gap:3px;max-height:150px;overflow-y:auto;background:#f1ede20a;border-radius:8px;padding:8px 10px;font-size:13.5px}.chat-from{color:var(--cream-dim);font-weight:700}.chat-from.chat-you{color:var(--gold)}.chat-quick{display:flex;flex-wrap:wrap;gap:5px}.chip{font-size:12.5px;padding:4px 10px;border-radius:20px;border:1px solid rgba(224,180,92,.35);background:#e0b45c14;color:var(--cream);cursor:pointer;transition:background .15s ease}.chip:hover{background:#e0b45c33}.history-row{display:flex;flex-direction:column;gap:2px}.history-top{display:flex;align-items:baseline;gap:8px}.history-sub{font-size:11.5px;color:var(--cream-dim);padding-left:34px}.total-wl{font-size:12px;color:var(--cream-dim);margin-left:auto;margin-right:12px}.result-skat{align-items:center}.result-skat-cards{display:flex;gap:6px}.brand-btn{background:none;border:none;cursor:pointer}.topbar-nick{color:var(--gold);font-weight:700;letter-spacing:.5px}.menu-screen{flex:1;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 30%,var(--felt-light) 0%,var(--felt) 45%,#12352a 78%,var(--felt-deep) 100%)}.menu-card{width:min(460px,94vw);background:linear-gradient(165deg,#1d150c,#120d07);border:1px solid rgba(224,180,92,.45);border-radius:20px;padding:40px 44px;box-shadow:0 24px 70px #000000b3;text-align:center;animation:rise .3s cubic-bezier(.2,.9,.3,1.1)}.menu-card-wide{width:min(640px,94vw)}.menu-brand{font-family:var(--font-display);font-weight:700;font-size:52px;letter-spacing:6px;text-transform:uppercase;color:var(--gold)}.menu-brand-small{font-size:34px;margin-bottom:12px}.menu-tagline{font-family:var(--font-display);font-style:italic;font-size:19px;color:var(--cream-dim);margin:6px 0 28px}.menu-buttons{display:flex;flex-direction:column;gap:10px;margin-top:14px}.btn-big{padding:14px 24px;font-size:17px}.btn-link{text-decoration:none;display:block}.menu-note{margin-top:18px;font-size:14px;color:var(--cream-dim)}.menu-privacy{margin-top:22px;padding-top:14px;font-size:12px;color:#cfc8b899;border-top:1px dashed rgba(224,180,92,.2)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:20px}.auth-form{display:flex;flex-direction:column;gap:12px;text-align:left}.auth-form label{display:flex;flex-direction:column;gap:5px;font-size:13.5px;color:var(--cream-dim)}.auth-form input{font-family:var(--font-body);font-size:15px;color:var(--cream);background:#f1ede20f;border:1px solid rgba(241,237,226,.25);border-radius:9px;padding:10px 12px}.auth-form input:focus{outline:none;border-color:#e0b45cb3}.auth-error{background:#7a221a99;border:1px solid var(--red);color:#ffd9d4;padding:9px 14px;border-radius:9px;font-size:14px}.ranking-table{width:100%;border-collapse:collapse;font-size:15px}.ranking-table th{font-family:var(--font-display);text-transform:uppercase;letter-spacing:1px;font-size:13px;color:var(--gold);text-align:left;padding:8px 10px;border-bottom:1px solid rgba(224,180,92,.35)}.ranking-table td{padding:8px 10px;border-bottom:1px solid rgba(241,237,226,.08);text-align:left}.ranking-table tr.is-you td{background:#e0b45c1f;font-weight:700}.tables-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:8px 0 6px}.table-slot{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 10px;border-radius:12px;cursor:pointer;border:1px solid rgba(224,180,92,.4);background:radial-gradient(ellipse at 50% 30%,#2d6a4f8c,#1b43328c);color:var(--cream);transition:all .15s ease}.table-slot:hover:not(:disabled){border-color:var(--gold);transform:translateY(-2px);box-shadow:0 8px 20px #0006}.table-slot.is-busy{opacity:.5;cursor:default;filter:saturate(.5)}.table-slot-name{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:1px}.table-slot-status{font-size:12.5px;color:var(--cream-dim)}.menu-screen-scroll{overflow-y:auto;place-items:start center}.menu-card-doc{text-align:left;margin:24px 0}.menu-card-doc .menu-brand-small{text-align:center}.doc-content{font-size:15px;line-height:1.65;color:var(--cream)}.doc-content h1{display:none}.doc-content h2{font-family:var(--font-display);color:var(--gold);font-size:22px;margin:22px 0 8px;letter-spacing:.5px}.doc-content p,.doc-content ul,.doc-content ol{margin:0 0 10px}.doc-content ul,.doc-content ol{padding-left:22px}.doc-content li{margin-bottom:4px}.doc-content table{border-collapse:collapse;margin:10px 0;width:100%;font-size:13.5px}.doc-content th,.doc-content td{border:1px solid rgba(224,180,92,.25);padding:6px 9px;text-align:left}.doc-content th,.doc-content a{color:var(--gold)}.doc-content code{background:#f1ede21a;padding:1px 5px;border-radius:4px}.table-slot.is-waiting{border-color:var(--gold);box-shadow:0 0 14px #e0b45c4d}.waiting-subtitle{font-family:var(--font-display);font-size:18px;color:var(--cream-dim);margin:18px 0 10px;text-align:center}.declare-grid-3{grid-template-columns:1fr 1fr 1fr}.waiting-seats{display:flex;flex-direction:column;gap:8px;margin:16px 0}.waiting-seat{display:flex;align-items:center;justify-content:center;gap:10px;padding:13px;border-radius:10px;font-size:16px;border:1px dashed rgba(241,237,226,.3);color:var(--cream-dim)}.waiting-seat.is-taken{border-style:solid;border-color:var(--gold);color:var(--cream);font-weight:700;background:#e0b45c1a}.podium-list{display:flex;flex-direction:column;gap:10px;margin:6px 0 10px}.podium-row{display:grid;grid-template-columns:40px 1fr auto auto;align-items:center;gap:12px;padding:10px 14px;border-radius:10px;background:#f1ede20d}.podium-row:first-child{background:#e0b45c26;border:1px solid rgba(224,180,92,.5)}.podium-medal{font-size:24px}.podium-nick{font-weight:700;font-size:16px}.podium-points{color:var(--cream-dim);font-size:14px}.podium-delta{font-weight:700;font-size:14px}.total-row.is-you-row{outline:1px solid rgba(224,180,92,.4)}.link-btn{background:none;border:none;color:var(--gold);cursor:pointer;font-size:inherit;font-family:inherit;text-decoration:underline;padding:0}@media (max-width: 980px){.sidebar{display:none}}@media (max-width: 720px){.card-img{width:76px}.trick-slot .card-img{width:72px}.fan-card{margin:0 -14px}.action-panel{bottom:168px}.player-label{bottom:132px}.opponent-left{left:4%}.opponent-right{right:4%}.brand-name{font-size:20px}}
