*{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:center;justify-content:center;gap:1.6rem;padding:1rem;text-align:center}.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}.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) * .52);line-height:1;opacity:.9}.cardface.mini{--card-w: 10.5vw}.cardface.back{background:var(--card-back);border-color:#1c3a0e}.player-view{height:100dvh;display:flex;flex-direction:column;overflow:hidden;padding-top:env(safe-area-inset-top)}.foundations{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 #2c4a34}.exit{position:absolute;top:1.5vw;right:1.5vw;z-index:5;opacity:.6;padding:.3em .6em}.fcol{display:flex;flex-direction:column;align-items:center;gap:1.2vw;min-height:0}.fcol-glyph{color:var(--ink-dim);font-size:4vw;opacity:.7}.ftile{position:relative}.ftile.done{opacity:.35}.ftile.pulse .cardface{animation:pulse .7s ease-out}.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 #e0b64ce6}to{box-shadow:0 0 0 3.5vw #e0b64c00}}.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:62vw}.work-pile{position:relative;touch-action:none}.work-card{position:absolute;left:0;touch-action:none}.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(--ink-dim);font-size:2.8vw;text-transform:uppercase;letter-spacing:.12em;margin-top:1vw}.slot .count{position:absolute;right:8vw;top:-2vw;background:#0008;border-radius:999px;font-size:3vw;padding:.2em .5em;z-index:2}.piffle-count{background:var(--accent);color:#241a05;font-weight:700}.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)}.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:.35}.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;transform:translate(-50%,-70%)}.drag-ghost-card{position:absolute;left:0}.drag-ghost .cardface{box-shadow:0 8px 22px #000000a6}.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 .cardface{--card-w: 9.5vmin}.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}.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)}.stuck-chip{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 30vw);left:50%;transform:translate(-50%);background:#0a140ee6;border:1px solid #2c4a34;color:var(--ink-dim);border-radius:999px;padding:.45em 1.2em;font-size:3.2vw;z-index:60;white-space:nowrap}.qr{width:min(46vmin,15rem);height:min(46vmin,15rem);border-radius:1.2vmin}.table-lobby .room-code{font-size:clamp(3rem,18vmin,12rem)}.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)}
