/* Page layout for the Solvable site. Colours, type and spacing come from tokens.css. */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--space-6); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0; background: var(--paper); color: var(--ink);
  font-family: var(--font-serif); font-size: 17px; line-height: 28px;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
a { color: var(--pen); text-underline-offset: 3px; }
a:focus-visible { outline: 2px solid var(--pen); outline-offset: 2px; }
h1, h2, h3, p { margin: 0; }

.wrap { width: 100%; max-width: 1104px; margin: 0 auto; padding: 0 var(--space-6); }
@media (max-width: 600px) { .wrap { padding: 0 var(--space-4); } }

.skip { position: absolute; left: var(--space-4); top: -100px; z-index: 10; padding: var(--space-2) var(--space-4); background: var(--paper-raised); border: 2px solid var(--pen); border-radius: var(--radius-md); font-family: var(--font-display); font-weight: 600; }
.skip:focus { top: var(--space-4); }

/* Type styles from tokens.json */
.display { font-family: var(--font-display); font-size: 56px; line-height: 60px; font-weight: 700; letter-spacing: -0.02em; text-wrap: balance; }
.title { font-family: var(--font-display); font-size: 32px; line-height: 38px; font-weight: 700; letter-spacing: -0.01em; text-wrap: balance; }
.heading { font-family: var(--font-display); font-size: 22px; line-height: 28px; font-weight: 600; }
@media (max-width: 600px) {
  .display { font-size: 40px; line-height: 44px; }
  .title { font-size: 28px; line-height: 34px; }
}

/* Header + hero on graph paper */
.hero-band { border-bottom: 1.5px solid var(--grid); }
.sv-header { padding: var(--space-6) 0; }
@media (max-width: 720px) {
  .sv-header-nav > a:not(.sv-btn) { display: none; }
  .sv-header .sv-logo { height: 28px; width: auto; }
}
.hero { padding: var(--space-12) var(--space-6) calc(var(--space-12) * 2); display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-6); }
@media (max-width: 600px) { .hero { padding: var(--space-6) var(--space-4) var(--space-12); } }
.hero .display { max-width: 14ch; }
.lede { font-size: 20px; line-height: 32px; max-width: 34ch; background: var(--paper); box-shadow: 0 0 0 8px var(--paper); }
.hero-actions { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; margin-top: var(--space-2); position: relative; }
.hero-note { position: absolute; left: calc(100% + 4px); top: -30px; white-space: nowrap; }
/* Arrow first, curving down-left onto the button. */
.hero-note.sv-note--right .sv-note-arrow { transform: none; }
@media (max-width: 600px) { .hero-note { display: none; } }

/* Sections */
.section { padding: var(--space-12) 0; }
.section + .section { border-top: 1.5px solid var(--grid); }
.section .wrap > .sv-label { display: flex; margin-bottom: var(--space-2); }
.section .title { margin-bottom: var(--space-4); max-width: 24ch; }
.intro { color: var(--ink-muted); max-width: 60ch; margin-bottom: var(--space-6); }

/* Opening scene */
.scene-grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: var(--space-12); align-items: center; }
@media (max-width: 800px) { .scene-grid { grid-template-columns: 1fr; gap: var(--space-6); } }
.prose { display: flex; flex-direction: column; gap: var(--space-4); max-width: 62ch; font-size: 19px; line-height: 30px; }
.stat-card { padding: var(--space-6); background: var(--paper-raised); border: 1.5px solid var(--grid); border-radius: var(--radius-md); }

/* Read / Talk / Explore */
.steps-section { padding-top: 0; }
.section.steps-section { border-top: 0; }
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); }
@media (max-width: 800px) { .steps { grid-template-columns: 1fr; gap: var(--space-4); } }
.step { display: grid; grid-template-columns: auto 1fr; column-gap: var(--space-4); row-gap: var(--space-1); padding: var(--space-6); background: var(--paper-raised); border: 1.5px solid var(--grid); border-radius: var(--radius-md); }
.step-icon { grid-row: span 2; color: var(--pen); padding-top: 2px; }
.step p { font-size: 15px; line-height: 24px; color: var(--ink-muted); }

/* Season */
.part { margin-top: var(--space-12); }
.part:first-of-type { margin-top: var(--space-6); }
.part-title { font-family: var(--font-mono); font-size: 12px; line-height: 16px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-muted); padding-bottom: var(--space-2); border-bottom: 1.5px solid var(--grid); margin-bottom: var(--space-4); }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: var(--space-4); }
.sv-session--next { grid-column: 1 / -1; }
@media (min-width: 900px) { .sv-session--next .sv-session-title { font-size: 28px; line-height: 34px; } }
.sv-session-reading { flex-wrap: nowrap; }

/* How it works */
.how-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-12); margin-top: var(--space-6); }
@media (max-width: 800px) { .how-grid { grid-template-columns: 1fr; gap: var(--space-6); } }
.facts { margin: 0; display: grid; gap: 0; }
.fact { display: grid; grid-template-columns: 96px 1fr; gap: var(--space-4); padding: var(--space-4) 0; border-top: 1.5px solid var(--grid); align-items: baseline; }
.fact:last-child { border-bottom: 1.5px solid var(--grid); }
.fact dd { margin: 0; }
.agenda { padding: var(--space-6); background: var(--paper-raised); border: 1.5px solid var(--grid); border-radius: var(--radius-md); }
.agenda ol { list-style: none; margin: var(--space-4) 0 var(--space-6); padding: 0; display: grid; gap: var(--space-2); }
.agenda li { display: grid; grid-template-columns: 72px 1fr; gap: var(--space-4); font-size: 15px; line-height: 24px; }
.agenda-time { font-family: var(--font-mono); font-size: 15px; color: var(--ink-muted); font-variant-numeric: tabular-nums; }
.who-title { padding-top: var(--space-6); border-top: 1.5px solid var(--grid); margin-bottom: var(--space-2); }
.agenda p { font-size: 15px; line-height: 24px; }

/* FAQ */
.faq-list { max-width: 720px; margin-top: var(--space-6); }

/* Join */
.join-card { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); padding: var(--space-12) var(--space-6); background: var(--pen-soft); border: 1.5px solid var(--pen); border-radius: var(--radius-md); }
@media (min-width: 800px) { .join-card { padding: var(--space-12); } }
.join-card .title { margin: 0; }
.join-card p { max-width: 52ch; }
.join-actions { display: flex; align-items: center; gap: var(--space-6); flex-wrap: wrap; margin-top: var(--space-2); }

/* Footer */
.footer { border-top: 1.5px solid var(--grid); padding: var(--space-12) 0; color: var(--ink-muted); font-size: 15px; line-height: 24px; }
.footer-inner { display: grid; grid-template-columns: auto 1fr auto; gap: var(--space-4) var(--space-6); align-items: center; }
.footer-links { display: flex; gap: var(--space-6); font-family: var(--font-display); font-weight: 600; }
.about { grid-column: 1 / -1; max-width: 70ch; }
@media (max-width: 600px) { .footer-inner { grid-template-columns: 1fr; } }
