Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 1 | /* |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 2 | * g1t's docs: Starlight in g1t's own design. A very dark gray base (or a |
| 3 | * near-white one, in light: styles/light.css), lavender as the accent for | |
| 4 | * links and the current page, and quiet typography. Starlight's colours | |
| 5 | * are mapped onto the g1t tokens once, here, for both themes. | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 6 | */ |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 7 | :root { |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 8 | --sl-font: var(--g1t-font-sans); |
| 9 | --sl-font-mono: var(--g1t-font-mono); | |
| 10 | ||
| 11 | /* Lavender is the docs' accent: links, the current page, highlights. */ | |
| Merge branch 'worktree-agent-ad7c6d88d93adc817' | 12 | --sl-color-accent-low: color-mix(in srgb, var(--g1t-accent) 14%, var(--g1t-bg)); |
| 13 | --sl-color-accent: var(--g1t-accent); | |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 14 | --sl-color-accent-high: var(--g1t-docs-accent-high); |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 15 | |
| 16 | --sl-color-white: var(--g1t-fg); | |
| 17 | --sl-color-gray-1: var(--g1t-fg-soft); | |
| 18 | --sl-color-gray-2: var(--g1t-fg-soft); | |
| 19 | --sl-color-gray-3: var(--g1t-muted); | |
| 20 | --sl-color-gray-4: var(--g1t-faint); | |
| 21 | --sl-color-gray-5: var(--g1t-line); | |
| 22 | --sl-color-gray-6: var(--g1t-surface); | |
| 23 | --sl-color-gray-7: var(--g1t-surface); | |
| 24 | --sl-color-black: var(--g1t-bg); | |
| 25 | ||
| 26 | --sl-color-bg: var(--g1t-bg); | |
| 27 | --sl-color-bg-nav: color-mix(in srgb, var(--g1t-bg) 88%, transparent); | |
| 28 | --sl-color-bg-sidebar: var(--g1t-bg); | |
| 29 | --sl-color-hairline: var(--g1t-line); | |
| 30 | --sl-color-hairline-light: var(--g1t-line); | |
| 31 | --sl-color-hairline-shade: var(--g1t-line); | |
| 32 | --sl-color-text: var(--g1t-fg-soft); | |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 33 | --sl-color-text-accent: var(--g1t-docs-link); |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 34 | --sl-color-text-invert: var(--g1t-bg); |
| 35 | --sl-color-bg-inline-code: var(--g1t-raised); | |
| 36 | ||
| 37 | --sl-text-body: 0.9375rem; | |
| 38 | --sl-line-height: 1.75; | |
| 39 | --sl-content-width: 46rem; | |
| 40 | /* The header's row, as tall as the app's top bar (3.5rem), and the tabs | |
| 41 | beneath it. */ | |
| 42 | --sl-nav-height: 6.25rem; | |
| 43 | --sl-sidebar-width: 17rem; | |
| Merge site-audit: SEO routes, analytics with consent first in Europe, security page, founder and X account, docs header; the tour opens on the pull request and leads with Code, on the real shell, with Agents and Docs working today | 44 | /* Big enough to tap. */ |
| 45 | --sl-menu-button-size: 2.5rem; | |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 46 | } |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 47 | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 48 | /* Starlight's theme select (Auto, Light, Dark), at the foot of the phone |
| 49 | menu; the header has its own button (components/ThemeToggle.astro). */ | |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 50 | starlight-theme-select label { |
| 51 | color: var(--g1t-muted); | |
| 52 | font-size: 0.85rem; | |
| 53 | } | |
| 54 | starlight-theme-select label:hover { | |
| 55 | color: var(--g1t-fg); | |
| 56 | } | |
| 57 | starlight-theme-select select { | |
| 58 | border-radius: 0.4rem; | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 59 | } |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 60 | starlight-theme-select option { |
| 61 | background: var(--g1t-surface); | |
| 62 | color: var(--g1t-fg); | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 63 | } |
| 64 | ||
| 65 | /* --- Header --------------------------------------------------------------- */ | |
| 66 | ||
| 67 | header.header { | |
| 68 | padding: 0 !important; | |
| 69 | backdrop-filter: blur(10px); | |
| 70 | border-bottom: 1px solid var(--g1t-line); | |
| 71 | } | |
| Merge site-audit: SEO routes, analytics with consent first in Europe, security page, founder and X account, docs header; the tour opens on the pull request and leads with Code, on the real shell, with Agents and Docs working today | 72 | /* The search box fills the header's middle column; Header.astro centres |
| 73 | that column in the header, the same on every page. */ | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 74 | site-search { |
| Merge site-audit: SEO routes, analytics with consent first in Europe, security page, founder and X account, docs header; the tour opens on the pull request and leads with Code, on the real shell, with Agents and Docs working today | 75 | display: flex; |
| 76 | justify-content: center; | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 77 | width: 100%; |
| 78 | } | |
| 79 | site-search button[data-open-modal] { | |
| 80 | border-radius: 0.5rem; | |
| 81 | background: var(--g1t-surface); | |
| 82 | border-color: var(--g1t-line); | |
| 83 | color: var(--g1t-faint); | |
| 84 | } | |
| 85 | site-search button[data-open-modal]:hover { | |
| 86 | border-color: var(--g1t-line-strong); | |
| 87 | color: var(--g1t-muted); | |
| 88 | } | |
| Merge site-audit: SEO routes, analytics with consent first in Europe, security page, founder and X account, docs header; the tour opens on the pull request and leads with Code, on the real shell, with Agents and Docs working today | 89 | @media (min-width: 50rem) { |
| 90 | site-search button[data-open-modal] { | |
| 91 | max-width: none; | |
| 92 | } | |
| 93 | } | |
| 94 | /* Tablets: the full search box, as on desktop, since there is room. */ | |
| 95 | @media (min-width: 45rem) and (max-width: 49.99rem) { | |
| 96 | site-search button[data-open-modal] { | |
| 97 | width: 100%; | |
| 98 | border: 1px solid var(--g1t-line); | |
| 99 | padding-inline: 0.75rem 0.5rem; | |
| 100 | font-size: var(--sl-text-sm); | |
| 101 | } | |
| 102 | site-search button[data-open-modal] > span.sl-hidden { | |
| 103 | display: block; | |
| 104 | } | |
| 105 | site-search button[data-open-modal] > kbd.sl-hidden { | |
| 106 | display: flex; | |
| 107 | margin-inline-start: auto; | |
| 108 | } | |
| 109 | } | |
| 110 | /* Phones: a search icon, as big as a fingertip. */ | |
| 111 | @media (max-width: 44.99rem) { | |
| 112 | site-search button[data-open-modal] { | |
| 113 | justify-content: center; | |
| 114 | width: 2.5rem; | |
| 115 | height: 2.5rem; | |
| 116 | padding: 0; | |
| 117 | border: 0; | |
| 118 | background: transparent; | |
| 119 | color: var(--g1t-muted); | |
| 120 | font-size: 1.125rem; | |
| 121 | } | |
| 122 | } | |
| 123 | /* The menu button sits in the header's top row, at the end, drawn like | |
| 124 | the header's other icon buttons rather than as a floating disc. */ | |
| 125 | .sl-menu-button { | |
| 126 | top: calc((3.5rem - var(--sl-menu-button-size)) / 2) !important; | |
| 127 | align-items: center; | |
| 128 | justify-content: center; | |
| 129 | border-radius: 0.5rem; | |
| 130 | padding: 0; | |
| 131 | background: transparent; | |
| 132 | box-shadow: none; | |
| 133 | color: var(--g1t-fg-soft); | |
| 134 | font-size: 1.25rem; | |
| 135 | } | |
| 136 | .sl-menu-button:hover, | |
| 137 | .sl-menu-button:has(~ :popover-open) { | |
| 138 | background: var(--g1t-raised); | |
| 139 | color: var(--g1t-fg); | |
| 140 | } | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 141 | |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 142 | /* Search, in light: the dialog is a white panel, so its results sit on a |
| 143 | step darker rather than on a white just off the panel's. */ | |
| 144 | :root[data-theme='light'] #starlight__search { | |
| 145 | --pagefind-ui-background: var(--g1t-surface); | |
| 146 | } | |
| 147 | :root[data-theme='light'] | |
| 148 | #starlight__search | |
| 149 | :is(.pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)), .pagefind-ui__result-nested):not(:hover) { | |
| 150 | background-color: var(--g1t-raised); | |
| 151 | } | |
| 152 | ||
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 153 | /* --- Sidebar -------------------------------------------------------------- */ |
| 154 | ||
| 155 | .sidebar-content { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 156 | padding-top: 1.5rem; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 157 | } |
| 158 | /* Groups always show their pages: no caret, no folding. */ | |
| 159 | .sidebar-content details > summary { | |
| 160 | pointer-events: none; | |
| 161 | padding-top: 0.25rem; | |
| 162 | } | |
| 163 | .sidebar-content details > summary .caret { | |
| 164 | display: none; | |
| 165 | } | |
| 166 | .sidebar-content .top-level > li + li { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 167 | margin-top: 1.75rem; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 168 | } |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 169 | /* Group labels: headings over their pages, in the page's own ink. */ |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 170 | .sidebar-content details > summary .group-label .large, |
| 171 | .sidebar-content .top-level > li > details > summary { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 172 | font-size: 0.875rem; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 173 | font-weight: 600; |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 174 | color: var(--g1t-fg); |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 175 | } |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 176 | .sidebar-content .top-level > li > details > summary { |
| 177 | padding-inline: 0.75rem; | |
| 178 | margin-bottom: 0.35rem; | |
| 179 | } | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 180 | .sidebar-content ul ul, |
| 181 | .sidebar-content ul ul li { | |
| 182 | border-inline-start: 0; | |
| 183 | margin-inline-start: 0; | |
| 184 | padding-inline-start: 0; | |
| 185 | } | |
| 186 | .sidebar-content a { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 187 | border-radius: 0.5rem; |
| 188 | padding: 0.4rem 0.75rem; | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 189 | font-size: 0.875rem; |
| 190 | color: var(--g1t-muted); | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 191 | transition: background 0.15s, color 0.15s; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 192 | } |
| 193 | .sidebar-content a:hover { | |
| 194 | background: var(--g1t-surface); | |
| 195 | color: var(--g1t-fg); | |
| 196 | } | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 197 | /* The current page: a lavender pill. */ |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 198 | .sidebar-content a[aria-current='page'], |
| 199 | .sidebar-content a[aria-current='page']:hover { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 200 | background: var(--g1t-accent-low); |
| 201 | color: var(--g1t-docs-accent-high); | |
| 202 | font-weight: 600; | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 203 | } |
| 204 | ||
| 205 | /* --- Content -------------------------------------------------------------- */ | |
| 206 | ||
| 207 | .content-panel { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 208 | padding-top: 2.75rem; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 209 | } |
| 210 | /* The title and the page read as one, without a rule between them. */ | |
| 211 | .content-panel + .content-panel { | |
| 212 | border-top: 0; | |
| 213 | padding-top: 0.5rem; | |
| 214 | } | |
| 215 | /* Headlines in Bricolage Grotesque, its optical size following the size. */ | |
| 216 | .sl-markdown-content :is(h1, h2) { | |
| 217 | font-family: var(--g1t-font-display); | |
| 218 | font-optical-sizing: auto; | |
| 219 | } | |
| 220 | .sl-markdown-content h1 { | |
| 221 | font-size: 2.25rem; | |
| 222 | font-weight: 650; | |
| 223 | letter-spacing: -0.02em; | |
| 224 | line-height: 1.15; | |
| 225 | color: var(--g1t-fg); | |
| 226 | } | |
| 227 | /* Sections open with space, not rules. */ | |
| 228 | .sl-markdown-content .sl-heading-wrapper.level-h2 { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 229 | margin-top: 3.5rem; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 230 | } |
| 231 | .sl-markdown-content h2 { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 232 | font-size: 1.75rem; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 233 | font-weight: 600; |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 234 | letter-spacing: -0.02em; |
| 235 | line-height: 1.2; | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 236 | color: var(--g1t-fg); |
| 237 | } | |
| 238 | .sl-markdown-content h3 { | |
| 239 | margin-top: 2rem; | |
| 240 | font-size: 1.1rem; | |
| 241 | font-weight: 600; | |
| 242 | letter-spacing: -0.005em; | |
| 243 | color: var(--g1t-fg); | |
| 244 | } | |
| 245 | .sl-markdown-content p, | |
| 246 | .sl-markdown-content li { | |
| 247 | color: var(--g1t-fg-soft); | |
| 248 | } | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 249 | /* Links: the text's own ink, a little heavier, on a lavender underline. */ |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 250 | .sl-markdown-content a:not(.card, .sl-link-button, .sl-link-card) { |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 251 | color: var(--g1t-fg); |
| 252 | font-weight: 500; | |
| 253 | text-decoration-color: color-mix(in srgb, var(--g1t-accent) 55%, transparent); | |
| 254 | text-decoration-thickness: 1.5px; | |
| 255 | text-underline-offset: 0.25em; | |
| 256 | transition: text-decoration-color 0.15s, color 0.15s; | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 257 | } |
| 258 | .sl-markdown-content a:not(.card, .sl-link-button, .sl-link-card):hover { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 259 | color: var(--g1t-docs-link); |
| Merge branch 'worktree-agent-ad7c6d88d93adc817' | 260 | text-decoration-color: var(--g1t-accent); |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 261 | } |
| 262 | .sl-markdown-content :not(pre) > code { | |
| 263 | border-radius: 0.3rem; | |
| 264 | padding: 0.1rem 0.3rem; | |
| 265 | font-size: 0.85em; | |
| 266 | color: var(--g1t-fg); | |
| 267 | background: var(--g1t-raised); | |
| 268 | } | |
| 269 | ||
| 270 | /* Tables: ruled, not boxed. */ | |
| 271 | .sl-markdown-content table { | |
| 272 | display: table; | |
| 273 | width: 100%; | |
| 274 | border-collapse: collapse; | |
| 275 | font-size: 0.875rem; | |
| 276 | } | |
| 277 | /* On a phone a wide table scrolls inside itself, not the page. */ | |
| 278 | @media (max-width: 50rem) { | |
| 279 | .sl-markdown-content table { | |
| 280 | display: block; | |
| 281 | overflow-x: auto; | |
| 282 | } | |
| 283 | } | |
| Usage, Billing settings and prepaid AI credit; fixes from the UX audit | 284 | /* |
| 285 | * There, a name, route or value in a table is never broken, not even at a | |
| 286 | * hyphen or a slash: a long one widens the table, which then scrolls. | |
| 287 | */ | |
| 288 | @media (max-width: 50rem) { | |
| 289 | .sl-markdown-content td code, | |
| 290 | .sl-markdown-content th code { | |
| 291 | white-space: nowrap; | |
| 292 | overflow-wrap: normal; | |
| 293 | word-break: normal; | |
| 294 | } | |
| Merge site-audit: SEO routes, analytics with consent first in Europe, security page, founder and X account, docs header; the tour opens on the pull request and leads with Code, on the real shell, with Agents and Docs working today | 295 | /* The last column usually holds the sentences. Kept readable, it |
| 296 | scrolls the table sideways instead of folding to a word a line. */ | |
| 297 | .sl-markdown-content :is(td, th):last-child:not(:first-child) { | |
| 298 | min-width: 12rem; | |
| 299 | } | |
| Usage, Billing settings and prepaid AI credit; fixes from the UX audit | 300 | } |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 301 | .sl-markdown-content th { |
| 302 | border-bottom: 1px solid var(--g1t-line-strong); | |
| 303 | background: transparent; | |
| 304 | font-weight: 600; | |
| 305 | color: var(--g1t-muted); | |
| 306 | text-align: start; | |
| 307 | } | |
| 308 | .sl-markdown-content td, | |
| 309 | .sl-markdown-content th { | |
| 310 | padding: 0.6rem 0.75rem; | |
| 311 | border-inline: 0; | |
| 312 | border-top: 0; | |
| 313 | } | |
| 314 | .sl-markdown-content td { | |
| 315 | border-bottom: 1px solid var(--g1t-line); | |
| 316 | vertical-align: top; | |
| 317 | } | |
| 318 | .sl-markdown-content tr:nth-child(2n) { | |
| 319 | background: transparent; | |
| 320 | } | |
| 321 | ||
| 322 | /* Callouts: a tinted panel with a coloured edge. */ | |
| 323 | .starlight-aside { | |
| 324 | border: 0; | |
| 325 | border-inline-start: 2px solid; | |
| 326 | border-radius: 0 0.6rem 0.6rem 0; | |
| 327 | padding: 0.85rem 1.1rem; | |
| 328 | } | |
| 329 | .starlight-aside--note { | |
| 330 | border-color: var(--g1t-info); | |
| 331 | background: color-mix(in srgb, var(--g1t-info) 7%, var(--g1t-bg)); | |
| 332 | } | |
| 333 | .starlight-aside--tip { | |
| Merge branch 'worktree-agent-ad7c6d88d93adc817' | 334 | border-color: var(--g1t-success); |
| 335 | background: color-mix(in srgb, var(--g1t-success) 6%, var(--g1t-bg)); | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 336 | } |
| 337 | .starlight-aside--caution { | |
| 338 | border-color: var(--g1t-warn); | |
| 339 | background: color-mix(in srgb, var(--g1t-warn) 7%, var(--g1t-bg)); | |
| 340 | } | |
| 341 | .starlight-aside--danger { | |
| 342 | border-color: var(--g1t-danger); | |
| 343 | background: color-mix(in srgb, var(--g1t-danger) 7%, var(--g1t-bg)); | |
| 344 | } | |
| 345 | ||
| 346 | /* --- On this page --------------------------------------------------------- */ | |
| 347 | ||
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 348 | .right-sidebar-panel { |
| 349 | padding-top: 2.75rem; | |
| 350 | } | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 351 | .right-sidebar-panel h2 { |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 352 | font-size: 0.875rem; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 353 | font-weight: 600; |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 354 | color: var(--g1t-fg); |
| 355 | } | |
| 356 | /* The headings on a rail; the one being read is marked on it. */ | |
| 357 | .right-sidebar-panel starlight-toc > nav > ul { | |
| 358 | border-inline-start: 1px solid var(--g1t-line); | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 359 | } |
| 360 | .right-sidebar-panel a { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 361 | margin-inline-start: -1px; |
| 362 | border-inline-start: 1px solid transparent; | |
| 363 | border-radius: 0; | |
| 364 | padding-inline-start: calc(0.75rem + var(--depth) * 0.75rem); | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 365 | font-size: 0.8125rem; |
| 366 | color: var(--g1t-muted); | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 367 | transition: color 0.15s, border-color 0.15s; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 368 | } |
| 369 | .right-sidebar-panel a:hover { | |
| 370 | color: var(--g1t-fg); | |
| 371 | } | |
| 372 | .right-sidebar-panel a[aria-current='true'] { | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 373 | border-color: var(--g1t-accent); |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 374 | color: var(--g1t-docs-link); |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 375 | font-weight: 500; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 376 | } |
| 377 | ||
| 378 | /* --- Cards and buttons ---------------------------------------------------- */ | |
| 379 | ||
| 380 | .card, | |
| 381 | .sl-link-card { | |
| 382 | border-radius: 1rem; | |
| 383 | background: var(--g1t-surface); | |
| 384 | border: 1px solid var(--g1t-line); | |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 385 | transition: border-color 0.15s, background 0.15s, transform 0.15s; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 386 | } |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 387 | /* A link card lifts toward the accent under the pointer. */ |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 388 | .sl-link-card:hover { |
| Merge the docs' new look: tabs for each section with their own short sidebar, a larger title under its section, a lavender pill for the current page, links in the text's colour on a lavender underline, On this page on a rail, and a header whose right side is g1t.sh, Source, Sign up and one theme button. | 389 | border-color: color-mix(in srgb, var(--g1t-accent) 45%, var(--g1t-line)); |
| 390 | background: color-mix(in srgb, var(--g1t-accent) 4%, var(--g1t-surface)); | |
| 391 | } | |
| 392 | .sl-link-card:hover .icon { | |
| 393 | color: var(--g1t-accent); | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 394 | } |
| 395 | .sl-link-button { | |
| 396 | border-radius: 0.5rem; | |
| 397 | font-size: 0.9rem; | |
| 398 | font-weight: 500; | |
| 399 | } | |
| 400 | .sl-link-button.primary { | |
| 401 | background: var(--g1t-fg); | |
| 402 | border-color: var(--g1t-fg); | |
| 403 | color: var(--g1t-bg); | |
| 404 | } | |
| 405 | .sl-link-button.primary:hover { | |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 406 | background: var(--g1t-docs-fg-hover); |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 407 | } |
| 408 | .sl-link-button.minimal { | |
| 409 | color: var(--g1t-fg-soft); | |
| 410 | } | |
| 411 | ||
| 412 | /* --- Pagination and footer ----------------------------------------------- */ | |
| 413 | ||
| 414 | .pagination-links a { | |
| 415 | border-radius: 0.75rem; | |
| 416 | border-color: var(--g1t-line); | |
| 417 | box-shadow: none; | |
| 418 | } | |
| 419 | .pagination-links a:hover { | |
| 420 | border-color: var(--g1t-line-strong); | |
| 421 | } | |
| 422 | .pagination-links a .link-title { | |
| 423 | color: var(--g1t-fg); | |
| 424 | } | |
| 425 | .meta, | |
| 426 | .meta a { | |
| 427 | font-size: 0.8125rem; | |
| 428 | color: var(--g1t-faint); | |
| 429 | } | |
| 430 | ||
| 431 | /* --- Cards ---------------------------------------------------------------- */ | |
| 432 | ||
| 433 | .sl-markdown-content .card-grid { | |
| 434 | gap: 0.75rem; | |
| 435 | } | |
| 436 | .sl-markdown-content .card { | |
| 437 | padding: 1.1rem 1.2rem; | |
| 438 | } | |
| 439 | .sl-markdown-content .card .title { | |
| 440 | font-size: 1rem; | |
| 441 | font-weight: 600; | |
| 442 | color: var(--g1t-fg); | |
| 443 | } | |
| 444 | .sl-markdown-content .card .icon { | |
| Merge branch 'worktree-agent-ad7c6d88d93adc817' | 445 | color: var(--g1t-accent); |
| 446 | background: color-mix(in srgb, var(--g1t-accent) 12%, transparent); | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 447 | border: 0; |
| 448 | border-radius: 0.5rem; | |
| 449 | padding: 0.3rem; | |
| 450 | } | |
| 451 | .sl-link-card { | |
| 452 | padding: 1rem 1.2rem; | |
| 453 | } | |
| 454 | .sl-link-card .title { | |
| 455 | font-size: 0.95rem; | |
| 456 | font-weight: 600; | |
| 457 | color: var(--g1t-fg); | |
| 458 | } | |
| 459 | .sl-link-card .description { | |
| 460 | font-size: 0.85rem; | |
| 461 | color: var(--g1t-muted); | |
| 462 | } | |
| 463 | ||
| 464 | /* Steps: numbered, on a quiet rail. */ | |
| 465 | .sl-steps > li::before { | |
| 466 | background: var(--g1t-raised) !important; | |
| 467 | color: var(--g1t-fg) !important; | |
| 468 | box-shadow: inset 0 0 0 1px var(--g1t-line-strong); | |
| 469 | font-family: var(--g1t-font-mono); | |
| 470 | font-size: 0.8rem; | |
| 471 | } | |
| 472 | .sl-steps > li::after { | |
| 473 | background: var(--g1t-line) !important; | |
| 474 | } | |
| 475 | ||
| 476 | /* --- API reference -------------------------------------------------------- */ | |
| 477 | ||
| 478 | /* An operation's method and path, at the top of its page. */ | |
| 479 | .sl-markdown-content .g1t-endpoint { | |
| 480 | display: flex; | |
| 481 | align-items: center; | |
| 482 | gap: 0.75rem; | |
| 483 | overflow-x: auto; | |
| 484 | border: 1px solid var(--g1t-line); | |
| 485 | border-radius: 0.75rem; | |
| 486 | padding: 0.7rem 0.9rem; | |
| 487 | background: var(--g1t-surface); | |
| 488 | } | |
| 489 | .sl-markdown-content .g1t-endpoint code { | |
| 490 | padding: 0; | |
| 491 | background: transparent; | |
| 492 | font-size: 0.875rem; | |
| 493 | white-space: nowrap; | |
| 494 | color: var(--g1t-fg); | |
| 495 | } | |
| Merge site-audit: SEO routes, analytics with consent first in Europe, security page, founder and X account, docs header; the tour opens on the pull request and leads with Code, on the real shell, with Agents and Docs working today | 496 | /* On a phone a long path wraps onto a second line rather than hiding its end. */ |
| 497 | @media (max-width: 40rem) { | |
| 498 | .sl-markdown-content .g1t-endpoint { | |
| 499 | align-items: flex-start; | |
| 500 | } | |
| 501 | .sl-markdown-content .g1t-endpoint code { | |
| 502 | white-space: normal; | |
| 503 | overflow-wrap: anywhere; | |
| 504 | } | |
| 505 | } | |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 506 | /* Methods: the same small mono tag in the sidebar and on the page. */ |
| 507 | .g1t-method { | |
| 508 | --method: var(--g1t-muted); | |
| 509 | flex-shrink: 0; | |
| 510 | border: 0 !important; | |
| 511 | border-radius: 0.3rem; | |
| 512 | padding: 0.05rem 0.4rem; | |
| docs.g1t.sh and status.g1t.sh follow your system's light or dark setting, and each has an Auto, Light and Dark switch that this browser remembers: the docs' in the header (at the foot of the menu on a phone), with code, search, the API reference and its explorer in both themes; the status page's in its header, chosen before anything is drawn; the workspaces guide says where. | 513 | background: color-mix(in srgb, var(--method) var(--g1t-docs-tag-tint), transparent) !important; |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 514 | color: var(--method) !important; |
| 515 | font-family: var(--g1t-font-mono); | |
| 516 | font-size: 0.7rem; | |
| 517 | font-weight: 600; | |
| 518 | letter-spacing: 0.02em; | |
| 519 | } | |
| 520 | .g1t-method-get, | |
| 521 | .g1t-method[data-method='get'] { | |
| Merge branch 'worktree-agent-ad7c6d88d93adc817' | 522 | --method: var(--g1t-success); |
| Checkout tries a failed fetch twice more, after 2 s and 5 s | 523 | } |
| 524 | .g1t-method-post, | |
| 525 | .g1t-method[data-method='post'] { | |
| 526 | --method: var(--g1t-info); | |
| 527 | } | |
| 528 | .g1t-method-put, | |
| 529 | .g1t-method-patch, | |
| 530 | .g1t-method[data-method='put'], | |
| 531 | .g1t-method[data-method='patch'] { | |
| 532 | --method: var(--g1t-warn); | |
| 533 | } | |
| 534 | .g1t-method-delete, | |
| 535 | .g1t-method[data-method='delete'] { | |
| 536 | --method: var(--g1t-danger); | |
| 537 | } | |
| 538 | /* In the sidebar the method sits at the end of the row, in a fixed column. */ | |
| 539 | .sidebar-content a:has(.g1t-method) { | |
| 540 | display: flex; | |
| 541 | justify-content: space-between; | |
| 542 | align-items: center; | |
| 543 | gap: 0.5rem; | |
| 544 | } | |
| 545 | .sidebar-content .g1t-method { | |
| 546 | min-width: 3.1rem; | |
| 547 | text-align: center; | |
| 548 | font-size: 0.625rem; | |
| 549 | line-height: 1.6; | |
| 550 | } | |
| Chat and workspace agents: channels, DMs and named agents you talk to | 551 | |
| 552 | /* "Soon" beside a sidebar entry for a feature not built yet: quiet, like | |
| 553 | the site's Coming soon tag, not a call to action. */ | |
| 554 | .sidebar-content .sl-badge { | |
| 555 | background: var(--g1t-raised); | |
| 556 | border: 1px solid var(--g1t-line-strong); | |
| 557 | color: var(--g1t-muted); | |
| 558 | font-family: var(--g1t-font-mono); | |
| 559 | font-size: 0.625rem; | |
| 560 | text-transform: uppercase; | |
| 561 | letter-spacing: 0.04em; | |
| 562 | } | |
| g1t is described as the product it is in alpha, and its shell takes the new shape: the README, the docs home and docs/PLAN.md label every feature Live, Preview or Coming; a floating dock with the g1t mark, Today, Chat, Notifications, Agents, Code, Artifacts, your pinned apps and the Apps launcher, with People, Workspace and the account menu (now holding help) at its foot; the workspace's logo and switcher heading a flat sidebar that folds away with Ctrl B, or leading the header's breadcrumbs where there is none; the page in a rounded panel with a full-width header; Today as the front page, with first-time acceptance of agents' pull requests, what needs you and what's at stake, spend today and one item to start with, every number from a service; Notifications in place of the Inbox at /notifications; a bottom bar and More sheet on phones; and sign-in, sign-up, two-factor, reset, invites and choosing a workspace on standalone pages with no app around them. | 563 | |
| 564 | /* Feature tables with a Live, Preview or Coming badge (components/Status.astro): | |
| 565 | on a phone each row stacks, the name and its badge on one line and what it | |
| 566 | does under them, rather than three narrow columns. */ | |
| 567 | @media (max-width: 50rem) { | |
| 568 | .sl-markdown-content table:has(.status), | |
| 569 | .sl-markdown-content table:has(.status) tbody { | |
| 570 | display: block; | |
| 571 | width: 100%; | |
| 572 | } | |
| 573 | .sl-markdown-content table:has(.status) thead { | |
| 574 | display: none; | |
| 575 | } | |
| 576 | .sl-markdown-content table:has(.status) tr { | |
| 577 | display: grid; | |
| 578 | grid-template-columns: minmax(0, 1fr) max-content; | |
| 579 | width: 100%; | |
| 580 | column-gap: 0.75rem; | |
| 581 | padding-block: 0.5rem; | |
| 582 | border-bottom: 1px solid var(--sl-color-hairline); | |
| 583 | } | |
| 584 | .sl-markdown-content table:has(.status) td { | |
| 585 | border: 0; | |
| 586 | padding: 0.15rem 0; | |
| 587 | width: auto; | |
| 588 | } | |
| 589 | .sl-markdown-content table:has(.status) td:first-child { | |
| 590 | font-weight: 600; | |
| 591 | } | |
| 592 | .sl-markdown-content table:has(.status) td:nth-child(2) { | |
| 593 | grid-column: 1 / -1; | |
| 594 | grid-row: 2; | |
| 595 | color: var(--sl-color-gray-2); | |
| 596 | } | |
| 597 | .sl-markdown-content table:has(.status) td:nth-child(3) { | |
| 598 | grid-column: 2; | |
| 599 | grid-row: 1; | |
| 600 | justify-self: end; | |
| 601 | align-self: center; | |
| 602 | width: max-content; | |
| 603 | min-width: 0; | |
| 604 | } | |
| 605 | .sl-markdown-content table:has(.status) td + td { | |
| 606 | margin-top: 0; | |
| 607 | } | |
| 608 | } | |
| Merge tabs per system in the docs: Quickstart's token and the runner's install and service, synced across pages, and a home page that opens without repeating itself, with icons on its cards. | 609 | |
| 610 | /* Tabs in a page, such as one per OS: quiet labels on a hairline, the | |
| 611 | chosen one in ink over a lavender line. */ | |
| 612 | starlight-tabs .tablist-wrapper { | |
| 613 | margin-bottom: 0.75rem; | |
| 614 | } | |
| 615 | starlight-tabs [role='tablist'] { | |
| 616 | gap: 0.25rem; | |
| 617 | border-bottom: 1px solid var(--g1t-line); | |
| 618 | } | |
| 619 | starlight-tabs [role='tab'] { | |
| 620 | margin-bottom: -1px; | |
| 621 | border-bottom: 2px solid transparent; | |
| 622 | padding: 0.4rem 0.75rem; | |
| 623 | font-size: 0.875rem; | |
| 624 | font-weight: 500; | |
| 625 | color: var(--g1t-muted); | |
| 626 | transition: color 0.15s, border-color 0.15s; | |
| 627 | } | |
| 628 | starlight-tabs [role='tab']:hover { | |
| 629 | color: var(--g1t-fg); | |
| 630 | } | |
| 631 | starlight-tabs [role='tab'][aria-selected='true'] { | |
| 632 | border-color: var(--g1t-accent); | |
| 633 | color: var(--g1t-fg); | |
| 634 | font-weight: 600; | |
| 635 | } | |
| architecture and such | 636 | |
| 637 | /* --- Diagrams -------------------------------------------------------------- | |
| 638 | <Diagram name="..."> (components/Diagram.astro) draws a spec from | |
| 639 | src/diagrams as an inline SVG. Every colour is a token, so a diagram | |
| 640 | follows the theme like the rest of the page. On a narrow screen it keeps | |
| 641 | its size and scrolls sideways, rather than shrinking its text away. */ | |
| 642 | ||
| 643 | .g1t-diagram { | |
| 644 | /* A grid or flex item grows to fit its content unless told not to: without | |
| 645 | this, the SVG's minimum width widens the whole page on a phone. */ | |
| 646 | min-width: 0; | |
| 647 | max-width: 100%; | |
| 648 | margin: 1.75rem 0; | |
| 649 | border: 1px solid var(--g1t-line); | |
| 650 | border-radius: 0.875rem; | |
| 651 | background: | |
| 652 | radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--g1t-line-strong) 45%, transparent) 1px, transparent 0) 0 0 / 20px 20px, | |
| 653 | var(--g1t-surface); | |
| 654 | } | |
| 655 | .g1t-diagram__scroll { | |
| 656 | overflow-x: auto; | |
| 657 | padding: 1.25rem; | |
| 658 | } | |
| 659 | .g1t-diagram__scroll:focus-visible { | |
| 660 | outline: 2px solid var(--g1t-accent); | |
| 661 | outline-offset: -2px; | |
| 662 | border-radius: 0.875rem; | |
| 663 | } | |
| 664 | .g1t-diagram svg.d-svg { | |
| 665 | display: block; | |
| 666 | margin: 0 auto; | |
| 667 | max-width: 100%; | |
| 668 | height: auto; | |
| 669 | /* Below this the labels get too small to read: scroll instead. */ | |
| 670 | min-width: 600px; | |
| 671 | font-family: var(--g1t-font-sans); | |
| 672 | overflow: visible; | |
| 673 | } | |
| 674 | .g1t-diagram figcaption { | |
| 675 | display: flex; | |
| 676 | flex-wrap: wrap; | |
| 677 | align-items: center; | |
| 678 | justify-content: space-between; | |
| 679 | gap: 0.5rem 1rem; | |
| 680 | border-top: 1px solid var(--g1t-line); | |
| 681 | padding: 0.625rem 1rem; | |
| 682 | color: var(--g1t-muted); | |
| 683 | font-size: 0.8125rem; | |
| 684 | line-height: 1.5; | |
| 685 | } | |
| 686 | .g1t-diagram__tools { | |
| 687 | display: inline-flex; | |
| 688 | align-items: center; | |
| 689 | gap: 1rem; | |
| 690 | } | |
| 691 | .g1t-diagram__expand { | |
| 692 | display: inline-flex; | |
| 693 | align-items: center; | |
| 694 | gap: 0.375rem; | |
| 695 | border: 1px solid var(--g1t-line); | |
| 696 | border-radius: 0.5rem; | |
| 697 | background: var(--g1t-raised); | |
| 698 | padding: 0.25rem 0.625rem; | |
| 699 | color: var(--g1t-fg-soft); | |
| 700 | font: inherit; | |
| 701 | font-size: 0.75rem; | |
| 702 | font-weight: 500; | |
| 703 | cursor: pointer; | |
| 704 | } | |
| 705 | .g1t-diagram__expand:hover { | |
| 706 | border-color: var(--g1t-line-strong); | |
| 707 | color: var(--g1t-fg); | |
| 708 | } | |
| 709 | .g1t-diagram__expand:focus-visible { | |
| 710 | outline: 2px solid var(--g1t-accent); | |
| 711 | outline-offset: 2px; | |
| 712 | } | |
| 713 | ||
| 714 | /* The diagram at full size. On a wide screen it is drawn larger than in | |
| 715 | the page, so its smallest labels read easily. */ | |
| 716 | .g1t-diagram__dialog { | |
| 717 | /* Starlight's reset takes a dialog's margins away; put the centring back. */ | |
| 718 | margin: auto; | |
| 719 | width: min(96vw, 1400px); | |
| 720 | max-width: none; | |
| 721 | max-height: 92vh; | |
| 722 | border: 1px solid var(--g1t-line-strong); | |
| 723 | border-radius: 1rem; | |
| 724 | background: var(--g1t-surface); | |
| 725 | padding: 0; | |
| 726 | color: var(--g1t-fg); | |
| 727 | box-shadow: var(--g1t-docs-menu-shadow); | |
| The docs page behind an expanded diagram no longer scrolls: while a diagram's dialog is open the page's scrolling is held, and scrolling past either end of the diagram stops at the dialog. | 728 | /* Scrolling past either end of the diagram stops here. */ |
| 729 | overscroll-behavior: contain; | |
| 730 | } | |
| 731 | /* The page behind an open diagram stays where it is. */ | |
| 732 | html:has(.g1t-diagram__dialog[open]) { | |
| 733 | overflow: hidden; | |
| architecture and such | 734 | } |
| 735 | .g1t-diagram__dialog::backdrop { | |
| 736 | background: rgb(0 0 0 / 0.6); | |
| 737 | backdrop-filter: blur(2px); | |
| 738 | } | |
| 739 | .g1t-diagram__dialog-bar { | |
| 740 | position: sticky; | |
| 741 | top: 0; | |
| 742 | z-index: 1; | |
| 743 | display: flex; | |
| 744 | align-items: center; | |
| 745 | justify-content: space-between; | |
| 746 | gap: 1rem; | |
| 747 | border-bottom: 1px solid var(--g1t-line); | |
| 748 | background: var(--g1t-surface); | |
| 749 | padding: 0.75rem 1rem; | |
| 750 | color: var(--g1t-muted); | |
| 751 | font-size: 0.875rem; | |
| 752 | } | |
| 753 | .g1t-diagram.g1t-diagram__dialog-body { | |
| 754 | margin: 0; | |
| 755 | border: 0; | |
| 756 | border-radius: 0; | |
| 757 | } | |
| 758 | .g1t-diagram__dialog-body svg.d-svg { | |
| 759 | width: 100%; | |
| 760 | max-width: none; | |
| 761 | min-width: 900px; | |
| 762 | } | |
| 763 | .g1t-diagram__key { | |
| 764 | display: inline-flex; | |
| 765 | gap: 1rem; | |
| 766 | color: var(--g1t-faint); | |
| 767 | font-size: 0.75rem; | |
| 768 | } | |
| 769 | .g1t-diagram__key > span { | |
| 770 | display: inline-flex; | |
| 771 | align-items: center; | |
| 772 | gap: 0.375rem; | |
| 773 | } | |
| 774 | .g1t-diagram .d-key { | |
| 775 | stroke: var(--g1t-faint); | |
| 776 | stroke-width: 1.5; | |
| 777 | } | |
| 778 | ||
| 779 | /* Boxes. */ | |
| 780 | .g1t-diagram .d-node { | |
| 781 | fill: var(--g1t-raised); | |
| 782 | stroke: var(--g1t-line-strong); | |
| 783 | stroke-width: 1; | |
| 784 | } | |
| 785 | .g1t-diagram .d-node.d-tone-accent { | |
| 786 | fill: var(--g1t-accent-low); | |
| 787 | stroke: color-mix(in srgb, var(--g1t-accent) 65%, transparent); | |
| 788 | } | |
| 789 | .g1t-diagram .d-node.d-tone-success { | |
| 790 | fill: var(--g1t-success-low); | |
| 791 | stroke: color-mix(in srgb, var(--g1t-success-dim) 80%, transparent); | |
| 792 | } | |
| 793 | .g1t-diagram .d-node.d-tone-warn { | |
| 794 | fill: color-mix(in srgb, var(--g1t-warn) 12%, var(--g1t-surface)); | |
| 795 | stroke: color-mix(in srgb, var(--g1t-warn) 60%, transparent); | |
| 796 | } | |
| 797 | .g1t-diagram .d-node.d-tone-store { | |
| 798 | fill: var(--g1t-surface); | |
| 799 | stroke: var(--g1t-line-strong); | |
| 800 | } | |
| 801 | .g1t-diagram .d-node.d-tone-external { | |
| 802 | fill: var(--g1t-bg); | |
| 803 | stroke: var(--g1t-line-strong); | |
| 804 | stroke-dasharray: 4 3; | |
| 805 | } | |
| 806 | .g1t-diagram .d-rim { | |
| 807 | fill: none; | |
| 808 | stroke: var(--g1t-line-strong); | |
| 809 | } | |
| 810 | .g1t-diagram .d-title { | |
| 811 | fill: var(--g1t-fg); | |
| 812 | font-size: 12.5px; | |
| 813 | font-weight: 600; | |
| 814 | } | |
| 815 | .g1t-diagram .d-sub { | |
| 816 | fill: var(--g1t-muted); | |
| 817 | font-family: var(--g1t-font-mono); | |
| 818 | font-size: 10px; | |
| 819 | } | |
| 820 | .g1t-diagram .d-mono { | |
| 821 | font-family: var(--g1t-font-mono); | |
| 822 | font-size: 0.92em; | |
| 823 | } | |
| 824 | ||
| 825 | /* Frames around a group of boxes. */ | |
| 826 | .g1t-diagram .d-group { | |
| 827 | fill: color-mix(in srgb, var(--g1t-bg) 55%, transparent); | |
| 828 | stroke: var(--g1t-line-strong); | |
| 829 | stroke-dasharray: 2 4; | |
| 830 | stroke-linecap: round; | |
| 831 | } | |
| 832 | .g1t-diagram .d-group.d-tone-accent { | |
| 833 | fill: color-mix(in srgb, var(--g1t-accent-low) 45%, transparent); | |
| 834 | stroke: color-mix(in srgb, var(--g1t-accent) 45%, transparent); | |
| 835 | } | |
| 836 | .g1t-diagram .d-group.d-tone-success { | |
| 837 | fill: color-mix(in srgb, var(--g1t-success-low) 45%, transparent); | |
| 838 | stroke: color-mix(in srgb, var(--g1t-success-dim) 55%, transparent); | |
| 839 | } | |
| 840 | .g1t-diagram .d-group-label { | |
| 841 | fill: var(--g1t-faint); | |
| 842 | font-size: 11px; | |
| 843 | font-weight: 600; | |
| 844 | letter-spacing: 0.01em; | |
| 845 | } | |
| 846 | .g1t-diagram .d-group-label.d-tone-accent { | |
| 847 | fill: var(--g1t-accent); | |
| 848 | } | |
| 849 | .g1t-diagram .d-group-label.d-tone-success { | |
| 850 | fill: var(--g1t-success-dim); | |
| 851 | } | |
| 852 | ||
| 853 | /* Arrows. */ | |
| 854 | .g1t-diagram .d-edge, | |
| 855 | .g1t-diagram .d-msg { | |
| 856 | fill: none; | |
| 857 | stroke: var(--g1t-faint); | |
| 858 | stroke-width: 1.4; | |
| 859 | stroke-linejoin: round; | |
| 860 | } | |
| 861 | .g1t-diagram .d-edge.d-tone-accent, | |
| 862 | .g1t-diagram .d-msg:not(.d-reply) { | |
| 863 | stroke: var(--g1t-accent); | |
| 864 | } | |
| 865 | .g1t-diagram .d-edge.d-tone-success { | |
| 866 | stroke: var(--g1t-success-dim); | |
| 867 | } | |
| 868 | .g1t-diagram .d-edge.d-tone-warn { | |
| 869 | stroke: var(--g1t-warn); | |
| 870 | } | |
| 871 | .g1t-diagram .d-async { | |
| 872 | stroke-dasharray: 5 4; | |
| 873 | } | |
| 874 | .g1t-diagram .d-head { | |
| 875 | fill: var(--g1t-faint); | |
| 876 | } | |
| 877 | .g1t-diagram .d-head.d-tone-accent { | |
| 878 | fill: var(--g1t-accent); | |
| 879 | } | |
| 880 | .g1t-diagram .d-head.d-tone-success { | |
| 881 | fill: var(--g1t-success-dim); | |
| 882 | } | |
| 883 | .g1t-diagram .d-head.d-tone-warn { | |
| 884 | fill: var(--g1t-warn); | |
| 885 | } | |
| 886 | .g1t-diagram .d-label, | |
| 887 | .g1t-diagram .d-phase-label { | |
| 888 | fill: var(--g1t-fg-soft); | |
| 889 | font-weight: 500; | |
| 890 | } | |
| 891 | .g1t-diagram .d-label-bg, | |
| 892 | .g1t-diagram .d-phase-label-bg { | |
| 893 | fill: var(--g1t-surface); | |
| 894 | stroke: var(--g1t-line); | |
| 895 | } | |
| 896 | ||
| 897 | /* Sequences. */ | |
| 898 | .g1t-diagram .d-lifeline { | |
| 899 | stroke: var(--g1t-line-strong); | |
| 900 | stroke-width: 1.25; | |
| 901 | } | |
| 902 | .g1t-diagram .d-msg-label { | |
| 903 | fill: var(--g1t-fg-soft); | |
| 904 | font-size: 11.5px; | |
| 905 | } | |
| 906 | .g1t-diagram .d-badge { | |
| 907 | fill: var(--g1t-accent); | |
| 908 | } | |
| 909 | .g1t-diagram .d-badge-text { | |
| 910 | fill: var(--g1t-bg); | |
| 911 | font-size: 9.5px; | |
| 912 | font-weight: 700; | |
| 913 | } | |
| 914 | .g1t-diagram .d-note { | |
| 915 | fill: color-mix(in srgb, var(--g1t-warn) 9%, var(--g1t-surface)); | |
| 916 | stroke: color-mix(in srgb, var(--g1t-warn) 35%, transparent); | |
| 917 | } | |
| 918 | .g1t-diagram .d-note-text { | |
| 919 | fill: var(--g1t-fg-soft); | |
| 920 | font-size: 11px; | |
| 921 | } | |
| 922 | .g1t-diagram .d-phase { | |
| 923 | stroke: var(--g1t-line-strong); | |
| 924 | } | |
| 925 | .g1t-diagram .d-phase-label { | |
| 926 | fill: var(--g1t-muted); | |
| 927 | font-weight: 600; | |
| 928 | } |
This file's history is long; its oldest lines are credited to the oldest commit read.