@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap";:root{font-family:DM Sans,system-ui,sans-serif;color:#15231f;background:#0f2923;font-synthesis:none;text-rendering:optimizeLegibility;--felt: #174a3d;--felt-dark: #103a31;--ink: #15231f;--paper: #fffdf6;--cream: #f7f0df;--gold: #edbd46;--red: #c83f4d;--line: rgba(255, 255, 255, .18);--card-width: clamp(50px, 7.2vw, 78px);--card-height: calc(var(--card-width) * 1.42)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px}button,input{font:inherit;letter-spacing:0}button{cursor:pointer}button:disabled{cursor:not-allowed}.eyebrow{display:block;margin-bottom:8px;color:#a77a12;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0}.lobby-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,1.05fr) minmax(340px,.95fr);background:var(--paper)}.lobby-brand{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:clamp(48px,8vw,120px);overflow:hidden;color:#fff;background-color:var(--felt)}.lobby-brand:after{content:"";position:absolute;inset:22px;border:1px solid rgba(255,255,255,.14);pointer-events:none}.brand-mark{width:54px;height:54px;display:grid;place-items:center;margin-bottom:36px;color:var(--felt-dark);background:var(--gold);border-radius:50%}.brand-mark svg{width:30px;height:30px}.lobby-brand .eyebrow{color:#f3cf78}.lobby-brand h1{max-width:650px;margin:0;font-family:Playfair Display,Georgia,serif;font-size:clamp(4rem,8vw,8rem);line-height:.84;letter-spacing:0}.lobby-brand p{max-width:460px;margin:30px 0 0;color:#ffffffc4;font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.6}.mini-table{position:relative;height:170px;margin-top:60px}.mini-card{position:absolute;width:102px;height:142px;display:flex;flex-direction:column;padding:13px;color:#151a18;background:var(--paper);border:1px solid rgba(0,0,0,.12);border-radius:8px;box-shadow:0 12px 24px #0003;font-family:Georgia,serif;font-size:1.8rem;font-weight:700}.mini-card span{font-size:1.3rem}.mini-card-one{left:22px;transform:rotate(-11deg)}.mini-card-two{left:92px;top:-10px;transform:rotate(2deg);z-index:2}.mini-card-three{left:168px;top:9px;transform:rotate(13deg)}.lobby-panel{width:min(440px,calc(100% - 48px));align-self:center;justify-self:center;padding:42px;border:1px solid #d8d2c4;border-radius:8px;background:#fff;box-shadow:0 24px 65px #15231f1a}.connection-status{display:flex;align-items:center;gap:8px;margin-bottom:30px;color:#837c6d;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:0}.connection-status span{width:8px;height:8px;border-radius:50%;background:#c2b8a7}.connection-status.online span{background:#2e9a69;box-shadow:0 0 0 4px #2e9a691f}label{display:block;margin-bottom:8px;color:#49473f;font-size:.82rem;font-weight:700}input{width:100%;height:48px;padding:0 14px;color:var(--ink);border:1px solid #cfc8ba;border-radius:6px;outline:none;background:#fffefb}input:focus{border-color:var(--felt);box-shadow:0 0 0 3px #174a3d1f}.primary-button,.secondary-button,.end-turn-button{min-height:46px;display:inline-flex;align-items:center;justify-content:center;gap:9px;border:0;border-radius:6px;font-weight:700}.primary-button{width:100%;margin-top:14px;color:#fff;background:var(--felt)}.primary-button:hover:not(:disabled){background:#0e382f}.primary-button:disabled,.secondary-button:disabled{opacity:.48}.primary-button svg,.secondary-button svg,.end-turn-button svg{width:18px;height:18px}.secondary-button{min-width:114px;padding:0 18px;color:var(--felt);border:1px solid var(--felt);background:transparent}.secondary-button:hover:not(:disabled){color:#fff;background:var(--felt)}.solo-button{width:100%;margin-top:10px}.or-divider{display:flex;align-items:center;gap:12px;margin:26px 0;color:#999183;font-size:.75rem}.or-divider:before,.or-divider:after{content:"";height:1px;flex:1;background:#e3ded4}.join-row{display:flex;gap:10px}.code-input{font-weight:700;text-transform:uppercase;letter-spacing:0}.form-error{margin:16px 0 0;color:#ac2c38;font-size:.84rem;line-height:1.4}.game-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;color:#fff;background-color:var(--felt)}.game-header{flex:0 0 auto;height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(14px,3vw,42px);border-bottom:1px solid var(--line);background:#08261fad}.game-wordmark{display:flex;align-items:center;gap:10px}.game-wordmark svg{width:23px;color:var(--gold)}.game-wordmark strong{font-family:Playfair Display,Georgia,serif;font-size:1.15rem}.header-actions{display:flex;align-items:center;gap:8px}.room-code{height:38px;display:flex;align-items:center;gap:8px;padding:0 12px;color:#fff;border:1px solid var(--line);border-radius:6px;background:transparent}.room-code span{color:#ffffff8c;font-size:.7rem;text-transform:uppercase}.room-code strong{letter-spacing:0}.room-code svg{width:15px}.solo-chip{height:38px;display:flex;align-items:center;gap:8px;padding:0 12px;color:#f3cf78;border:1px solid var(--line);border-radius:6px}.solo-chip svg{width:17px}.solo-chip strong{color:#fff;font-size:.8rem}.icon-button{width:38px;height:38px;display:grid;place-items:center;padding:0;border:1px solid #d8d2c4;border-radius:6px;background:transparent}.icon-button svg{width:19px;height:19px}.icon-button.dark{color:#fff;border-color:var(--line)}.icon-button:hover{background:#ffffff1a}.music-button{position:relative}.music-button.off{color:#ffffff80}.music-button.off:after{content:"";position:absolute;width:24px;height:2px;border-radius:2px;background:#ef858d;transform:rotate(-45deg);pointer-events:none}.waiting-room{min-height:0;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center}.waiting-crown{width:72px;height:72px;display:grid;place-items:center;margin-bottom:28px;color:var(--felt-dark);border-radius:50%;background:var(--gold)}.waiting-crown svg{width:40px}.waiting-room .eyebrow{color:#f2ce77}.waiting-room h1{margin:0;font-family:Playfair Display,Georgia,serif;font-size:clamp(2rem,5vw,4rem)}.waiting-room p{margin:18px 0;color:#ffffffb3}.invite-code{display:flex;align-items:center;gap:14px;margin-top:28px;padding:14px 20px;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:6px;background:#0000001f}.invite-code span{font-size:1.6rem;font-weight:700;letter-spacing:0}.invite-code svg{width:19px}.waiting-pulse{display:flex;gap:8px;margin-top:30px}.waiting-pulse span{width:8px;height:8px;border-radius:50%;background:var(--gold);animation:pulse 1.2s infinite ease-in-out}.waiting-pulse span:nth-child(2){animation-delay:.15s}.waiting-pulse span:nth-child(3){animation-delay:.3s}@keyframes pulse{0%,70%,to{opacity:.3;transform:translateY(0)}35%{opacity:1;transform:translateY(-5px)}}.opponent-bar{width:100%;flex:0 0 auto;height:78px;display:flex;align-items:center;gap:12px;max-width:760px;margin:0 auto;padding:0 20px;border-bottom:1px solid var(--line)}.player-avatar{width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;color:var(--felt-dark);border-radius:50%;background:#e9c86d;font-weight:800}.player-avatar svg{width:20px}.opponent-bar>div:nth-child(2){display:flex;flex-direction:column;min-width:100px}.opponent-bar>div:nth-child(2) span{color:#fff9;font-size:.78rem}.opponent-cards{position:relative;width:108px;height:42px;margin-left:auto}.opponent-cards span{position:absolute;left:calc(var(--card-index) * 13px);width:30px;height:42px;border:1px solid rgba(255,255,255,.45);border-radius:4px;background:#214a73;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 4px #214a73}.score-chip{min-width:58px;display:flex;flex-direction:column;align-items:center;padding:6px 9px;border:1px solid var(--line);border-radius:6px}.score-chip span{color:#ffffff8c;font-size:.62rem;text-transform:uppercase}.score-chip strong{font-size:1.05rem}.table-region{position:relative;width:min(780px,100%);min-height:440px;display:flex;flex:1 0 auto;flex-direction:column;margin:0 auto;padding:18px 14px 12px}.turn-banner{width:fit-content;min-width:140px;margin:0 auto 14px;padding:6px 14px;color:#ffffffad;border:1px solid var(--line);border-radius:999px;text-align:center;font-size:.78rem;font-weight:700}.turn-banner.active{color:var(--felt-dark);border-color:var(--gold);background:var(--gold)}.turn-banner.offline{display:flex;align-items:center;gap:7px;color:#fff;border-color:#e66a73;background:#9b2632}.turn-banner svg{width:14px}.table-layout{width:min(100%,620px);height:clamp(370px,48vh,470px);display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);place-items:center;gap:5px;padding:74px 82px;margin:0 auto}.table-pile,.draw-pile{position:relative;width:var(--card-width);height:var(--card-height);padding:0;border:1px dashed rgba(255,255,255,.24);border-radius:8px;background:#00000014}.pile-drop-zone{position:relative;width:var(--card-width);height:var(--card-height)}.table-pile{cursor:grab;touch-action:none;transform:rotate(var(--pile-rotation, 0deg));transform-origin:center;transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}.table-pile:disabled{opacity:1}.table-pile:not(:disabled):active{cursor:grabbing}.table-pile.corner{border-color:#edbd4659}.empty-pile-mark{color:#ffffff2e;font-family:Georgia,serif;font-size:1.5rem}.table-pile.legal-target{border:2px solid var(--gold);box-shadow:0 0 0 5px #edbd462e;animation:targetPulse 1.2s infinite}.table-pile.drop-hover{box-shadow:0 0 0 9px #edbd4647,0 10px 24px #00000047;transform:rotate(var(--pile-rotation, 0deg)) scale(1.08);animation:none}.table-pile.pile-selected{border:2px solid #f9dc91;transform:rotate(var(--pile-rotation, 0deg)) scale(1.04)}.table-pile.dragging{opacity:.22}.table-pile.completed-pile{cursor:default;border-style:solid;border-color:#ffffff9e;background:#214a73;box-shadow:inset 0 0 0 4px #fff,inset 0 0 0 6px #214a73,0 4px 9px #00000040}.completed-pile-back{position:absolute;inset:9px;display:grid;place-items:center;color:#fff;border:1px solid rgba(255,255,255,.55);pointer-events:none}.completed-pile-back>span{display:grid;place-items:center}.completed-pile-back svg{width:calc(var(--card-width) * .34);height:auto;color:var(--gold)}.completed-pile-back>strong{align-self:end;margin-bottom:5px;font-family:Inter,Arial,sans-serif;font-size:calc(var(--card-width) * .1);letter-spacing:0;text-transform:uppercase}@keyframes targetPulse{50%{box-shadow:0 0 0 8px #edbd4614}}.playing-card{position:relative;width:var(--card-width);height:var(--card-height);flex:0 0 auto;padding:0;overflow:hidden;border:1px solid #d5d0c4;border-radius:8px;background:var(--paper);box-shadow:0 3px 7px #0000003b;font-family:Georgia,serif;transition:transform .16s ease,box-shadow .16s ease}button.playing-card:hover:not(:disabled){transform:translateY(-8px);box-shadow:0 10px 18px #00000042}button.playing-card.selected{transform:translateY(-14px);box-shadow:0 0 0 3px var(--gold),0 12px 20px #00000040}button.playing-card:disabled{opacity:1}.player-hand button.playing-card:not(:disabled){cursor:grab;touch-action:none}.player-hand button.playing-card:not(:disabled):active{cursor:grabbing}.player-hand button.playing-card.dragging{opacity:.18}.red-card{color:var(--red)}.black-card{color:#18231f}.card-corner{position:absolute;top:5px;left:6px;display:flex;flex-direction:column;align-items:center;line-height:.85;font-size:calc(var(--card-width) * .2)}.card-corner span{margin-top:3px;font-size:calc(var(--card-width) * .18)}.card-corner-bottom{inset:auto 6px 5px auto;transform:rotate(180deg)}.card-suit{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);font-size:calc(var(--card-width) * .45)}.table-pile>.playing-card.compact{position:absolute;top:0;left:50%;transform:translate(-50%,calc(var(--pile-index) * var(--pile-step, 0px) * var(--pile-fan-scale, 1) * -1))}.pile-base-card{position:absolute;z-index:70;right:3px;bottom:3px;min-width:31px;display:flex;flex-direction:column;align-items:center;padding:3px 4px 2px;border:1px solid rgba(24,35,31,.22);border-radius:4px;background:#fffdf7f7;box-shadow:0 2px 5px #0003;font-family:Georgia,serif;line-height:1;transform:rotate(var(--pile-counter-rotation, 0deg));pointer-events:none}.pile-base-card>span{margin-bottom:2px;color:#6f6a60;font-family:Inter,Arial,sans-serif;font-size:6px;font-weight:800;text-transform:uppercase}.pile-base-card>strong{font-size:calc(var(--card-width) * .17);white-space:nowrap}.game-drag-overlay{z-index:100;pointer-events:none}.game-drag-overlay>.playing-card{transform:rotate(2deg) scale(1.06);box-shadow:0 18px 35px #00000061}.pile-drag-preview{position:relative;width:var(--card-width);height:var(--card-height);transform:rotate(2deg) scale(1.06);filter:drop-shadow(0 18px 18px rgba(0,0,0,.35))}.pile-drag-preview>.playing-card{position:absolute;inset:0;transform:translateY(calc(var(--preview-index) * -11px))}.pile-drag-preview>span{position:absolute;z-index:10;right:-8px;bottom:-8px;min-width:25px;height:25px;display:grid;place-items:center;color:var(--felt-dark);border:2px solid #fff;border-radius:50%;background:var(--gold);font-size:.72rem;font-weight:800}.draw-pile{color:#fff;border-style:solid;border-color:#ffffff8c;background:#214a73;box-shadow:inset 0 0 0 4px #fff,inset 0 0 0 6px #214a73,0 4px 9px #00000040}.draw-pile .card-back-pattern{position:absolute;inset:9px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.5)}.draw-pile .card-back-pattern svg{width:38%;color:#ffffffbf}.draw-pile>strong{position:absolute;right:-9px;bottom:-9px;min-width:25px;height:25px;display:grid;place-items:center;color:var(--felt-dark);border-radius:50%;background:var(--gold);font-size:.72rem}.draw-pile.can-draw{animation:drawPulse 1.3s infinite}@keyframes drawPulse{50%{box-shadow:inset 0 0 0 4px #fff,inset 0 0 0 6px #214a73,0 0 0 7px #edbd4629,0 10px 18px #0000004d}}.table-action-row{min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:6px;padding:10px 0 0;border-top:1px solid rgba(255,255,255,.12)}.last-action{color:#ffffff8c;font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.end-turn-button{min-height:38px;flex:0 0 auto;padding:0 17px;color:var(--felt-dark);background:#fff}.end-turn-button:disabled{opacity:.28}.hand-region{width:100%;flex:0 0 auto;margin-top:auto;padding:12px 20px max(18px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#061f1985}.hand-heading{max-width:760px;display:flex;align-items:center;justify-content:space-between;margin:0 auto 7px}.hand-heading>div:first-child{display:flex;gap:8px;align-items:baseline}.hand-heading span{color:#ffffff9e;font-size:.72rem;text-transform:uppercase}.hand-heading strong{font-size:.8rem}.score-chip.light{flex-direction:row;gap:7px;min-width:0;padding:4px 8px}.score-chip.light strong{font-size:.85rem}.player-hand{width:100%;max-width:760px;min-height:calc(var(--card-height) + 19px);display:grid;grid-template-columns:repeat(var(--hand-count),minmax(0,var(--card-width)));justify-content:center;margin:0 auto;padding:15px calc(var(--card-width) / 2) 4px;overflow:visible}.hand-card-slot{width:100%;min-width:0;height:var(--card-height);display:grid;place-items:start center;transition:transform .14s ease}.hand-card-slot>.playing-card{grid-area:1 / 1}.hand-card-slot.hand-drop-hover>.playing-card{transform:translateY(-10px);box-shadow:0 0 0 3px var(--gold),0 12px 20px #00000047}.dialog-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:#051410b8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.rules-dialog,.round-dialog{width:min(520px,100%);max-height:calc(100vh - 40px);overflow-y:auto;color:var(--ink);border-radius:8px;background:var(--paper);box-shadow:0 24px 70px #00000059}.rules-dialog{padding:30px}.rules-dialog header{display:flex;align-items:flex-start;justify-content:space-between}.rules-dialog h2,.round-dialog h2{margin:0;font-family:Playfair Display,Georgia,serif;font-size:2rem}.rules-list{display:grid;gap:0;margin:24px 0 0;padding:0;list-style:none;counter-reset:rules}.rules-list li{display:grid;grid-template-columns:32px 1fr;column-gap:12px;padding:14px 0;border-top:1px solid #ded8cc;counter-increment:rules}.rules-list li:before{content:counter(rules);grid-row:span 2;width:28px;height:28px;display:grid;place-items:center;color:var(--felt);border:1px solid #bdb5a5;border-radius:50%;font-weight:700}.rules-list strong{font-size:.92rem}.rules-list span{margin-top:3px;color:#726d62;font-size:.84rem;line-height:1.45}.scoring-note{margin:18px 0 0;padding:13px;color:#624b16;border-left:3px solid var(--gold);background:#fff6da;font-size:.84rem;line-height:1.5}.round-dialog{padding:38px;text-align:center}.round-dialog>svg{width:48px;height:48px;margin-bottom:14px;color:#b88712}.round-scores{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:26px 0 12px;border:1px solid #ddd6c8;background:#ddd6c8}.round-scores div{display:flex;flex-direction:column;gap:5px;padding:16px;background:#fff}.round-scores span{color:#777064;font-size:.78rem}.round-scores strong{color:var(--felt);font-family:Playfair Display,Georgia,serif;font-size:1.8rem}.toast{position:fixed;z-index:80;right:22px;bottom:22px;max-width:min(360px,calc(100vw - 44px));padding:12px 16px;color:#fff;border-left:4px solid #ef858d;border-radius:6px;background:#7f202a;box-shadow:0 10px 30px #0000004d;font-size:.84rem}@media(max-width:760px){.lobby-shell{grid-template-columns:1fr;background:var(--felt)}.lobby-brand{min-height:44vh;justify-content:flex-start;padding:50px 30px 28px}.lobby-brand:after{inset:12px}.lobby-brand h1{font-size:clamp(3.5rem,16vw,5.3rem)}.lobby-brand p{margin-top:20px}.brand-mark{margin-bottom:24px}.mini-table{display:none}.lobby-panel{width:100%;align-self:start;padding:30px 26px 42px;border:0;border-radius:0;box-shadow:none}.connection-status{margin-bottom:22px}.game-wordmark strong,.room-code span{display:none}.opponent-bar{height:68px}.table-region{min-height:410px;padding-top:10px}.table-layout{--pile-fan-scale: .62;width:min(100%,480px);height:clamp(350px,46vh,420px);padding:62px 58px}}@media(max-width:430px){:root{--card-width: clamp(46px, 14vw, 56px)}.game-header{height:58px}.opponent-bar{padding:0 12px}.opponent-cards{display:none}.opponent-bar .score-chip{margin-left:auto}.table-region{min-height:390px;padding-right:10px;padding-left:10px}.table-layout{--pile-fan-scale: .5;height:clamp(330px,44vh,390px);padding:57px 44px}.table-action-row{min-height:48px;margin-top:2px;padding-top:9px}.hand-region{padding-right:8px;padding-left:8px}.playing-card{border-radius:6px}.rules-dialog,.round-dialog{padding:24px 20px}}@media(max-height:720px)and (min-width:600px){:root{--card-width: 51px}.game-header{height:54px}.opponent-bar{height:58px}.table-region{padding-top:8px}.turn-banner{margin-bottom:6px}.table-layout{width:430px;height:340px;padding:58px 62px}.player-hand{padding-top:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
