:root{--felt-0: #061a14;--felt-1: #0a2f24;--felt-2: #0f4636;--felt-3: #166b52;--ink: #f3efe4;--ink-muted: #b7c4b8;--bone: #f7f1e3;--bone-edge: #d9d0bc;--pip: #1a1a1a;--gold: #d4a84b;--gold-deep: #a67c2d;--danger: #e07a5f;--shadow: rgba(0, 0, 0, .45);--radius: 18px;--font-display: "Fraunces", Georgia, serif;--font-body: "Manrope", system-ui, sans-serif;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:var(--font-body);color:var(--ink);background:var(--felt-0);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}.eyebrow{margin:0;letter-spacing:.22em;text-transform:uppercase;font-size:.72rem;font-weight:600;color:var(--gold)}.brand,.table__title,.lobby__code,.home h1{font-family:var(--font-display);font-weight:700;letter-spacing:-.03em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:48px;padding:.75rem 1.35rem;border-radius:999px;font-weight:700;letter-spacing:.02em;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,opacity .2s ease}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--gold{background:linear-gradient(165deg,#e6c06a,var(--gold) 45%,var(--gold-deep));color:#1a1408;box-shadow:0 10px 28px #d4a84b47}.btn--gold:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 14px 34px #d4a84b61}.btn--ghost{background:#f3efe40f;border:1px solid rgba(243,239,228,.18);color:var(--ink)}.btn--ghost:hover:not(:disabled){background:#f3efe41f}.btn--tiny{min-height:34px;padding:.35rem .8rem;font-size:.82rem;border-radius:999px;background:#f3efe414;border:1px solid rgba(243,239,228,.14)}.form-error{color:#ffb4a2;margin:.5rem 0 0;font-size:.92rem}.boot{min-height:100dvh;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 30%,var(--felt-2),var(--felt-0))}.gate{min-height:100dvh;display:grid;place-items:center;padding:1.5rem;position:relative;background:radial-gradient(ellipse at 50% 0%,rgba(22,107,82,.45),transparent 55%),var(--felt-0)}.gate__glow{position:absolute;inset:15% 20% auto;height:40%;background:radial-gradient(circle,rgba(212,168,75,.18),transparent 70%);filter:blur(40px);pointer-events:none}.gate__card{width:min(420px,100%);padding:2rem 1.5rem;border-radius:24px;background:#061a14c7;border:1px solid rgba(243,239,228,.12);text-align:center;box-shadow:0 30px 80px #0006}.gate__card h1{margin:.4rem 0 .75rem;font-family:var(--font-display);font-size:clamp(2rem,8vw,2.6rem)}.gate__card>p{margin:0;color:var(--ink-muted);line-height:1.5}.gate__steps{margin:1.4rem 0 0;padding:0;list-style:none;display:grid;gap:.55rem;text-align:left}.gate__steps li{padding:.7rem .9rem;border-radius:12px;background:#f3efe40d;border:1px solid rgba(243,239,228,.08);font-size:.92rem}.hub{position:relative;min-height:100dvh;padding:2rem 1.25rem 2.5rem;overflow:hidden;background:radial-gradient(ellipse 80% 55% at 50% -10%,rgba(22,107,82,.55),transparent 60%),radial-gradient(ellipse 50% 40% at 15% 90%,rgba(212,168,75,.1),transparent 50%),linear-gradient(180deg,var(--felt-1),var(--felt-0))}.hub__glow,.hub__grain{position:absolute;pointer-events:none}.hub__glow{inset:18% 10% auto;height:36%;background:radial-gradient(circle,rgba(22,107,82,.35),transparent 70%);filter:blur(40px)}.hub__grain{top:0;right:0;bottom:0;left:0;opacity:.08;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.hub__header{position:relative;z-index:1;text-align:center;max-width:36rem;margin:0 auto 1.75rem}.hub__header .brand{margin:.35rem 0 .5rem;font-size:clamp(3.2rem,12vw,5.5rem);line-height:.92}.hub__user{margin:1.1rem auto .4rem;display:inline-flex;align-items:center;gap:.75rem;padding:.55rem .9rem .55rem .55rem;border-radius:999px;background:#061a148c;border:1px solid rgba(243,239,228,.1);text-align:left}.hub__stats{margin:.85rem auto 0;display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap}.hub__stats span{padding:.35rem .7rem;border-radius:999px;background:#f3efe40f;border:1px solid rgba(243,239,228,.1);font-size:.78rem;font-weight:600;color:var(--ink-muted)}.hub__stats strong{color:var(--gold);font-weight:800}.hub__user strong{display:block;font-size:.95rem}.hub__user span{display:block;font-size:.78rem;color:var(--ink-muted)}.hub__avatar{width:40px;height:40px;border-radius:50%;object-fit:cover}.hub__avatar--fallback{display:grid;place-items:center;background:linear-gradient(145deg,var(--gold),var(--gold-deep));color:#1a1408;font-weight:800}.hub__grid{position:relative;z-index:1;width:min(720px,100%);margin:0 auto;display:grid;gap:.85rem}.game-card{display:grid;gap:.35rem;text-align:left;padding:1.25rem 1.3rem;border-radius:20px;background:#061a1499;border:1px solid rgba(243,239,228,.1);border-left:3px solid var(--accent, var(--gold));box-shadow:0 16px 40px #00000040;transition:transform .2s ease,background .2s ease,border-color .2s ease}.game-card:not(:disabled):hover{transform:translateY(-2px);background:#061a14c7;border-color:#d4a84b59}.game-card--soon{opacity:.55;cursor:not-allowed}.game-card h2{margin:0;font-family:var(--font-display);font-size:1.55rem;font-weight:600}.game-card p{margin:0;color:var(--ink-muted);font-size:.92rem}.game-card__status{font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent, var(--gold))}.brand--sm{font-size:clamp(2.2rem,8vw,3.2rem)!important}.back-link{margin-bottom:.75rem}.home{position:relative;min-height:100dvh;display:grid;align-content:center;justify-items:center;gap:2rem;padding:2.5rem 1.25rem 3rem;overflow:hidden;background:radial-gradient(ellipse 80% 55% at 50% -10%,rgba(22,107,82,.55),transparent 60%),radial-gradient(ellipse 50% 40% at 85% 80%,rgba(212,168,75,.12),transparent 50%),linear-gradient(180deg,var(--felt-1),var(--felt-0))}.home__glow{position:absolute;inset:20% 10% auto;height:40%;background:radial-gradient(circle,rgba(22,107,82,.35),transparent 70%);filter:blur(40px);pointer-events:none}.home__grain{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.08;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.home__brand{text-align:center;z-index:1}.home__brand .brand{margin:.35rem 0 .5rem;font-size:clamp(3.4rem,12vw,6.5rem);line-height:.92;color:var(--ink);text-shadow:0 12px 40px rgba(0,0,0,.35)}.tagline{margin:0;max-width:28rem;color:var(--ink-muted);font-size:1.05rem;line-height:1.5}.home__actions{width:min(920px,100%);z-index:1}.home-forms{display:grid;grid-template-columns:1fr auto 1fr;gap:1.25rem;align-items:stretch}@media(max-width:820px){.home-forms{grid-template-columns:1fr}.form-divider{display:flex;justify-content:center}}.panel-form{display:grid;gap:.85rem;padding:1.35rem 1.4rem 1.5rem;border-radius:var(--radius);background:#061a148c;border:1px solid rgba(243,239,228,.1);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 20px 50px #00000047}.panel-form h2{margin:0 0 .2rem;font-family:var(--font-display);font-size:1.45rem;font-weight:600}.panel-form label{display:grid;gap:.35rem;font-size:.82rem;color:var(--ink-muted);font-weight:600}.panel-form input,.panel-form select{min-height:46px;padding:.65rem .9rem;border-radius:12px;border:1px solid rgba(243,239,228,.14);background:#f3efe40f;outline:none;transition:border-color .2s ease,background .2s ease}.panel-form input:focus,.panel-form select:focus{border-color:#d4a84b8c;background:#f3efe417}.code-input{letter-spacing:.28em;text-transform:uppercase;font-weight:700}.form-divider{display:grid;place-items:center;color:var(--ink-muted);font-size:.85rem}.form-divider span{width:2.2rem;height:2.2rem;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(243,239,228,.12)}.conn{margin:1rem 0 0;text-align:center;font-size:.82rem;color:var(--ink-muted)}.conn--on:before,.conn--off:before{content:"";display:inline-block;width:.5rem;height:.5rem;border-radius:50%;margin-right:.45rem;vertical-align:middle}.conn--on:before{background:#6bcf8e;box-shadow:0 0 10px #6bcf8e}.conn--off:before{background:var(--danger)}.home__hero-tiles{position:absolute;inset:auto 0 8% 0;height:120px;pointer-events:none;z-index:0}.float-tile{position:absolute;width:54px;height:98px;border-radius:8px;background:linear-gradient(145deg,#fffaf0,var(--bone) 40%,#e8dfcb);box-shadow:0 18px 40px #00000059;opacity:.9;animation:drift 7s ease-in-out infinite}.float-tile--a{left:12%;rotate:-18deg;animation-delay:0s}.float-tile--b{left:48%;width:98px;height:54px;rotate:8deg;animation-delay:-2s}.float-tile--c{right:14%;left:auto;rotate:14deg;animation-delay:-4s}@keyframes drift{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.lobby{min-height:100dvh;display:grid;place-items:center;padding:1.5rem;position:relative;background:radial-gradient(ellipse at 50% 0%,rgba(22,107,82,.4),transparent 55%),var(--felt-0)}.lobby__card{width:min(440px,100%);padding:2rem 1.6rem;border-radius:24px;background:#061a14b8;border:1px solid rgba(243,239,228,.12);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);text-align:center;box-shadow:0 30px 80px #0006}.lobby__code{display:inline-block;margin:.4rem 0;font-size:clamp(2.6rem,10vw,3.6rem);letter-spacing:.18em;color:var(--ink)}.lobby__hint{margin:0 0 1.4rem;color:var(--ink-muted);font-size:.95rem}.lobby__players{list-style:none;margin:0 0 1.4rem;padding:0;display:grid;gap:.55rem;text-align:left}.lobby__players li{display:grid;grid-template-columns:auto 1fr auto;gap:.7rem;align-items:center;padding:.75rem .9rem;border-radius:14px;background:#f3efe40d;border:1px solid rgba(243,239,228,.08)}.lobby__players li.empty{opacity:.45}.lobby__players em{font-style:normal;font-size:.75rem;color:var(--gold);letter-spacing:.08em;text-transform:uppercase}.dot{width:.55rem;height:.55rem;border-radius:50%;background:#6bcf8e;box-shadow:0 0 8px #6bcf8eb3}.dot--empty{background:transparent;border:1px solid rgba(243,239,228,.35);box-shadow:none}.lobby__actions{display:grid;gap:.7rem}.lobby__wait{margin:0;color:var(--ink-muted)}.table{min-height:100dvh;display:grid;grid-template-rows:auto auto 1fr auto;gap:.75rem;padding:.85rem .85rem calc(.85rem + env(safe-area-inset-bottom));background:radial-gradient(ellipse at 50% -20%,rgba(22,107,82,.45),transparent 50%),linear-gradient(180deg,#083528,var(--felt-0) 40%)}.table__top{display:flex;justify-content:space-between;align-items:end;gap:1rem;flex-wrap:wrap;padding:.25rem .35rem}.table__title{margin:.15rem 0 0;font-size:1.8rem;line-height:1}.table__meta{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center;color:var(--ink-muted);font-size:.88rem;font-weight:600}.boneyard{padding:.3rem .7rem;border-radius:999px;background:#f3efe414;color:var(--ink)}.player-rail{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6rem}.seat{position:relative;padding:.7rem .8rem .75rem;border-radius:16px;background:#061a148c;border:1px solid rgba(243,239,228,.08);transition:border-color .25s ease,box-shadow .25s ease}.seat--active{border-color:#d4a84b8c;box-shadow:0 0 0 1px #d4a84b40,0 12px 30px #00000040}.seat--you{background:#d4a84b14}.seat--away{opacity:.55}.seat__meta{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.45rem;font-size:.86rem}.seat__name{font-weight:700}.seat__score{color:var(--ink-muted)}.seat__tiles{display:flex;gap:.2rem;align-items:end;min-height:28px}.seat__back{pointer-events:none}.seat__more{font-size:.75rem;color:var(--ink-muted);margin-left:.2rem}.seat__turn,.seat__away{position:absolute;top:.45rem;right:.55rem;font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}.seat__away{color:var(--danger);top:auto;bottom:.45rem}.table__felt{position:relative;display:grid;grid-template-rows:auto 1fr auto;gap:.6rem;min-height:220px;padding:.9rem .7rem 1rem;border-radius:24px;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#1a7a5c,#0e4d3a 42%,#0a3328);border:1px solid rgba(255,255,255,.06);box-shadow:inset 0 0 80px #00000059,0 20px 50px #00000059}.felt-noise{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.12;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:overlay}.table__status{position:relative;z-index:1;margin:0;text-align:center;font-size:.92rem;font-weight:600;color:#f3efe4e0}.board-wrap{position:relative;z-index:1;min-height:140px;display:grid;align-items:center}.board-scroll{overflow-x:auto;overflow-y:hidden;padding:.5rem .25rem .75rem;scrollbar-width:thin;scrollbar-color:rgba(243,239,228,.25) transparent}.board-chain{display:flex;align-items:center;justify-content:center;gap:.2rem;min-width:min-content;margin:0 auto;padding:.5rem}.board-tile{position:relative;flex:0 0 auto}.board-starter{position:absolute;left:50%;bottom:-1.1rem;transform:translate(-50%);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:#f3efe48c}.board-empty{padding:2rem 1rem;color:#f3efe48c;font-size:.95rem}.end-glow{width:10px;height:48px;border-radius:999px;background:#d4a84b8c;box-shadow:0 0 18px #d4a84b8c;flex:0 0 auto;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}.table__actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:.55rem;justify-content:center;min-height:48px;align-items:center}.side-picker{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:center;padding:.45rem .7rem;border-radius:999px;background:#061a148c;border:1px solid rgba(212,168,75,.35)}.hand{padding:.65rem .4rem .2rem;border-radius:20px 20px 14px 14px;background:#061a14a6;border:1px solid rgba(243,239,228,.08)}.hand--active{border-color:#d4a84b59;box-shadow:0 -8px 30px #d4a84b14}.hand__label{display:flex;justify-content:space-between;padding:0 .45rem .45rem;font-size:.82rem;font-weight:700;color:var(--ink-muted)}.hand__count{color:var(--gold)}.hand__rail{display:flex;gap:.45rem;overflow-x:auto;padding:.35rem .25rem .55rem;scrollbar-width:thin;justify-content:safe center}.hand__item{flex:0 0 auto}.tile{position:relative;display:inline-flex;align-items:stretch;justify-content:center;padding:0;border:none;border-radius:7px;background:linear-gradient(160deg,#fffdf8 0%,var(--bone) 42%,#ebe2cf 100%);box-shadow:0 1px #ffffffb3 inset,0 8px 18px #00000047,0 1px 2px #0003;color:var(--pip);transition:transform .2s ease,box-shadow .2s ease,filter .2s ease;-webkit-tap-highlight-color:transparent}.tile--interactive{cursor:pointer}.tile--interactive:hover{transform:translateY(-4px)}.tile--playable{box-shadow:0 1px #ffffffb3 inset,0 0 0 2px #d4a84bd9,0 12px 24px #d4a84b40;animation:tileGlow 1.8s ease-in-out infinite}.tile--selected{transform:translateY(-10px) scale(1.04);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--gold),0 16px 30px #00000059}.tile--dimmed{filter:brightness(.72) saturate(.85);opacity:.78}.tile--back{background:linear-gradient(145deg,#2a6b55,#184a3b 55%,#123a2f);box-shadow:0 1px #ffffff1f inset,0 4px 10px #0000004d}.tile__back-pattern{display:block;width:100%;height:100%;border-radius:inherit;background:repeating-linear-gradient(45deg,rgba(255,255,255,.06) 0 2px,transparent 2px 7px)}.tile--horiz{flex-direction:row}.tile--vert{flex-direction:column}.tile--xs.tile--vert{width:16px;height:28px;border-radius:3px}.tile--xs.tile--horiz{width:28px;height:16px;border-radius:3px}.tile--sm.tile--vert{width:28px;height:52px}.tile--sm.tile--horiz{width:52px;height:28px}.tile--hand.tile--vert,.tile--md.tile--vert{width:52px;height:96px}.tile--hand.tile--horiz,.tile--md.tile--horiz{width:96px;height:52px}.tile--board.tile--vert{width:42px;height:78px}.tile--board.tile--horiz{width:78px;height:42px}@media(max-width:600px){.tile--hand.tile--vert,.tile--md.tile--vert{width:44px;height:82px}.tile--hand.tile--horiz,.tile--md.tile--horiz{width:82px;height:44px}.tile--board.tile--vert{width:34px;height:64px}.tile--board.tile--horiz{width:64px;height:34px}}.tile__half{position:relative;flex:1}.tile__divider{flex:0 0 2px;background:linear-gradient(to bottom,transparent,rgba(40,30,15,.35),transparent);margin:8% 0;border-radius:2px}.tile--horiz .tile__divider{background:linear-gradient(to right,transparent,rgba(40,30,15,.35),transparent);margin:0 6%;width:2px;align-self:stretch}.tile__pip{position:absolute;width:18%;height:18%;min-width:5px;min-height:5px;max-width:11px;max-height:11px;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 30%,#444,var(--pip) 55%);box-shadow:0 .5px #ffffff40}@keyframes tileGlow{0%,to{filter:brightness(1)}50%{filter:brightness(1.06)}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:1.25rem;background:#040e0bb8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.overlay__card{width:min(420px,100%);padding:1.75rem 1.4rem;border-radius:22px;background:linear-gradient(180deg,#124536,#0a2a21);border:1px solid rgba(212,168,75,.28);box-shadow:0 30px 80px #00000073;text-align:center}.overlay__card h2{margin:.35rem 0 .5rem;font-family:var(--font-display);font-size:1.7rem;line-height:1.15}.overlay__points{margin:0 0 1rem;color:var(--gold);font-weight:700}.overlay__hands,.overlay__scores{list-style:none;margin:0 0 1rem;padding:0;display:grid;gap:.4rem;text-align:left}.overlay__hands li,.overlay__scores>div{display:flex;justify-content:space-between;gap:1rem;padding:.55rem .7rem;border-radius:12px;background:#00000038;font-size:.92rem}.toast{position:fixed;left:50%;bottom:calc(1rem + env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;padding:.7rem 1.1rem;border-radius:999px;background:#3a1f1a;border:1px solid rgba(224,122,95,.5);color:#ffd5cb;font-weight:600;box-shadow:0 12px 30px #00000059}@media(min-width:900px){.table{padding:1.1rem 1.4rem 1.2rem;gap:.9rem}.table__felt{min-height:280px}}
