  /* ---- Andate Fernando board ---- */
  .f-table{background:linear-gradient(180deg, rgba(0,0,0,.16), rgba(0,0,0,.30));border:1px solid rgba(255,255,255,.07);border-radius:18px;padding:14px 10px;}
  .f-row{display:flex;align-items:center;justify-content:space-between;gap:8px;}
  .f-name{font-family:'Bitter';font-weight:700;font-size:14px;color:var(--white);}
  .f-score{font-family:'Bitter';font-weight:900;font-size:20px;color:var(--gold-light);background:rgba(0,0,0,.25);border-radius:8px;padding:2px 10px;}
  .f-score-col{display:inline-flex;flex-direction:column;align-items:center;gap:1px;}
  .f-malas-buenas{font-size:9.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}
  .f-malas-buenas.buenas{color:#4CAF7D;}
  .f-mini-hand{display:flex;gap:3px;}
  .f-mini-card{width:20px;height:29px;border-radius:3px;background:url('/naipes-espanoles/reverso.jpg') center/cover;border:1px solid var(--gold);box-shadow:0 1px 3px rgba(0,0,0,.4);}
  .f-turn-dot{width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px 1px var(--gold-light);}

  .f-tricks{display:flex;gap:6px;justify-content:center;margin:8px 0;}
  .f-trick-pip{width:16px;height:16px;border-radius:50%;border:1.5px solid rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--muted);}
  .f-trick-pip.me{background:var(--gold);border-color:var(--gold);color:var(--felt-dark);}
  .f-trick-pip.opp{background:#C25454;border-color:#C25454;color:#fff;}
  .f-trick-pip.draw{background:rgba(255,255,255,.2);}

  .f-trick-area{display:flex;align-items:flex-start;justify-content:center;gap:20px;min-height:195px;margin:10px 0;}
  .f-team-label{text-align:center;font-size:10px;color:var(--gold-light);text-transform:uppercase;letter-spacing:.8px;margin:8px 0 4px;opacity:.85;}
  /* ---- 2v2 diamond seating: me at bottom, partner across, rivals left/right ---- */
  /* ---- Top scoreboard: tally squares, shared by 1v1 and 2v2 ---- */
  .f-scoreboard{display:flex;align-items:stretch;justify-content:center;margin-bottom:10px;}
  .f-scoreboard-side{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:0 8px;}
  .f-scoreboard-name{font-family:'Bitter';font-weight:900;font-size:14px;color:var(--gold-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
  .f-scoreboard-divider{width:1px;background:rgba(255,255,255,.15);margin:2px 0;}
  .f-tally-row{display:flex;gap:3px;}
  .f-tally-row + .f-tally-row{margin-top:3px;}
  .f-tally-sq{display:block;}
  .f-flying-light{
    width:18px;height:18px;border-radius:50%;z-index:200;pointer-events:none;
    background:radial-gradient(circle, rgba(255,250,220,1) 0%, rgba(230,197,90,.85) 40%, rgba(201,162,39,0) 75%);
    box-shadow:0 0 14px 6px rgba(230,197,90,.7);
    will-change:transform, opacity;
  }

  .f2-diamond{
    display:grid;grid-template-columns:64px 1fr 64px;grid-template-rows:auto auto auto;
    grid-template-areas:". top ." "left center right" ". bottom .";gap:4px;align-items:center;
  }
  .f2-pos-top{grid-area:top;text-align:center;}
  .f2-pos-left{grid-area:left;text-align:center;}
  .f2-pos-right{grid-area:right;text-align:center;}
  .f2-pos-center{grid-area:center;}
  .f2-pos-bottom{grid-area:bottom;text-align:center;}
  .f2-diamond .f-name{font-size:12.5px;display:inline-block;}
  .f2-centered-hand{justify-content:center;margin-top:2px;}
  .f2-mano-badge{display:inline-block;background:var(--gold);color:var(--felt-dark);font-family:'Bitter';font-weight:900;font-size:9px;border-radius:8px;padding:1px 6px;margin-left:4px;vertical-align:middle;}
  .f-name-col{display:flex;flex-direction:column;align-items:flex-start;gap:2px;}
  /* ---- 2v2 trick history: each seat's plays fan out in their own diamond spot ---- */
  .f2-trick-diamond{
    display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto auto;
    grid-template-areas:". top ." "left mid right" ". bottom .";
    align-items:center;justify-items:center;gap:4px;min-height:200px;
  }
  .f2-hist-top{grid-area:top;}
  .f2-hist-left{grid-area:left;}
  .f2-hist-right{grid-area:right;}
  .f2-hist-bottom{grid-area:bottom;}
  .f2-hist-stack{display:flex;}
  .f2-hist-card{
    width:52px;height:82px;margin-left:-26px;border-radius:5px;overflow:hidden;position:relative;
    box-shadow:0 3px 8px rgba(0,0,0,.5);border:1.5px solid var(--gold);transition:filter .2s ease;
  }
  .f2-hist-stack .f2-hist-card:first-child{margin-left:0;}
  .f2-hist-card img{width:100%;height:100%;object-fit:contain;display:block;background:#F4ECDA;}
  .f2-hist-card.dim{filter:brightness(.5);border-color:rgba(201,162,39,.5);}
  @keyframes fCallBadgePulse{0%{transform:scale(.9);opacity:.7;}50%{transform:scale(1.05);opacity:1;}100%{transform:scale(.9);opacity:.7;}}
  @keyframes fRainFall{
    0%{transform:translateY(0) rotate(0deg);opacity:1;}
    100%{transform:translateY(105vh) rotate(50deg);opacity:.85;}
  }
  .f-call-badge{
    display:inline-block;background:#C0392B;color:#fff;font-family:'Bitter';font-weight:900;font-size:10.5px;
    text-transform:uppercase;letter-spacing:.4px;border-radius:6px;padding:2px 8px;
    box-shadow:0 2px 6px rgba(0,0,0,.4);animation:fCallBadgePulse 1.4s ease-in-out infinite;
  }
  .f2-diamond .f-call-badge{margin-bottom:2px;}
  .f2-chat-group-label{font-size:11px;color:var(--gold-light);text-transform:uppercase;letter-spacing:.5px;margin:12px 0 6px;}
  .f-chat-toast{
    position:fixed;top:14px;left:50%;transform:translateX(-50%);max-width:88vw;
    background:rgba(10,20,40,.95);border:1px solid var(--gold);border-radius:10px;
    padding:8px 14px;color:var(--white);font-size:13px;z-index:600;
    box-shadow:0 6px 18px rgba(0,0,0,.5);opacity:1;transition:opacity .5s ease;
  }
  .f-chat-toast-out{opacity:0;}
  .f-rain-emoji{
    position:fixed;top:-40px;pointer-events:none;z-index:550;
    animation:fRainFall linear forwards;
  }
  .f2-chat-msg{display:block;width:100%;text-align:left;margin-bottom:6px;}
  .f2-chat-line{color:#F0EAE0;font-size:13px;padding:3px 0;border-bottom:1px solid rgba(255,255,255,.06);}
  .f2-chat-line b{color:var(--gold-light);}
  .f-my-hand{display:flex;justify-content:center;gap:8px;margin:10px 0;}
  .f-hand-zone{background:linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.28));border-top:1px solid rgba(255,255,255,.08);border-radius:0 0 16px 16px;padding:12px 6px 4px;margin-top:2px;}
  .f-hand-label{text-align:center;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;}
  .f-hand-zone .f-my-hand{align-items:flex-end;gap:10px;margin:0;}
  .f-hand-zone .f-card{width:106px;height:168px;box-shadow:0 6px 14px rgba(0,0,0,.5);transition:transform .15s ease, box-shadow .15s ease;position:relative;background:#F4ECDA;}

  /* ---- 1v1 only: bigger cards, same size in hand and on the table, ----
     ---- laid out in 3 columns (one per baza), winner shown on top.   ---- */
  #fMyHand .f-card{width:118px;height:187px;}
  .f-trick-columns{display:flex;justify-content:center;gap:8px;min-height:367px;margin:10px 0;}
  .f-trick-col{position:relative;width:118px;height:367px;flex:0 0 auto;}
  .f-trick-col .f-mini-label{position:absolute;top:-16px;left:0;right:0;text-align:center;}
  .f-trick-col .f-card{position:absolute;width:118px;height:187px;left:0;}
  .f-trick-col .f-card.f-trick-front{top:90px;z-index:2;}
  /* The losing card peeks out toward whichever side of the table its OWNER
     sits on — my lost cards peek down (toward "Vos"), the rival's peek up
     (toward "Rival") — so at a glance you can tell whose card is underneath. */
  .f-trick-col .f-card.f-trick-back{z-index:1;filter:brightness(.8);}
  .f-trick-col .f-card.f-trick-back.peek-down{top:180px;}
  .f-trick-col .f-card.f-trick-back.peek-up{top:0;}
  .f-my-hand .f-card:nth-child(1){transform:rotate(-6deg) translateY(6px);z-index:1;}
  .f-my-hand .f-card:nth-child(2){transform:rotate(0deg) translateY(-4px);z-index:2;}
  .f-my-hand .f-card:nth-child(3){transform:rotate(6deg) translateY(6px);z-index:1;}
  .f-hand-zone .f-card.playable:active{filter:brightness(1.15);box-shadow:0 10px 20px rgba(0,0,0,.65);}
  .f-card.playable{cursor:pointer;transition:transform .12s ease;}
  .f-card.playable:hover, .f-card.playable:active{transform:translateY(-6px);}
  .f-card.disabled{opacity:.92;filter:saturate(.85);}

  .f-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:14px 0 6px;}
  .f-actions button{font-family:'Bitter';font-weight:700;font-size:13px;border-radius:9px;padding:10px 16px;cursor:pointer;border:none;}
  .f-actions .f-act-main{background:var(--gold);color:var(--felt-dark);}
  .f-actions .f-act-accept{background:#3BAA5C;color:#fff;}
  .f-actions .f-act-reject{background:#7A2E22;color:#fff;}
  .f-actions .f-act-fold{background:transparent;color:var(--muted);border:1px solid rgba(255,255,255,.25);}
  .f-actions .f-act-call{background:rgba(201,162,39,.18);color:var(--gold-light);border:1px solid rgba(201,162,39,.5);}

  .f-envido-deco{color:var(--gold);font-size:16px;letter-spacing:6px;margin-bottom:2px;}
  .f-envido-outcome{font-family:'Bitter';font-weight:900;font-size:22px;margin:6px 0 14px;}
  .f-envido-outcome.win{color:#4CAF6D;}
  .f-envido-outcome.lose{color:#D97D6C;}
  .f-envido-line{font-family:'Bitter';font-weight:700;font-size:16px;padding:4px 0;color:#F0EAE0;}
  .f-envido-line.winner{color:#4CAF6D;font-weight:900;}