/* Onboarding canvas — fills the editor+preview space when the library is empty. */ .onboarding { height: 100%; overflow: auto; display: flex; justify-content: center; background: var(--bg); } /* A readable, centered column; the gallery grid widens within it. */ .inner { width: 100%; max-width: 760px; padding: var(--space-7) var(--space-6); } .title { margin: 0 0 var(--space-2); font-size: 22px; font-weight: 600; letter-spacing: 0.01em; } .tagline { margin: 0 0 var(--space-6); max-width: 56ch; color: var(--text-secondary); line-height: 1.5; } /* The two ways in, side by side: sample-first (primary) and data-first (ghost). */ .ctaRow { display: flex; flex-wrap: wrap; gap: var(--space-3); } /* The two CTAs and the per-example Adds are shared Buttons (arch 09 §4). */ /* Paste-a-spec disclosure panel: revealed below the doors, form-shaped (label above field, hint between — GOV.UK textarea). */ .pastePanel { margin-top: var(--space-4); padding: var(--space-4); border: var(--border-width) solid var(--border); border-radius: var(--radius); background: var(--layer-01); /* Elevated surface: the textarea's field fill steps off --layer-01 (arch 09 §4). */ --field: var(--field-02); --field-hover: var(--field-hover-02); } .pasteLabel { display: block; margin-bottom: var(--space-1); font-size: 14px; font-weight: 600; } .pasteHint { margin: 0 0 var(--space-3); font-size: 13px; color: var(--text-secondary); line-height: 1.4; } /* The field look (fill, underline, focus ring) comes from the base.css element baseline; the module adds only sizing idiosyncrasies (arch 09 §4). */ .pasteInput { display: block; width: 100%; resize: vertical; padding: var(--space-2) var(--space-3); font-family: var(--font-mono); font-size: 12px; line-height: 1.5; } .pasteActions { display: flex; gap: var(--space-3); margin-top: var(--space-3); } /* Secondary paths (import / learn) as one quiet line of links below the doors. */ .altPaths { margin: var(--space-4) 0 0; font-size: 13px; color: var(--text-secondary); } /* Inline link styling shared by the import action (a button semantically — it triggers the file picker) and the learn anchor. Focus ring comes from the base.css baseline. TODO: this accent-link recipe now exists in four modules (AboutModal .link, DonateModal .email, DatasetsModal .linkButton, here) — past the "third site" threshold AboutModal.module.css records for promoting it to a shared primitive; consolidate into one home (arch 09 §4's four mechanisms). */ .linkButton { padding: 0; border: none; background: none; font: inherit; color: var(--accent); text-decoration: underline; cursor: pointer; } .hiddenInput { display: none; } /* The "or start from an example" header row, with Add all pushed to the end. */ .galleryHead { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-4); margin: var(--space-7) 0 var(--space-4); padding-top: var(--space-5); border-top: var(--border-width) solid var(--border); } .galleryTitle { margin: 0; font-size: 14px; font-weight: 600; color: var(--text-secondary); } .addAll { flex: 0 0 auto; } /* Responsive gallery: cards as wide as ~240px, filling the column. */ .gallery { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-4); } .card { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-3); border: var(--border-width) solid var(--border); border-radius: var(--radius); background: var(--layer-01); } /* The live chart's host. Width fills the card; height is fixed inline (THUMB_HEIGHT). */ .thumb { width: 100%; overflow: hidden; border-radius: var(--radius); background: var(--bg); display: flex; align-items: center; justify-content: center; } .cardBody { display: flex; flex-direction: column; gap: var(--space-1); flex: 1 1 auto; } .cardName { font-weight: 600; font-size: 14px; color: var(--text); } .cardDesc { font-size: 13px; color: var(--text-secondary); line-height: 1.4; } /* Per-example Add — a shared secondary Button, aligned to the card's start. */ .add { align-self: flex-start; }