/* Landing page: v4 editor preview, public challenge table and learning flow. */
.hero { padding: var(--s8) 0 var(--s7); background: radial-gradient(55% 80% at 80% 35%, var(--pyblue-wash), transparent 62%); }
.hero-inner { display: grid; grid-template-columns: 1.05fr 1fr; gap: var(--s7); align-items: center; }
.hero-inner > * { min-width: 0; }
.hero-sub { color: var(--muted); font-size: 1.05rem; max-width: 56ch; margin: var(--s4) 0 var(--s5); }
.hero-ctas { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s4); }
.hero-proof { display: flex; gap: var(--s4); flex-wrap: wrap; margin-top: var(--s5); font-size: .82rem; color: var(--soft); }
.hero-proof strong { color: var(--text); font-weight: 600; }
.ed { min-width: 0; max-width: 100%; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--panel); overflow: hidden; }
.ed-bar { display: flex; align-items: center; justify-content: space-between; height: 40px; padding: 0 var(--s4); border-bottom: 1px solid var(--border); font: 500 .78rem var(--font-mono); color: var(--soft); }
.ed-bar b { color: var(--text); font-weight: 600; }
.ed-bar .st { display: inline-flex; align-items: center; gap: 6px; }
.ed-bar .st::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--blue); }
.ed pre { margin: 0; padding: var(--s4) var(--s5); background: var(--code-bg); font: .8rem/1.7 var(--font-mono); color: var(--code-text); overflow-x: auto; }
.tests { padding: var(--s3) var(--s5) var(--s4); font-size: .82rem; }
.tests li { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--border-soft); color: var(--muted); }
.tests li:last-child { border: 0; }
.tests i { width: 16px; height: 16px; flex-shrink: 0; border-radius: 50%; display: grid; place-items: center; font: 700 10px var(--font-mono); font-style: normal; }
.tests .ok i { background: var(--blue-soft); color: var(--blue); }
.tests .bad i { background: var(--orange-soft); color: var(--orange); }
.tests .bad { color: var(--text); }
.tests code { font: .78rem var(--font-mono); color: var(--text); overflow-wrap: anywhere; min-width: 0; flex: 1; }
.test-actual { margin-left: auto; color: var(--soft); }
.ed-foot { display: flex; flex-wrap: wrap; gap: var(--s2); align-items: center; justify-content: space-between; padding: var(--s3) var(--s5); border-top: 1px solid var(--border); font-size: .8rem; color: var(--soft); }
.ed-foot b { color: var(--text); }
.board-row { grid-template-columns: 48px minmax(0, 1.6fr) 190px 90px 70px 150px; }
.board-num, .board-xp { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: .85rem; color: var(--soft); }
.board-title { font-size: .95rem; font-weight: 600; color: var(--text-strong); }
.board-title small { display: block; font-size: .8rem; font-weight: 400; color: var(--muted); margin-top: 2px; }
.board-track { color: var(--muted); font-size: .85rem; }
.board-xp, .board-action { text-align: right; }
.board-row.soon .board-title, .board-row.soon .board-track, .board-row.soon .board-xp { opacity: .6; }
.board-soon { font: 600 .72rem var(--font-mono); color: var(--soft); border: 1px dashed var(--border-strong); border-radius: 999px; padding: 4px 10px; white-space: nowrap; }
.board-foot { display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--s4); margin-top: var(--s4); font-size: .85rem; color: var(--soft); }
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s6); padding: var(--s6) 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.step .num { color: var(--blue); font-size: .85rem; margin-bottom: var(--s2); }
.step h3 { margin-bottom: var(--s2); }
.step p { color: var(--muted); font-size: .92rem; }
.quote { border-left: 2px solid var(--blue-deep); padding-left: var(--s5); color: var(--text-strong); font-size: 1.15rem; font-weight: 600; margin-top: var(--s6); max-width: 720px; }
.quote p { margin-bottom: var(--s4); }
.quote cite { font-size: .85rem; color: var(--soft); font-style: normal; font-weight: 400; }
.cta { display: grid; grid-template-columns: 1.2fr .8fr; gap: var(--s6); padding: var(--s6); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--panel); align-items: center; }
.cta.cta-single { grid-template-columns: minmax(0, 1fr); }
.cta h2 { margin-bottom: var(--s4); }
.cta p { color: var(--muted); font-size: .95rem; margin-bottom: var(--s5); max-width: 56ch; }
.cta .cta-note { margin: var(--s3) 0 0; font-size: .8rem; color: var(--soft); }
/* v5 additions: audience doors, live hero editor, path, ladder/community duo, quotes, FAQ. */
.hero-doors { display: flex; flex-wrap: wrap; gap: var(--s2) var(--s5); margin-top: var(--s5); font-size: .85rem; font-weight: 500; }
.hero-doors a { color: var(--blue); transition: color .15s; }
.hero-doors a:hover { color: var(--text-strong); }
.ed-mount { background: var(--code-bg); min-height: 214px; }
.ed-mount textarea { width: 100%; min-height: 214px; padding: var(--s4) var(--s5); background: var(--code-bg); color: var(--code-text); border: 0; font: .8rem/1.7 var(--font-mono); }
.ed-mount pre { cursor: text; min-height: 214px; }
.ed-mount pre:focus-visible { outline-offset: -2px; }
.ed-mount .cm-editor { height: 214px; }
.ed-bar .st[data-state="idle"]::before { background: var(--soft); }
.ed-bar .st[data-state="loading"]::before, .ed-bar .st[data-state="running"]::before { background: var(--accent-fill); }
.ed-bar .st[data-state="error"]::before { background: var(--orange); }
.ed-actions { display: flex; gap: var(--s2); }
.hero-out { margin: 0; padding: var(--s3) var(--s5); border-top: 1px solid var(--border); background: var(--code-bg); font: .78rem/1.6 var(--font-mono); color: var(--code-text); white-space: pre-wrap; overflow-wrap: anywhere; max-height: 120px; overflow: auto; }
.hero-out .err { color: var(--orange); }
.hero-out .soft { color: var(--code-cm); }
.hero-cta { margin: 0; padding: var(--s3) var(--s5); border-top: 1px solid var(--border); font-size: .82rem; color: var(--soft); background: var(--bg-soft); }
.hero-cta a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.hero-cta.win { color: var(--text); background: var(--accent-soft); }
.hero-cta.win a { color: var(--accent); }
.path-summary { font-size: .8rem; color: var(--soft); margin-top: var(--s3); }
.level2 { margin-top: var(--s4); }
.level2 summary { cursor: pointer; list-style: none; padding: var(--s3) 0; font: 600 .85rem var(--font-sans); color: var(--muted); }
.level2 summary::-webkit-details-marker { display: none; }
.level2 summary::before { content: '▸ '; color: var(--blue); font-family: var(--font-mono); }
.level2[open] summary::before { content: '▾ '; }
.level2 .table { margin-top: var(--s2); }
.duo { display: grid; grid-template-columns: 1.1fr .9fr; gap: var(--s7); align-items: start; }
.duo h2 { margin-bottom: var(--s4); }
.duo-note { margin-top: var(--s4); font-size: .85rem; color: var(--soft); }
.ladder-row { grid-template-columns: 44px minmax(0, 1fr) 120px 90px; }
.ladder-xp, .ladder-streak { text-align: right; font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: .85rem; color: var(--text); }
.ladder-row strong { font-weight: 600; color: var(--text-strong); }
.ladder-row small { display: block; color: var(--soft); font-size: .75rem; }
.qlist li { padding: var(--s3) 0; border-bottom: 1px solid var(--border-soft); }
.qlist li:last-child { border: 0; }
.qlist a { font-weight: 600; color: var(--text-strong); transition: color .15s; }
.qlist a:hover { color: var(--accent); }
.qlist .q-meta { display: flex; gap: var(--s3); flex-wrap: wrap; margin-top: 4px; font-size: .78rem; color: var(--soft); }
.quotes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s4); }
.quotes blockquote { padding: var(--s5); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--panel); font-size: .95rem; color: var(--text); }
.quotes cite { display: block; margin-top: var(--s3); font-style: normal; font-size: .8rem; color: var(--soft); }
.faq details { border-top: 1px solid var(--border); }
.faq details:last-child { border-bottom: 1px solid var(--border); }
.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: var(--s4); padding: var(--s4) 0; font-weight: 600; color: var(--text-strong); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; color: var(--blue); font-family: var(--font-mono); flex-shrink: 0; }
.faq details[open] summary::after { content: '–'; }
.faq p { padding: 0 0 var(--s4); color: var(--muted); font-size: .95rem; max-width: 64ch; }
.faq a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.nav.scrolled #navSignup { background: var(--accent-fill); color: var(--on-accent); }
.nav.scrolled #navSignup:hover { background: var(--accent-fill-strong); }
@media (max-width: 1000px) {
 .hero-inner, .cta { grid-template-columns: minmax(0, 1fr); }
 .board-row { grid-template-columns: 40px minmax(0, 1fr) 100px 150px; }
 .board-track, .board-xp { display: none; }
 .duo, .quotes { grid-template-columns: minmax(0, 1fr); }
 .ladder-row { grid-template-columns: 36px minmax(0, 1fr) 100px 70px; }
}
@media (max-width: 640px) {
 .steps { grid-template-columns: minmax(0, 1fr); }
 .board-row { grid-template-columns: minmax(0, 1fr) auto; }
 .board-num { display: none; }
 .board-row > div:nth-child(4) { grid-column: 1; padding-top: 0; }
 .board-action { grid-column: 2; grid-row: 1 / span 2; }
 .tests, .ed pre, .ed-foot, .hero-out, .hero-cta { padding-left: var(--s4); padding-right: var(--s4); }
 .ed-foot { flex-direction: column; align-items: flex-start; }
 .ladder-row { grid-template-columns: 36px minmax(0, 1fr) 90px; }
 .ladder-streak { display: none; }
 .cta { padding: var(--s5); }
}
