/* ===========================================================================
   aUNO — app styles on top of kit.css (tokens, buttons, fields, toasts, dialogs).
   No hover-lift anywhere: hover/focus feedback is colour, border, shadow only.
   =========================================================================== */

:root{
  /* card room: a warm paper lobby, green felt tables, a wooden rim, gold for "play" */
  --brand:#0f6b57; --brand-600:#0c5a49; --brand-500:#14866c; --brand-300:#7cc9b5;
  --brand-soft:#e3f1ec; --brand-mist:#f2f8f5; --on-brand:#fff;
  --bg:#f4f1ea; --surface:#fffdf9; --surface-2:#f8f5ee;
  --ink:#1c241f; --ink-2:#36423b; --muted:#66706a; --line:#e3ddd0; --line-2:#efeadf;

  /* card palette (aUNO's own) */
  --c-R:#e5484d; --c-Y:#f2b705; --c-G:#22a06b; --c-B:#2f6fde; --c-W:#1d1f2b;
  --c-R-fg:#fff; --c-Y-fg:#2b2100; --c-G-fg:#fff; --c-B-fg:#fff; --c-W-fg:#fff;

  /* table */
  --room:#0a1a16; --room-2:#12302a;
  --felt:#0d4a3d; --felt-2:#16705b; --felt-ink:#eef7f3; --felt-muted:#a6cbbf;
  --felt-line:rgba(255,255,255,.16); --felt-panel:rgba(0,0,0,.24);
  --rim:#4a2f1d; --rim-2:#6b4529;
  --gold:#f2c94c; --gold-600:#d9ab25; --on-gold:#2b1d00;

  --cw:64px;                    /* card width; height follows the 1.45 ratio */
  --app-max:1180px;
  --topbar:56px;
}
@media (min-width:760px){ :root{ --cw:78px } }

@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --brand:#2fb492; --brand-600:#57c7a9; --brand-500:#2fb492; --brand-300:#2a6e5d;
    --brand-soft:#123a31; --brand-mist:#0f2a24; --on-brand:#06221b;
    --bg:#0c1714; --surface:#13211d; --surface-2:#182a25;
    --ink:#e8f1ed; --ink-2:#c5d6cf; --muted:#8fa69e; --line:#26393a; --line-2:#1c2e2a;
  }
}
:root[data-theme="dark"]{
  --brand:#2fb492; --brand-600:#57c7a9; --brand-500:#2fb492; --brand-300:#2a6e5d;
  --brand-soft:#123a31; --brand-mist:#0f2a24; --on-brand:#06221b;
  --bg:#0c1714; --surface:#13211d; --surface-2:#182a25;
  --ink:#e8f1ed; --ink-2:#c5d6cf; --muted:#8fa69e; --line:#26393a; --line-2:#1c2e2a;
}

[hidden]{display:none !important}
html,body{height:100%}
body{background:var(--bg)}
body.is-table{background:var(--room)}
.icon{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em;fill:none;stroke:currentColor;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}
.noscript{padding:40px;text-align:center}

/* ---------------------------------------------------------------- buttons (aUNO extras; never move on hover) */
.btn--gold{background:var(--gold);color:var(--on-gold);border-color:transparent;font-weight:800;
  box-shadow:inset 0 -3px 0 rgba(0,0,0,.18)}
.btn--gold:hover{background:#f7d466;box-shadow:inset 0 -3px 0 rgba(0,0,0,.18),0 6px 18px rgba(242,201,76,.35)}
.btn--felt{background:rgba(255,255,255,.1);color:var(--felt-ink);border-color:var(--felt-line)}
.btn--felt:hover{background:rgba(255,255,255,.18);box-shadow:none}
.btn--danger-text{color:var(--bad)}
.btn--danger-text:hover{background:var(--bad-bg);border-color:var(--bad-line)}
.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;border:1px solid transparent;
  background:transparent;color:inherit;cursor:pointer;font:inherit}
.icon-btn:hover{background:var(--line-2)}
.icon-btn:focus-visible{outline:3px solid var(--ring);outline-offset:1px}
.icon-btn .icon{width:20px;height:20px}
.link-btn{border:0;background:none;padding:4px 2px;font:inherit;font-weight:700;color:var(--brand-600);cursor:pointer;text-decoration:underline;
  text-underline-offset:3px}
.link-btn:focus-visible{outline:3px solid var(--ring);outline-offset:2px;border-radius:4px}
.switch{position:relative;width:48px;height:28px;border-radius:999px;border:0;background:var(--line);cursor:pointer;flex:none}
.switch i{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);
  transition:left .15s ease-out}
.switch[aria-checked="true"]{background:var(--brand)}
.switch[aria-checked="true"] i{left:23px}
.switch:focus-visible{outline:3px solid var(--ring);outline-offset:2px}

/* ---------------------------------------------------------------- brand mark */
.brand-mark{margin:0;font-weight:900;font-size:2.6rem;letter-spacing:-.04em;color:var(--brand);line-height:1;text-decoration:none}
.brand-mark span{color:var(--c-R)}
.brand-mark--sm{font-size:1.45rem}
a.brand-mark:hover{text-decoration:none}

/* ---------------------------------------------------------------- shell */
.app{min-height:100%;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:6px;height:var(--topbar);padding:0 12px 0 16px;
  border-bottom:1px solid var(--line);background:var(--surface);color:var(--ink)}
body.is-table .topbar{background:#08150f;border-color:rgba(255,255,255,.08);color:var(--felt-ink)}
body.is-table .topbar .icon-btn:hover{background:rgba(255,255,255,.1)}
body.is-table .brand-mark{color:var(--felt-ink)}
.topbar__spacer{flex:1}
.who{display:flex;align-items:center;gap:8px;font:inherit;font-weight:700;color:inherit;min-width:0;
  border:0;background:none;padding:4px 8px 4px 4px;border-radius:999px;cursor:pointer}
.who:hover{background:var(--line-2)}
body.is-table .who:hover{background:rgba(255,255,255,.1)}
.who:focus-visible{outline:3px solid var(--ring);outline-offset:1px}
.who__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:26vw}
@media (max-width:520px){ .who__name{display:none} }
.conn{display:none;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--warn);font-weight:700}
.conn.is-on{display:inline-flex}

.shell{flex:1;display:flex;min-height:0}
.shell__main{flex:1;min-width:0;padding-bottom:calc(72px + env(safe-area-inset-bottom))}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(4,1fr);
  background:var(--surface);border-top:1px solid var(--line);padding:4px 6px env(safe-area-inset-bottom)}
.tabbar__btn{display:grid;justify-items:center;gap:2px;padding:8px 0 6px;border:0;background:none;font:inherit;font-size:.72rem;
  font-weight:700;color:var(--muted);cursor:pointer;border-radius:12px}
.tabbar__btn .icon{width:22px;height:22px}
.tabbar__btn[aria-current="page"]{color:var(--brand)}
.tabbar__btn:hover{color:var(--ink)}
.tabbar__btn:focus-visible{outline:3px solid var(--ring);outline-offset:-3px}
@media (min-width:900px){
  .tabbar{position:sticky;top:var(--topbar);align-self:flex-start;height:calc(100dvh - var(--topbar));width:92px;
    grid-template-columns:1fr;grid-auto-rows:min-content;align-content:start;gap:4px;border-top:0;border-right:1px solid var(--line);padding:14px 10px}
  .tabbar__btn{padding:12px 0}
  .tabbar__btn[aria-current="page"]{background:var(--brand-soft)}
  .shell__main{padding-bottom:0}
}

.screen{width:100%;max-width:var(--app-max);margin:0 auto;padding:18px 16px 40px;flex:1}
.screen--narrow{max-width:460px}
.screen--mid{max-width:720px}
.page-title{margin:0 0 4px;font-size:1.5rem}
.block{margin-top:26px}
.block__head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.block__title{margin:0 0 12px;font-size:1.15rem}
.block__head .block__title{margin-bottom:12px}

.avatar{--av:#6b7f78;width:34px;height:34px;border-radius:50%;flex:none;display:inline-grid;place-items:center;
  background:var(--av);color:#fff;font-weight:800;font-size:.95rem;text-transform:uppercase}
.avatar--lg{width:48px;height:48px;font-size:1.2rem}
.avatar--xl{width:72px;height:72px;font-size:1.8rem}
.avatar--bot{background:#3c4a5a}
.avatar .icon{width:58%;height:58%}

/* ---------------------------------------------------------------- welcome */
.welcome{flex:1;display:grid;gap:20px;width:100%;max-width:1080px;margin:0 auto;padding:18px 16px 40px;align-content:start}
@media (min-width:900px){ .welcome{grid-template-columns:1.15fr 1fr;align-items:start;padding-top:40px} }
.welcome__felt{position:relative;display:grid;gap:14px;justify-items:start;padding:30px 26px;border-radius:28px;color:var(--felt-ink);
  background:radial-gradient(ellipse at 40% 35%,var(--felt-2),var(--felt) 70%);border:8px solid var(--rim);
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.08),0 20px 50px rgba(20,30,20,.25)}
.welcome__felt .brand-mark{color:var(--felt-ink);font-size:3.4rem}
.welcome__tag{margin:0;font-size:1.1rem;max-width:34ch;color:var(--felt-ink)}
.welcome__free{display:inline-flex;align-items:center;gap:8px;margin:0;padding:6px 12px;border-radius:999px;background:rgba(0,0,0,.25);
  font-size:.85rem;font-weight:700;color:var(--gold)}
.welcome__forms{display:grid;gap:16px}
.fan{display:flex;padding:8px 0 6px 14px}
.fan .card{margin-left:-14px;box-shadow:0 6px 18px rgba(0,0,0,.3)}
.fan .card:nth-child(1){transform:rotate(-14deg) translateY(6px)}
.fan .card:nth-child(2){transform:rotate(-5deg)}
.fan .card:nth-child(3){transform:rotate(5deg)}
.fan .card:nth-child(4){transform:rotate(14deg) translateY(6px)}
.fan--big .card{--cw:70px}
@media (min-width:760px){ .fan--big .card{--cw:88px} }
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;
  box-shadow:0 1px 2px rgba(40,30,10,.05)}
.panel h2{margin:0 0 4px;font-size:1.15rem}
.panel p.lead{margin:0 0 14px;color:var(--muted)}
.panel + .panel{margin-top:14px}
.panel--accent{background:var(--brand-mist);border-color:var(--brand-300)}
.fineprint{color:var(--muted);font-size:var(--fs-sm);margin:0}

/* ---------------------------------------------------------------- play tab */
.guest-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;padding:10px 12px;border-radius:14px;
  background:var(--surface);border:1px solid var(--line);font-size:var(--fs-sm);color:var(--ink-2)}
.guest-strip > span{flex:1;min-width:180px}
.guest-strip > .icon{color:var(--brand)}

.hero{--t-art:var(--felt-2);position:relative;display:grid;gap:18px;padding:22px 20px;border-radius:28px;color:var(--felt-ink);
  background:radial-gradient(ellipse at 30% 30%,var(--felt-2),var(--felt) 72%);border:7px solid var(--rim);
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.07),0 18px 44px rgba(20,30,20,.22)}
@media (min-width:760px){ .hero{grid-template-columns:240px 1fr;align-items:center;padding:30px 32px} }
.hero__art{display:grid;place-items:center;min-height:120px}
.hero__art .mini-fan .card{--cw:62px}
@media (min-width:760px){ .hero__art .mini-fan .card{--cw:84px} }
.hero__kicker{margin:0;font-size:.8rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--gold)}
.hero__title{margin:2px 0 6px;font-size:2.2rem;letter-spacing:-.03em;line-height:1.05}
.hero__blurb{margin:0 0 14px;color:var(--felt-muted);max-width:52ch}
.hero__setup{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.hero__note{color:var(--felt-muted);font-size:var(--fs-sm)}
.hero__actions{display:flex;gap:10px;flex-wrap:wrap}
.hero__actions .btn--lg{min-width:190px}
.hero__join{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px}
.hero__join .link-btn{color:var(--felt-muted);margin-left:auto}
@media (max-width:520px){ .hero__actions .btn{flex:1 1 100%} .hero__join .link-btn{margin-left:0} }
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:var(--radius-pill);
  overflow:hidden;background:var(--surface)}
.stepper button{border:0;background:none;color:var(--ink);width:40px;height:40px;cursor:pointer;font-size:1.2rem}
.stepper button:hover{background:var(--surface-2)}
.stepper button:focus-visible{outline:3px solid var(--ring);outline-offset:-3px}
.stepper output{min-width:2.2em;text-align:center;font-weight:800}
.stepper--felt{background:rgba(0,0,0,.22);border-color:var(--felt-line)}
.stepper--felt button,.stepper--felt output{color:var(--felt-ink)}
.stepper--felt button:hover{background:rgba(255,255,255,.1)}
.code-input{text-transform:uppercase;letter-spacing:.2em;font-weight:800;font-size:1.05rem;max-width:12ch}
.code-input--felt{max-width:none;width:11.5em;background:rgba(0,0,0,.25);border-color:var(--felt-line);color:var(--felt-ink);padding:8px 12px}
.code-input--felt::placeholder{color:var(--felt-muted);letter-spacing:.12em}
.select{font:inherit;padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink)}
.select--felt{background:rgba(0,0,0,.25);border-color:var(--felt-line);color:var(--felt-ink)}
.select--felt option{color:#1c241f;background:#fff}

/* game tiles */
.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:12px}
@media (max-width:560px){ .game-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px} .gtile__art{height:76px} .mini-fan .card{--cw:32px;margin-left:-14px} .gtile__name{font-size:.84rem} .gtile__meta{font-size:.7rem} }
.gtile{display:grid;gap:2px;padding:0 0 12px;border-radius:18px;border:2px solid var(--line);background:var(--surface);
  color:var(--ink);cursor:pointer;font:inherit;text-align:center;overflow:hidden;position:relative}
.gtile:hover{border-color:var(--brand-300);box-shadow:0 6px 18px rgba(40,30,10,.08)}
.gtile:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.gtile.is-on{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.gtile.is-on::after{content:"";position:absolute;top:8px;right:8px;width:20px;height:20px;border-radius:50%;
  background:var(--brand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E") center/13px no-repeat}
.gtile__art{display:grid;place-items:center;height:96px;margin-bottom:8px;background:var(--t-bg)}
.gtile__name{font-weight:800;font-size:.98rem;padding:0 8px}
.gtile__meta{font-size:.78rem;color:var(--muted)}
.mini-fan{display:flex;padding-left:16px}
.mini-fan .card{--cw:40px;margin-left:-16px;box-shadow:0 3px 8px rgba(0,0,0,.22)}
.mini-fan .card:nth-child(1){transform:rotate(-12deg) translateY(4px)}
.mini-fan .card:nth-child(3){transform:rotate(12deg) translateY(4px)}

/* per-game tints (tile art panels) */
.tint-red{--t-bg:#fbe3e1} .tint-blue{--t-bg:#e3ecfb} .tint-teal{--t-bg:#dcefe8} .tint-purple{--t-bg:#ebe6fb}
.tint-amber{--t-bg:#f8ecd2} .tint-coral{--t-bg:#fae5dc} .tint-pink{--t-bg:#f9e3ec} .tint-slate{--t-bg:#e5e9ee}
.tint-green{--t-bg:#e4f1dc} .tint-brown{--t-bg:#efe5da} .tint-indigo{--t-bg:#e5e6f8}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) [class*="tint-"]{--t-bg:#1b2d28} }
:root[data-theme="dark"] [class*="tint-"]{--t-bg:#1b2d28}

/* history, stats */
.history{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.hrow{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.hrow--won{border-color:#ecd48b;background:linear-gradient(90deg,#fff8e1,var(--surface) 55%)}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .hrow--won{background:var(--surface);border-color:#6b5a1e} }
:root[data-theme="dark"] .hrow--won{background:var(--surface);border-color:#6b5a1e}
.place{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-weight:900;
  background:var(--line-2);color:var(--ink-2);flex:none}
.place--1{background:#fff0bf;color:#7a5600}
.history__meta{display:grid;min-width:0}
.history__meta small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.history__pts{margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.history__game{font-weight:700;color:var(--muted)}
.empty-note{color:var(--muted);margin:0}
.empty{display:grid;justify-items:center;gap:6px;padding:26px 12px;text-align:center;color:var(--muted);list-style:none}
.empty .icon{width:34px;height:34px;color:var(--brand-300)}
.empty p{margin:0;max-width:34ch}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:10px 0 18px}
@media (max-width:520px){ .stats{grid-template-columns:repeat(2,1fr)} }
.stat{display:grid;gap:2px;padding:14px 12px;border-radius:16px;background:var(--surface);border:1px solid var(--line);text-align:center}
.stat__n{font-size:1.5rem;font-weight:900;font-variant-numeric:tabular-nums;color:var(--brand)}
.stat__l{font-size:.78rem;color:var(--muted);font-weight:700}

/* profile */
.profile-card{display:flex;align-items:center;gap:16px;margin-bottom:18px}
.settings{list-style:none;margin:0;padding:0;display:grid}
.settings li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line-2)}
.settings li:first-child{border-top:0}
.settings li > span{display:inline-flex;align-items:center;gap:10px;font-weight:700}

/* friends */
.friend-code-card{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px;margin-bottom:14px;border-radius:14px;
  background:var(--brand-mist);border:1px dashed var(--brand-300)}
.friend-code-card .friend-code{font-size:1.3rem;font-weight:900;color:var(--brand)}
.online-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#22a06b;margin-left:4px;vertical-align:1px}

/* ads (lobby screens only; never on the table) */
.ad{display:grid;gap:6px;margin:18px 0;padding:10px 14px 12px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.ad__label{font-size:.66rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.ad__body{min-height:56px}
.ad--house .ad__body{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ad__icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--brand-soft);color:var(--brand);flex:none}
.ad__text{flex:1;display:grid;min-width:180px}
.ad__text small{color:var(--muted)}
.adsbygoogle{display:block;min-height:60px}

/* ---------------------------------------------------------------- room lobby */
.room{display:grid;gap:18px}
@media (min-width:980px){ .room{grid-template-columns:1.4fr 1fr;align-items:start} }
.room__head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.room-code{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;border-radius:16px;background:var(--surface);
  border:1px solid var(--line)}
.room-code strong{font-size:1.8rem;letter-spacing:.2em;font-weight:900;color:var(--brand);font-variant-numeric:tabular-nums}
.room-code .btn{margin-left:auto}
.lobby-table{position:relative;aspect-ratio:16/11;max-width:640px;margin:34px auto 52px}
.lobby-table__felt{position:absolute;inset:14% 12%;border-radius:999px;display:grid;place-items:center;
  background:radial-gradient(ellipse at 50% 40%,var(--felt-2),var(--felt) 72%);border:9px solid var(--rim);
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.08),0 16px 36px rgba(20,30,20,.28)}
.lobby-table__name{color:var(--felt-muted);font-weight:900;font-size:1.1rem;letter-spacing:.08em;text-transform:uppercase;opacity:.75}
.lseat{position:absolute;left:var(--x,50%);top:var(--y,50%);transform:translate(-50%,-50%);display:grid;justify-items:center;gap:2px;
  width:104px;padding:8px 6px;border-radius:16px;background:var(--surface);border:1px solid var(--line);text-align:center;
  box-shadow:0 4px 14px rgba(40,30,10,.12)}
.lseat.is-me{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.lseat__name{font-weight:800;font-size:.82rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lseat__tag{font-size:.72rem;color:var(--muted);display:inline-flex;align-items:center;gap:3px}
.lseat__tag .icon{width:12px;height:12px}
.lseat--open{background:var(--surface-2);border-style:dashed;box-shadow:none;color:var(--muted)}
.lseat__open{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:2px dashed var(--line)}
.lseat__x{position:absolute;top:-8px;right:-8px;width:26px;height:26px;border-radius:50%;border:1px solid var(--line);
  background:var(--surface);color:var(--muted);display:grid;place-items:center;cursor:pointer}
.lseat__x:hover{color:var(--bad);border-color:var(--bad-line)}
.lseat__x .icon{width:14px;height:14px}
@media (max-width:560px){ .lseat{width:84px;padding:6px 4px} .lseat .avatar--lg{width:38px;height:38px;font-size:1rem} }
.room__actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:10px}
.room__why{text-align:center;margin-top:8px}
.seats{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.toggles{display:grid;gap:8px}
.toggle{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--surface);cursor:pointer}
.toggle input{margin-top:3px;width:18px;height:18px;accent-color:var(--brand)}
.toggle small{display:block;color:var(--muted)}
.toggle.is-disabled{opacity:.6;cursor:default}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row--end{justify-content:flex-end}
.row--between{justify-content:space-between}

/* ---------------------------------------------------------------- cards */
.card{--fill:var(--c-W);--fg:#fff;position:relative;flex:none;width:var(--cw);height:calc(var(--cw) * 1.45);
  border-radius:calc(var(--cw) * .14);background:var(--fill);color:var(--fg);border:0;padding:0;
  box-shadow:0 2px 0 rgba(0,0,0,.25),0 4px 10px rgba(0,0,0,.2);font-family:var(--font);
  display:block;user-select:none;-webkit-user-select:none}
.card::before{content:"";position:absolute;inset:calc(var(--cw) * .06);border-radius:calc(var(--cw) * .1);
  border:2px solid rgba(255,255,255,.55)}
.card--R{--fill:var(--c-R);--fg:var(--c-R-fg)}
.card--Y{--fill:var(--c-Y);--fg:var(--c-Y-fg)}
.card--Y::before{border-color:rgba(43,33,0,.35)}
.card--G{--fill:var(--c-G);--fg:var(--c-G-fg)}
.card--B{--fill:var(--c-B);--fg:var(--c-B-fg)}
.card--W{--fill:var(--c-W);--fg:#fff}
.card__center{position:absolute;inset:0;display:grid;place-items:center;font-weight:900;
  font-size:calc(var(--cw) * .56);letter-spacing:-.04em;line-height:1;text-shadow:0 2px 0 rgba(0,0,0,.18)}
.card--Y .card__center{text-shadow:none}
.card__center svg{width:58%;height:auto}
.card__corner{position:absolute;font-weight:900;font-size:calc(var(--cw) * .2);line-height:1}
.card__corner svg{width:calc(var(--cw) * .2);height:calc(var(--cw) * .2);display:block}
.card__corner--tl{top:calc(var(--cw) * .11);left:calc(var(--cw) * .12)}
.card__corner--br{bottom:calc(var(--cw) * .11);right:calc(var(--cw) * .12);transform:rotate(180deg)}
.card__mark{position:absolute;top:calc(var(--cw) * .11);right:calc(var(--cw) * .12);width:calc(var(--cw) * .15);
  height:calc(var(--cw) * .15);opacity:.85}
.card__mark svg{width:100%;height:100%;display:block;fill:currentColor}
.cb .card__mark{width:calc(var(--cw) * .24);height:calc(var(--cw) * .24);opacity:1}
.card__ring{width:64%;aspect-ratio:1;border-radius:50%;
  background:conic-gradient(var(--c-R) 0 25%,var(--c-Y) 0 50%,var(--c-G) 0 75%,var(--c-B) 0);
  -webkit-mask:radial-gradient(circle,transparent 38%,#000 39%);mask:radial-gradient(circle,transparent 38%,#000 39%)}
.card__plus4{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--cw) * .3);font-weight:900}
.card--back{--fill:#14233a;background:
  radial-gradient(circle at 50% 50%,rgba(255,255,255,.12) 0 22%,transparent 23%),
  repeating-linear-gradient(45deg,rgba(255,255,255,.05) 0 6px,transparent 6px 12px),#14233a}
.card--back .card__center{font-size:calc(var(--cw) * .3);color:#fff;letter-spacing:-.03em}
.card--back .card__center span{color:var(--c-R)}
.card--sm{--cw:30px}
.card--md{--cw:52px}
.card--lg{--cw:92px}
@media (min-width:760px){ .card--lg{--cw:110px} }

/* cards as buttons in the hand */
button.card{cursor:pointer}
button.card:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.card.is-playable{box-shadow:0 0 0 3px var(--gold),0 6px 16px rgba(0,0,0,.35)}
.card.is-playable:hover{box-shadow:0 0 0 4px #fff,0 0 0 7px var(--gold),0 8px 20px rgba(0,0,0,.4)}
.card.is-dim{filter:saturate(.55) brightness(.62)}
.card.is-new{animation:card-in .35s ease-out}
@keyframes card-in{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.7) rotate(-8deg);opacity:.2}100%{transform:none;opacity:1}}

/* ---------------------------------------------------------------- the table */
/* Players sit around an oval felt with a wooden rim: next player on the left, the rest across
   the top, the last on the right; your fanned hand along the bottom. */
.table-host{flex:1;display:flex;min-height:0}
.gtable{flex:1;display:grid;height:calc(100dvh - var(--topbar));min-height:500px;gap:6px 6px;
  grid-template-columns:minmax(0,auto) minmax(0,1fr) minmax(0,auto);grid-template-rows:auto minmax(0,1fr) auto;
  grid-template-areas:"left top right" "left center right" "me me me";
  background:radial-gradient(ellipse at 50% 38%,var(--room-2),var(--room) 72%);color:var(--felt-ink);
  padding:8px 8px calc(4px + env(safe-area-inset-bottom))}
.gtable .btn--ghost{background:rgba(255,255,255,.08);color:var(--felt-ink);border-color:var(--felt-line)}
.gtable .btn--ghost:hover{background:rgba(255,255,255,.16)}

.opponents{display:contents}
.opps-side{display:grid;align-content:center}
.opps-side--left{grid-area:left}
.opps-side--right{grid-area:right}
.opps-top{grid-area:top;display:flex;gap:6px 10px;justify-content:center;flex-wrap:wrap;padding-top:2px}
.opps-side:empty{width:0}

.opp{position:relative;display:grid;justify-items:center;gap:3px;width:96px;padding:6px 4px 8px;border-radius:16px;text-align:center}
.opp.is-current{background:rgba(242,201,76,.08)}
.opp__avatar .avatar{width:46px;height:46px;font-size:1.15rem;box-shadow:0 0 0 3px rgba(255,255,255,.14),0 6px 14px rgba(0,0,0,.35)}
.opp.is-current .opp__avatar .avatar{box-shadow:0 0 0 3px var(--gold),0 0 22px rgba(242,201,76,.55)}
.opp__name{font-weight:800;font-size:.82rem;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opp__info{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:3px 6px;font-size:.74rem;color:var(--felt-muted);line-height:1.25}
.opp__count{display:inline-flex;align-items:center;gap:4px;font-weight:800;color:var(--felt-ink)}
.opp__count .card{--cw:12px;border-radius:2px;box-shadow:none}
.opp__count .card::before{display:none}
.opp__timer{position:absolute;left:14px;right:14px;bottom:2px;height:3px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden}
.opp__timer i{display:block;height:100%;background:var(--gold);width:var(--pct,100%)}
.opp.is-out{opacity:.5}
@media (max-width:560px){
  .opp{width:74px;padding:4px 2px 7px}
  .opp__avatar .avatar{width:38px;height:38px;font-size:1rem}
  .opp__name{font-size:.74rem}
  .opp__info{font-size:.68rem}
}
.tag{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border-radius:999px;font-size:.66rem;
  font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:rgba(255,255,255,.14);color:var(--felt-ink)}
.tag--uno{background:var(--c-R);color:#fff}
.tag--warn{background:#7a5a00;color:#ffe9a8}
.catch-btn{margin-top:4px}

/* the oval felt */
.center{grid-area:center;align-self:stretch;display:grid;place-items:center;align-content:center;gap:8px;min-height:0;overflow:hidden;
  margin:4px 2px;padding:18px 14px;border-radius:999px;
  background:radial-gradient(ellipse at 50% 42%,var(--felt-2),var(--felt) 74%);border:10px solid var(--rim);
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.08),inset 0 10px 30px rgba(0,0,0,.25),0 18px 40px rgba(0,0,0,.45)}
@media (max-width:560px){ .center{border-width:7px;border-radius:56px;padding:10px 6px;gap:5px} .center__info{font-size:.76rem} .feed{max-height:1.3em} }
.center .piles{margin-bottom:14px}
.piles{display:flex;align-items:center;gap:22px}
@media (max-width:560px){ .piles{gap:12px} }
.pile{position:relative;background:none;border:0;padding:0;border-radius:16px}
.pile--draw{cursor:default}
.pile--draw.is-live{cursor:pointer}
.pile--draw.is-live .card{box-shadow:0 0 0 3px var(--gold),0 6px 16px rgba(0,0,0,.4)}
.pile--draw:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.pile__count{position:absolute;left:50%;bottom:-20px;transform:translateX(-50%);font-size:.72rem;color:var(--felt-muted);white-space:nowrap}
.pile--draw .card + .card{position:absolute;top:-3px;left:-3px}
.discard{position:relative;display:grid;place-items:center;width:calc(var(--cw-lg, 92px) * 1.3);aspect-ratio:1}
@media (max-width:560px){ .discard{--cw-lg:80px} .discard .card--lg{--cw:80px} }
.discard__halo{position:absolute;inset:0;border-radius:50%;border:6px solid var(--halo,transparent);opacity:.9;
  box-shadow:0 0 30px var(--halo,transparent)}
.discard .card{animation:pop .28s ease-out}
.halo-R{--halo:var(--c-R)} .halo-Y{--halo:var(--c-Y)} .halo-G{--halo:var(--c-G)} .halo-B{--halo:var(--c-B)}
@media (min-width:760px){ .discard{--cw-lg:110px} }
.center__info{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;justify-content:center;font-size:.85rem;color:var(--felt-muted)}
.dir{display:inline-flex;align-items:center;gap:6px}
.dir .icon{width:20px;height:20px}
.dir--rev .icon{transform:scaleX(-1)}
.pending{background:var(--c-R);color:#fff;font-weight:900;padding:2px 10px;border-radius:999px}
.colour-pill{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:var(--felt-ink)}
.colour-pill i{width:14px;height:14px;border-radius:50%;background:var(--halo)}

.status{text-align:center;font-weight:800;font-size:1rem;min-height:1.4em;margin:0;padding:3px 14px;border-radius:14px;max-width:100%}
.status--me{color:var(--on-gold);background:var(--gold);box-shadow:0 4px 14px rgba(242,201,76,.3)}

/* you: the hand along the bottom, your name and actions under it */
.me{grid-area:me;display:flex;flex-direction:column-reverse;gap:4px;padding:0 4px 4px;border-radius:18px;min-width:0}
.me__bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 8px;border-radius:14px;background:var(--felt-panel)}
.me.is-current .me__bar{box-shadow:inset 0 0 0 2px var(--gold)}
.me__who{display:flex;align-items:center;gap:8px;font-weight:800;min-width:0;font-size:.92rem}
.me__timer{flex:1;min-width:60px;height:6px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.me__timer i{display:block;height:100%;width:var(--pct,0%);background:var(--gold)}
.me__timer.is-low i{background:var(--c-R)}
.me__actions{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}

.hand{display:flex;padding:30px 14px 10px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;
  --overlap:calc(var(--cw) * -.38)}
.hand > :first-child{margin-left:auto}
.hand > :last-child{margin-right:auto}
.hand .card + .card{margin-left:var(--overlap)}
.hand::-webkit-scrollbar{height:6px}
.hand::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:3px}
.hand--fan .card{transform-origin:50% 140%;transform:translateY(calc(var(--arc, 0px) + var(--lift, 0px))) rotate(var(--rot, 0deg))}
.hand--fan .card.is-playable{--lift:-8px}
.hand--fan .card.is-selected{--lift:-24px}
@media (prefers-reduced-motion:no-preference){ .hand--fan .card{transition:transform .15s ease-out} }

.uno-btn{--b:var(--c-R);background:var(--b);color:#fff;border:0;border-radius:999px;font-weight:900;
  letter-spacing:.06em;padding:10px 18px;font-size:1rem;cursor:pointer;box-shadow:0 3px 0 rgba(0,0,0,.3)}
.uno-btn:hover{background:#c93a3f}
.uno-btn:disabled{background:rgba(255,255,255,.12);color:var(--felt-muted);box-shadow:none;cursor:default}
.uno-btn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.uno-btn.is-urgent{animation:pulse 1.1s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 8px rgba(229,72,77,.25),0 3px 0 rgba(0,0,0,.3)}}

.feed{list-style:none;margin:0;padding:0;font-size:.76rem;color:var(--felt-muted);display:grid;gap:1px;
  max-height:2.5em;overflow:hidden;text-align:center}
.feed li:first-child{color:var(--felt-ink)}

.emotes{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.emote-bubble{position:absolute;top:-10px;right:0;background:#fff;color:#10221d;font-weight:800;font-size:.75rem;
  padding:3px 8px;border-radius:10px;box-shadow:0 4px 10px rgba(0,0,0,.25);animation:card-in .2s ease-out;z-index:2}

/* ---------------------------------------------------------------- overlays */
.overlay{position:fixed;inset:0;z-index:1080;display:grid;place-items:center;padding:16px;
  background:rgba(4,16,13,.62)}
.sheet{width:min(520px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:var(--surface);color:var(--ink);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:20px}
.sheet h2{margin:0 0 6px;font-size:1.25rem}
.sheet p{margin:0 0 14px;color:var(--ink-2)}
.colour-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.colour-btn{display:flex;align-items:center;justify-content:center;gap:10px;height:72px;border-radius:14px;border:0;
  font:inherit;font-weight:900;font-size:1.05rem;cursor:pointer;color:#fff;box-shadow:inset 0 -4px 0 rgba(0,0,0,.2)}
.colour-btn svg{width:22px;height:22px;fill:currentColor}
.colour-btn--R{background:var(--c-R)} .colour-btn--Y{background:var(--c-Y);color:var(--c-Y-fg)}
.colour-btn--G{background:var(--c-G)} .colour-btn--B{background:var(--c-B)}
.colour-btn:hover{filter:brightness(1.08)}
.colour-btn:focus-visible{outline:4px solid var(--ink);outline-offset:2px}
.results{width:100%;border-collapse:collapse;margin:6px 0 14px}
.results th,.results td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line)}
.results td.num,.results th.num{text-align:right;font-variant-numeric:tabular-nums}
.results .is-me td{font-weight:800}
.mini-hand{display:flex;gap:3px;flex-wrap:wrap}
.trophy{width:56px;height:56px;color:var(--gold)}
.countdown{font-variant-numeric:tabular-nums;color:var(--muted)}

/* ---------------------------------------------------------------- misc pages */
.page-plain{display:grid;place-items:center;min-height:100%}
.notfound{text-align:center;padding:32px 16px;display:grid;gap:10px;justify-items:center}
.notfound h1{margin:6px 0 0}
.notfound p{color:var(--muted);margin:0 0 10px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
}
.sheet__foot{margin-top:14px}

/* ---------------------------------------------------------------- sign-in */
.signin{display:grid;gap:12px}
.signin .field{margin-bottom:0}
.signin .lead{margin:0}
.seg{display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:var(--radius-pill);background:var(--line-2);gap:4px}
.seg__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--radius-pill);
  padding:9px 12px;font:inherit;font-weight:700;color:var(--muted);background:transparent;cursor:pointer}
.seg__btn:hover{color:var(--ink)}
.seg__btn[aria-pressed="true"]{background:var(--surface);color:var(--brand);box-shadow:var(--shadow-sm)}
.seg__btn:focus-visible{outline:3px solid var(--ring);outline-offset:1px}
.affix{display:flex;align-items:stretch}
.affix__pre{display:grid;place-items:center;padding:0 12px;border:1px solid var(--line);border-right:0;
  border-radius:var(--radius-sm) 0 0 var(--radius-sm);background:var(--surface-2);color:var(--muted);font-weight:700}
.affix .field__input{border-top-left-radius:0;border-bottom-left-radius:0}
.code-input--otp{max-width:none;font-size:1.6rem;letter-spacing:.5em;text-align:center;font-variant-numeric:tabular-nums}
.signin__links{justify-content:space-between}
.field__input.is-invalid{border-color:var(--bad)}
.field__error:empty{display:none}
.or-divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:var(--fs-sm);margin:0}
.or-divider::before,.or-divider::after{content:"";flex:1;height:1px;background:var(--line)}

/* ---------------------------------------------------------------- game feel */
.discard .card.fly-up{animation:fly-up .32s cubic-bezier(.2,.8,.25,1)}
.discard .card.fly-down{animation:fly-down .32s cubic-bezier(.2,.8,.25,1)}
@keyframes fly-up{from{transform:translateY(220px) rotate(-14deg) scale(.7);opacity:.3}to{transform:none;opacity:1}}
@keyframes fly-down{from{transform:translateY(-220px) rotate(12deg) scale(.7);opacity:.3}to{transform:none;opacity:1}}
.me.is-current{animation:turn-glow 1.6s ease-in-out 2}
@keyframes turn-glow{50%{box-shadow:0 0 0 6px rgba(242,201,76,.25)}}
.sheet--wide{width:min(640px,100%)}
.howto{padding:10px 0;border-top:1px solid var(--line)}
.howto h3{margin:0 0 4px;font-size:1rem}
.howto p{margin:0 0 8px}
.howto__cards{display:flex;gap:8px;flex-wrap:wrap}
.sound-btn[aria-pressed="true"]{color:var(--muted)}
.sheet:focus{outline:none}
.modal__msg{margin:0}

/* friends */
.friends{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:6px}
.friend{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.friend__name{flex:1;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.friend__actions{display:flex;gap:6px}
.friend-code{letter-spacing:.12em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.sub-head{margin:6px 0 2px;font-size:.95rem}

/* ---------------------------------------------------------------- playing cards (the card games) */
.pcard{--fill:#fffdf7;--fg:#1d1f2b;background:var(--fill);color:var(--fg)}
.pcard::before{border:1px solid rgba(16,34,29,.12)}
.pcard--red{--fg:#c62b33}
.pcard--joker{--fg:#6b3fa0}
.suit{display:block;fill:currentColor}
.pcard__corner{position:absolute;display:grid;justify-items:center;gap:1px;font-weight:900;line-height:1;
  font-size:calc(var(--cw) * .2);letter-spacing:-.04em}
.pcard__corner .suit{width:calc(var(--cw) * .17);height:calc(var(--cw) * .17)}
.pcard__corner--tl{top:calc(var(--cw) * .08);left:calc(var(--cw) * .08)}
.pcard__corner--br{bottom:calc(var(--cw) * .08);right:calc(var(--cw) * .08);transform:rotate(180deg)}
.pcard__center{position:absolute;inset:0;display:grid;place-items:center}
.pcard__center .suit--big{width:46%;height:auto}
.pcard__face{display:grid;justify-items:center;font-weight:900;font-size:calc(var(--cw) * .42);line-height:1;
  font-family:Georgia,"Times New Roman",serif}
.pcard__face .suit{width:calc(var(--cw) * .26);height:calc(var(--cw) * .26)}
.pcard__center--joker{gap:2px;align-content:center}
.pcard__center--joker svg{width:44%;fill:currentColor}
.pcard__center--joker b{font-size:calc(var(--cw) * .13);letter-spacing:.12em}
.card--sm.pcard .pcard__corner--br,.card--sm.pcard .pcard__center{display:none}
.card--sm.pcard .pcard__corner{font-size:11px;top:3px;left:3px}
.card--sm.pcard .pcard__corner .suit{width:9px;height:9px}
.card.is-drawn:not(.is-selected){outline:3px dashed var(--brand-300);outline-offset:3px}
.card.is-selected{box-shadow:0 0 0 3px var(--gold),0 10px 18px rgba(0,0,0,.4)}
.hand:not(.hand--fan) .card.is-selected{transform:translateY(-14px)}
@media (prefers-reduced-motion:no-preference){ .hand .card{transition:transform .12s ease-out} }

/* the board in the middle of the table */
.board{display:grid;place-items:center}
.board--piles .piles{margin-bottom:18px}
button.discard{border:0;background:none;padding:0;font:inherit;color:inherit;border-radius:18px}
.discard.is-live{cursor:pointer}
.discard.is-live .card{box-shadow:0 0 0 3px var(--gold),0 6px 16px rgba(0,0,0,.4)}
button.discard:disabled{cursor:default}
button.discard:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.wild{display:grid;justify-items:center;gap:6px;font-size:.75rem;color:var(--felt-muted);font-weight:700}
.wild .card{transform:rotate(-8deg)}
.trick{display:grid;grid-template-columns:repeat(3,auto);grid-template-rows:repeat(3,auto);gap:4px 14px;
  align-items:center;justify-items:center;min-height:calc(var(--cw) * 2.6)}
.trick__slot{min-width:52px;min-height:calc(52px * 1.45)}
.trick__slot--top{grid-area:1 / 2}
.trick__slot--left{grid-area:2 / 1}
.trick__slot--right{grid-area:2 / 3}
.trick__slot--bottom{grid-area:3 / 2}
.board.is-held .trick{opacity:.85}
.suit-pill{display:inline-flex;align-items:center;gap:5px;font-weight:800;color:var(--felt-ink);
  background:rgba(255,255,255,.1);border-radius:999px;padding:2px 10px 2px 6px}
.suit-pill .suit{width:16px;height:16px}
.suit-pill .suit--H,.suit-pill .suit--D{color:#ff8a8f}
.suit-pill--hidden{font-weight:700;color:var(--felt-muted)}
.team-score strong{color:var(--felt-ink)}
.tag--team{background:#1f5e8a;color:#d7ecff}
.opp.is-out{opacity:.55}
.me__game-acts{display:inline-flex;gap:8px;flex-wrap:wrap}
.me__game-acts .icon{width:16px;height:16px}

/* rummy: the hand laid out in groups */
.hand--groups{gap:14px;--overlap:calc(var(--cw) * -.5)}
.hand--groups .card + .card{margin-left:0}
.meld{display:flex;padding:6px 6px 4px;border-radius:12px;background:rgba(255,255,255,.06)}
.meld .card + .card{margin-left:var(--overlap)}
.meld--ok{box-shadow:inset 0 0 0 2px rgba(124,201,181,.55)}
.meld--loose{background:transparent}
.hand[data-points]{position:relative}
.hand[data-points]::after{content:attr(data-points);position:sticky;right:0;align-self:center;flex:none;
  margin-left:6px;font-size:.8rem;font-weight:800;color:var(--felt-muted);white-space:nowrap}

/* sheets */
.bid-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:8px;margin:8px 0}
.suit-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;border-radius:14px;
  border:2px solid var(--line);background:#fffdf7;font:inherit;font-weight:800;font-size:1rem;cursor:pointer;color:#1d1f2b}
.suit-btn .suit{width:26px;height:26px}
.suit-btn--red{color:#c62b33}
.suit-btn:hover{border-color:var(--brand)}
.suit-btn:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.melds{display:flex;gap:6px;flex-wrap:wrap}
.melds .mini-hand{padding:2px;border-radius:6px;background:var(--surface-2)}
.melds__loose .mini-hand{background:transparent;outline:1px dashed var(--line)}

.sheet .tag{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}

/* trick row (3, 5 or 6 players) */
.trick--row{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;min-height:calc(52px * 1.45 + 24px)}
.trick__play{margin:0;display:grid;justify-items:center;gap:4px}
.trick__play figcaption{font-size:.75rem;color:var(--felt-muted);font-weight:700;max-width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trick__empty{margin:auto;color:var(--felt-muted);font-size:.85rem}

/* Badam Satti: a row per suit */
.board--sevens{display:grid;gap:6px;width:min(100%,560px);place-items:stretch}
.sevens-row{display:flex;align-items:center;gap:10px;min-height:52px;padding:4px 8px;border-radius:12px;background:rgba(255,255,255,.06)}
.sevens-row__suit .suit{width:22px;height:22px;color:var(--felt-ink)}
.sevens-row__suit .suit--H,.sevens-row__suit .suit--D{color:#ff8a8f}
.sevens-row__cards{display:flex;gap:3px;flex-wrap:wrap}
.sevens-row__empty{color:var(--felt-muted);font-size:.85rem}

/* Bluff: the pile and the last call */
.bluff{display:grid;justify-items:center;gap:10px}
.bluff__pile{position:relative;display:flex;padding-bottom:22px}
.bluff__pile .card + .card{margin-left:calc(var(--cw) * -.7)}
.bluff__claim{margin:0;font-weight:800;font-size:1.05rem;text-align:center}
.bluff__reveal{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:6px 12px;border-radius:12px;
  background:rgba(0,0,0,.25);font-size:.9rem}
.bluff__pile .pile__count{bottom:0}
.bluff__pile{padding-bottom:26px}

/* toasts sit at the top during a game so they never cover your hand */
body.is-table .toast-container{top:calc(var(--topbar) + 8px);bottom:auto}

/* phones: the felt takes the full width and the side players sit on its rim */
@media (max-width:560px){
  .center{grid-column:1 / -1;grid-row:2}
  .opps-side{grid-row:2;z-index:1;align-self:center}
  .opps-side--left{grid-column:1;justify-self:start}
  .opps-side--right{grid-column:3;justify-self:end}
  .opps-side .opp{background:rgba(6,20,16,.55);backdrop-filter:blur(2px)}
  .status{font-size:.9rem}
}
@media (min-width:760px){
  .trick .card--md,.trick--row .card--md{--cw:66px}
  .trick__slot{min-width:66px;min-height:calc(66px * 1.45)}
}
.feed li{line-height:1.3}

/* International public experience. Logical sizing preserves RTL and tablet split views. */
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{overflow-wrap:break-word}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
.btn{white-space:normal;text-align:center;min-height:44px;line-height:1.45}
.icon-btn{min-width:44px;min-height:44px}
.field__input,.select{min-width:0;max-width:100%;font-size:1rem}
.topbar{height:auto;min-height:var(--topbar);padding-block:6px;padding-inline:max(12px,env(safe-area-inset-left)) max(12px,env(safe-area-inset-right))}
.topbar .brand-mark{flex-shrink:0}
.language-trigger{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;max-width:220px;padding:6px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit;font-size:.85rem;font-weight:700;cursor:pointer}
.language-trigger>span:first-child{white-space:nowrap;color:var(--brand)}
.language-trigger [data-language-current]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.language-trigger:focus-visible{outline:3px solid var(--brand-300);outline-offset:2px}
.language-dialog{width:min(660px,calc(100vw - 32px));max-height:calc(100dvh - 48px);padding:24px;border:1px solid var(--line);border-radius:24px;background:var(--surface);color:var(--ink);box-shadow:0 28px 90px rgba(0,0,0,.3)}
.language-dialog::backdrop{background:rgba(4,16,13,.68);backdrop-filter:blur(4px)}
.language-dialog__header{display:flex;gap:16px;align-items:center;justify-content:space-between;margin-bottom:16px}
.language-dialog__header h2{font-size:1.35rem;line-height:1.5;margin:0}
.language-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:16px}
.language-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;min-height:72px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);cursor:pointer;font:inherit;text-align:start}
.language-option strong{font-size:1.1rem;line-height:1.6}
.language-option small{color:var(--muted)}
.language-option[aria-pressed=true]{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand)}
.language-option:focus-visible{outline:3px solid var(--brand-300);outline-offset:2px}
.skip-link{position:fixed;inset-block-start:-100px;inset-inline-start:16px;z-index:10000;padding:12px 20px;border-radius:10px;background:var(--brand);color:var(--on-brand)}
.skip-link:focus{inset-block-start:12px}
.public-guide{width:min(1180px,100%);margin:0 auto;padding:48px clamp(16px,4vw,40px);border-top:1px solid var(--line)}
body.is-member .public-guide,body.is-table .public-guide{display:none}
.eyebrow{color:var(--brand);font-size:.8rem;line-height:1.7;font-weight:800;max-width:70ch}
.welcome__felt .eyebrow{color:var(--gold)}
.welcome__felt h1{font-size:clamp(1.8rem,3.2vw,3rem);line-height:1.3;letter-spacing:-.025em;margin:0}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:24px}
.section-heading h2,.public-guide>h2,.guide-how h2,.guide-faq h2{font-size:clamp(1.5rem,2.5vw,2.1rem);line-height:1.4;margin:0 0 12px}
.section-heading p{max-width:70ch;color:var(--muted);line-height:1.8}
.guide-count{display:grid;place-items:center;width:64px;height:64px;border:1px solid var(--line);border-radius:20px;font-size:1.8rem;font-weight:900;color:var(--brand);background:var(--brand-soft)}
.guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.guide-game{display:flex;align-items:flex-start;gap:14px;padding:22px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color .15s,box-shadow .15s;min-width:0}
.guide-game:hover,.guide-game:focus-visible{border-color:var(--brand);box-shadow:0 6px 20px rgba(15,107,87,.1)}
.guide-game:focus-visible{outline:3px solid var(--brand-300);outline-offset:2px}
.guide-game>span:nth-child(2){flex:1;min-width:0}
.guide-game strong{display:block;font-size:1.12rem;line-height:1.6}
.guide-game__symbol{display:grid;place-items:center;width:42px;height:48px;flex:none;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-size:1.8rem}
.guide-game__description{display:block;margin:6px 0 12px;color:var(--muted);font-size:.9rem;line-height:1.7}
.guide-game small{font-weight:700;color:var(--brand);line-height:1.6}
.guide-how,.guide-faq{margin-top:64px}
.guide-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:28px}
.step-number{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-weight:800}
.guide-steps h3{line-height:1.6;font-size:1.1rem}
.guide-steps p,.guide-rule p,.guide-note,.guide-faq p{line-height:1.85;color:var(--muted);max-width:75ch}
.guide-faq details{border-bottom:1px solid var(--line);padding:18px 0}
.guide-faq summary,.footer-languages summary{cursor:pointer;font-weight:700;min-height:44px;line-height:1.7;padding-block:8px}
.guide-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:24px 0}
.guide-rule{border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:24px}
.guide-rule h3{line-height:1.6;margin-top:0;color:var(--brand)}
.guide-breadcrumb{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:28px;color:var(--muted)}
.guide-breadcrumb a{color:var(--brand)}
.guide-footer{margin-top:48px;padding-top:24px;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem;line-height:1.7}
.language-links{display:flex;flex-wrap:wrap;gap:6px 20px;padding-block:16px}
.language-links a{display:inline-block;min-height:44px;padding:8px 0;color:var(--brand)}
.hero__title{line-height:1.35}
.hero__blurb,.welcome__tag,.lead{line-height:1.75}
.game-tile__name{line-height:1.6}
.guest-strip>span,.seat-row__name,.friend__name{min-width:0}
.seg{flex-wrap:wrap}
.seg__btn{min-height:44px;white-space:normal;line-height:1.5;flex:1 1 72px}
.sheet{padding:clamp(16px,4vw,28px);line-height:1.65}
.sheet .row{flex-wrap:wrap}
.card,.mini-fan,.fan,.hand,.board,.gtable .center{direction:ltr}
[dir=rtl] .tabbar{border-right:0;border-inline-end:1px solid var(--line)}
[dir=rtl] .hero__kicker{text-transform:none;letter-spacing:0}
[dir=rtl] .field__input:not([inputmode=numeric]):not([type=email]):not([type=tel]){text-align:right}
input[inputmode=numeric],input[type=email],input[type=tel],.code-input{direction:ltr;text-align:start}
@media(min-width:760px) and (max-width:1100px){.guide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{grid-template-columns:180px minmax(0,1fr);padding:24px}.welcome{gap:24px}.game-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:1100px){.welcome__felt{padding:44px 36px}.welcome{gap:40px}.welcome__forms .panel{padding:28px}.screen{padding:28px 32px 48px}}
@media(max-width:759px){.guide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.guide-game{padding:16px;gap:10px}.guide-game__symbol{display:none}.guide-steps{gap:20px}.public-guide{padding-top:32px}.guide-how,.guide-faq{margin-top:40px}}
@media(max-width:520px){.language-trigger{padding-inline:8px;max-width:120px}.language-trigger [data-language-current]{max-width:62px}.guide-grid,.guide-rules,.guide-steps{grid-template-columns:1fr}.guide-game__symbol{display:grid}.language-dialog{padding:18px}.language-options{gap:6px}.language-option{padding:12px}.topbar .conn{font-size:.7rem;max-width:85px}.hero__actions>*{flex:1 1 140px}.welcome__felt{padding:24px 18px}.welcome__free{border-radius:12px;align-items:start}.tabbar__btn{font-size:.7rem;line-height:1.6;min-width:0;padding-inline:4px}.friend__actions{flex-wrap:wrap}.stepper{flex-shrink:0}}
@media(max-width:359px){.language-trigger [data-language-current]{display:none}.language-options{grid-template-columns:1fr}.guide-game{padding:14px}.welcome{padding-inline:12px}.panel{padding:16px}}
@media(orientation:landscape) and (max-height:600px){.gtable{min-height:calc(100dvh - var(--topbar));height:auto}.hand{padding-block:6px}.card{--cw:48px}.topbar{position:relative}.language-dialog{max-height:calc(100dvh - 24px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.guide-game{transition:none}}
/* Seat order and clockwise play are physical game rules, independent of UI direction. */
.gtable{direction:ltr;min-width:0;width:100%}
.table-host{min-width:0;width:100%}
[dir=rtl] .gtable :is(.status,.feed,.me__bar,.center__info,.sheet){direction:rtl}
:is(html:lang(hi),html:lang(te),html:lang(ta),html:lang(kn),html:lang(ml),html:lang(mr),html:lang(bn),html:lang(gu),html:lang(pa),html:lang(or),html:lang(as),html:lang(ne)) :is(h1,h2,h3,.btn,.hero__title){line-height:1.6;letter-spacing:normal}
@media(min-width:700px) and (max-width:899px){
  .welcome{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:20px;padding-top:24px}
  .welcome__felt{padding:24px 18px;border-width:6px}
  .welcome__hero .fan--big .card{--cw:56px}
  .welcome__tag{font-size:1rem}
}
@media(max-width:600px){
  body.is-member .language-trigger [data-language-current],body.is-table .language-trigger [data-language-current]{display:none}
  .topbar .conn.is-on{font-size:0;width:20px;max-width:20px;flex-shrink:0}
  .topbar .conn .icon{width:20px;height:20px}
}
@media(max-width:359px){
  .topbar{gap:4px}
  .topbar .brand-mark--sm{font-size:1.2rem}
}

/* DeckMates wordmark scales to compact phones and the shared tablet grid. */
.welcome__felt .brand-mark{font-size:clamp(2rem,6vw,3rem);overflow-wrap:normal}
@media(max-width:359px){.topbar{gap:6px;padding-inline:8px}.topbar .brand-mark--sm{font-size:1rem}.topbar .icon-btn{width:44px;min-width:44px}}
