/* Fight-night print: tobacco paper, two red inks, mustard and bottle green.
   Display type does the loud work; slab-serif copy stays quiet and readable. */
body {
  background-color: var(--paper);
  background-image: radial-gradient(#58432112 .65px, transparent .85px);
  background-size: 4px 4px;
}
.header {
  position: relative;
  background: var(--paper);
  border-bottom: 5px double var(--ink);
  min-height: 90px;
}
.wordmark { font-weight: 900; letter-spacing: -.025em; }
.brand-symbol { border-width: 3px; }
.header nav { font-size: 14px; }
.header .sound-toggle { border-color: var(--ink); font-size: 12px; }
.hero {
  max-width: 1360px;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0;
  margin: 32px auto 42px;
  padding: 24px;
  border: 3px solid var(--red);
  outline: 1px solid var(--red);
  outline-offset: 5px;
  align-items: stretch;
}
.hero-copy {
  padding: 26px 36px 18px 12px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
}
.presented { font-size: 16px; border-bottom: 2px solid var(--red); padding-bottom: 12px; }
.hero h1 {
  font-size: clamp(80px, 10vw, 144px);
  font-weight: 900;
  line-height: .88;
  letter-spacing: -.025em;
  text-shadow: 2px 2px var(--paper), 4px 4px var(--red);
  margin-bottom: 26px;
}
.hero-description { font-size: 16px; line-height: 1.75; }
.hero-actions { gap: 22px; margin-top: 12px; }
.admission { font-size: 12px; color: var(--ink); }
.hero-art {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-self: stretch;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 13px;
  border: 2px solid var(--red);
  background: var(--red);
  transform: none;
  animation: none;
  box-shadow: none;
}
.poster-top { border-bottom: 1px solid var(--paper); padding: 5px 0 13px; gap: 16px; font-size: 12px; }
.hero-art img { margin-top: 12px; filter: sepia(.32) saturate(.7) contrast(1.08); }
.poster-bottom { padding: 20px 6px 6px; gap: 14px; color: var(--paper); }
.poster-bottom > span { font-size: clamp(34px, 4vw, 56px); line-height: .95; }
.ticket-stamp { border: 3px double var(--paper); border-radius: 0; color: var(--paper); transform: rotate(-7deg); flex-shrink: 0; }
.corner-note { position: static; font-size: 12px; color: var(--paper); text-align: right; margin-top: 16px; }
.bell-corner { border-top: 1px dashed var(--red); width: 100%; padding-top: 14px; margin-top: 16px; }
.bell-corner button { color: var(--red); }
.bell-corner p { font-size: 12px; color: var(--ink); }
.button {
  border: 2px solid var(--ink);
  border-radius: 2px;
  box-shadow: 3px 3px 0 var(--ink);
  font-family: var(--display);
  font-weight: 700;
  font-size: 21px;
  letter-spacing: .01em;
  padding: 11px 20px;
  transition: none;
}
.button:hover { transform: none; box-shadow: 1px 1px 0 var(--ink); }
.button:active { transform: translate(2px, 2px); box-shadow: none; }
.text-link { font-size: 14px; }
.billboard { background: var(--green); color: var(--paper); border-block: 5px double var(--paper); font-size: 30px; }
.section { padding-top: 72px; padding-bottom: 72px; }
.section-kicker { font-size: 14px; color: var(--red); text-transform: none; letter-spacing: 0; }
.section-heading h2 { font-weight: 900; line-height: 1; }
.section-heading > p { font-size: 16px; color: var(--ink); }
.game-card { border: 3px double var(--ink); padding: 26px; }
.rush { background: var(--gold); }
.counter { background: var(--green); }
.game-meta { font-size: 14px; border-bottom-style: dashed; }
.game-display { min-height: 230px; }
.display-word { font-weight: 900; line-height: .94; }
.roundel { border: 3px double currentColor; }
.game-card > p { font-size: 16px; min-height: 56px; }
.game-bottom { flex-wrap: wrap; }
.game-bottom .button { font-size: 20px; }
.best { font-size: 12px; white-space: normal; }
.game-card, .daily-ticket { transition: none; }
.game-card:hover, .daily-ticket:hover { transform: none; box-shadow: none; }
.daily-ticket { background: var(--red); border: 3px double var(--paper); outline: 2px solid var(--red); margin-top: 30px; }
.ticket-number { border-right: 2px dashed var(--paper); }
.daily-copy .section-kicker { color: var(--paper); font-size: 12px; text-transform: none; letter-spacing: 0; }
.daily-copy > p:last-child, .daily-action small { color: var(--paper); }
.daily-copy > p:last-child { font-size: 16px; }
.daily-action small, .ticket-number span { font-size: 12px; }
.locker { border-block: 4px double var(--ink); }
.badge-grid { border: 0; gap: 12px; }
.badge-grid article, .badge-grid article:last-child { border: 1px solid var(--line); background: #f5e5bf; }
.badge-grid .unlocked { background: var(--gold); }
.badge-grid p { font-size: 14px; color: var(--ink); }
.badge-grid small { font-size: 12px; }
.badge-emblem { color: var(--green); border-color: var(--green); }
.story { border: 0; padding-block: 44px; }
.story > p { font-size: 16px; }
.studio { border-top: 4px double var(--ink); }
.canvas-wrap { padding: 15px; background: var(--paper); border: 8px solid var(--green); box-shadow: none; }
.meme-controls { max-width: none; }
.studio-modes label, .presets button { font-size: 14px; }
.tokenomics { background: #dfc48b; border-top: 4px double var(--ink); }
.float-ticket { background: var(--paper); color: var(--ink); border: 3px double var(--red); box-shadow: none; }
.float-ticket > strong { color: var(--red); }
.float-ticket .float-definition { font-size: 14px; }
.supply-breakdown small, .supply-roadmap small, .supply-roadmap aside > span { font-size: 12px; }
.supply-roadmap aside > span { text-transform: none; letter-spacing: 0; }
.token { background: var(--green); border-block: 5px double var(--paper); }
.token .section-kicker, .token details p, .token-note { color: var(--paper); }
.token-intro > p:last-child { font-size: 16px; }
.closing a { font-weight: 900; }
dialog { border: 6px double var(--red); }
.scoreboard { border-block: 3px double var(--ink); }
.dialog-header .section-kicker { color: var(--red); }
.counter-controls button, .combo-pads button { font-family: var(--display); font-size: 22px; }
.mobile-dock { background: var(--green); }
.mobile-dock a { font-size: 12px; }
@media (max-width: 1460px) {
  .hero { margin-inline: 4%; }
}
@media (max-width: 1100px) {
  .hero-copy { padding-right: 24px; }
  .hero h1 { font-size: clamp(68px, 10vw, 110px); }
  .hero-actions { flex-direction: column; align-items: flex-start; }
  .hero-description { font-size: 16px; }
  .header nav:not(.social-links) { font-size: 14px; }
  .game-bottom { align-items: flex-start; }
}
@media (max-width: 760px) {
  .hero { grid-template-columns: 1fr; gap: 26px; padding: 18px; margin: 24px 5% 32px; }
  .hero-copy { padding: 8px; }
  .hero h1 { font-size: clamp(72px, 17vw, 122px); }
  .hero-actions { flex-direction: row; align-items: center; }
  .hero-art { justify-self: center; }
  .poster-bottom > span { font-size: 42px; }
  .hero-art img { max-height: 500px; object-position: center 35%; }
  .section { padding-block: 48px; }
  .game-grid { grid-template-columns: 1fr; }
  .game-display { min-height: 190px; }
  .game-card > p { min-height: 0; }
  .display-word { font-size: clamp(60px, 13vw, 90px); }
  .game-bottom { flex-direction: row; align-items: center; }
  .game-bottom .button { font-size: 19px; }
  .section-heading { display: block; }
  .section-heading > p { margin-top: 20px; }
  .section-heading h2 { font-size: clamp(38px, 9vw, 60px); }
  .daily-ticket { padding: 20px; }
  .ticket-number span { font-size: 12px; letter-spacing: 0; }
  .daily-copy .section-kicker { font-size: 12px; }
  .studio-layout, .supply-layout, .token { grid-template-columns: 1fr; }
  .header { gap: 8px; padding-inline: 4%; }
  .header .wordmark { font-size: 25px; }
  .header .sound-toggle { font-size: 12px; padding: 8px; }
  .poster-top { flex-wrap: wrap; gap: 6px 14px; }
}
@media (max-width: 380px) {
  .hero { padding: 12px; }
  .hero-copy { padding-inline: 0; }
  .hero h1 { font-size: 68px; }
  .header .brand-symbol { display: none; }
  .game-card { padding: 18px; }
  .game-bottom { flex-direction: column; align-items: flex-start; }
  .badge-grid article { padding: 16px 12px; }
}

.x-feed { border-top: 4px double var(--ink); }
.x-feed-posts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 22px; align-items: start; margin-top: 26px; }
.x-post { min-width: 0; padding: 10px; background: #f5e5bf; border: 1px solid var(--line); }
.x-post blockquote { margin: 16px; }
.x-post a { text-decoration: underline; }
.x-post .twitter-tweet { margin-inline: auto; }
@media(max-width:1100px) { .x-feed-posts { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media(max-width:720px) { .x-feed-posts { grid-template-columns: 1fr; } }

.table-game-grid { margin-top: 28px; }
.pinball-card { background: var(--red); color: var(--paper); }
.breaker-card { background: #dfc48b; }
.pinball-card .display-word { font-size: clamp(32px,4.2vw,62px); }
.table-dialog { width: min(970px,calc(100% - 24px)); }
.table-dialog .dialog-header { margin-bottom: 20px; }
.table-layout { display: grid; grid-template-columns: minmax(0,420px) minmax(0,1fr); gap: 28px; align-items: start; }
.table-playfield { min-width: 0; }
#table-canvas { display: block; width: 100%; height: auto; touch-action: none; background: var(--green); }
#table-canvas:focus-visible { outline: 3px solid #3384bf; outline-offset: 3px; }
.table-controls { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
.table-controls button { touch-action: none; user-select: none; -webkit-user-select: none; background: var(--red); color: var(--paper); border: 2px solid var(--ink); padding: 14px 5px; min-height: 52px; font: 700 23px var(--display); }
.table-controls button.pressed { background: var(--gold); color: var(--ink); }
.table-sidebar .scoreboard { grid-template-columns: 1fr; }
.table-sidebar .scoreboard > div { display: flex; align-items: center; justify-content: space-between; padding: 12px; }
.table-sidebar .scoreboard span { font-size: 14px; }
.table-sidebar p { font-size: 14px; line-height: 1.7; }
#table-status { padding: 14px; border-left: 3px solid var(--red); background: #dfc48b; }
.table-actions { display: flex; flex-wrap: wrap; gap: 12px; }
@media(max-width:700px) {
  .table-layout { grid-template-columns: 1fr; gap: 20px; }
  .table-playfield { width: min(100%,340px); justify-self: center; }
  .table-sidebar .scoreboard { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .table-sidebar .scoreboard > div { display: block; padding: 8px 3px; }
  .table-sidebar .scoreboard strong { font-size: 28px; }
  .table-dialog .dialog-header h2 { font-size: 30px; }
  .pinball-card .display-word { font-size: clamp(32px,8vw,56px); }
}

.leaderboard { border-top: 4px double var(--ink); }
.leaderboard-tools { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.leaderboard-tools label { display: grid; gap: 8px; font-size: 14px; min-width: 0; }
.leaderboard-tools select { background: var(--paper); color: var(--ink); border: 2px solid var(--ink); border-radius: 0; padding: 12px; font: inherit; max-width: 100%; }
.leaderboard-tools button { background: transparent; color: var(--red); font: inherit; text-decoration: underline; min-height: 44px; }
.leaderboard-note { max-width: 80ch; font-size: 14px; line-height: 1.7; }
.leaderboard-table-wrap { overflow-x: auto; }
.leaderboard-table { width: 100%; border-collapse: collapse; border-block: 4px double var(--ink); }
.leaderboard-table caption { text-align: left; font-size: 14px; padding-block: 16px; }
.leaderboard-table thead { background: var(--green); color: var(--paper); }
.leaderboard-table th, .leaderboard-table td { padding: 16px 20px; text-align: left; border-bottom: 1px solid var(--line); }
.leaderboard-table thead th { font-size: 14px; font-weight: 500; }
.leaderboard-table tbody th { font-size: 17px; font-weight: 500; overflow-wrap: anywhere; }
.leaderboard-table td:first-child { width: 80px; font: 700 28px var(--display); color: var(--red); }
.leaderboard-table td:last-child { font: 800 32px var(--display); }
.leaderboard-table tr > :last-child { text-align: right; }
.score-kind { display: inline-block; margin-left: 12px; padding: 2px 6px; border: 1px solid var(--line); font-size: 12px; vertical-align: middle; }
.your-score { background: var(--gold); }
.leaderboard-footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-top: 16px; font-size: 14px; }
.leaderboard-footer p { margin: 0; }
.leaderboard-submit { border-top: 3px double var(--ink); padding-top: 24px; margin-top: 24px; }
.leaderboard-submit h3 { font: 800 32px var(--display); margin: 0 0 12px; }
.leaderboard-submit p { font-size: 14px; }
.leaderboard-submit label { display: grid; gap: 8px; font-size: 14px; }
.leaderboard-submit input { width: 100%; padding: 12px; border: 1px solid var(--ink); background: #fff8e8; color: var(--ink); font-size: 16px; }
.leaderboard-submit-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; margin-top: 16px; }
@media(max-width:650px) {
  .leaderboard-tools { flex-direction: column; align-items: stretch; }
  .leaderboard-tools button { align-self: flex-start; }
  .leaderboard-table th, .leaderboard-table td { padding: 12px 8px; }
  .leaderboard-table tbody th { font-size: 14px; }
  .score-kind { margin-left: 6px; }
}

.brand-face { width: 44px; height: 44px; flex-shrink: 0; object-fit: contain; }
@media(max-width:720px) { .brand-face { width: 36px; height: 36px; } }

.leaderboard-pair { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 36px; align-items: stretch; }
.leaderboard-pair h3 { margin: 0 0 20px; font: 800 38px var(--display); }
.score-board-panel, .holder-board-panel { min-width: 0; }
.holder-board-panel { border-left: 1px solid var(--line); padding-left: 36px; }
.holder-board-intro { font-size: 14px; line-height: 1.7; }
.holder-empty { min-height: 360px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; border-block: 4px double var(--ink); padding: 32px; background: #dfc48b55; }
.holder-empty p { max-width: 30ch; font-size: 18px; line-height: 1.7; }
.holder-contract { margin: 20px 0; }
.holder-contract span { display: block; font-size: 14px; margin-bottom: 8px; }
.holder-contract code { overflow-wrap: anywhere; font-size: 14px; }
.leaderboard-note { margin-top: 16px; font-size: 12px; }
@media(max-width:1100px) { .leaderboard-tools { flex-direction: column; align-items: stretch; } .leaderboard-tools button { align-self: flex-start; } }
@media(max-width:850px) { .leaderboard-pair { grid-template-columns: 1fr; } .holder-board-panel { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; padding-top: 28px; } .holder-empty { min-height: 240px; } }

.studio-tools{min-width:0;display:grid;gap:24px}.scene-controls{display:grid;gap:14px;border:2px solid var(--ink,#29271a);padding:24px;background:#eddaab}.scene-controls h3{font-family:"Barlow Condensed",sans-serif;font-size:2rem;line-height:1}.scene-controls textarea{width:100%;resize:vertical;min-height:100px;padding:12px;background:#fff8e5;color:#29271a;border:1px solid #615638;font:inherit}.scene-suggestions,.scene-actions{display:flex;flex-wrap:wrap;gap:8px}.scene-suggestions button,.scene-actions button{border:1px solid #615638;padding:7px 10px;background:transparent;color:#29271a;text-align:left;font:inherit;font-size:.8rem}.scene-suggestions button:hover,.scene-actions button:hover{background:#dac184}.scene-controls [hidden]{display:none}.scene-controls .small-note{font-size:.78rem;line-height:1.5}.scene-controls button:disabled{opacity:.55;cursor:wait}.scene-controls a{color:#752b26;text-decoration:underline}footer .brand-face{width:52px;height:52px}

.header .brand-name{font-size:.85em;letter-spacing:-.025em}.scene-controls textarea:focus-visible{outline:3px solid #3384bf;outline-offset:4px}@media(max-width:380px){.header .wordmark{gap:5px}.header .brand-face{width:30px;height:30px}.header .brand-name{font-size:19px}}

.studio-layout{align-items:start}.studio-tools{gap:18px}.studio-tools [role="tabpanel"][hidden]{display:none}.studio-steps{display:grid;grid-template-columns:1fr 1fr;border-bottom:2px solid var(--ink);gap:8px}.studio-steps button{background:transparent;color:var(--ink);font:700 1.15rem var(--display);padding:12px 10px;text-align:left;border:2px solid transparent;border-bottom:0}.studio-steps button[aria-selected="true"]{background:var(--ink);color:var(--paper)}.studio-next{width:100%;margin-top:16px;justify-content:space-between}.studio-back{background:transparent;color:var(--ink);font:inherit;text-decoration:underline;margin:0 0 22px;padding:0}.scene-controls{gap:12px}.scene-controls h3{margin-bottom:4px}.scene-controls p{margin-bottom:0}.scene-suggestions button{font-size:.75rem}.scene-controls .small-note{font-size:.73rem}.studio-layout .canvas-wrap{align-self:start}@media(min-width:1001px){.studio-layout .canvas-wrap{position:sticky;top:24px}}

.affiliation-notice{display:flex;align-items:center;justify-content:space-between;gap:12px 28px;width:100%;max-width:none;margin:0;padding:10px 5%;background:#f5e6bf;border-bottom:1px solid var(--ink);font-size:.9rem;line-height:1.5}.affiliation-notice p{flex:1;min-width:0;max-width:105ch;margin:0}.affiliation-notice>a{flex-shrink:0;white-space:nowrap}@media(max-width:650px){.affiliation-notice{flex-wrap:wrap;gap:6px}.affiliation-notice p{flex-basis:100%}.affiliation-notice>a{margin-left:auto}}.affiliation-notice a,.token-risk a{text-decoration:underline}.token-risk,.token-affiliation{font-size:.9rem;line-height:1.6;border-top:1px solid var(--ink);padding-top:16px}footer .footer-affiliation{flex-basis:100%;max-width:100ch;font-size:.85rem;line-height:1.6;margin:8px 0 0}.legal-page{max-width:850px;padding:40px 6% 70px;margin:auto}.legal-page h1{font-size:clamp(38px,7vw,68px);line-height:1}.legal-page h2{font-size:30px;margin:32px 0 12px}.legal-page p,.legal-page li{font-size:1rem;line-height:1.7}.legal-page a{text-decoration:underline}.legal-page ul{padding-left:22px}

.header-tools{display:flex;align-items:center;gap:10px;flex-shrink:0}.header .header-tools .social-links{margin:0;gap:8px}.header-tools .sound-toggle{margin:0;white-space:nowrap}@media(max-width:720px){.header-tools{margin-left:auto;gap:8px}}

.header-tools .music-toggle{white-space:nowrap}.music-toggle[aria-pressed="true"]{background:var(--green);color:var(--paper)}@media(max-width:480px){.header{flex-wrap:wrap}.header-tools{width:100%;justify-content:flex-end;margin-left:0}}

.bell-corner{max-width:520px;gap:20px}.bell-corner #ring-bell{min-height:96px;gap:14px;font-size:25px}.boxing-bell-icon{width:96px;height:96px;flex-shrink:0;transform-origin:50% 75%;transition:transform .15s ease}.bell-corner #ring-bell:hover .boxing-bell-icon{transform:rotate(-5deg)}.bell-corner #ring-bell:active .boxing-bell-icon{transform:rotate(8deg) scale(.95)}.bell-corner p{font-size:13px}@media(max-width:480px){.bell-corner{gap:12px;flex-wrap:wrap}.bell-corner #ring-bell{font-size:23px;min-height:80px}.boxing-bell-icon{width:80px;height:80px}.bell-corner p{max-width:30ch}}

.header .header-tools{display:flex;align-items:center;flex-wrap:nowrap;gap:8px}.header .header-tools .social-links{display:flex;flex-wrap:nowrap;width:auto;padding:0;border:0;margin:0;flex:0 0 auto}.header .header-tools .social-icon{width:44px;height:44px}.header .header-tools .sound-toggle{height:44px;margin:0;flex-shrink:0}


/* Game previews use the playable table renderer and the existing game UI. */
.game-display { gap: 18px; padding-block: 22px; min-height: 280px; }
.game-display .display-word { font-size: clamp(42px,4.5vw,68px); flex: 1; min-width: 0; }
.arcade-preview { width: 48%; flex-shrink: 0; border: 3px solid var(--ink); background: var(--green); margin: 0; position: relative; overflow: hidden; }
.target-preview, .counter-preview { aspect-ratio: 1 / 1; }
.preview-art { width: 100%; height: 100%; object-fit: cover; opacity: .58; }
.preview-hit { position: absolute; top: 32%; left: 48%; width: 64px; height: 64px; border-radius: 50%; background: var(--gold); color: var(--ink); border: 4px solid var(--paper); outline: 2px solid var(--ink); display: grid; place-items: center; font: 800 26px var(--display); }
.preview-game-label { position: absolute; bottom: 0; left: 0; right: 0; background: var(--ink); color: var(--paper); padding: 8px; text-align: center; font-size: 12px; }
.preview-cue { position: absolute; top: 32%; left: 5%; right: 5%; background: var(--gold); color: var(--ink); text-align: center; padding: 10px 3px; font: 800 clamp(18px,2vw,28px) var(--display); }
.preview-controls { position: absolute; bottom: 8px; left: 6px; right: 6px; display: grid; grid-template-columns: 1fr 1.6fr 1fr; gap: 3px; font: 700 16px var(--display); text-align: center; }
.preview-controls span { padding: 7px 2px; background: var(--ink); color: var(--paper); }
.preview-controls span:nth-child(2) { background: var(--gold); color: var(--ink); }
.table-preview { width: min(43%,175px); }
.table-preview canvas { display: block; width: 100%; height: auto; }
.table-preview figcaption { background: var(--ink); color: var(--paper); text-align: center; padding: 6px; font-size: 12px; }
.daily-ticket { grid-template-columns: 180px 1fr 240px; }
.combo-preview { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 8px; background: var(--red-deep); border: 2px solid var(--paper); }
.combo-preview > span { display: grid; place-items: center; padding: 10px 3px; background: var(--ink); border: 1px solid var(--gold); font: 700 18px var(--display); color: var(--paper); }
.combo-preview small { font: 12px var(--body); padding-bottom: 7px; }
.combo-preview > .lit { background: var(--gold); color: var(--ink); }
@media(max-width:1100px) {
  .daily-ticket { grid-template-columns: 150px 1fr; }
  .game-display .display-word { font-size: clamp(32px,4.6vw,50px); }
  .preview-hit { width: 48px; height: 48px; font-size: 22px; left: 40%; }
}
@media(max-width:760px) {
  .game-display .display-word { font-size: clamp(38px,8vw,60px); }
  .game-display { min-height: 220px; }
}
@media(max-width:500px) {
  .daily-ticket { grid-template-columns: 1fr; }
  .combo-preview { width: 180px; }
  .daily-action { grid-column: 1; }
}

.defense-card{margin-top:28px;background:var(--green);color:var(--paper)}.defense-card-layout{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}.defense-card h3{font:800 clamp(38px,5vw,70px)/.95 var(--display);margin:0 0 20px}.defense-card p{font-size:15px;line-height:1.7}.defense-preview{margin:0;border:3px solid var(--ink)}.defense-preview canvas{display:block;width:100%;height:auto}.defense-preview figcaption{padding:8px;text-align:center;font-size:12px;background:var(--ink)}.defense-dialog{width:min(1200px,calc(100% - 24px));max-height:94dvh}.defense-layout{display:grid;grid-template-columns:minmax(0,1fr) 245px;gap:24px;align-items:start}#defense-canvas{width:100%;height:auto;display:block;touch-action:none;border:3px solid var(--ink)}.defense-hud{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.defense-hud>div{padding:10px;background:var(--green);color:var(--paper);font-size:12px}.defense-hud strong{display:block;font:800 27px var(--display)}.defense-controls{display:grid;gap:10px}.defense-controls button,.defense-controls select{min-height:44px;padding:10px;background:var(--paper);color:var(--ink);border:1px solid var(--ink);font:inherit;font-size:13px}.defense-controls .button.gold{background:var(--gold);justify-content:center}.defender-shop{display:grid;gap:6px}.defender-shop button[aria-pressed=true]{background:var(--red);color:var(--paper)}.defense-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.defense-controls p{margin:0;font-size:12px;line-height:1.6}#defense-status{border-top:1px solid var(--line);padding-top:10px}.defense-card[hidden]{display:none}@media(max-width:760px){.defense-layout,.defense-card-layout{grid-template-columns:1fr}.defender-shop{grid-template-columns:repeat(3,1fr)}.defense-dialog{padding:16px}.defense-dialog .dialog-header h2{font-size:34px}.defense-hud{gap:5px}.defense-hud>div{padding:7px}.defense-controls{gap:12px}}

.fight-card{padding:28px;border:4px double var(--ink);background:#e4c78c;margin-bottom:28px}.fight-card[hidden],.fight-round-label[hidden]{display:none}.fight-card h3{font:800 clamp(32px,4vw,52px)/1 var(--display);margin:0 0 12px}.fight-card p{font-size:14px;line-height:1.6}.fight-rounds{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0;margin:24px 0}.fight-rounds button{width:100%;height:100%;padding:14px;text-align:left;font:700 19px var(--display);border:1px solid var(--ink);background:var(--paper);color:var(--ink)}.fight-rounds button.complete{background:var(--green);color:var(--paper)}.fight-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.fight-actions p{margin:0}.fight-card .small-note{margin:18px 0 0;font-size:12px}.fight-round-label{font:700 17px var(--display);border-bottom:1px solid currentColor;padding-bottom:10px;margin:0 0 14px}.daily-ticket>.fight-round-label{grid-column:1/-1}.fight-actions .text-link{background:transparent}@media(max-width:700px){.fight-rounds{grid-template-columns:repeat(2,minmax(0,1fr))}.fight-card{padding:20px}}

.defense-map{position:relative;min-width:0}.defense-spots{position:absolute;inset:3px;pointer-events:none}.defense-spot{position:absolute;transform:translate(-50%,-50%);width:8%;aspect-ratio:1;min-width:26px;padding:0;border:2px solid transparent;border-radius:50%;background:transparent;pointer-events:auto;touch-action:manipulation}.defense-spot:hover:not(:disabled){border-color:#f3dfb0;background:#f3dfb022}.defense-spot:focus-visible{outline:3px solid #fff0bd;outline-offset:3px}.defense-spot:disabled{cursor:default;opacity:1}

/* Mobile audit: keep game controls usable without sacrificing the fight-poster style. */
select,input,textarea{font-size:1rem}
textarea:focus-visible,select:focus-visible{outline:3px solid #3384bf;outline-offset:4px}
dialog{overscroll-behavior:contain;max-height:calc(100dvh - 24px)}
.icon-button{min-width:44px;min-height:44px;flex-shrink:0}
.scene-suggestions button,.scene-actions button,.studio-back{min-height:44px;font-size:.875rem}
.scene-controls .small-note,.defense-controls p,.leaderboard-note,.fight-card .small-note{font-size:.875rem}
.scoreboard,.defense-hud,.leaderboard-table{font-variant-numeric:tabular-nums}
.defense-spot{min-width:44px;min-height:44px}
@media(max-width:760px){
 dialog,.defense-dialog{width:calc(100% - 16px);max-width:none;max-height:calc(100dvh - 16px);padding:16px;margin:auto}
 .dialog-header{gap:12px;align-items:start}
 .dialog-header h2{line-height:1.05}
 .game-setup{gap:10px 18px;margin:12px 0}
 .game-setup label{min-height:44px;display:flex;align-items:center;gap:8px}
 .dialog-bottom p{font-size:.875rem}
 .dialog-bottom .button{min-height:48px}
 .game-dialog-playing .game-setup,.game-dialog-playing #record-note,.game-dialog-playing #game-instructions{display:none}
 .game-dialog-playing .game-arena{height:clamp(180px,36dvh,280px)}
 .defense-dialog .dialog-header .section-kicker{display:none}
 #defense-instructions{font-size:.875rem;margin:10px 0 14px}
 .defense-layout{display:flex;flex-direction:column;gap:12px}
 .defense-controls{display:contents}
 .defender-shop{order:-2;width:100%}
 .defense-map{order:-1;width:100%}
 .defense-controls>*{width:100%}
 #defense-wave-start{order:0}
 .defense-controls>.defense-actions{order:1}
 #defense-selection{order:2}
 .defense-controls>.small-note,#defense-status,#defense-restart{order:3}
 .defense-spot{border-color:#f3dfb044}
 .defense-controls button{font-size:.875rem}
 .defense-hud strong{font-size:24px}
 .game-bottom{flex-wrap:wrap}
 .scene-controls{padding:18px}
 .studio-layout .canvas-wrap{width:100%;max-width:340px;justify-self:center}
 .header-tools .sound-toggle{font-size:.875rem}
 .mobile-dock{padding-inline:max(8px,env(safe-area-inset-left)) max(8px,env(safe-area-inset-right))}
 body{padding-bottom:calc(78px + env(safe-area-inset-bottom))}
}
@media(max-width:380px){
 .hero h1{font-size:clamp(60px,19vw,72px)}
 .hero-actions{gap:16px}
 .game-card{padding:18px}
 .game-display .display-word{font-size:36px;line-height:.95}
 .fight-rounds button{font-size:18px;padding:12px 9px}
}
@media(max-width:760px){.defense-controls>.defense-actions:has(#defense-pause){order:0}.defense-dialog.defense-playing #defense-instructions{display:none}}
@media(max-width:700px) and (min-height:550px){
 .table-dialog .dialog-header{margin-bottom:10px}
 .table-dialog .dialog-header .section-kicker{display:none}
 .table-layout{display:flex;flex-direction:column;gap:10px}
 .table-sidebar{display:contents}
 .table-sidebar .scoreboard{order:-3;width:100%;margin:0}
 .table-sidebar .scoreboard>div{padding:4px}
 .table-actions{order:-2;width:100%}
 .table-actions .button{flex:1;min-height:44px;padding:8px 12px}
 .table-playfield{order:-1;width:min(100%,calc((100dvh - 300px)*.646));align-self:center}
 .table-controls{gap:8px;margin-top:8px}
 .table-controls button{min-height:48px;padding:8px 3px;font-size:20px}
 .table-sidebar>p,.table-sidebar>label{margin:4px 0}
}

.arcade-progress {margin-top:2rem;padding:0;border:1px solid var(--ink)}
.arcade-progress summary {cursor:pointer;min-height:64px;padding:1rem 1.25rem;font:800 26px/1.2 var(--display)}
.arcade-progress summary #locker-count {display:block;font:14px/1.5 var(--body);margin-top:.35rem}
.arcade-progress .badge-grid {margin:0 1.25rem 1rem}
.arcade-progress>.small-note {margin:1rem 1.25rem}
@media(max-width:720px){.mobile-dock{grid-template-columns:repeat(3,minmax(0,1fr))}}

#locker-achievements { font: 700 24px var(--display); margin: 22px 0 16px; }
.fans { background: #2d4a3c; color: #f5e5b9; }
.fans .section-kicker { color: #efc456; }
.fan-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 26px 0; }
.fan-filters button { min-height: 44px; padding: 10px 20px; border: 1px solid #f5e5b9; background: transparent; color: inherit; font: 600 16px var(--body); }
.fan-filters button[aria-pressed=true] { background: #efc456; color: #292719; border-color: #efc456; }
.fan-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; }
.fan-card { min-width: 0; background: #eddbab; color: #292719; border: 2px solid #292719; box-shadow: 5px 5px 0 #172a22; }
.fan-art { position: relative; overflow: hidden; aspect-ratio: 1; border-bottom: 2px solid #292719; background: #913427; }
.fan-art img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fan-discipline { position: absolute; top: 14px; left: 14px; padding: 6px 12px; background: #efc456; border: 1px solid #292719; font: 700 14px var(--body); }
.fan-body { padding: 22px; }
.fan-nickname { margin: 0 0 5px; color: #913427; font: 700 17px var(--body); }
.fan-card h3 { font: 800 clamp(32px,3.6vw,52px)/1 var(--display); margin: 0 0 14px; text-wrap: balance; }
.fan-bio { font-size: 15px; min-height: 4.6em; line-height: 1.5; text-wrap: pretty; }
.fan-actions { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.fan-actions button { min-height: 44px; padding: 10px 14px; background: #292719; color: #fff4d4; font: 700 14px var(--body); border: 2px solid #292719; }
.fan-actions button[aria-pressed=true] { background: #913427; }
.fan-actions a { font-size: 14px; text-decoration: underline; text-underline-offset: 4px; padding-block: 12px; }
.fan-calendar { margin-top: 36px; padding: 26px 0; border-block: 1px solid #f5e5b970; display: flex; justify-content: space-between; align-items: center; gap: 24px; }
.fan-calendar h3 { font: 800 36px var(--display); margin: 0 0 8px; }
.fan-calendar p { margin: 0; }
.fan-calendar a { padding: 14px 20px; background: #efc456; color: #292719; font-weight: 700; }
#fans-notice { margin-top: 18px; color: #e0d0a7; }
.fans :is(button,a):focus-visible { outline: 3px solid #efc456; outline-offset: 4px; }
@media(max-width:760px) { .fan-grid { grid-template-columns: 1fr; } .fan-calendar { align-items: start; flex-direction: column; } .fan-bio { min-height: 0; } .mobile-dock { grid-template-columns: repeat(4,1fr); } }
.buy-widget { margin-bottom: 30px; padding: 24px; border: 2px solid var(--ink); background: #fff4d4; }
.buy-widget h3 { font: 800 36px var(--display); margin: 0 0 20px; }
#swap-container { width: 100%; min-width: 0; }
#swap-container iframe { display: block; border: 0; max-width: 100%; }
#buy-external { text-decoration: underline; text-underline-offset: 4px; }
.fans .section-heading > p { color: #f5e5b9; }

/* Footer keeps copy readable at intermediate widths and on phones. */
.site-footer{display:grid;grid-template-columns:64px minmax(220px,1fr) auto;align-items:center;gap:24px 32px;padding:48px 6%;}
.site-footer>.wordmark{grid-column:1;grid-row:1;margin:0;}
.site-footer>p:not(.footer-affiliation){grid-column:2;grid-row:1;max-width:32ch;margin:0;font-size:16px;line-height:1.6;}
.site-footer>.social-links{grid-column:3;grid-row:1;order:initial;margin:0;justify-self:end;width:auto;}
.site-footer>span{grid-column:2;grid-row:2;font-size:13px;line-height:1.6;}
.site-footer>a[href="/legal"]{grid-column:3;grid-row:2;white-space:nowrap;font-size:14px;text-decoration:underline;text-underline-offset:4px;}
.site-footer>.footer-affiliation{grid-column:1/-1;border-top:1px solid var(--line);padding-top:24px;margin:0;max-width:none;}
@media(max-width:600px){.site-footer{grid-template-columns:52px 1fr;gap:20px;padding:36px 6%;}.site-footer>.social-links{grid-column:1;grid-row:2;justify-self:start;}.site-footer>span{grid-column:2;grid-row:2;}.site-footer>a[href="/legal"]{grid-column:2;grid-row:3;justify-self:start;}}
.photo-composer{padding:18px;border:1px solid var(--line);margin-bottom:24px}.photo-composer label{display:block;margin:10px 0 6px;font-size:14px}.photo-composer input{max-width:100%;width:100%}.photo-composer input[type=range]{min-height:44px;accent-color:var(--red)}.photo-composer button{padding:10px 14px;background:var(--ink);color:var(--paper);margin-top:12px}.photo-composer [hidden]{display:none}
.fighter-directory{margin-top:40px;padding-top:32px;border-top:1px solid #cfbd8c80}.fighter-directory h3{font:800 clamp(32px,4vw,48px)/1 var(--display);margin:0 0 16px}.fighter-directory>p{font-size:14px;max-width:70ch}.fighter-search{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:24px 0}.fighter-search label{display:grid;gap:8px;font-size:14px}.fighter-search input,.fighter-search select{width:100%;min-width:0;min-height:48px;background:var(--paper);color:var(--ink);border:1px solid var(--ink);padding:10px;font:inherit}.fighter-count,.fans-storage-note{font-size:12px;opacity:.85}.fighter-row{display:grid;grid-template-columns:1.1fr 1fr auto;gap:24px;align-items:center;padding:22px 0;border-top:1px solid #cfbd8c70}.fighter-row h4{font:700 28px/1.1 var(--display);margin:5px 0}.fighter-row p{font-size:13px;margin:6px 0}.fighter-sport{font-size:11px;color:var(--gold)}.fighter-row summary{cursor:pointer;font-size:15px;min-height:44px;display:flex;align-items:center;text-decoration:underline;text-underline-offset:4px}.fighter-row summary::after{content:' +';margin-left:10px}.fighter-row details[open] summary::after{content:' −'}.fighter-row details a{text-decoration:underline;font-size:13px}.fighter-row button{min-height:44px;padding:10px 14px;border:1px solid var(--paper);background:transparent;color:var(--paper);font:700 13px var(--body)}.fighter-row button[aria-pressed=true]{background:var(--gold);color:var(--ink)}.roster-editor{border-top:1px solid var(--line);padding:16px 0;margin-top:16px}.roster-editor summary{cursor:pointer;font-weight:700}.roster-editor .field{margin-top:16px}
@media(max-width:600px){.fighter-row{grid-template-columns:1fr auto;gap:12px}.fighter-row details{grid-column:1/-1;grid-row:2}.fighter-row button{grid-column:2;grid-row:1}.fighter-search{grid-template-columns:1fr}.fighter-row h4{font-size:26px}}
