/* ===========================================================================
   Arcade kit — the shared page chrome for Rocko's board games (Backgammon,
   Checkers, Connect Four): kids'-site carnival look on top of styles.css +
   landing.css (festive stage, .btn paw-pop buttons). Opt in with
   <body class="arc rk-land …">. Layout: a bunting header (title + difficulty +
   round pills), a white message card, optional action buttons (Take/Drop,
   Rematch…), the board (#wrap canvas) and a row of big action buttons — on
   computers the message/actions/buttons move to a column beside the board.
   Also: the shared dialogs (arcade.js RockoUI), the friend-game dialogs
   (RockoFriends: pup picker, code, QR, Text it) and full-screen mode.
   Everything you press is a big DOM button, so no control depends on hitting
   a small spot on the board. Each game's JS sizes the board (fit).
   =========================================================================== */
.arc-main { max-width: 760px; margin: 0 auto; padding: 10px clamp(10px, 3vw, 20px) 28px;
  display: flex; flex-direction: column; align-items: center; }

/* ---- header: a compact carnival panel with bunting ---- */
.arc-head { width: 100%; position: relative; overflow: hidden; color: #fff;
  margin: 6px 0 10px; padding: 34px 18px 14px; border-radius: 22px;
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 14px 40px rgba(10,4,30,.45), inset 0 1px 0 rgba(255,255,255,.08);
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='40' viewBox='0 0 240 40'%3E%3Cpath d='M0 4 Q30 28 60 4 Q90 28 120 4 Q150 28 180 4 Q210 28 240 4' fill='none' stroke='%23F5D06B' stroke-width='2'/%3E%3Ccircle cx='30' cy='23' r='6' fill='%23FF3D57'/%3E%3Ccircle cx='90' cy='23' r='6' fill='%23FFC93C'/%3E%3Ccircle cx='150' cy='23' r='6' fill='%231FD3C3'/%3E%3Ccircle cx='210' cy='23' r='6' fill='%23FF5FA8'/%3E%3C/svg%3E"),
    radial-gradient(120% 130% at 82% 20%, rgba(255,79,140,.25), transparent 55%),
    linear-gradient(180deg, #401C7E 0%, #2C1466 100%);
  background-repeat: repeat-x, no-repeat, no-repeat;
  background-position: top, center, center;
  background-size: 240px 40px, cover, cover;
  display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; }
.arc-title { display: flex; align-items: center; gap: 12px; }
.arc-title-badge { width: 64px; height: 64px; flex: 0 0 auto;
  filter: drop-shadow(0 0 18px rgba(255,201,60,.35)) drop-shadow(0 8px 14px rgba(0,0,0,.4)); transform: rotate(-4deg); }
.arc-head h1 { color: #fff; font-size: clamp(1.6rem, 5.4vw, 2.3rem); text-shadow: 0 3px 0 rgba(0,0,0,.2); text-align: left; }
.arc-sub { margin: 2px 0 0; color: #E7DBFF; font-weight: 700; font-size: 1rem; text-align: left; }
.arc-sub span { color: #FFC93C; text-shadow: 0 0 16px rgba(255,201,60,.5); }
.arc-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px; }

/* difficulty: a pill group, gold when picked */
.arc-diff { display: inline-flex; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px; padding: 4px; gap: 3px; }
.arc-diff button { border: 0; background: transparent; cursor: pointer; min-height: 40px; padding: 0 16px; border-radius: 999px;
  font-family: var(--font-display); font-weight: 600; font-size: 1rem; color: #E7DBFF; }
.arc-diff button[aria-pressed="true"] { background: #FFC93C; color: #241454; box-shadow: 0 3px 0 #C98A12; }

/* small round pills for Help / Stats / New / Sound / Resign */
.arc-controls { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.arc-pill { display: inline-flex; align-items: center; gap: .35em; min-height: 42px; padding: 0 13px; border-radius: 999px;
  border: 2px solid rgba(255,255,255,.85); background: #fff; color: #241454; cursor: pointer;
  font-family: var(--font-display); font-weight: 600; font-size: .9rem; box-shadow: 0 4px 0 rgba(0,0,0,.18);
  transition: transform .08s ease; }
.arc-pill:hover { transform: translateY(-2px); }
.arc-pill:active { transform: translateY(2px); box-shadow: 0 1px 0 rgba(0,0,0,.18); }
.arc-pill[aria-pressed="true"] { background: #FFC93C; border-color: #FFC93C; }
.arc-pill:disabled { opacity: .45; cursor: default; transform: none; }

/* ---- Rocko's message: a white speech card ---- */
.arc-stage { width: 100%; display: flex; flex-direction: column; align-items: center; }
.arc-msg { width: 100%; max-width: 620px; min-height: 1.5em; margin: 2px 0 8px; padding: 10px 16px 10px 44px; position: relative;
  background: #fff; color: #241454; border-radius: 18px; box-shadow: 0 8px 22px rgba(10,4,30,.35);
  font-family: var(--font-display); font-weight: 600; font-size: 1.05rem; text-align: left; line-height: 1.3; }
.arc-msg::before { content: "🐾"; position: absolute; left: 14px; top: 50%; transform: translateY(-50%); font-size: 1.1rem; }
.arc-actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 2px 0 12px; }
.arc-actions[hidden] { display: none; }

.arc-board { width: 100%; margin: 2px auto 0; }
.arc-board canvas { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; border-radius: 18px;
  box-shadow: 0 0 0 4px rgba(255,255,255,.9), 0 0 40px rgba(255,201,60,.25), 0 18px 44px rgba(10,4,30,.55);
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; cursor: pointer; }

/* ---- action buttons (paw-pop .btn from styles.css) ---- */
.arc-tools { display: flex; justify-content: center; gap: 10px; width: 100%; max-width: 620px; margin: 16px auto 0; }
.arc-tools[hidden] { display: none; }
.arc-tools .btn { flex: 1 1 0; justify-content: center; min-height: 54px; padding: 0 12px; font-size: 1.05rem; }
.arc-tools .btn:disabled, .arc-actions .btn:disabled { opacity: .45; cursor: default; pointer-events: none; }
.arc-tools .btn.ghost:disabled { background: rgba(255,255,255,.75); }
.arc-tools .btn.ready { animation: arc-nudge 1.6s ease-in-out infinite; }
.arc-tools .btn.ghost.ready { background: #FFC93C; color: #241454; border-color: transparent; box-shadow: 0 6px 0 #C98A12, 0 12px 22px rgba(201,138,18,.34); }
@keyframes arc-nudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@media (prefers-reduced-motion: reduce) { .arc-tools .btn.ready { animation: none; } }

/* ---- dialogs: bright cards on a dimmed stage ---- */
.arc-modal-ov { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center; padding: 16px;
  background: rgba(24,10,64,.62); opacity: 0; transition: opacity .15s ease; }
.arc-modal-ov[hidden] { display: none; }
.arc-modal-ov.open { opacity: 1; }
.arc-modal { width: 100%; max-width: 520px; max-height: calc(100vh - 32px); overflow: auto; background: #fff; color: #211E1A;
  border-radius: 24px; border: 4px solid #FFC93C; box-shadow: 0 24px 60px rgba(8,3,24,.55);
  transform: translateY(10px) scale(.97); transition: transform .18s ease; }
.arc-modal-ov.open .arc-modal { transform: none; }
.arc-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px 6px 22px; }
.arc-modal-head h2 { font-size: 1.5rem; color: #241454; }
.arc-modal-x { width: 42px; height: 42px; border-radius: 50%; border: 0; background: #F2EFE9; color: #241454; font-size: 1.6rem; cursor: pointer; }
.arc-modal-x:hover { background: #FFE7A3; }
.arc-modal-body { padding: 6px 22px 22px; }
.arc-modal-body p { margin: 0 0 .85em; font-size: 1.04rem; }
.arc-modal-body h3 { font-size: 1.1rem; margin: 1.1em 0 .35em; color: #241454; }
.arc-modal-actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-end; margin-top: 18px; }
.arc-fine { color: #6C665E; font-size: .92rem; }
.arc-badge { display: block; width: 112px; height: 112px; margin: 0 auto 10px; }
.arc-stats { display: flex; justify-content: space-around; text-align: center; margin: 4px 0 16px; }
.arc-stat-n { font-family: var(--font-display); font-weight: 700; font-size: 2rem; color: #241454; }
.arc-stat-l { color: #6C665E; font-size: .82rem; font-weight: 800; }

.arc-choices { display: flex; flex-direction: column; gap: 8px; margin: 4px 0 8px; }
.arc-choices button { text-align: left; padding: 12px 14px; border-radius: 16px; cursor: pointer;
  border: 3px solid #E8E3DA; background: #fff; color: #211E1A; font: inherit; }
.arc-choices button b { display: block; font-family: var(--font-display); font-size: 1.1rem; color: #241454; }
.arc-choices button span { color: #6C665E; font-weight: 600; font-size: .92rem; }
.arc-choices button[aria-pressed="true"] { border-color: #FFC93C; background: #FFF6DA; }

.arc-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---- computers: title + controls in one row, controls column beside the board ---- */
@media (min-width: 980px) {
  .arc-main { max-width: 1320px; padding-bottom: 14px; }
  .arc-head { flex-direction: row; justify-content: space-between; text-align: left; padding: 30px 20px 12px; margin: 4px 0 12px; }
  .arc-bar { flex-wrap: nowrap; }
  .arc-controls { flex-wrap: nowrap; }
  .arc-stage { display: grid; grid-template-columns: auto 250px; grid-template-rows: auto auto auto 1fr;
    grid-template-areas: "board msg" "board actions" "board tools" "board ."; column-gap: 22px;
    justify-content: center; align-items: start; }
  .arc-board { grid-area: board; margin: 0; }
  .arc-msg { grid-area: msg; margin: 0 0 14px; font-size: 1.15rem; min-height: 4.2em; display: flex; align-items: center; }
  .arc-actions { grid-area: actions; flex-direction: column; align-items: stretch; margin: 0 0 14px; }
  .arc-actions .btn { justify-content: center; }
  .arc-tools { grid-area: tools; flex-direction: column; gap: 14px; margin: 0; max-width: none; }
  .arc-tools .btn { flex: 0 0 auto; min-height: 60px; font-size: 1.12rem; justify-content: flex-start; padding: 0 22px; }
}

/* fit() adds these when the title row would overflow: first icon-only pills,
   then (if still too tight) let the row wrap — nothing ever gets clipped. */
.arc-compact .arc-controls .lbl { display: none; }
.arc-compact .arc-pill { font-size: 1.1rem; padding: 0 12px; }
.arc-wrap .arc-head, .arc-wrap .arc-bar, .arc-wrap .arc-controls { flex-wrap: wrap; justify-content: center; }
/* ---- friend games ---- */
/* Friend is the headline button: Rocko red so the yellow 🤝 hands stand out (gold-on-gold was hard to see) */
.arc-pill-friend { background: #F04E37; border-color: #fff; color: #fff; box-shadow: 0 4px 0 #B8351F; }
.arc-pill-friend:active { box-shadow: 0 1px 0 #B8351F; }
.arc-friend-ico { width: 30px; height: 30px; object-fit: contain; display: block; }   /* Rocko + his best friend = "add a friend" */
.arc-pups { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 14px; }
.arc-pups button { border: 2px solid #E8E3DA; background: #fff; color: #241454; border-radius: 999px; padding: 7px 12px; cursor: pointer;
  font-family: var(--font-display); font-weight: 600; font-size: .95rem; }
.arc-pups button[aria-pressed="true"] { background: #FFC93C; border-color: #C98A12; }
.arc-friend-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 6px 0 8px; }
.arc-code-in { flex: 1 1 140px; min-width: 0; height: 52px; border: 3px solid #E8E3DA; border-radius: 14px; padding: 0 14px;
  font-family: var(--font-display); font-weight: 700; font-size: 1.5rem; letter-spacing: .12em; text-transform: uppercase; color: #241454; }
.arc-code-in:focus { outline: none; border-color: #FFC93C; }
.arc-timer-line { text-align: center; font-weight: 800; margin: 6px 0 10px; }
.arc-timer { font-variant-numeric: tabular-nums; font-size: 1.15em; padding: 2px 10px; border-radius: 999px; background: #FFF3C4; color: #6B4A00; }
.arc-timer.arc-timer-low { background: #FFE9E6; color: #9C2A1C; }
.arc-safe-link { color: inherit; font-weight: 800; white-space: nowrap; }
.arc-err { background: #FFE9E6; color: #9C2A1C; border-radius: 12px; padding: 8px 12px; font-weight: 700; }
.arc-share { text-align: center; }
.arc-share-code { font-family: var(--font-display); font-weight: 700; font-size: clamp(2.2rem, 11vw, 3.2rem); letter-spacing: .08em;
  color: #241454; background: #FFF6DA; border: 3px dashed #FFC93C; border-radius: 18px; padding: 6px 12px; margin: 4px auto 12px; display: inline-block; }
.arc-qr { width: min(220px, 60vw); margin: 0 auto 8px; }
.arc-qr svg { display: block; width: 100%; height: auto; border-radius: 10px; }
.arc-link { width: 100%; border: 2px solid #E8E3DA; border-radius: 10px; padding: 8px 10px; font-size: .9rem; color: #6C665E; margin: 4px 0 6px; }
.arc-wait { font-weight: 800; }
.arc-share-actions { justify-content: center; }

/* ---- full screen (⤢): just the message, the board and the buttons ---- */
.arc-exitfull { display: none; }
body.arc-full .site-nav, body.arc-full .site-foot, body.arc-full .arc-head { display: none !important; }
body.arc-full .arc-main { padding-top: 6px; padding-bottom: 6px; }
body.arc-full .arc-msg { padding-right: 58px; }
body.arc-full .arc-exitfull { display: inline-flex; align-items: center; justify-content: center; position: fixed; top: 10px; right: 10px; z-index: 60;
  width: 44px; height: 44px; border-radius: 50%; border: 3px solid #fff; background: #FFC93C; color: #241454;
  font-size: 1.3rem; font-weight: 800; cursor: pointer; box-shadow: 0 6px 16px rgba(8,3,24,.45); }
.arc-pill#btn-full .ico { font-weight: 800; }

/* The site nav is sticky (and tall — two rows of pills on laptops, a stack on
   phones). On this page it scrolls away instead, and the page opens scrolled to
   the game so the board gets the whole screen height; the nav is one scroll up. */
body.arc .site-nav { position: static; }

/* The site's floating "All games" button would sit on the board / buttons here;
   the nav's Games link covers it on this page. */
body.arc .lobby-fab { display: none; }

/* ---- board games: LOCK the play screen to the viewport ----
   The <main> is a fixed 100dvh column (landing.css). Keep the header, message
   and tool row at their natural size so they can't collapse and clip the top bar
   (a fixed-height flex column will otherwise shrink an overflow:hidden child to
   nothing); each game's fit() then shrinks the BOARD to fill what's left — so the
   whole game fits with no page scroll and nothing cut off. */
body.arc.rk-playing > main.arc-main { justify-content: flex-start; padding-top: 6px; padding-bottom: 8px; }
body.arc.rk-playing .arc-head,
body.arc.rk-playing .arc-msg,
body.arc.rk-playing .arc-actions,
body.arc.rk-playing .arc-tools { flex: 0 0 auto; }

/* ---- phones: board edge to edge, compact header ---- */
@media (max-width: 760px) {
  .arc-main { padding-left: 6px; padding-right: 6px; }
  .arc-head { padding: 30px 10px 10px; border-radius: 18px; }
  .arc-board canvas { border-radius: 10px; box-shadow: 0 0 0 3px rgba(255,255,255,.9), 0 12px 30px rgba(10,4,30,.5); }
}
@media (max-width: 460px) {
  .arc-title-badge { width: 48px; height: 48px; }
  .arc-controls .lbl { display: none; }
  .arc-pill { padding: 0 12px; font-size: 1.1rem; }
  .arc-diff button { padding: 0 13px; font-size: .95rem; min-height: 38px; }
  .arc-msg { font-size: .98rem; padding: 8px 12px 8px 38px; min-height: calc(2 * 1.3em + 16px); display: flex; align-items: center; }
  .arc-tools { gap: 6px; margin-top: 12px; }
  .arc-tools .btn { flex-direction: column; gap: 0; padding: 0 4px; min-height: 58px; font-size: .9rem; }
}

/* ---- phones: a compact two-row header so the board gets the height ---- */
@media (max-width: 560px) {
  .arc-head { display: grid; grid-template-columns: 1fr auto; grid-template-areas: "title diff" "ctl ctl";
    align-items: center; gap: 8px 6px; padding: 24px 8px 8px; margin: 4px 0 8px; background-size: 180px 30px, cover, cover; }
  .arc-bar { display: contents; }
  .arc-title { grid-area: title; gap: 8px; min-width: 0; }
  .arc-diff { grid-area: diff; padding: 3px; }
  .arc-controls { grid-area: ctl; justify-content: space-between; gap: 4px; }
  .arc-title-badge { width: 36px; height: 36px; }
  .arc-head h1 { font-size: 1.3rem; white-space: nowrap; }
  .arc-sub { display: none; }
  .arc-diff button { padding: 0 9px; min-height: 34px; font-size: .85rem; }
  .arc-pill { min-height: 38px; padding: 0 12px; flex: 1 1 0; justify-content: center; }
}

/* ---- Rocko buddy (Checkers / Connect Four): a DOM Rocko beside the message ---- */
.arc-msg.has-buddy { padding-left: 86px; min-height: 76px; display: flex; align-items: center; margin-top: 30px; }
.arc-msg.has-buddy::before { content: none; }
.arc-buddy { position: absolute; left: 6px; bottom: 2px; width: 74px; height: 86px; pointer-events: none; }
.arc-buddy img { position: absolute; left: 0; bottom: 0; width: 74px; height: 74px; object-fit: contain; filter: drop-shadow(0 4px 6px rgba(0,0,0,.25)); }
.arc-buddy-say { position: absolute; left: 50px; top: -30px; white-space: nowrap; background: #fff; color: #241454; border: 3px solid #241454;
  border-radius: 14px; padding: 2px 10px; font-family: var(--font-display); font-weight: 700; font-size: .95rem; z-index: 2;
  box-shadow: 0 4px 10px rgba(0,0,0,.2); }
.arc-buddy-say[hidden] { display: none; }
.arc-buddy.hop img { animation: arc-hop .5s ease-out 2; }
.arc-buddy.bounce img { animation: arc-hop .45s ease-out 4; }
.arc-buddy.shake img { animation: arc-shake .5s ease-in-out 1; }
.arc-buddy.wiggle img { animation: arc-wiggle .6s ease-in-out 2; }
@keyframes arc-hop { 0%, 100% { transform: translateY(0); } 45% { transform: translateY(-16px); } }
@keyframes arc-shake { 0%, 100% { transform: translateX(0); } 20% { transform: translateX(-7px) rotate(-4deg); } 40% { transform: translateX(7px); } 60% { transform: translateX(-5px); } 80% { transform: translateX(4px); } }
@keyframes arc-wiggle { 0%, 100% { transform: rotate(0); } 30% { transform: rotate(-8deg); } 70% { transform: rotate(8deg); } }
@media (min-width: 980px) {
  .arc-msg.has-buddy { min-height: 110px; padding-left: 16px; padding-top: 96px; flex-direction: column; align-items: flex-start; }
  .arc-buddy { left: 50%; transform: translateX(-50%); top: -12px; bottom: auto; width: 100px; height: 100px; }
  .arc-buddy img { width: 100px; height: 100px; }
  .arc-buddy-say { left: 70px; top: 0; }
}

/* ===========================================================================
   FORCE LANDSCAPE on phones — a board game plays best held the long way, so the
   board can be big and the menu / pip counts sit beside it (not stacked above &
   below, squeezing it). A phone in portrait sees a friendly "turn your phone"
   screen (with an escape hatch); in landscape the board fills the height and the
   message / actions / tools go in a side rail.
   =========================================================================== */

/* ---- portrait phone: the "turn me sideways" screen ---- */
.arc-rotate { display: none; }
.arc-rotate {
  position: fixed; inset: 0; z-index: 400; flex-direction: column; align-items: center; justify-content: center;
  gap: 16px; text-align: center; padding: 26px;
  background: radial-gradient(120% 90% at 50% 0%, #4A2A9A, #2C1466 72%); color: #fff; }
.arc-rotate .arc-rot-phone { font-size: 3.4rem; line-height: 1; animation: arc-rot 2.6s ease-in-out infinite; transform-origin: 50% 50%; }
@keyframes arc-rot { 0%, 46% { transform: rotate(0); } 66%, 92% { transform: rotate(90deg); } 100% { transform: rotate(90deg); } }
.arc-rotate h2 { color: #fff; font-size: 1.5rem; margin: 0; }
.arc-rotate p { color: #E7DBFF; max-width: 24ch; margin: 0; font-weight: 600; }
.arc-rotate img { width: 118px; height: 118px; object-fit: contain; filter: drop-shadow(0 8px 14px rgba(0,0,0,.4)); }
.arc-rotate .arc-rot-ok { margin-top: 4px; background: rgba(255,255,255,.14); color: #fff; border: 2px solid rgba(255,255,255,.5);
  border-radius: 999px; padding: 9px 18px; font-family: var(--font-display); font-weight: 700; font-size: .95rem; cursor: pointer; }
.arc-rotate .arc-rot-ok:hover { background: rgba(255,255,255,.24); }
@media (prefers-reduced-motion: reduce) { .arc-rotate .arc-rot-phone { animation: none; } }

@media (orientation: portrait) and (max-width: 560px) {
  body.arc:not(.arc-upright) .arc-rotate { display: flex; }
  body.arc:not(.arc-upright) > main.arc-main { visibility: hidden; }
  body.arc:not(.arc-upright) .nav-toggle { display: none; }   /* keep the ☰ from floating over the prompt */
  /* a dialog (invite/share, help, stats…) is fine in portrait — show it, not the prompt */
  body.arc.arc-modal-open .arc-rotate { display: none; }
}

/* ---- landscape phone (short viewport): board beside a side rail ---- */
@media (orientation: landscape) and (max-height: 600px) {
  body.arc.rk-playing > main.arc-main { padding: 4px 8px 6px; }
  /* slim one-row header so the board gets the height */
  .arc-head { flex-direction: row; flex-wrap: nowrap; align-items: center; justify-content: space-between;
    gap: 8px; padding: 5px 10px; margin: 0 0 6px; border-radius: 12px; background-size: 160px 22px, cover, cover; }
  .arc-bar { flex-wrap: nowrap; gap: 6px; }
  .arc-title { gap: 6px; min-width: 0; }
  .arc-title-badge { width: 28px; height: 28px; }
  .arc-head h1 { font-size: 1rem; white-space: nowrap; }
  .arc-sub { display: none; }
  .arc-diff { padding: 3px; }
  .arc-diff button { min-height: 30px; padding: 0 8px; font-size: .8rem; }
  .arc-controls { flex-wrap: nowrap; gap: 4px; }
  .arc-controls .lbl { display: none; }
  .arc-pill { min-height: 32px; padding: 0 9px; font-size: 1rem; }
  /* board on the left filling the height; message / actions / tools in a rail */
  .arc-stage { display: grid; grid-template-columns: auto minmax(140px, 32vw);
    grid-template-areas: "board msg" "board actions" "board tools" "board ."; column-gap: 10px;
    align-items: start; justify-content: center; }
  .arc-board { grid-area: board; margin: 0; }
  .arc-msg { grid-area: msg; margin: 0 0 6px; font-size: .95rem; min-height: 0; }
  .arc-msg.has-buddy { margin-top: 0; padding-left: 64px; min-height: 54px; }
  .arc-buddy { width: 54px; height: 62px; }
  .arc-buddy img { width: 54px; height: 54px; }
  .arc-actions { grid-area: actions; flex-direction: column; align-items: stretch; margin: 0 0 6px; }
  .arc-tools { grid-area: tools; flex-direction: column; gap: 8px; margin: 0; max-width: none; }
  .arc-tools .btn { min-height: 42px; font-size: .95rem; justify-content: center; }
}

/* ---- win confetti (Arcade.confetti) ---- */
.arc-confetti { position: fixed; inset: 0; pointer-events: none; z-index: 150; overflow: hidden; }
.arc-confetti span { position: absolute; top: -40px; animation: arc-fall linear forwards; }
@keyframes arc-fall { to { transform: translateY(110vh) rotate(var(--spin, 360deg)); } }
