/*
 * Site CSS — the one place a project writes hand-authored rules.
 *
 * This file is loaded twice, by two different mechanisms, and that is deliberate:
 *
 *  - front end: enqueued by the parent's g_theme_enqueue_styles(), after the
 *    parent's structural rule;
 *  - editor canvas: picked up by the parent's add_editor_style('assets/site.css').
 *    Core resolves that path CHILD FIRST, hands the editor a baseURL so relative
 *    url() still works, and scopes every rule to .editor-styles-wrapper.
 *
 * So a rule written here shows up identically in the editor and on the page. That
 * is the whole reason g-box exposes a canvas hook — a site whose CSS only exists
 * on the front end leaves the editor looking nothing like the published result.
 *
 * What does NOT belong here:
 *
 *  - anything a g/* block can express through cpStyleIntent. Those become atomic
 *    classes, are visible in the panel, and survive a redesign. A rule written
 *    here is invisible to whoever edits the page next.
 *  - @font-face. Declare fonts in theme.json under settings.typography.fontFamilies
 *    -> fontFace; WordPress prints them on the front end AND inside the editor
 *    iframe on its own.
 *  - resets. apps/g-box/includes/assets/cp-reset.css already ships border-box on
 *    both surfaces.
 *  - overflow-x on html or body. If you truly need it, use `clip`, never `hidden`:
 *    overflow-x:hidden on an ancestor silently kills position:sticky on every
 *    descendant.
 */
