*{box-sizing:border-box;margin:0;padding:0}:root{--felt: #0f2417;--felt-light: #17331f;--ink: #e8e4d8;--ink-dim: #9aa793;--card-bg: #faf7ef;--card-red: #c0392b;--card-black: #1d2733;--card-back: repeating-linear-gradient(45deg, #274e13, #274e13 6px, #2f5c1a 6px, #2f5c1a 12px);--accent: #e0b64c;--card-w: 22vw;--card-h: calc(var(--card-w) * 1.4)}html,body{height:100%;overscroll-behavior:none}body{background:var(--felt);color:var(--ink);font-family:system-ui,-apple-system,sans-serif;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:var(--felt-light);border:1px solid #2c4a34;border-radius:10px;padding:.6em 1em}button.big{font-size:1.3rem;background:var(--accent);color:#241a05;border:none;font-weight:700;padding:.7em 1.6em}.menu{min-height:100dvh;display:flex;flex-direction:column;align-items:safe center;justify-content:safe center;gap:1.6rem;padding:1rem;text-align:center;overflow-y:auto}.menu h1{font-size:3rem;letter-spacing:.04em}.suits-deco{display:block;font-size:1.2rem;color:var(--accent);letter-spacing:.5em;margin-top:.3rem}.menu-block{display:flex;flex-direction:column;gap:.5rem;align-items:center}.menu-label{color:var(--ink-dim);font-size:.9rem;text-transform:uppercase;letter-spacing:.1em}.segmented{display:flex;border-radius:10px;overflow:hidden}.segmented button{border-radius:0}.segmented button.active{background:var(--accent);color:#241a05;font-weight:700}.menu-group{display:flex;flex-direction:column;gap:.7rem;align-items:center;border:1px solid #2c4a34;border-radius:14px;padding:1rem 2rem}.cardface{width:var(--card-w);height:var(--card-h);background:var(--card-bg);border-radius:calc(var(--card-w) * .09);border:1px solid #cdc6b4;position:relative;box-shadow:0 1px 3px #00000073;color:var(--card-black)}.cardface.red{color:var(--card-red)}.cardface .corner{position:absolute;top:4%;left:7%;font-size:calc(var(--card-w) * .3);font-weight:700;line-height:1;display:flex;align-items:baseline;gap:.05em}.cardface .corner em{font-style:normal;font-size:.8em}.cardface .pip{position:absolute;right:8%;bottom:2%;font-size:calc(var(--card-w) * .4);line-height:1;opacity:.9;display:flex;align-items:baseline;gap:.06em}.cardface .pip b{font-size:1em;font-weight:700}.cardface.mini{--card-w: 10.5vw}.cardface.back{background:var(--card-back);border-color:var(--back-border, #1c3a0e)}.back-green{--card-back: repeating-linear-gradient(45deg, #274e13, #274e13 6px, #2f5c1a 6px, #2f5c1a 12px);--back-border: #1c3a0e}.back-red{--card-back: repeating-linear-gradient(45deg, #5e1c1c, #5e1c1c 6px, #702828 6px, #702828 12px);--back-border: #401111}.back-blue{--card-back: repeating-linear-gradient(45deg, #1c3a5e, #1c3a5e 6px, #28486e 6px, #28486e 12px);--back-border: #112840}.back-purple{--card-back: repeating-linear-gradient(45deg, #401c5e, #401c5e 6px, #4e286e 6px, #4e286e 12px);--back-border: #2b1140}.back-amber{--card-back: repeating-linear-gradient(45deg, #6e4d14, #6e4d14 6px, #7d5c20 6px, #7d5c20 12px);--back-border: #4d350c}.back-slate{--card-back: repeating-linear-gradient(45deg, #333c46, #333c46 6px, #414b56 6px, #414b56 12px);--back-border: #232a31}.back-row{display:flex;gap:.6rem}.back-swatch{width:2.2rem;height:3.08rem;padding:0;border-radius:.35rem;background:var(--card-back);border:1px solid var(--back-border)}.back-swatch.chosen{outline:2px solid var(--accent);outline-offset:2px}.player-view{height:100dvh;display:flex;flex-direction:column;overflow:hidden;padding-top:env(safe-area-inset-top)}.foundations{--fchip-h: 10vw;--fcol-gap: 1.6vw;--fglyph-h: 5vw;--fpad-top: calc(1.5vw + 2rem) ;--fslot-h: calc(var(--fchip-h) + var(--fcol-gap));--foundations-base-h: calc(var(--fpad-top) + var(--fglyph-h) + 2vw);flex:1 1 0;min-height:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1vw;padding:2vw;overflow-y:auto;position:relative;background:radial-gradient(ellipse at top,#14301e 0%,var(--felt) 75%);border-bottom:1px solid rgba(224,182,76,.45)}.exit{position:absolute;top:1.5vw;right:1.5vw;z-index:5;opacity:.6;padding:.3em .6em}.fcol{display:flex;flex-direction:column-reverse;align-items:center;gap:var(--fcol-gap);min-height:0}.fcol-glyph{color:var(--accent);font-size:4vw;line-height:var(--fglyph-h);opacity:.6}.ftile{position:relative}.ftile.done{opacity:.35}.ftile.pulse .fchip{animation:pulse .8s ease-out 2}.fchip{display:inline-flex;align-items:baseline;gap:.08em;background:var(--card-bg);border:1px solid #cdc6b4;border-radius:2vw;height:var(--fchip-h);padding:.12em .5em;font-size:6.5vw;font-weight:700;line-height:1.2;box-shadow:0 1px 3px #00000073}.fchip.red{color:var(--card-red)}.fchip.black{color:var(--card-black)}.fchip .mult{font-style:normal;font-size:.55em;color:#8a8371;margin-left:.2em}.ftile .badge{position:absolute;right:-1.4vw;top:-1.4vw;background:var(--accent);color:#241a05;border-radius:999px;font-size:2.6vw;font-weight:700;padding:.15em .4em;z-index:2}@keyframes pulse{0%{box-shadow:0 0 #e0b64c;transform:scale(1)}18%{transform:scale(1.22)}to{box-shadow:0 0 0 4.5vw #e0b64c00;transform:scale(1)}}.compact-foundations .foundations{flex:0 1 auto;padding-top:var(--fpad-top)}.own{flex:0 0 auto;display:flex;flex-direction:column;padding:2vw 2vw calc(2vw + env(safe-area-inset-bottom));gap:2vw}.work-row{display:grid;grid-template-columns:repeat(4,1fr);gap:2vw;height:74vw}.compact-foundations .own{flex:1 0 auto}.compact-foundations .work-row{flex:1 0 auto;height:auto;min-height:74vw}.work-pile{position:relative;touch-action:none}.work-card{position:absolute;left:0;touch-action:none;transition:top .15s ease}.bottom-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:2vw;align-items:end}.slot{position:relative;display:flex;flex-direction:column;align-items:center;background:none;border:none;padding:0;border-radius:0;touch-action:none}.slot-label{color:var(--accent);opacity:.85;font-size:2.8vw;text-transform:uppercase;letter-spacing:.12em;margin-top:1vw}.slot-label b{font-size:1.25em}.empty-slot{width:var(--card-w);height:var(--card-h);border:1px dashed #2c4a34;border-radius:calc(var(--card-w) * .09);display:flex;align-items:center;justify-content:center;color:var(--ink-dim)}.stock-turnover{position:absolute;top:-2vw;right:calc(50% - var(--card-w) / 2 - 2vw);width:7vw;height:7vw;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#241a05;border-radius:999px;font-size:4.5vw;font-weight:700;z-index:2}.recycle{width:var(--card-w);height:var(--card-h);border:1px dashed #2c4a34;border-radius:calc(var(--card-w) * .09);display:flex;align-items:center;justify-content:center;font-size:calc(var(--card-w) * .5);color:var(--ink-dim)}.lifted .cardface,.cardface.lifted{transform:translateY(-1.5vw) scale(1.05);box-shadow:0 5px 14px #0009;filter:brightness(1.08);transition:transform 80ms ease-out}.lifted{z-index:40!important}.ghost-src{opacity:0}.rejected .cardface,.rejected.cardface{animation:settle .45s ease-out}@keyframes settle{0%{transform:translateY(-1.5vw) scale(1.05)}60%{transform:translateY(.6vw) scale(1)}to{transform:none}}.drag-ghost{position:fixed;z-index:100;pointer-events:none;width:var(--card-w);height:var(--card-h);transform:translate(-50%,-50%)}.drag-ghost-card{position:absolute;left:0}.drag-ghost .cardface{box-shadow:0 8px 22px #000000a6}.shout{position:fixed;left:50%;top:34%;z-index:150;pointer-events:none;font-size:14vw;font-weight:900;letter-spacing:.02em;color:var(--accent);text-shadow:0 2px 0 #241a05,0 8px 24px rgba(0,0,0,.65);white-space:nowrap;animation:shout-pop 2.6s ease-out forwards}@keyframes shout-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(-7deg)}8%{opacity:1;transform:translate(-50%,-50%) scale(1.18) rotate(-4deg)}13%{transform:translate(-50%,-50%) scale(1) rotate(-5deg)}85%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.05) rotate(-5deg)}}.shift-banner{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 32vw);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2.5vw;background:#0a140ef0;border:1px solid var(--accent);border-radius:999px;padding:1.6vw 2.4vw 1.6vw 3.5vw;font-size:3.4vw;z-index:140;white-space:nowrap}.shift-banner button.accent{background:var(--accent);color:#241a05;font-weight:700;border:none;padding:.35em .9em}.shout.countdown{font-size:22vw;animation:none;opacity:1;transform:translate(-50%,-50%) rotate(-4deg)}.table-shift{text-align:center;font-size:3vmin;color:var(--accent);padding:.5vmin 0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#060e09d1;display:flex;align-items:center;justify-content:center;z-index:200}.overlay-card{background:var(--felt-light);border:1px solid #2c4a34;border-radius:16px;padding:2rem;display:flex;flex-direction:column;gap:1rem;align-items:center;text-align:center;max-width:80vw}.flight{position:fixed;z-index:90;pointer-events:none;transform-origin:top left}.dim{color:var(--ink-dim)}.text-input{font:inherit;font-size:1.3rem;color:var(--ink);background:var(--felt-light);border:1px solid #2c4a34;border-radius:10px;padding:.5em .8em;text-align:center;width:min(70vw,20rem)}.code-input{font-size:2rem;letter-spacing:.4em;text-transform:uppercase;font-weight:700}.room-code{font-size:clamp(3rem,14vmin,9rem);font-weight:800;letter-spacing:.28em;color:var(--accent);padding-left:.28em}.lobby-roster{display:flex;flex-direction:column;gap:.4rem;min-width:min(60vw,18rem)}.roster-row{display:flex;align-items:center;gap:.6rem;background:var(--felt-light);border-radius:8px;padding:.45em .9em;font-size:1.1rem}.dot{width:.6em;height:.6em;border-radius:50%;background:#5c5c5c}.dot.on{background:#6cc26c}.table-view{min-height:100dvh;display:flex;flex-direction:column;gap:2vmin;padding:2.5vmin}.table-players{display:flex;gap:2vmin;justify-content:center;flex-wrap:wrap}.table-player{background:var(--felt-light);border:1px solid #2c4a34;border-radius:1.4vmin;padding:1.4vmin 2.4vmin;display:flex;flex-direction:column;align-items:center;min-width:14vmin}.table-player.winner{border-color:var(--accent);box-shadow:0 0 3vmin #e0b64c80}.table-player-name{font-size:2.6vmin;color:var(--ink-dim)}.table-player-count{font-size:7vmin;font-weight:800;line-height:1.1;color:var(--accent)}.table-player-hint{font-size:2vmin;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.12em}.table-foundations{flex:1;display:grid;grid-template-columns:repeat(4,1fr);gap:2vmin;align-content:start}.table-fcol{display:flex;flex-direction:column;align-items:center;gap:1.6vmin}.table-fcol .fchip{font-size:5.5vmin;border-radius:1.6vmin;padding:.12em .5em}.table-fcol-glyph{font-size:5vmin;color:var(--ink-dim);opacity:.7}.table-controls{display:flex;gap:1.5vmin;justify-content:center;align-items:center;flex-wrap:wrap;padding-bottom:1vmin}.dead-round{display:flex;align-items:center;gap:1.5vmin;background:var(--felt-light);border:1px solid #2c4a34;border-radius:1.4vmin;padding:1.4vmin 2vmin}.host-lobby{gap:1.1rem}.host-lobby-cols{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:1.5rem 4rem}.host-lobby-col{display:flex;flex-direction:column;align-items:center;gap:1.1rem;max-width:min(92vw,26rem)}.host-lobby .room-code{font-size:clamp(2.5rem,10vmin,6rem)}.host-lobby .qr{width:min(38vmin,13rem);height:min(38vmin,13rem)}.reconnect-banner{position:fixed;top:calc(env(safe-area-inset-top) + 2vw);left:50%;transform:translate(-50%);background:#000c;background:#0a140ee0;border:1px solid var(--accent);color:var(--accent);border-radius:999px;padding:.4em 1.2em;z-index:300;animation:breathe 1.6s ease-in-out infinite}@keyframes breathe{0%,to{opacity:1}50%{opacity:.55}}.ping-chip{position:fixed;top:calc(env(safe-area-inset-top) + 1.5vw);left:1.5vw;color:var(--ink-dim);font-size:2.6vw;background:#00000059;border-radius:999px;padding:.2em .7em;z-index:5}.ping-chip.slow{color:var(--accent)}.qr{width:min(46vmin,15rem);height:min(46vmin,15rem);border-radius:1.2vmin}.table-lobby .room-code{font-size:clamp(3rem,18vmin,12rem)}.corner-code{position:fixed;top:calc(env(safe-area-inset-top) + 1.2vmin);left:1.5vmin;color:var(--ink-dim);font-size:2.8vmin;font-weight:700;letter-spacing:.18em;background:#00000059;border-radius:999px;padding:.25em .8em;z-index:5}.table-winner{text-align:center;font-size:6vmin;font-weight:800;color:var(--accent);padding:1vmin 0}button.quiet{background:none;border-color:transparent;color:var(--ink-dim);text-decoration:underline;text-underline-offset:.25em;margin:-.6em 0}
