/* magnord.com's landing page (ticket 119), on app.css (base, header, buttons) and the design
   system's tokens only. Lucide icons (static/lucide, ISC) where an action's icon is generally
   understood; our own orienteering icons stay ours. */

.i-download { --i: url(lucide/download.svg); } .i-trophy { --i: url(lucide/trophy.svg); }
.i-monitor { --i: url(lucide/monitor.svg); } .i-mail { --i: url(lucide/mail.svg); }
.i-laptop { --i: url(lucide/laptop.svg); } .i-scroll { --i: url(lucide/scroll-text.svg); }

.icon-btn { display: inline-flex; align-items: center; justify-content: center; width: var(--target-min); height: var(--target-min);
  border-radius: var(--radius-sm); color: var(--text); }
.icon-btn:hover { background: var(--surface-hover); color: var(--text); }

.landing main, .landing .top-in { max-width: 1120px; }
.hero { padding: var(--space-12) 0 var(--space-8); }
.landing main { padding-bottom: var(--space-12); }
.invite-line { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4); align-items: center; margin: 0; }
.invite-line a { display: inline-flex; gap: var(--space-1); align-items: center; font: 600 14px/20px var(--font-text); color: var(--accent-text); }
.hero h1 { font: 600 44px/50px var(--font-text); letter-spacing: -0.02em; margin: var(--space-3) 0 var(--space-6); max-width: 24ch; }
.hero h1 span { display: inline-block; }
.cta { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.cta .btn { height: 48px; padding: 0 var(--space-6); text-decoration: none; }
.cta .btn.primary:hover { color: var(--on-accent); }
.btn.soon { cursor: default; color: var(--text-muted); background: var(--surface-sunken); border-style: dashed; }
.btn.soon:hover { background: var(--surface-sunken); }
.sha, .dl-note { margin-top: var(--space-3); }
.dl-note + .sha { margin-top: var(--space-1); }

/* Every package (ticket 144): a native disclosure beside the button(s), its list dropping below. */
.dl-more { position: relative; }
.dl-more summary { height: 48px; padding: 0 var(--space-4); list-style: none; cursor: pointer; }
.dl-more summary::-webkit-details-marker { display: none; }
.dl-more[open] summary .icon { transform: rotate(180deg); }
.dl-more ul { position: absolute; z-index: 2; top: calc(100% + var(--space-2)); left: 0; min-width: 300px; margin: 0; padding: var(--space-2);
  list-style: none; background: var(--surface); border: var(--border-hairline) solid var(--border); border-radius: var(--radius-md); box-shadow: var(--elevation-2, var(--elevation-1)); }
.dl-more li { display: flex; flex-direction: column; gap: 2px; padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); }
.dl-more li:hover { background: var(--surface-hover); }
.dl-more li a { display: flex; gap: var(--space-2); align-items: center; color: var(--text); font-weight: 600; text-decoration: none; }
.dl-more li a:focus-visible { outline: 2px solid var(--focus, var(--accent)); outline-offset: 2px; }
.dl-more .dl-size { margin-left: auto; font-weight: 400; }
.dl-more code { margin-left: calc(24px + var(--space-2)); align-self: flex-start; font-size: 12px; }
.sha code { font-size: 12px; word-break: break-all; }

/* The shots: the first one wide, then two a row. */
.shots { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); margin-top: var(--space-8); }
.shots figure { margin: 0; position: relative; }
.shots figure:first-child, .shots figure:last-child:nth-child(even) { grid-column: 1 / -1; }
/* The shots can't be dragged out or right-clicked to save (no scripts: the right-click lands on the figure). */
.shots img { pointer-events: none; -webkit-user-drag: none; user-select: none; -webkit-user-select: none;
  display: block; width: 100%; height: auto; border-radius: var(--radius-md); background: var(--surface-sunken); box-shadow: var(--elevation-1); }
/* (no captions since 2026-10-14) */
.shots figcaption { position: absolute; left: var(--space-3); bottom: var(--space-3); padding: 2px var(--space-2); border-radius: var(--radius-xs);
  background: var(--surface); color: var(--text); font: 600 12px/16px var(--font-text); letter-spacing: .08em; text-transform: uppercase; }

.facts { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-6); margin-top: 0; }
.facts > div { background: var(--surface); border: var(--border-hairline) solid var(--border); border-radius: var(--radius-md); padding: var(--space-4) var(--space-6); }
.facts h2 { margin-top: 0; align-items: center; }
.facts ol, .facts ul { margin: 0; padding-left: var(--space-6); }
.facts li { padding: var(--space-1) 0; }

/* The invite request (ticket 133): name, email, club in a row; the note and Send under them. */
.invite { margin-top: var(--space-8); background: var(--surface); border: var(--border-hairline) solid var(--border); border-radius: var(--radius-md); padding: var(--space-4) var(--space-6) var(--space-6); scroll-margin-top: var(--space-6); }
.invite h2 { margin-top: 0; align-items: center; }
.invite form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-3) var(--space-4); align-items: end; }
.invite .field { display: flex; flex-direction: column; gap: var(--space-1); min-width: 0; }
.invite .field .muted { font-weight: 400; }
.invite .note { grid-column: 1 / 3; }
.invite textarea { font-family: var(--font-text); resize: vertical; min-height: var(--control-h); }
.invite .send { justify-self: start; width: 48px; height: 48px; padding: 0; }
.invite .sent { display: flex; gap: var(--space-2); align-items: center; margin: 0; }
.invite .sent .icon { color: var(--ok); }
.invite .error { margin: 0 0 var(--space-3); }
/* The honeypot: off screen, out of the tab order and the accessibility tree. */
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* The changelog: one card a release, a few bullets each. */
.changelog { max-width: 720px; }
.changelog h1 { font: 600 36px/42px var(--font-text); letter-spacing: -0.02em; margin: var(--space-8) 0 var(--space-4); }
.release { background: var(--surface); border: var(--border-hairline) solid var(--border); border-radius: var(--radius-md); padding: var(--space-4) var(--space-6) var(--space-6); margin-top: var(--space-4); }
.release header { display: flex; gap: var(--space-3); align-items: baseline; flex-wrap: wrap; }
.release h2 { margin: 0; }
.release.planned h2 { color: var(--text-muted); }
.release > .muted { margin: var(--space-2) 0 0; }
.release ul { margin: var(--space-3) 0 0; padding-left: var(--space-6); }
.release li { padding: var(--space-1) 0; }

@media (max-width: 640px) {
  .invite { padding: var(--space-4); }
  .invite form { grid-template-columns: 1fr; }
  .invite .note { grid-column: auto; }
  .invite .send { width: 100%; }
  .hero { padding: var(--space-6) 0; }
  .changelog h1 { font-size: 28px; line-height: 34px; margin-top: var(--space-6); }
  .release { padding: var(--space-4); }
  .hero h1 { font-size: 32px; line-height: 38px; }
  .cta .btn { flex: 1 1 auto; }
  .dl-more { flex: 1 1 auto; }
  .dl-more summary { width: 100%; }
  .dl-more ul { position: static; margin-top: var(--space-2); min-width: 0; }
  .shots, .facts { grid-template-columns: 1fr; gap: var(--space-3); }
  .facts { margin-top: var(--space-8); }
  .facts > div { padding: var(--space-4); }

}
