@font-face { font-family: Dumbledor; src: url('/fonts/dum1.woff2') format('woff2'); font-weight: 400 900; font-display: swap; }
:root {
  color-scheme: dark;
  /* Game tokens: ArcaneColors, ArcanePanel and ArcaneButtonGradients. */
  --parchment: #f0dfc0; --wood: #4a2b1e; --ink: #150700; --candle: #ffd48a;
  --magic-purple: #7357ff; --magic-blue: #58c7ff; --magic-blue-light: #c7f6ff;
  --night: #1e141f; --muted: #c9bbc8; --rule: #d7b78536;
  --font-display: Dumbledor, Georgia, serif; --font-body: 'Trebuchet MS', 'Segoe UI', sans-serif;
  --guide-surface: #e8cea0; --guide-muted: #69482f;
  --text-heading: var(--parchment); --text-body: #ded1df; --text-muted: var(--muted); --text-accent: var(--candle);
  --type-page: clamp(40px, 4.1vw, 62px); --type-section: clamp(32px, 3vw, 40px);
  --type-subheading: 26px; --type-body: 16px; --type-small: 14px; --type-label: 12px;
  --header-offset: 88px;
  --type-action: clamp(21px, 2vw, 24px); --type-code: clamp(28px, 7vw, 36px);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--header-offset); }
body { margin: 0; background: var(--night); color: var(--text-body); font: var(--type-body)/1.65 var(--font-body); }
h1, h2, h3, p, figure { margin: 0; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-underline-offset: 5px; }
a, summary { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
a:focus-visible, summary:focus-visible, [role='tabpanel']:focus-visible { outline: 3px solid var(--magic-blue); outline-offset: 5px; }
::selection { background: var(--magic-purple); color: white; }
[hidden] { display: none !important; }
.container { width: min(1280px, calc(100% - 96px)); margin-inline: auto; }
.section { padding-block: 80px; }
.app-icon { display: inline-block; width: 26px; height: 26px; flex-shrink: 0; vertical-align: middle; }
h1, h2, h3 { color: var(--text-heading); font-family: var(--font-display); font-weight: 400; line-height: 1.1; text-wrap: balance; }
h1 { font-size: var(--type-page); letter-spacing: -.025em; }
h2 { font-size: var(--type-section); line-height: 1.15; letter-spacing: -.015em; }
h3 { font-size: var(--type-subheading); line-height: 1.2; }
h4 { color: var(--text-heading); font: 700 var(--type-body)/1.5 var(--font-body); }
em { color: var(--text-accent); font-style: normal; }
.section-heading { margin-bottom: 32px; }
.skip-link { position: fixed; top: 12px; left: 12px; z-index: 20; padding: 12px 18px; transform: translateY(-200%); background: var(--parchment); color: var(--ink); }
.skip-link:focus { transform: none; }

/* Shared web counterpart of ArcanePrimaryButton: cyan frame, violet fill,
   Dumbledor label sizing and 48px minimum touch target. */
.arcane-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  height: 48px; min-height: 48px; padding: 0 24px; border: 2.8px solid transparent; border-radius: 16px;
  background: linear-gradient(180deg, #c060f0, #b040f0, #4e1b78) padding-box, linear-gradient(180deg, #58c7ff, #40b0f0, #1020c0) border-box;
  color: var(--magic-blue-light); font-family: var(--font-display); font-size: var(--type-action); line-height: 1.1;
  text-decoration: none; text-align: center; text-shadow: 0 2px 5px #000000cc, 0 0 10px #00000066; box-shadow: 0 1px 3px #0006;
  transition: filter 160ms;
}
.arcane-button:hover { filter: brightness(1.12); }
.arcane-button:focus-visible { outline-color: var(--text-accent); }
.download-button { height: auto; min-height: 68px; max-width: 100%; padding: 11px 23px; gap: 15px; }
.download-button > span { min-width: 0; }
.download-button small { display: block; margin-bottom: 4px; font: var(--type-small)/1.65 var(--font-body); letter-spacing: .02em; }
.play-icon { flex: 0 0 26px; width: 26px; height: 31px; }
.site-header { display: flex; align-items: center; gap: 36px; position: sticky; top: 0; z-index: 10; min-height: 56px; padding: 4px max(32px, calc((100% - 1280px) / 2)); border-bottom: 1px solid var(--rule); background: #1a111e; }
.rules-site-header .header-actions { margin-left: auto; }
.breadcrumbs { margin-bottom: 12px; color: var(--text-muted); font-size: var(--type-small); }
.breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 0 12px; margin: 0; padding: 0; list-style: none; }
.breadcrumbs li { display: flex; align-items: center; gap: 12px; min-width: 0; }
.breadcrumbs li + li::before { content: ''; width: 1px; height: 14px; background: currentColor; transform: skew(-20deg); }
.breadcrumbs a { display: inline-flex; align-items: center; min-height: 48px; }
.breadcrumbs a:hover { color: var(--text-accent); }
.breadcrumbs [aria-current] { color: var(--text-heading); }
.brand { position: relative; display: flex; align-items: center; width: 135px; height: 48px; flex-shrink: 0; }
.brand img { position: absolute; top: 0; width: 100%; max-width: none; filter: drop-shadow(0 2px 3px #000) drop-shadow(0 4px 10px #000) drop-shadow(0 6px 20px #000e); }
.main-nav { display: flex; gap: 28px; margin-inline: auto; }
.main-nav a { display: inline-flex; align-items: center; min-height: 48px; font-size: var(--type-body); text-decoration: none; white-space: nowrap; }
.main-nav a:hover { color: var(--text-accent); }
.header-actions { display: flex; align-items: center; gap: 24px; }
.language-nav { display: flex; align-items: center; font-size: var(--type-body); }
.language-nav a { display: grid; place-items: center; min-width: 48px; min-height: 48px; color: var(--text-muted); text-decoration: none; }
.language-nav [aria-current] { color: var(--text-accent); text-decoration: underline; text-underline-offset: 6px; }
.language-nav > span { color: var(--text-muted); }
.hero { position: relative; isolation: isolate; }
.hero::before { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, #1e141ff5, #1e141fcc 45%, #1e141f55), url('/images/presentation/tavern.webp') center 55% / cover; opacity: .65; }
.hero-inner { display: grid; grid-template-columns: 1fr 1.45fr; align-items: center; gap: 52px; padding-block: 78px 56px; }
.hero-description { max-width: 39ch; margin-top: 24px; color: var(--text-body); }
.ad-free { display: block; margin-top: 18px; color: var(--text-accent); font-size: var(--type-body); font-weight: 700; line-height: 1.3; }
.hero-actions { margin-top: 20px; }
.hero-terms { margin-top: 14px; color: var(--text-muted); font-size: var(--type-small); }
.hero-visual { min-width: 0; }
.hero-screen { position: relative; }
.hero-motion { position: absolute; inset: 8px; width: calc(100% - 16px); height: calc(100% - 16px); object-fit: cover; border-radius: 17px; opacity: 0; pointer-events: none; }
.hero-motion.is-playing { opacity: 1; }
.motion-toggle { position: absolute; top: 50%; left: 50%; z-index: 1; transform: translate(-50%, -50%); max-width: calc(100% - 36px); margin: 0; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 160ms; }
.hero-screen.controls-visible .motion-toggle, .hero-screen:focus-visible .motion-toggle, .motion-toggle:focus-visible { opacity: 1; visibility: visible; pointer-events: auto; }
.hero-screen:focus-visible { outline: 3px solid var(--magic-blue); outline-offset: 5px; }
.hero-visual img { width: 100%; }
.device-frame { --device-radius: 24px; display: block; padding: 7px; border: 1px solid #b68c62; border-radius: var(--device-radius); background: linear-gradient(130deg, #9d7650, #281b26 20%, #1a1020 80%, #9d7650); box-shadow: 0 12px 28px #0006, inset 0 0 0 3px #211622; }
.device-frame > img { width: 100%; border-radius: calc(var(--device-radius) - 7px); }
.phone-frame { --device-radius: 30px; }
.hero-facts { display: flex; align-items: center; gap: 42px; padding-block: 20px; border-top: 1px solid var(--rule); font-size: var(--type-small); }
.hero-facts > span { display: flex; align-items: center; gap: 10px; }
.hero-facts .app-icon { width: 21px; height: 21px; color: var(--text-accent); }
.parchment { --text-heading: var(--ink); --text-body: var(--wood); --text-muted: var(--guide-muted); --text-accent: var(--guide-muted); color-scheme: light; color: var(--text-body); background: var(--guide-surface); border-block: 1px solid #a77d4e; }
/* Shared typography roles apply to every public page. Parchment changes
   text colors through surface tokens; reading sizes stay constant on phones. */
.introduction { border-block: 1px solid var(--rule); background: #201526; }
.introduction-layout { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 8vw, 120px); align-items: center; }
.introduction-copy h2 { max-width: 14ch; }
.intro-description { margin-top: 20px; max-width: 44ch; }
.how-to { list-style: none; margin: 0; padding: 0; }
.how-to li { display: grid; grid-template-columns: 130px minmax(0, 1fr); gap: 24px; padding-block: 28px; border-bottom: 1px solid var(--rule); }
.how-to li:first-child { padding-top: 0; }
.how-to li:last-child { border-bottom: 0; padding-bottom: 0; }
.how-to h3 { color: var(--text-accent); }
.turn-example { display: inline-flex; flex-direction: column; gap: 12px; margin-top: 28px; }
.turn-example > p { display: flex; justify-content: space-between; gap: 24px; color: var(--text-muted); font-size: var(--type-small); }
.turn-example strong { color: var(--text-accent); font-weight: 400; }
.rule-dice { display: inline-flex; vertical-align: middle; }
.rule-die { width: 56px; height: 56px; flex-shrink: 0; }
.rules-guide-link { margin-top: 30px; }
.rules-guide-link .arcane-button { font-size: var(--type-action); }
.rules h1, .rules h2, .rules h3 { color: var(--text-heading); }
.rules-page { padding-block: 40px 80px; }
.rules-page > .container { max-width: 1160px; }
.rules-masthead { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 48px; padding-block: 20px 40px; margin-bottom: 40px; border-bottom: 1px solid var(--rule); }
.rules-intro { margin-top: 18px; }
.rules-signature { display: flex; align-items: center; }
.rules-mode-nav { display: flex; flex: 1 1 auto; align-items: center; justify-content: center; gap: 18px; min-width: 0; margin: 0; padding: 0; }
.rules-mode-link { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 4px; color: var(--text-heading); font-size: var(--type-body); text-align: center; text-decoration: none; white-space: nowrap; }
.main-nav a { color: var(--text-heading); }
.rules-mode-link:hover, .rules-mode-link[aria-selected='true'] { color: var(--text-accent); }
.rules-mode-link[aria-selected='true'] { text-decoration: underline; text-underline-offset: 6px; }
.rules-mode-section { scroll-margin-top: 16px; }
.rules-mode-section + .rules-mode-section { margin-top: 64px; padding-top: 40px; border-top: 1px solid var(--rule); }
.rules-mode-section[data-selected] { margin-top: 0; padding-top: 0; border-top: 0; }
.rules-mode-section > h2 { margin-bottom: 14px; color: var(--text-accent); }
.rules-mode-subtitle { margin: 32px 0 0; }
.rules-group { display: grid; grid-template-columns: 240px minmax(0, 1fr); column-gap: 48px; margin-top: 48px; }
.rules-group > h3 { grid-column: 1; grid-row: 1 / span 2; margin: 0; }
.rules-group > p, .rules-group > .score-list { grid-column: 2; }
.score-list { margin: 18px 0 0; padding: 0; border-top: 1px solid var(--rule); }
.score-rule { display: grid; grid-template-columns: minmax(140px, 1fr) minmax(0, 2.3fr); gap: 24px; min-width: 0; padding-block: 22px; border-bottom: 1px solid var(--rule); }
.score-rule dt { color: var(--text-heading); font-weight: 700; }
.score-rule dd { min-width: 0; margin: 0; }
.score-example, .rules-note { color: var(--text-muted); font-size: var(--type-small); }
.score-example { display: block; margin-top: 6px; font-variant-numeric: tabular-nums; }
.score-rule dt .rule-dice { display: flex; margin-top: 8px; }
.score-rule .rule-die { width: 34px; height: 34px; }
.rules-upper { padding: 28px; background: #ffffff04; border: 1px solid var(--rule); border-radius: 4px; }
.rules-upper > h3 { grid-row: 1; }
.rules-upper > p { grid-column: 1; grid-row: 2; margin-top: 16px; }
.rules-upper .score-list { grid-row: 1 / span 2; display: grid; grid-template-columns: 1fr 1fr; column-gap: 32px; margin: 0; border-top: 0; }
.rules-upper .score-rule { grid-template-columns: 1fr; gap: 6px; padding-block: 16px; }
.rules-upper .score-rule:nth-child(-n+2) { padding-top: 0; }
.rules-upper .score-rule:nth-last-child(-n+2) { border-bottom: 0; padding-bottom: 0; }
.rules-bonuses, .rules-strategy { display: grid; grid-template-columns: 240px minmax(0, 1fr); column-gap: 48px; margin-top: 40px; padding-top: 32px; border-top: 1px solid var(--rule); }
.rules-bonuses h3 { color: var(--text-accent); }
.rules-bonuses h3, .rules-strategy h3 { grid-column: 1; grid-row: 1 / span 2; }
.rules-bonuses p, .rules-strategy p { grid-column: 2; }
.rules-bonuses p + p { margin-top: 10px; }
.rules-note { margin-top: 32px; padding-left: 18px; border-left: 2px solid var(--rule); }
@media (min-width: 601px) and (max-width: 900px) {
  .rules-group, .rules-bonuses, .rules-strategy { grid-template-columns: 1fr; gap: 14px; }
  .rules-group > h3, .rules-bonuses h3, .rules-strategy h3 { grid-row: auto; }
  .rules-group > p, .rules-group > .score-list, .rules-bonuses p, .rules-strategy p { grid-column: 1; }
  .rules-upper > p, .rules-upper .score-list { grid-row: auto; }
  .rules-upper > p { margin-top: 0; }
  .rules-masthead { grid-template-columns: 1fr; gap: 28px; }
  .rules-signature { display: none; }
  .how-to li { grid-template-columns: 1fr; gap: 10px; }
}
.modes { background: #201526; border-top: 1px solid var(--rule); }
.mode-workbench { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.mode-selector { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.mode-tab { padding-inline: 11px; gap: 8px; background: linear-gradient(180deg, #c060f0, #b040f0, #4e1b78) padding-box, linear-gradient(180deg, #58c7ff, #40b0f0, #1020c0) border-box; color: var(--magic-blue-light); font-size: var(--type-action); }
.mode-label { min-width: 0; }
.mode-label small { display: block; margin-top: 6px; color: var(--magic-blue-light); font: var(--type-small)/1.65 var(--font-body); text-shadow: none; }
.mode-tab[aria-selected='true'] { background: linear-gradient(180deg, #1020c0, #0010b0, #40b0f0) padding-box, linear-gradient(180deg, #58c7ff, #40b0f0, #1020c0) border-box; }
.mode-tab[aria-selected='true'] .mode-label small { text-shadow: 0 1px 4px #000; }
.mode-panel { display: flex; flex-direction: column; gap: 22px; }
.mode-panel + .mode-panel { margin-top: 48px; }
.mode-panel[role='tabpanel'] { margin-top: 0; }
.mode-copy { display: grid; grid-template-columns: 1fr 1fr; column-gap: 28px; }
.mode-tag { grid-column: 1 / -1; justify-self: start; margin-bottom: 10px; color: var(--text-accent); font-size: var(--type-label); font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.free-tag { color: var(--magic-blue-light); }
.mode-copy h3 { grid-column: 1 / -1; margin-bottom: 12px; font-size: var(--type-subheading); }
.mode-copy p { color: var(--text-body); font-size: var(--type-body); }
.mode-copy .mode-detail { color: var(--text-body); }
.mode-demo { margin-top: 28px; padding-top: 18px; border-top: 1px solid var(--rule); color: var(--text-muted); font-size: var(--type-small); }
.together { border-top: 1px solid var(--rule); }
.together-layout { display: grid; grid-template-columns: 1.4fr 1fr; gap: 28px 64px; align-items: center; }
.together h2 { grid-column: 1 / -1; }
.play-options { align-self: center; }
.play-options article { display: grid; grid-template-columns: 28px 1fr; column-gap: 16px; padding-block: 22px; border-bottom: 1px solid var(--rule); }
.play-options article:first-child { padding-top: 0; }
.option-symbol { grid-row: 1 / 4; color: var(--text-accent); padding-top: 3px; }
.play-options h3 { font-size: var(--type-subheading); margin-bottom: 10px; }
.play-options p { color: var(--text-body); font-size: var(--type-body); }
.play-options small { grid-column: 2; display: block; margin-top: 10px; color: var(--text-accent); font-size: var(--type-small); line-height: 1.6; }
.progress { padding-block: 72px; border-block: 1px solid var(--rule); background: radial-gradient(ellipse at 35% 45%, #1e141f00 20%, #1e141fb8 100%), linear-gradient(90deg, #1e141f66, #1e141fc9 55%, #1e141fe6), url('/images/presentation/progress-hall.webp') center / cover; }
.progress-layout { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: 64px; align-items: center; }
.progress-visual { width: 100%; max-width: 320px; }
.progress-copy h2 { margin-bottom: 22px; }
.progress-features { list-style: none; margin: 22px 0 0; padding: 0; }
.progress-features li { display: flex; align-items: flex-start; gap: 16px; padding-block: 15px; border-top: 1px solid var(--rule); }
.progress-features img { width: 32px; margin-top: 2px; flex-shrink: 0; }
.progress-features h3 { color: var(--text-heading); font-size: var(--type-subheading); margin-bottom: 4px; }
.progress-features p { color: var(--text-body); font-size: var(--type-body); }
.faq { padding-top: 0; }
.introduction + .faq { padding-top: 64px; }
.faq-layout { display: grid; grid-template-columns: 1fr 1.2fr; gap: 100px; }
.faq-list { grid-column: 2; grid-row: 1; }
.closing { grid-column: 1; grid-row: 1; }
.faq-list h2 { margin-bottom: 20px; font-size: var(--type-section); }
details { border-bottom: 1px solid var(--rule); }
summary { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 66px; padding: 15px 2px; list-style: none; color: var(--parchment); cursor: pointer; font-size: var(--type-body); line-height: 1.4; }
summary::-webkit-details-marker { display: none; }
summary > span { color: var(--text-accent); font-size: var(--type-action); font-weight: 400; }
details[open] summary > span { transform: rotate(45deg); }
details > p { padding: 0 28px 22px 2px; color: var(--text-body); font-size: var(--type-body); line-height: 1.65; }
.closing-icon { display: inline-block; width: 60px; margin-right: 18px; border-radius: 12px; vertical-align: middle; }
.closing h2 { display: inline; font-size: var(--type-section); vertical-align: middle; }
.closing .download-button { display: flex; width: fit-content; margin-top: 24px; }
.closing-note { display: block; margin-top: 16px; max-width: 34ch; color: var(--text-muted); font-size: var(--type-small); }
.site-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 32px; padding-block: 30px 16px; border-top: 1px solid var(--rule); }
.site-footer.container { width: 100%; margin-inline: 0; padding-inline: max(48px, calc(50% - 640px)); }
.footer-brand { display: inline-flex; align-items: center; min-height: 48px; color: var(--text-accent); font: var(--type-subheading)/1.2 var(--font-display); text-decoration: none; }
.site-footer nav { display: flex; flex-wrap: wrap; gap: 20px; }
.site-footer nav a, .footer-bottom a { display: inline-flex; align-items: center; min-height: 48px; font-size: var(--type-small); }
.site-footer nav a[aria-current='page'] { color: var(--text-accent); }
.site-footer a:hover { color: var(--text-accent); }
.footer-bottom { display: flex; flex-basis: 100%; justify-content: flex-end; color: var(--text-muted); }
.footer-bottom a { gap: 10px; }
@media (min-width: 1600px) { .hero-inner { padding-block: 92px 72px; } }
@media (max-width: 1100px) {
  .container { width: calc(100% - 64px); } .site-footer.container { padding-inline: 32px; }
  .main-nav { gap: 18px; } .site-header { gap: 24px; } .header-actions { gap: 12px; }
  .hero-inner { gap: 32px; grid-template-columns: .9fr 1.3fr; }
  h1 { font-size: var(--type-page); } .hero-description { font-size: var(--type-body); }
  .together-layout { column-gap: 36px; } .progress-layout { gap: 36px; } .faq-layout { gap: 48px; }
}
@media (max-width: 900px) {
  .hero::before { background-image: linear-gradient(90deg, #1e141ff5, #1e141fcc 45%, #1e141f55), url('/images/presentation/tavern-mobile.webp'); }
  html:has(.main-nav) { --header-offset: 140px; }
  .site-header:has(.main-nav) { flex-wrap: wrap; }
  .site-header:has(.main-nav) > .header-actions { order: 2; margin-left: auto; }
  .main-nav { display: flex; order: 3; flex: 1 0 100%; justify-content: space-between; gap: 0; margin: 0; }
  .main-nav a { flex: 1 1 0; justify-content: center; padding-inline: 2px; font-size: var(--type-small); text-align: center; white-space: normal; }
  .header-actions { margin-left: auto; }
  html:has(.rules-site-header) { --header-offset: 140px; }
  .rules-site-header { display: grid; grid-template-columns: minmax(0, 1fr) max-content; gap: 4px 12px; padding-block: 4px; }
  .rules-site-header > .brand { grid-column: 1; grid-row: 1; }
  .rules-site-header > .header-actions { grid-column: 2; grid-row: 1; justify-self: end; margin-left: 0; }
  .rules-site-header > .rules-mode-nav { grid-column: 1 / -1; grid-row: 2; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 8px; }
  .rules-mode-link { width: 100%; padding-inline: 4px; white-space: normal; }
  .hero-inner { grid-template-columns: 1fr 1fr; gap: 28px; padding-block: 48px; }
  h1 { font-size: var(--type-page); } .hero-description { font-size: var(--type-body); } .hero-visual { align-self: center; justify-self: center; width: min(255px, 100%); }
  .hero-visual img { aspect-ratio: 648 / 1260; }
  .hero-visual .device-frame { --device-radius: 30px; }
  .hero-facts { gap: 24px; font-size: var(--type-small); } .download-button { font-size: var(--type-action); padding-inline: 17px; }
  .section { padding-block: 60px; } .introduction { padding-block: 32px; }
  .how-to { gap: 22px; } .how-to li { gap: 10px; }
  .mode-workbench { grid-template-columns: 1fr; gap: 24px; }
  .mode-selector { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .mode-tab { flex-direction: row; align-items: center; font-size: var(--type-action); gap: 8px; padding-inline: 11px; } .mode-tab .app-icon { width: 22px; height: 22px; }
  .mode-copy { display: block; } .mode-tag { display: inline-block; } .mode-copy h3 { font-size: var(--type-subheading); } .mode-detail { margin-top: 10px; }
  .together-layout { grid-template-columns: 1fr; gap: 28px; }
  .play-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; padding: 0; }
  .play-options article, .play-options article:first-child { display: block; padding-block: 18px 0; border-top: 1px solid var(--rule); border-bottom: none; }
  .option-symbol { display: block; margin-bottom: 12px; } .play-options h3 { font-size: var(--type-subheading); } .play-options p { font-size: var(--type-body); }
  .progress { padding-top: 60px; } .progress-layout { grid-template-columns: 260px minmax(0, 1fr); gap: 28px; }
  .faq { padding-top: 0; } .faq-layout { gap: 36px; }
}
@media (max-width: 600px) {
  .container { width: calc(100% - 40px); } .site-footer.container { padding-inline: 20px; } .section { padding-block: 44px; }
  .site-header { min-height: 56px; padding: 4px 20px; gap: 12px; } .brand { width: 116px; }
  .header-actions { gap: 0; }
  .hero::before { background: linear-gradient(#1e141fc9, #1e141fed), url('/images/presentation/tavern-mobile.webp') center top / auto 900px; }
  .hero-inner { grid-template-columns: 1fr; gap: 28px; padding-block: 34px 28px; }
  h1 { font-size: var(--type-page); } h2 { font-size: var(--type-section); }
  .hero-description { margin-top: 16px; max-width: 36ch; font-size: var(--type-body); } .hero-actions { margin-top: 21px; } .hero-terms { margin-top: 12px; }
  .hero-visual { justify-self: center; width: min(255px, 100%); }
  .hero-visual img { aspect-ratio: 648 / 1260; }
  .hero-facts { gap: 12px; flex-wrap: wrap; padding-block: 16px; font-size: var(--type-small); }
  .hero-facts .app-icon { display: none; }
  .introduction-layout { grid-template-columns: 1fr; gap: 36px; }
  .introduction-copy h2 { max-width: none; }
  .how-to li { grid-template-columns: 100px minmax(0, 1fr); gap: 20px; padding-block: 22px; }
  .how-to li:first-child { padding-top: 22px; border-top: 1px solid var(--rule); }
  .rules-masthead { grid-template-columns: 1fr; gap: 0; padding-block: 12px 28px; margin-bottom: 28px; }
  .rules-signature { display: none; }
  .rules-page { padding-block: 28px 48px; }
  .rules-group, .rules-bonuses, .rules-strategy { grid-template-columns: 1fr; gap: 14px; }
  .rules-group > h3, .rules-bonuses h3, .rules-strategy h3 { grid-row: auto; }
  .rules-group > p, .rules-group > .score-list, .rules-bonuses p, .rules-strategy p { grid-column: 1; }
  .rules-upper { padding: 20px; }
  .rules-upper > p, .rules-upper .score-list { grid-row: auto; }
  .rules-upper > p { margin-top: 0; }
  .rules-upper .score-list { grid-template-columns: 1fr; }
  .rules-upper .score-rule:nth-child(2) { padding-top: 16px; }
  .rules-upper .score-rule:nth-last-child(2) { border-bottom: 1px solid var(--rule); padding-bottom: 16px; }
  .score-rule { grid-template-columns: minmax(0, 1fr); gap: 5px; padding-block: 16px; }
  .score-list { margin-top: 12px; }
  html:has(.rules-site-header) { --header-offset: 192px; }
  .rules-site-header { min-height: 0; }
  .rules-site-header > .rules-mode-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .section-heading { margin-bottom: 24px; }
  .mode-workbench { grid-template-columns: 1fr; gap: 24px; }
  .mode-selector { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .mode-tab { flex-direction: row; align-items: center; font-size: var(--type-action); padding-inline: 10px; gap: 8px; }
  .mode-tab .app-icon { width: 20px; height: 20px; } .mode-label small { font-size: var(--type-small); margin-top: 5px; }
  .mode-copy h3 { font-size: var(--type-subheading); } .mode-panel { gap: 20px; } .mode-copy p { font-size: var(--type-body); }
  .mode-demo { font-size: var(--type-small); margin-top: 24px; }
  .play-options { display: block; } .play-options article, .play-options article:first-child { display: grid; padding-block: 20px; }
  .play-options article:last-child { padding-bottom: 0; } .option-symbol { margin: 0; }
  .play-options h3 { font-size: var(--type-subheading); } .play-options p { font-size: var(--type-body); }
  .progress { padding-top: 44px; background-image: radial-gradient(ellipse at 50% 65%, #1e141f00 20%, #1e141fb8 100%), linear-gradient(0deg, #1e141f66, #1e141fe6 62%), url('/images/presentation/progress-hall.webp'); } .progress-layout { display: flex; flex-direction: column-reverse; align-items: stretch; gap: 28px; }
  .progress-visual { align-self: center; width: min(280px, 100%); }
  .progress-features li { gap: 12px; } .progress-features h3 { font-size: var(--type-subheading); } .progress-features p { font-size: var(--type-body); }
  .faq { padding-top: 0; } .faq-layout { display: flex; flex-direction: column; gap: 40px; }
  .faq-list h2 { font-size: var(--type-section); } summary { font-size: var(--type-body); }
  .closing { border-top: 1px solid var(--rule); padding-top: 28px; } .closing h2 { font-size: var(--type-section); }
  .closing-icon { width: 53px; margin-right: 14px; }
  .site-footer { gap: 20px; padding-block: 20px 12px; } .site-footer > .footer-brand { margin-inline: auto; } .site-footer nav { flex-basis: 100%; justify-content: center; gap: 6px 20px; text-align: center; } .footer-bottom { justify-content: center; }
}
@media (min-width: 901px) {
  .site-footer { display: grid; grid-template-columns: minmax(0, 1fr) max-content minmax(0, 1fr); justify-content: initial; }
  .site-footer > .footer-brand { grid-column: 1; }
  .site-footer > nav { grid-column: 2; justify-self: center; }
  .site-footer > .footer-bottom { grid-column: 3; justify-self: end; flex-basis: auto; }
  .site-footer > .website-privacy-note { grid-column: 1 / -1; grid-row: 2; }
}
.website-privacy-note { flex-basis: 100%; text-align: center; color: var(--text-muted); font-size: var(--type-small); line-height: 1.65; }
.website-privacy-note a { display: inline-flex; align-items: center; min-height: 48px; }
@media (max-width: 400px) {
  .mode-selector { grid-template-columns: 1fr; }
  .mode-tab { gap: 6px; padding-inline: 7px; font-size: var(--type-action); } .mode-tab .app-icon { width: 17px; height: 17px; } .mode-label small { font-size: var(--type-small); }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; } *, *::before, *::after { transition: none !important; }
}

/* Legal pages use the same shared web shell and visual language as the home page. */
.invite-hero-content { display: grid; justify-items: center; padding-block: clamp(40px, 7vh, 76px); }
.invite-card { width: min(100%, 700px); padding: clamp(28px, 5vw, 52px); border: 1px solid var(--rule); border-top-color: #ad895a; border-radius: 24px; background: #302031; box-shadow: 0 12px 28px #0004; text-align: center; }
.invite-app-icon { width: 76px; margin: 0 auto 20px; border: 1px solid #ad895a; border-radius: 18px; box-shadow: 0 8px 20px #0005; }
.invite-card h1 { margin-bottom: 16px; color: var(--text-heading); font-size: var(--type-page); }
.invite-copy { max-width: 52ch; margin-inline: auto; color: var(--text-body); }
.invite-code-label { margin: 30px 0 10px; color: var(--text-accent); font-size: var(--type-body); font-weight: 700; }
.invite-code { width: min(100%, 340px); padding-inline: 18px; font-size: var(--type-action); letter-spacing: .13em; }
.invite-code:disabled { border-color: #967052; background: #3b2b3d; color: var(--text-muted); cursor: not-allowed; text-shadow: none; }
.invite-code:disabled:hover { filter: none; }
.invite-feedback { min-height: 24px; margin-top: 8px; color: var(--text-accent); font-size: var(--type-small); }
.invite-install { max-width: 54ch; margin: 16px auto 0; color: var(--text-muted); font-size: var(--type-small); line-height: 1.65; }
.invite-download { width: fit-content; max-width: 100%; margin: 18px auto 0; }
.invite-manual { max-width: 54ch; margin: 26px auto 0; padding-top: 20px; border-top: 1px solid var(--rule); color: var(--text-muted); font-size: var(--type-small); line-height: 1.65; }
.legal-hero { position: relative; isolation: isolate; }
.legal-hero::before { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, #1e141ff5, #1e141fcc 55%, #1e141f88), url('/images/presentation/tavern.webp') center 55% / cover; opacity: .65; }
.legal-hero-content { padding-block: 60px 42px; }
.legal-hero-content h1 { max-width: 28ch; }
.legal-header-nav { position: absolute; left: 50%; display: flex; align-items: center; gap: 24px; margin: 0; transform: translateX(-50%); }
.invite-site-header .header-actions { margin-left: auto; }
.legal-header-nav a { display: inline-flex; align-items: center; min-height: 48px; color: var(--text-heading); font-size: var(--type-body); text-decoration: none; white-space: nowrap; }
.legal-header-nav a:hover { color: var(--text-accent); }
.legal-meta { margin-top: 16px; color: var(--text-muted); font-size: var(--type-small); }
.legal-main { width: min(960px, calc(100% - 96px)); margin: 0 auto; padding-block: 48px 80px; }
.legal-section { scroll-margin-top: 16px; }
.legal-document { padding: clamp(26px, 5vw, 48px); border: 1px solid var(--rule); border-top-color: #ad895a; border-radius: 24px; background: #302031; box-shadow: 0 12px 28px #0004; }
.legal-section .legal-document > .legal-document-title { margin: 0; padding: 0; border: 0; color: var(--text-heading); font-size: var(--type-section); }
.legal-section .legal-document h3 { margin: 34px 0 12px; padding-top: 25px; border-top: 1px solid var(--rule); color: var(--text-heading); font-size: var(--type-subheading); }
.legal-section .legal-document h4 { margin: 25px 0 8px; color: var(--text-heading); font-size: var(--type-body); }
.legal-document p, .legal-document li { color: var(--text-body); font-size: var(--type-body); line-height: 1.65; }
.legal-document p + p { margin-top: 16px; }
.legal-document h2 { margin: 34px 0 12px; padding-top: 25px; border-top: 1px solid var(--rule); color: var(--text-heading); font-size: var(--type-section); }
.legal-document h3 { margin: 25px 0 8px; color: var(--text-heading); font-size: var(--type-subheading); }
.legal-document ul, .legal-document ol { margin: 10px 0 20px; padding-left: 25px; }
.legal-document li + li { margin-top: 6px; }
.legal-document a { color: var(--magic-blue-light); font-weight: 700; text-decoration-thickness: 1px; }
.legal-document a:hover { color: var(--text-accent); }
@media (max-width: 900px) {
  .legal-hero::before { background-image: linear-gradient(90deg, #1e141ff5, #1e141fcc 55%, #1e141f88), url('/images/presentation/tavern-mobile.webp'); }
  .legal-header-nav { gap: 16px; }
  .legal-header-nav a { font-size: var(--type-body); }
}
@media (max-width: 600px) {
  .invite-hero-content { padding-block: 36px; }
  .invite-card { padding: 26px 20px; border-radius: 20px; }
  .invite-app-icon { width: 64px; margin-bottom: 16px; border-radius: 15px; }
  .invite-card h1 { font-size: var(--type-page); }
  .invite-code-label { margin-top: 24px; }
  .invite-download { width: 100%; justify-content: center; padding-inline: 14px; font-size: var(--type-action); }
  .invite-manual { margin-top: 22px; padding-top: 17px; }
  .legal-hero-content { padding-block: 38px 28px; }
  .legal-header-nav { gap: 0 10px; }
  .legal-header-nav a { font-size: var(--type-body); }
  .legal-meta { margin-top: 12px; }
  .legal-main { width: calc(100% - 40px); padding-block: 32px 52px; }
  .legal-document { padding: 24px 20px; border-radius: 20px; }
  .legal-document h2 { margin-top: 28px; padding-top: 20px; }
  .legal-document h3 { font-size: var(--type-subheading); }
  .legal-section .legal-document > .legal-document-title { margin: 0; padding: 0; border: 0; }
  .legal-section .legal-document h3 { margin-top: 28px; padding-top: 20px; }
  .legal-section .legal-document h4 { font-size: var(--type-body); }
}
@media (max-width: 480px) {
  .legal-site-header { flex-wrap: wrap; }
  .legal-site-header .legal-header-nav { position: static; flex-basis: 100%; justify-content: center; gap: 0 14px; margin: 4px 0 0; transform: none; }
}

/* Text-only mode controls keep their differences visible before selection. */
.mode-selector .mode-label { display: block; width: 100%; text-align: center; }
.mode-label small { color: var(--magic-blue-light); }

@media (max-width: 900px) {
  .hero-motion { border-radius: 23px; }
}
@media (max-width: 600px) {
  .hero-inner { gap: 0; padding-block: 24px 32px; }
  .hero-copy { display: contents; }
  .hero-copy h1 { order: 1; }
  .hero-description { order: 2; margin-top: 14px; max-width: none; }
  .hero-visual { order: 3; width: 100%; margin-top: 22px; }
  .hero-visual img { aspect-ratio: 16 / 9; }
  .hero-visual .device-frame { --device-radius: 24px; }
  .hero-motion { border-radius: 17px; }
  .ad-free { order: 5; margin-top: 8px; text-align: center; }
  .hero-actions { order: 6; justify-self: center; margin-top: 14px; }
  .hero-terms { order: 7; text-align: center; }
  .mode-selector { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mode-label small { margin-top: 5px; }
  .introduction + .faq { padding-top: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-motion { display: none; }
}
