/* ══════════════════════════════════════════════════════════════════════════
   responsive.css — Flappy War
   Strategy: LANDSCAPE is the primary mobile layout.
   All orientations are playable — no rotation gate.
   Desktop layout is untouched by rules in this file.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Prevent browser interference ──────────────────────────────────────────── */
html {
  overflow: hidden;
  height: 100%;
  /* iOS Safari: kill font scaling when rotating */
  -webkit-text-size-adjust: 100%;
}
body {
  overflow: hidden;
  height: 100%;
  /* position:fixed is the most reliable iOS rubber-band kill */
  position: fixed;
  width: 100%;
  overscroll-behavior: none;
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
  /* pan-x pan-y allows scrollable descendants (like the leaderboard table)
     to actually scroll. `touch-action: none` here would block ALL gestures
     globally — CSS spec: an ancestor's restriction overrides descendants. */
  touch-action: pan-x pan-y;
}

/* Restore natural tap behaviour on interactive elements only */
button, a, input, select, textarea, [role="button"] {
  touch-action: manipulation;
}

/* Kill browser pan/zoom on canvases without blocking touch routing */
#canvas-root canvas {
  touch-action: none;
}

/* App container: block all browser gestures; child elements override as needed */
#app {
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
}

/* ── iOS safe-area insets (notch / Dynamic Island) ───────────────────────── */
#game-hud {
  padding-left:  max(16px, env(safe-area-inset-left));
  padding-right: max(16px, env(safe-area-inset-right));
}

/* Online play hides #hud-time on mobile via the media queries below, but the
   "RED GANA EN" survival countdown lives there and BOTH players must see it.
   Higher specificity (body.online-active #id) beats the `#hud-time` hide even
   with !important, on every screen size. */
body.online-active #hud-time { display: inline-block !important; }

@supports (padding-top: env(safe-area-inset-top)) {
  #soc-panel {
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   PORTRAIT TOUCH DEVICES — rotate the entire app into landscape silently.
   No prompt; content rotates to fill the portrait viewport sideways.

   Math: #app is resized to 100vh × 100vw (landscape dims), centered at
   the viewport midpoint, then rotated -90° so the landscape layout fills
   the portrait screen without any gap or overflow.
   CSS hit-testing is transform-aware, so menus and touch input work
   correctly without any coordinate remapping.
   ══════════════════════════════════════════════════════════════════════════ */
/* (max-width: 1100px) ensures this block is SKIPPED when viewport is forced
   to 1280px by the meta tag — so mobile devices get the desktop layout. */
@media (orientation: portrait) and (hover: none) and (pointer: coarse) and (max-width: 1100px) {

  #app {
    /* svh = "small viewport height" = height when ALL browser chrome is visible.
       Using the same unit for both width AND centering ensures the rotated game
       always fits the actual visible area, regardless of whether the URL bar or
       nav bar is shown. lvh (large) caused the game to overflow when bars were
       visible because lvh > actual-visible-height. */
    width:  100vh !important;    /* fallback for very old browsers */
    width:  100svh !important;   /* preferred: stable with chrome visible */
    height: 100vw !important;
    top:    calc((100vh - 100vw) / 2) !important;    /* fallback */
    top:    calc((100svh - 100vw) / 2) !important;
    left:   calc((100vw - 100vh) / 2) !important;    /* fallback */
    left:   calc((100vw - 100svh) / 2) !important;
    right:  auto !important;
    bottom: auto !important;
    transform: rotate(90deg);
    transform-origin: center center;
  }

  /* Compact HUD — after rotation the "height" is the physical width (~390 px) */
  #game-hud {
    height: 44px !important;
    padding: 0 10px !important;
    gap: 7px !important;
  }
  #hud-score { font-size: 9px !important; }
  #hud-level { font-size: 11px !important; letter-spacing: 2px !important; }
  #hud-time  { display: none !important; }

  /* SOC panel is keyboard-only — hide on touch devices */
  #soc-panel { display: none !important; }

  /* safe center: centers content when it fits; falls back to flex-start when
     it overflows — prevents top-content being clipped (the "data loss" issue
     with plain center + overflow:hidden). Matches the reference landscape look. */
  #screen-title,
  #screen-diff,
  #screen-nickname,
  #screen-result,
  #screen-leaderboard,
  #screen-leaderboard-mission {
    overflow: hidden;
    justify-content: safe center;
  }

  /*
   * ── Content sizing — calibrated for the effective landscape after rotation ──
   *
   * After rotate(90deg), the game renders as a landscape viewport of:
   *   width  = 100vh  (portrait height, e.g. 852 px on iPhone 14 Pro)
   *   height = 100vw  (portrait width,  e.g. 393 px)
   *
   * IMPORTANT: vw units here evaluate against the PORTRAIT width (~393 px),
   * not the effective 852 px landscape width. Use vh for horizontal sizing
   * (vh = portrait height = effective landscape width) or fixed values.
   *
   * Target range: ~670–930 px effective width × ~375–430 px effective height.
   */

  /* ── Title screen ──
     Sizes calibrated for forced viewport width=540. After rotation, effective
     landscape is ~1078 wide × 540 tall CSS — content must fit in 540 vertical.
     Reduced from earlier draft to make room for card descriptions. */
  .title-owl    { width: 95px; height: 95px; margin-bottom: 6px; }
  .venue-badge  { font-size: 13px; letter-spacing: 2px; margin-bottom: 8px; padding: 4px 14px; }
  .title-logo   { font-size: clamp(40px, 7vh, 68px) !important; margin-bottom: 4px; letter-spacing: 5px; }
  .title-sub    { font-size: 14px !important; letter-spacing: 3px !important; margin-bottom: 10px; }
  /* 4 mode cards now — narrower so they stay on ONE row in the rotated landscape */
  .mode-cards   { gap: 10px; margin-bottom: 8px; }
  .mode-card    { width: 156px; padding: 12px 11px 10px; }
  .card-icon    { font-size: 30px; margin-bottom: 5px; }
  .card-title   { font-size: 18px; letter-spacing: 2px; margin-bottom: 4px; }
  /* Card descriptions on mobile — bold + brighter so they read clearly */
  .card-desc    { font-size: 13px !important; line-height: 1.6 !important; margin-top: 4px;
                  font-weight: 700 !important; color: rgba(225,240,255,0.92) !important; }
  .pvp-notice-sub { font-size: 12px !important; font-weight: 700 !important;
                    color: rgba(225,240,255,0.92) !important; }
  .card-badge   { font-size: 13px; }
  .ember-divider { margin-bottom: 8px; }

  /* ── Title screen bottom ── */
  /* Move ranking links to landscape-top (portrait-right) so they're always reachable.
     order:-1 pulls them before the owl in the flex column. */
  .title-links  { order: -1 !important; margin-top: 0 !important; margin-bottom: 8px !important; gap: 16px !important; font-size: 13px !important; }
  .title-logos       { margin-top: 8px !important; margin-bottom: 4px !important; gap: 18px !important; }
  .title-logos img   { height: 40px !important; }
  .title-logos > div { height: 32px !important; }
  .title-credit      { font-size: 11px !important; letter-spacing: 2px !important; }

  /* ── Difficulty screen ── */
  #screen-diff   { gap: 14px !important; }
  .diff-title    { font-size: clamp(28px, 5vh, 48px) !important; letter-spacing: 4px; margin-bottom: 8px; }
  .diff-subtitle { font-size: 14px !important; margin-bottom: 16px !important; }
  .diff-cards    { gap: 14px; }
  .diff-card     { width: 180px; padding: 20px 16px 16px; }
  .diff-label    { font-size: 20px; }
  .diff-desc     { font-size: 12px; font-weight: 700 !important;
                   color: rgba(225,240,255,0.92) !important; }

  /* ── Buttons ── */
  .btn-primary   { padding: 14px 32px; font-size: 18px; letter-spacing: 3px; }
  .btn-secondary { padding: 10px 22px; font-size: 14px; letter-spacing: 2px; }
  .btn-back      { font-size: 14px; letter-spacing: 2px; padding: 8px 18px; }
  .btn-group     { gap: 10px; margin-top: 14px !important; }

  /* ── Nickname screen ──
     IMPORTANT: blade.php has a <style> block loaded AFTER responsive.css,
     so any rule without !important here is silently overridden by the blade.
     Every property that differs from the blade's defaults needs !important. */
  .nick-auth-header    { padding: 5px 12px !important; margin-bottom: 6px !important; }
  .nick-auth-badge     { font-size: 10px !important; }
  .nick-auth-version   { font-size: 9px !important; }
  .nick-identity-block { gap: 2px !important; margin-bottom: 5px !important; }
  .nick-mascara        { width: 96px !important; height: 96px !important; margin-bottom: 6px !important; }
  .nick-app-title      { font-size: clamp(40px, 7vh, 64px) !important; letter-spacing: 6px !important; }
  .nick-conference-name { font-size: 13px !important; letter-spacing: 3px !important; }
  .nick-app-sub        { font-size: 13px !important; letter-spacing: 3px !important; }
  .nick-diag-block     { padding: 8px 16px !important; margin: 6px 0 10px !important; }
  .nick-diag-line      { font-size: 12px !important; line-height: 1.7 !important; }
  .nick-access-form    { gap: 8px !important; }
  .nick-access-label   { font-size: 13px !important; letter-spacing: 4px !important; margin-bottom: 4px !important; }
  .nick-wrap           { gap: 8px !important; }
  .nick-prefix         { font-size: 16px !important; padding: 12px 14px 12px 18px !important; }
  .nick-input          { font-size: 18px !important; padding: 12px 18px !important; }
  .nick-hint           { font-size: 13px !important; }
  .nick-error          { font-size: 13px !important; }
  .nick-logos          { gap: 14px !important; margin-top: 10px !important; }
  .nick-logos img      { height: 32px !important; }

  /* ── Result screen ── */
  #result-owl        { width: 100px !important; height: 100px !important; margin-bottom: 8px !important; }
  .result-mode-badge { margin-bottom: 8px !important; font-size: 12px; letter-spacing: 2px; padding: 5px 14px; }
  .result-sub        { font-size: 16px !important; }
  #result-title      { font-size: clamp(48px, 8vh, 80px) !important; letter-spacing: 5px; margin-bottom: 4px; }
  .result-stat-row   { font-size: 14px !important; letter-spacing: 2px !important; }
  /* Switch buttons from column to row+wrap so 4 buttons take 2 rows instead of 4 */
  #screen-result .btn-group {
    flex-direction: row !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 6px !important;
  }

  /* ── Classic mode name entry ── */
  .classic-name-owl      { width: 44px !important; height: 44px !important; }
  .classic-name-header   { gap: 12px !important; margin-bottom: 4px !important; }
  .classic-name-title    { font-size: 18px !important; }
  .classic-name-subtitle { font-size: 8px !important; }
  .classic-name-flavors  { margin: 4px 0 8px !important; font-size: 9px !important; gap: 8px !important; }
  .classic-name-section-label { margin-bottom: 4px !important; font-size: 7.5px !important; }

  /* ── Leaderboard ──
     Effective space depends on viewport. Bumped sizes for readability.
     blade.php <style> loads after this file → !important needed on most rules.
     Scrolling: body has touch-action:none → restore pan on the table so the
     user can swipe to see entries below the visible window. */
  .lb-brand-row   { gap: 12px !important; margin-bottom: 6px !important; }
  .lb-brand-logo  { width: 36px !important; height: 36px !important; }
  .lb-brand-conf  { font-size: 12px !important; letter-spacing: 2px !important; }
  .lb-brand-title { font-size: 20px !important; letter-spacing: 4px !important; }
  /* touch-action:auto restores native vertical scrolling (kills the global "none"
     from body). -webkit-overflow-scrolling:touch enables momentum scroll on iOS.
     overscroll-behavior:contain prevents the parent from scrolling when we hit
     top/bottom of the table. */
  .lb-table       {
    max-height: 280px !important;
    margin-top: 6px !important;
    gap: 2px !important;
    max-width: 640px !important;
    overflow-y: auto !important;
    touch-action: pan-x pan-y !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
  }
  .lb-header, .lb-row { padding: 6px 12px !important; font-size: 12px !important; gap: 8px !important; }
  .lb-header      { font-size: 10px !important; letter-spacing: 2px !important; }
  .lb-rank        { font-size: 14px !important; }
  .lb-name        { font-size: 13px !important; letter-spacing: 1px !important; }
  .lb-score       { font-size: 14px !important; }
  .lb-time        { font-size: 10px !important; }
  .lb-diff        { font-size: 11px !important; padding: 2px 7px !important; }
  .lb-empty       { font-size: 12px !important; padding: 20px 0 !important; }
  .lb-footer-stats { font-size: 10px !important; margin-top: 6px !important; }
  /* Compact column widths so all cells fit */
  #leaderboard-table .lb-header,
  #leaderboard-table .lb-row { grid-template-columns: 30px 1fr 60px 52px !important; }
  #leaderboard-mission-table .lb-header,
  #leaderboard-mission-table .lb-row { grid-template-columns: 28px 1fr 52px 36px 48px !important; }

  /* ── Online lobby + result (fit the rotated landscape) ── */
  #screen-online-lobby p,
  #screen-online-result p          { font-size: 11px !important; margin-bottom: 8px !important; }
  #online-choice                   { gap: 8px !important; max-width: 320px !important; }
  #online-code-display             { font-size: 34px !important; letter-spacing: 8px !important; }
  #online-status                   { font-size: 11px !important; margin-top: 10px !important; }
  #online-result-winner            { font-size: 15px !important; margin-bottom: 6px !important; }
  #online-result-table .lb-header,
  #online-result-table .lb-row     { grid-template-columns: 28px 1fr 56px 96px !important; }

  /* ── Online Blue on mobile: reveal the SOC panel (its only control). ──
     Overrides the desktop-only `#soc-panel { display:none !important }` via
     higher specificity. Compacted to fit the short landscape height. */
  body.online-soc #soc-panel       { display: flex !important; width: 248px !important; }
  body.online-soc .soc-brand,
  body.online-soc #soc-log,
  body.online-soc #soc-log-header  { display: none !important; }
  /* Bigger, finger-friendly action buttons (~48px tall tap targets) */
  body.online-soc .soc-actions     { gap: 9px !important; padding: 10px 12px !important; }
  body.online-soc .soc-action-btn  { padding: 14px 12px !important; font-size: 15px !important; letter-spacing: 1.5px !important; }
  body.online-soc .soc-key-badge   { font-size: 12px !important; padding: 3px 8px !important; }
  body.online-soc .soc-btn-icon    { width: 17px !important; height: 17px !important; }
  body.online-soc .soc-energy-section { padding: 9px 12px !important; }
  body.online-soc .soc-energy-label   { font-size: 13px !important; }

  /* ── Pause overlay ── */
  .pause-title { font-size: clamp(22px, 3.5vh, 40px) !important; letter-spacing: 6px !important; }
  #pause-overlay > p { font-size: 13px !important; letter-spacing: 2px !important; margin-bottom: 6px !important; }

  /* ── Card / diff icons ── */
  .card-icon .icon   { width: 30px !important; height: 30px !important; }
  .diff-dot          { margin-bottom: 7px !important; }
}

/* ══════════════════════════════════════════════════════════════════════════
   LANDSCAPE PHONES  (height ≤ 500 px — all phones in landscape)
   Primary mobile gaming orientation. Compact everything for a short viewport.
   ══════════════════════════════════════════════════════════════════════════ */
/* Skipped when viewport is forced to 1280px (Desktop Site mode on mobile) */
@media (max-height: 500px) and (orientation: landscape) and (max-width: 1100px) {

  /* ── HUD ── */
  #game-hud {
    height: 44px !important;
    padding: 0 max(10px, env(safe-area-inset-left)) !important;
    padding-right: max(10px, env(safe-area-inset-right)) !important;
    gap: 7px !important;
  }
  #hud-score { font-size: 9px !important; }
  #hud-level { font-size: 11px !important; letter-spacing: 2px !important; }
  #hud-time  { display: none !important; }

  /* Blue Team SOC panel is keyboard-only — hide on mobile */
  #soc-panel { display: none !important; }
  /* …except online Blue, who needs it as their only control (compacted). */
  body.online-soc #soc-panel      { display: flex !important; width: 240px !important; }
  body.online-soc .soc-brand,
  body.online-soc #soc-log,
  body.online-soc #soc-log-header { display: none !important; }
  body.online-soc .soc-actions    { gap: 8px !important; padding: 9px 11px !important; }
  body.online-soc .soc-action-btn { padding: 13px 11px !important; font-size: 14px !important; letter-spacing: 1.5px !important; }
  body.online-soc .soc-key-badge  { font-size: 12px !important; padding: 3px 8px !important; }
  body.online-soc .soc-btn-icon   { width: 16px !important; height: 16px !important; }

  /* ── Allow menu screens to scroll if content overflows ── */
  #screen-title,
  #screen-diff,
  #screen-nickname,
  #screen-result,
  #screen-leaderboard,
  #screen-leaderboard-mission {
    overflow-y: auto;
    overflow-x: hidden;
    justify-content: flex-start;
    padding-top: 10px;
    padding-bottom: 14px;
  }

  /* ── Title screen ── */
  .title-owl   { width: 68px; height: 68px; margin-bottom: 5px; }
  .venue-badge { font-size: 9px; letter-spacing: 1px; margin-bottom: 8px; padding: 3px 10px; }
  .title-logo  { font-size: clamp(20px, 5vw, 32px) !important; margin-bottom: 4px; }
  .title-sub   { font-size: 10px !important; letter-spacing: 2px !important; margin-bottom: 8px; }
  .mode-cards  { gap: 8px; margin-bottom: 8px; }
  .mode-card   { width: 136px; padding: 12px 10px 10px; }
  .card-icon   { font-size: 22px; margin-bottom: 4px; }
  .card-title  { font-size: 13px; letter-spacing: 1.5px; }
  .card-desc   { font-size: 8px; line-height: 1.5; }
  .card-badge  { font-size: 9px; }
  .ember-divider { margin-bottom: 8px; }

  /* ── Difficulty screen ── */
  .diff-title { font-size: clamp(15px, 3vw, 22px) !important; letter-spacing: 2px; margin-bottom: 5px; }
  .diff-cards { gap: 8px; }
  .diff-card  { width: 126px; padding: 12px 10px 10px; }
  .diff-icon  { font-size: 22px; margin-bottom: 4px; }
  .diff-label { font-size: 14px; }
  .diff-desc  { font-size: 8px; }

  /* ── Buttons ── */
  .btn-primary   { padding: 10px 22px; font-size: 13px; letter-spacing: 2px; }
  .btn-secondary { padding: 7px 16px; font-size: 11px; letter-spacing: 1.5px; }
  .btn-back      { font-size: 11px; letter-spacing: 2px; padding: 6px 14px; }
  .btn-group     { gap: 8px; }

  /* ── Result screen ── */
  .result-winner-img { width: 68px; height: 68px; margin-bottom: 6px; }
  #result-title      { font-size: clamp(20px, 5vw, 34px) !important; letter-spacing: 4px; margin-bottom: 2px; }
  .result-scores     { margin-bottom: 10px; font-size: 8px; line-height: 2; }
  .result-mode-badge { font-size: 7px; letter-spacing: 1px; padding: 3px 8px; }
  .result-stat-row   { font-size: 8px; letter-spacing: 1px; }

  /* ── Nickname screen ── */
  .nick-auth-header    { padding: 5px 12px; margin-bottom: 6px; }
  .nick-auth-badge     { font-size: 10px !important; }
  .nick-auth-version   { font-size: 9px !important; }
  .nick-identity-block { gap: 2px; margin-bottom: 5px; }
  .nick-mascara        { width: 44px; height: 44px; margin-bottom: 0; }
  .nick-app-title      { font-size: 24px !important; letter-spacing: 5px !important; }
  .nick-conference-name { font-size: 9px !important; letter-spacing: 2px; }
  .nick-app-sub        { display: none !important; }
  .nick-diag-block     { display: none !important; }
  .nick-access-label   { font-size: 9px !important; letter-spacing: 3px; }
  .nick-prefix         { font-size: 12px !important; padding: 10px 10px 10px 14px !important; }
  .nick-input          { font-size: 14px !important; padding: 10px 12px !important; }
  .nick-hint           { font-size: 10px !important; }
  .nick-logos          { gap: 10px; margin-top: 8px; }
  .nick-logos img      { height: 24px; }

  /* ── Leaderboard ── */
  .lb-brand-row   { gap: 8px; }
  .lb-brand-logo  { width: 28px; height: 28px; }
  .lb-brand-title { font-size: 13px; }
  .lb-table       { max-height: 190px !important; }

  /* ── Pause overlay ── */
  .pause-title { font-size: clamp(18px, 5vw, 30px) !important; letter-spacing: 5px !important; }
  #pause-overlay > p { font-size: 12px !important; letter-spacing: 2px !important; margin-bottom: 6px !important; }

  /* ── Title screen bottom — institution logos + credit ── */
  .title-logos       { margin-top: 8px !important; margin-bottom: 2px !important; gap: 12px !important; }
  .title-logos img   { height: 30px !important; }
  .title-credit      { font-size: 9px !important; letter-spacing: 2px !important; }

  /* ── Difficulty screen subtitle ── */
  .diff-subtitle     { font-size: 10px !important; margin-bottom: 10px !important; }

  /* ── Classic mode name entry ── */
  .classic-name-owl      { width: 44px !important; height: 44px !important; }
  .classic-name-header   { gap: 12px !important; margin-bottom: 4px !important; }
  .classic-name-title    { font-size: 18px !important; }
  .classic-name-subtitle { font-size: 8px !important; }
  .classic-name-flavors  { margin: 4px 0 8px !important; font-size: 9px !important; gap: 8px !important; }
  .classic-name-section-label { margin-bottom: 4px !important; font-size: 7.5px !important; }

  /* ── Result screen ── */
  #result-owl        { width: 72px !important; height: 72px !important; margin-bottom: 6px !important; }
  .result-mode-badge { margin-bottom: 8px !important; }
  .result-sub        { font-size: 12px !important; }

  /* ── Mode / diff card icons — scale SVG down on compact cards ── */
  .card-icon .icon   { width: 30px !important; height: 30px !important; }
  .diff-dot          { margin-bottom: 7px !important; }
}

/* ══════════════════════════════════════════════════════════════════════════
   LANDSCAPE TABLETS & SMALL LAPTOPS  (height 501–700 px, landscape)
   SOC panel stays right but is narrowed; brand / log hidden.
   ══════════════════════════════════════════════════════════════════════════ */
/* Skipped when viewport is forced to 1280px (Desktop Site mode on mobile) */
@media (min-height: 501px) and (max-height: 700px) and (orientation: landscape) and (max-width: 1100px) {

  #game-hud { height: 48px !important; gap: 10px !important; }
  #hud-time { display: none !important; }

  #soc-panel          { width: 220px !important; }
  .soc-brand          { display: none !important; }
  .soc-section-header { padding: 4px 10px 3px; }
  .soc-section-label  { font-size: 8px; }
  .soc-energy-section { padding: 6px 10px 5px; }
  .soc-action-btn     { padding: 6px 8px; font-size: 11px; letter-spacing: 1px; }
  .soc-btn-label      { font-size: 10px; }
  .soc-btn-icon       { display: none; }
  #soc-log-header     { display: none !important; }
  #soc-log            { display: none !important; }

  .title-owl   { width: 100px; height: 100px; margin-bottom: 10px; }
  .venue-badge { font-size: 11px; margin-bottom: 16px; }
  .mode-cards  { gap: 12px; margin-bottom: 18px; }
  .mode-card   { width: 168px; padding: 16px 14px 14px; }
  .ember-divider { margin-bottom: 14px; }
}

/* ══════════════════════════════════════════════════════════════════════════
   NARROW SCREENS  (≤ 480 px wide — narrow phones, any orientation)
   ══════════════════════════════════════════════════════════════════════════ */
@media (max-width: 480px) {
  .mode-card  { width: 148px; padding: 16px 12px 14px; }
  .card-title { font-size: 16px; letter-spacing: 2px; }
  .diff-card  { width: 136px; padding: 14px 10px 12px; }
  .diff-label { font-size: 15px; }
  .title-owl  { width: 100px; height: 100px; margin-bottom: 12px; }
  .venue-badge { font-size: 10px; letter-spacing: 1.5px; margin-bottom: 18px; }
  .title-sub   { margin-bottom: 22px; }
  .mode-cards  { gap: 10px; margin-bottom: 20px; }
  .diff-cards  { gap: 10px; }
  .ember-divider { margin-bottom: 16px; }
  .btn-primary   { padding: 12px 28px; font-size: 15px; letter-spacing: 3px; }
  .btn-secondary { padding: 9px 22px; font-size: 13px; }
  .btn-back      { font-size: 13px; letter-spacing: 2px; padding: 7px 16px; }
  .result-mode-badge { font-size: 7.5px; letter-spacing: 1.5px; padding: 4px 10px; }
  .result-stat-row   { font-size: 8px; letter-spacing: 1px; }
  .nick-auth-header { max-width: 100%; }
  .nick-app-title   { font-size: 28px; letter-spacing: 6px; }
  .nick-input       { font-size: 15px; }
  .nick-logos img   { height: 26px; }
  .lb-brand-row   { gap: 10px; }
  .lb-brand-logo  { width: 34px; height: 34px; }
  .lb-brand-title { font-size: 15px; }
  .pause-title { letter-spacing: 5px !important; font-size: clamp(24px, 7vw, 44px) !important; }
}

/* ══════════════════════════════════════════════════════════════════════════
   ULTRA-WIDE MONITORS  (≥ 1800 px)
   ══════════════════════════════════════════════════════════════════════════ */
@media (min-width: 1800px) {
  .mode-card { width: 230px; }
  .diff-card { width: 190px; }
  #soc-panel { width: 310px !important; }
}
