Spaces:
Running
Site map: line-art SVG icons + unified arrows in place of 01–04 numbers
Browse filesReplace the mono "01/02/03/04" labels in the "What's inside" band with
small line-art SVG glyphs that match the rest of the page's editorial
visual language (1.2-stroke round, no fills, no frames — same DNA as the
skeletal molecule formulas and the cd-helix diagram in §1–§2):
• Intro — open book / primer
• DNA Lab — short double helix with 6 base-pair rungs
• Carbon Recipe — labelled flask with bubbles
• Sandbox — terminal with prompt + cursor
Each icon is monochrome (var(--ink) at rest, var(--green) on hover) via
currentColor. The down/right arrows are now the same SVG; the first
card rotates its glyph 90deg so the Intro card points down while the
other three point right, giving every card identical arrow weight and
geometry. Hover state preserved: arrow slides in its direction, label +
icon + arrow shift to green together.
Co-authored-by: Cursor <cursoragent@cursor.com>
- assets/styles/section-intro.css +147 -34
- demo.html +93 -14
|
@@ -255,19 +255,30 @@
|
|
| 255 |
margin-right: 0;
|
| 256 |
padding-right: 0;
|
| 257 |
}
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
}
|
| 267 |
.intro-sitemap__label {
|
| 268 |
display: flex;
|
| 269 |
-
align-items:
|
| 270 |
-
justify-content: space-between;
|
| 271 |
gap: 12px;
|
| 272 |
margin-bottom: 14px;
|
| 273 |
font-family: "JetBrains Mono", ui-monospace, monospace;
|
|
@@ -278,13 +289,28 @@
|
|
| 278 |
color: var(--ink);
|
| 279 |
transition: color 0.18s ease;
|
| 280 |
}
|
| 281 |
-
.intro-sitemap__title { white-space: nowrap; }
|
|
|
|
|
|
|
|
|
|
|
|
|
| 282 |
.intro-sitemap__arrow {
|
| 283 |
-
|
| 284 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 285 |
color: var(--green);
|
| 286 |
transition: transform 0.18s ease, color 0.18s ease;
|
| 287 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 288 |
}
|
| 289 |
.intro-sitemap__desc {
|
| 290 |
margin: 0;
|
|
@@ -296,14 +322,16 @@
|
|
| 296 |
}
|
| 297 |
.intro-sitemap__link:hover,
|
| 298 |
.intro-sitemap__link:focus-visible { outline: none; }
|
| 299 |
-
.intro-sitemap__link:hover .intro-sitemap__num,
|
| 300 |
-
.intro-sitemap__link:focus-visible .intro-sitemap__num,
|
| 301 |
.intro-sitemap__link:hover .intro-sitemap__label,
|
| 302 |
.intro-sitemap__link:focus-visible .intro-sitemap__label,
|
| 303 |
.intro-sitemap__link:hover .intro-sitemap__arrow,
|
| 304 |
.intro-sitemap__link:focus-visible .intro-sitemap__arrow {
|
| 305 |
color: var(--green);
|
| 306 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 307 |
/* Move the arrow on the directional axis: → slides right, ↓ slides down.
|
| 308 |
Each step's nth-child sets which one applies — the first card has the
|
| 309 |
↓ (in-page primer), the rest are cross-tab → links. */
|
|
@@ -331,7 +359,8 @@
|
|
| 331 |
margin-right: 0;
|
| 332 |
padding-right: 0;
|
| 333 |
}
|
| 334 |
-
.intro-
|
|
|
|
| 335 |
}
|
| 336 |
@media (max-width: 600px) {
|
| 337 |
.intro-sitemap__steps {
|
|
@@ -355,35 +384,119 @@
|
|
| 355 |
.intro-sitemap__step:first-child .intro-sitemap__link {
|
| 356 |
padding-top: 4px;
|
| 357 |
}
|
| 358 |
-
.intro-
|
|
|
|
| 359 |
}
|
| 360 |
|
| 361 |
-
/* --- Primer header
|
| 362 |
-
|
| 363 |
-
|
| 364 |
-
|
|
|
|
|
|
|
| 365 |
.intro-primer-heading {
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
|
| 369 |
-
|
| 370 |
}
|
| 371 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 372 |
.intro-primer-heading h2 {
|
| 373 |
font-family: "JetBrains Mono", monospace;
|
| 374 |
-
font-size:
|
| 375 |
letter-spacing: -0.3px;
|
| 376 |
color: var(--ink);
|
| 377 |
-
margin-bottom:
|
| 378 |
}
|
| 379 |
-
.
|
| 380 |
-
|
| 381 |
-
|
| 382 |
-
|
| 383 |
-
max-width:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 384 |
}
|
| 385 |
.intro-primer-heading em { color: var(--ink); font-style: normal; font-weight: 500; }
|
| 386 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 387 |
/* --- One sub-row per central-dogma level. Each one wraps its narrative
|
| 388 |
+ visual in section--two-col, which we get "for free" from the
|
| 389 |
demo's existing layout system. The padding + bottom border just
|
|
|
|
| 255 |
margin-right: 0;
|
| 256 |
padding-right: 0;
|
| 257 |
}
|
| 258 |
+
/* Icon — small free-floating line-art diagram above the label.
|
| 259 |
+
No tile, no background: aligned with the rest of the site's visual
|
| 260 |
+
language (skeletal molecule formulas, helix diagram), all rendered
|
| 261 |
+
as pure line-art with thin 1.2 strokes. The icon is fully monochrome:
|
| 262 |
+
ink at rest, green on hover (cascade via `currentColor`). */
|
| 263 |
+
.intro-sitemap__icon {
|
| 264 |
+
display: inline-flex;
|
| 265 |
+
align-items: center;
|
| 266 |
+
justify-content: center;
|
| 267 |
+
width: 44px;
|
| 268 |
+
height: 44px;
|
| 269 |
+
margin-bottom: 20px;
|
| 270 |
+
color: var(--ink);
|
| 271 |
+
transition: color 0.22s ease;
|
| 272 |
+
}
|
| 273 |
+
.intro-sitemap__icon svg {
|
| 274 |
+
width: 100%;
|
| 275 |
+
height: 100%;
|
| 276 |
+
display: block;
|
| 277 |
+
overflow: visible;
|
| 278 |
}
|
| 279 |
.intro-sitemap__label {
|
| 280 |
display: flex;
|
| 281 |
+
align-items: center;
|
|
|
|
| 282 |
gap: 12px;
|
| 283 |
margin-bottom: 14px;
|
| 284 |
font-family: "JetBrains Mono", ui-monospace, monospace;
|
|
|
|
| 289 |
color: var(--ink);
|
| 290 |
transition: color 0.18s ease;
|
| 291 |
}
|
| 292 |
+
.intro-sitemap__title { white-space: nowrap; margin-right: auto; }
|
| 293 |
+
/* Arrow — same SVG glyph for every card so the visual weight is identical
|
| 294 |
+
across the row. The first card (Intro → in-page primer) rotates 90° to
|
| 295 |
+
point down; nothing else differs. currentColor lets it inherit the
|
| 296 |
+
green / hover colour from the cascade above. */
|
| 297 |
.intro-sitemap__arrow {
|
| 298 |
+
display: inline-flex;
|
| 299 |
+
align-items: center;
|
| 300 |
+
justify-content: center;
|
| 301 |
+
width: 18px;
|
| 302 |
+
height: 18px;
|
| 303 |
+
flex-shrink: 0;
|
| 304 |
color: var(--green);
|
| 305 |
transition: transform 0.18s ease, color 0.18s ease;
|
| 306 |
+
}
|
| 307 |
+
.intro-sitemap__arrow svg {
|
| 308 |
+
width: 100%;
|
| 309 |
+
height: 100%;
|
| 310 |
+
display: block;
|
| 311 |
+
}
|
| 312 |
+
.intro-sitemap__step:first-child .intro-sitemap__arrow svg {
|
| 313 |
+
transform: rotate(90deg);
|
| 314 |
}
|
| 315 |
.intro-sitemap__desc {
|
| 316 |
margin: 0;
|
|
|
|
| 322 |
}
|
| 323 |
.intro-sitemap__link:hover,
|
| 324 |
.intro-sitemap__link:focus-visible { outline: none; }
|
|
|
|
|
|
|
| 325 |
.intro-sitemap__link:hover .intro-sitemap__label,
|
| 326 |
.intro-sitemap__link:focus-visible .intro-sitemap__label,
|
| 327 |
.intro-sitemap__link:hover .intro-sitemap__arrow,
|
| 328 |
.intro-sitemap__link:focus-visible .intro-sitemap__arrow {
|
| 329 |
color: var(--green);
|
| 330 |
}
|
| 331 |
+
.intro-sitemap__link:hover .intro-sitemap__icon,
|
| 332 |
+
.intro-sitemap__link:focus-visible .intro-sitemap__icon {
|
| 333 |
+
color: var(--green);
|
| 334 |
+
}
|
| 335 |
/* Move the arrow on the directional axis: → slides right, ↓ slides down.
|
| 336 |
Each step's nth-child sets which one applies — the first card has the
|
| 337 |
↓ (in-page primer), the rest are cross-tab → links. */
|
|
|
|
| 359 |
margin-right: 0;
|
| 360 |
padding-right: 0;
|
| 361 |
}
|
| 362 |
+
.intro-sitemap__label { gap: 10px; font-size: 17px; }
|
| 363 |
+
.intro-sitemap__icon { width: 40px; height: 40px; margin-bottom: 16px; }
|
| 364 |
}
|
| 365 |
@media (max-width: 600px) {
|
| 366 |
.intro-sitemap__steps {
|
|
|
|
| 384 |
.intro-sitemap__step:first-child .intro-sitemap__link {
|
| 385 |
padding-top: 4px;
|
| 386 |
}
|
| 387 |
+
.intro-sitemap__label { font-size: 18px; gap: 12px; }
|
| 388 |
+
.intro-sitemap__icon { width: 38px; height: 38px; margin-bottom: 14px; }
|
| 389 |
}
|
| 390 |
|
| 391 |
+
/* --- Primer header — centered editorial module
|
| 392 |
+
Reads as a proper standalone section between the site map above
|
| 393 |
+
and the §1 sub-rows below: centered axis, generous vertical
|
| 394 |
+
padding, a tiny green accent bar at the top to anchor the module
|
| 395 |
+
on the page without competing with the §-headings that follow.
|
| 396 |
+
Eyebrow + h2 + standfirst + kicker all share the same centerline. */
|
| 397 |
.intro-primer-heading {
|
| 398 |
+
position: relative;
|
| 399 |
+
margin: 32px auto 40px;
|
| 400 |
+
padding: 40px 0 36px;
|
| 401 |
+
text-align: center;
|
| 402 |
}
|
| 403 |
+
/* Centred 2px green accent bar above the eyebrow. It's the only
|
| 404 |
+
structural element of the module: short enough to read as a mark
|
| 405 |
+
(40px wide), in --green so it ties into the page accent palette
|
| 406 |
+
without shouting. Replaces the previous left-rail rule since the
|
| 407 |
+
module is now axis-centered. */
|
| 408 |
+
.intro-primer-heading::before {
|
| 409 |
+
content: "";
|
| 410 |
+
position: absolute;
|
| 411 |
+
top: 0;
|
| 412 |
+
left: 50%;
|
| 413 |
+
transform: translateX(-50%);
|
| 414 |
+
width: 40px;
|
| 415 |
+
height: 2px;
|
| 416 |
+
background: var(--green);
|
| 417 |
+
}
|
| 418 |
+
.intro-primer-heading .section-num { margin-bottom: 10px; }
|
| 419 |
.intro-primer-heading h2 {
|
| 420 |
font-family: "JetBrains Mono", monospace;
|
| 421 |
+
font-size: 26px; font-weight: 400;
|
| 422 |
letter-spacing: -0.3px;
|
| 423 |
color: var(--ink);
|
| 424 |
+
margin-bottom: 20px;
|
| 425 |
}
|
| 426 |
+
/* Standfirst block: centred editorial lede. The max-width keeps the
|
| 427 |
+
measure readable (~62 chars at 17px) so the centred axis doesn't
|
| 428 |
+
produce an awkwardly wide single line. */
|
| 429 |
+
.intro-primer-heading .intro-primer-lede {
|
| 430 |
+
max-width: 640px;
|
| 431 |
+
margin: 0 auto;
|
| 432 |
+
}
|
| 433 |
+
.intro-primer-heading .intro-primer-lede p {
|
| 434 |
+
margin: 0;
|
| 435 |
+
font-size: 17px;
|
| 436 |
+
line-height: 1.65;
|
| 437 |
+
color: var(--ink);
|
| 438 |
+
}
|
| 439 |
+
/* Kicker: the thesis line gets its own beat. Mono register echoes the
|
| 440 |
+
.section-num eyebrow at the top of the module, so the kicker reads
|
| 441 |
+
as the closing bookend of the editorial block. A short centred
|
| 442 |
+
hairline (via ::before) sits above it as the visual beat — no full
|
| 443 |
+
border across the column, which would fight with the centred axis. */
|
| 444 |
+
.intro-primer-heading .intro-primer-lede .intro-primer-lede__kicker {
|
| 445 |
+
position: relative;
|
| 446 |
+
margin-top: 22px;
|
| 447 |
+
padding-top: 20px;
|
| 448 |
+
font-family: "JetBrains Mono", ui-monospace, monospace;
|
| 449 |
+
font-size: 13px;
|
| 450 |
+
font-weight: 500;
|
| 451 |
+
letter-spacing: 0.01em;
|
| 452 |
+
color: var(--ink);
|
| 453 |
+
}
|
| 454 |
+
.intro-primer-heading .intro-primer-lede .intro-primer-lede__kicker::before {
|
| 455 |
+
content: "";
|
| 456 |
+
position: absolute;
|
| 457 |
+
top: 0;
|
| 458 |
+
left: 50%;
|
| 459 |
+
transform: translateX(-50%);
|
| 460 |
+
width: 24px;
|
| 461 |
+
height: 1px;
|
| 462 |
+
background: var(--rule);
|
| 463 |
}
|
| 464 |
.intro-primer-heading em { color: var(--ink); font-style: normal; font-weight: 500; }
|
| 465 |
|
| 466 |
+
/* Inline base tokens: A / C / G / T rendered as small filled chips
|
| 467 |
+
using the conventional sequence-viewer palette (mirrors BASE_FILL
|
| 468 |
+
in tokenizer.js so the same four colours read consistently across
|
| 469 |
+
the primer and the §3 tokenizer demo).
|
| 470 |
+
Sizing notes:
|
| 471 |
+
- font-size 0.78em (drops the 17px body text to ~13px inside the
|
| 472 |
+
chip) gives the chips their own typographic register without
|
| 473 |
+
making them shout louder than the surrounding prose.
|
| 474 |
+
- line-height 1 + symmetrical 1px/6px padding pins the chip box
|
| 475 |
+
to ~15px tall, well inside the parent's 28px line-box (17px ×
|
| 476 |
+
1.65), so the chips never push the line apart even when several
|
| 477 |
+
of them sit on the same line.
|
| 478 |
+
- min-width 1.4em keeps the four chips optically the same width
|
| 479 |
+
even though M-width letters differ in mono (A/G/T are wider
|
| 480 |
+
than C). */
|
| 481 |
+
.intro-primer-heading .intro-base {
|
| 482 |
+
display: inline-block;
|
| 483 |
+
min-width: 1.4em;
|
| 484 |
+
padding: 1px 6px;
|
| 485 |
+
border-radius: 3px;
|
| 486 |
+
font-family: "JetBrains Mono", ui-monospace, monospace;
|
| 487 |
+
font-size: 0.78em;
|
| 488 |
+
font-weight: 700;
|
| 489 |
+
line-height: 1;
|
| 490 |
+
letter-spacing: 0.02em;
|
| 491 |
+
text-align: center;
|
| 492 |
+
color: #fff;
|
| 493 |
+
vertical-align: 1px;
|
| 494 |
+
}
|
| 495 |
+
.intro-primer-heading .intro-base[data-letter="A"] { background: #15803d; }
|
| 496 |
+
.intro-primer-heading .intro-base[data-letter="C"] { background: #0369a1; }
|
| 497 |
+
.intro-primer-heading .intro-base[data-letter="G"] { background: #a16207; }
|
| 498 |
+
.intro-primer-heading .intro-base[data-letter="T"] { background: #be185d; }
|
| 499 |
+
|
| 500 |
/* --- One sub-row per central-dogma level. Each one wraps its narrative
|
| 501 |
+ visual in section--two-col, which we get "for free" from the
|
| 502 |
demo's existing layout system. The padding + bottom border just
|
|
@@ -496,40 +496,96 @@
|
|
| 496 |
<ol class="intro-sitemap__steps">
|
| 497 |
<li class="intro-sitemap__step">
|
| 498 |
<a class="intro-sitemap__link" href="#primer">
|
| 499 |
-
<span class="intro-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 500 |
<span class="intro-sitemap__label">
|
| 501 |
<span class="intro-sitemap__title">Intro</span>
|
| 502 |
-
<span class="intro-sitemap__arrow" aria-hidden="true">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 503 |
</span>
|
| 504 |
<span class="intro-sitemap__desc">A short primer on the basics of genetics — the alphabet Carbon reads.</span>
|
| 505 |
</a>
|
| 506 |
</li>
|
| 507 |
<li class="intro-sitemap__step">
|
| 508 |
<a class="intro-sitemap__link" href="#dna-lab">
|
| 509 |
-
<span class="intro-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 510 |
<span class="intro-sitemap__label">
|
| 511 |
<span class="intro-sitemap__title">DNA Lab</span>
|
| 512 |
-
<span class="intro-sitemap__arrow" aria-hidden="true">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 513 |
</span>
|
| 514 |
<span class="intro-sitemap__desc">Live interactions with the 3B checkpoint: explore what the model can do.</span>
|
| 515 |
</a>
|
| 516 |
</li>
|
| 517 |
<li class="intro-sitemap__step">
|
| 518 |
<a class="intro-sitemap__link" href="#recipe">
|
| 519 |
-
<span class="intro-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 520 |
<span class="intro-sitemap__label">
|
| 521 |
<span class="intro-sitemap__title">Carbon Recipe</span>
|
| 522 |
-
<span class="intro-sitemap__arrow" aria-hidden="true">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 523 |
</span>
|
| 524 |
<span class="intro-sitemap__desc">How Carbon was trained: tokenizer, loss, dataset, and results.</span>
|
| 525 |
</a>
|
| 526 |
</li>
|
| 527 |
<li class="intro-sitemap__step">
|
| 528 |
<a class="intro-sitemap__link" href="#sandbox">
|
| 529 |
-
<span class="intro-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 530 |
<span class="intro-sitemap__label">
|
| 531 |
<span class="intro-sitemap__title">Sandbox</span>
|
| 532 |
-
<span class="intro-sitemap__arrow" aria-hidden="true">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 533 |
</span>
|
| 534 |
<span class="intro-sitemap__desc">Run Carbon on your own DNA sequences, end-to-end.</span>
|
| 535 |
</a>
|
|
@@ -547,12 +603,35 @@
|
|
| 547 |
<div class="intro-primer-heading" id="primer">
|
| 548 |
<div class="section-num">Background</div>
|
| 549 |
<h2>What Carbon reads</h2>
|
| 550 |
-
<
|
| 551 |
-
|
| 552 |
-
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 556 |
</div>
|
| 557 |
|
| 558 |
<!-- §0.1 · BASES -->
|
|
|
|
| 496 |
<ol class="intro-sitemap__steps">
|
| 497 |
<li class="intro-sitemap__step">
|
| 498 |
<a class="intro-sitemap__link" href="#primer">
|
| 499 |
+
<span class="intro-sitemap__icon" aria-hidden="true">
|
| 500 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round">
|
| 501 |
+
<path d="M3 5.5h6.5a2.5 2.5 0 0 1 2.5 2.5V20"/>
|
| 502 |
+
<path d="M21 5.5h-6.5A2.5 2.5 0 0 0 12 8"/>
|
| 503 |
+
<path d="M3 5.5V18a1 1 0 0 0 1 1h6"/>
|
| 504 |
+
<path d="M21 5.5V18a1 1 0 0 1-1 1h-6"/>
|
| 505 |
+
<path d="M6 9h3.5"/>
|
| 506 |
+
<path d="M6 12h3.5"/>
|
| 507 |
+
<path d="M14.5 9H18"/>
|
| 508 |
+
<path d="M14.5 12H18"/>
|
| 509 |
+
</svg>
|
| 510 |
+
</span>
|
| 511 |
<span class="intro-sitemap__label">
|
| 512 |
<span class="intro-sitemap__title">Intro</span>
|
| 513 |
+
<span class="intro-sitemap__arrow" aria-hidden="true">
|
| 514 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
| 515 |
+
<path d="M5 12h14"/>
|
| 516 |
+
<path d="M13 6l6 6-6 6"/>
|
| 517 |
+
</svg>
|
| 518 |
+
</span>
|
| 519 |
</span>
|
| 520 |
<span class="intro-sitemap__desc">A short primer on the basics of genetics — the alphabet Carbon reads.</span>
|
| 521 |
</a>
|
| 522 |
</li>
|
| 523 |
<li class="intro-sitemap__step">
|
| 524 |
<a class="intro-sitemap__link" href="#dna-lab">
|
| 525 |
+
<span class="intro-sitemap__icon" aria-hidden="true">
|
| 526 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round">
|
| 527 |
+
<path d="M8 3c0 4 8 4.5 8 9s-8 5-8 9"/>
|
| 528 |
+
<path d="M16 3c0 4-8 4.5-8 9s8 5 8 9"/>
|
| 529 |
+
<path d="M9 5h6"/>
|
| 530 |
+
<path d="M10 7.5h4"/>
|
| 531 |
+
<path d="M8.5 10.5h7"/>
|
| 532 |
+
<path d="M8.5 13.5h7"/>
|
| 533 |
+
<path d="M10 16.5h4"/>
|
| 534 |
+
<path d="M9 19h6"/>
|
| 535 |
+
</svg>
|
| 536 |
+
</span>
|
| 537 |
<span class="intro-sitemap__label">
|
| 538 |
<span class="intro-sitemap__title">DNA Lab</span>
|
| 539 |
+
<span class="intro-sitemap__arrow" aria-hidden="true">
|
| 540 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
| 541 |
+
<path d="M5 12h14"/>
|
| 542 |
+
<path d="M13 6l6 6-6 6"/>
|
| 543 |
+
</svg>
|
| 544 |
+
</span>
|
| 545 |
</span>
|
| 546 |
<span class="intro-sitemap__desc">Live interactions with the 3B checkpoint: explore what the model can do.</span>
|
| 547 |
</a>
|
| 548 |
</li>
|
| 549 |
<li class="intro-sitemap__step">
|
| 550 |
<a class="intro-sitemap__link" href="#recipe">
|
| 551 |
+
<span class="intro-sitemap__icon" aria-hidden="true">
|
| 552 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round">
|
| 553 |
+
<path d="M9 3h6"/>
|
| 554 |
+
<path d="M10 3v6.4L4.7 18.5a1.5 1.5 0 0 0 1.3 2.3h12a1.5 1.5 0 0 0 1.3-2.3L14 9.4V3"/>
|
| 555 |
+
<path d="M7.3 14h9.4"/>
|
| 556 |
+
<circle cx="10" cy="17" r="0.9" fill="currentColor" stroke="none"/>
|
| 557 |
+
<circle cx="13.6" cy="17.8" r="0.9" fill="currentColor" stroke="none"/>
|
| 558 |
+
</svg>
|
| 559 |
+
</span>
|
| 560 |
<span class="intro-sitemap__label">
|
| 561 |
<span class="intro-sitemap__title">Carbon Recipe</span>
|
| 562 |
+
<span class="intro-sitemap__arrow" aria-hidden="true">
|
| 563 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
| 564 |
+
<path d="M5 12h14"/>
|
| 565 |
+
<path d="M13 6l6 6-6 6"/>
|
| 566 |
+
</svg>
|
| 567 |
+
</span>
|
| 568 |
</span>
|
| 569 |
<span class="intro-sitemap__desc">How Carbon was trained: tokenizer, loss, dataset, and results.</span>
|
| 570 |
</a>
|
| 571 |
</li>
|
| 572 |
<li class="intro-sitemap__step">
|
| 573 |
<a class="intro-sitemap__link" href="#sandbox">
|
| 574 |
+
<span class="intro-sitemap__icon" aria-hidden="true">
|
| 575 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round">
|
| 576 |
+
<rect x="3" y="4.5" width="18" height="15" rx="2"/>
|
| 577 |
+
<path d="M7 10l3 2-3 2"/>
|
| 578 |
+
<path d="M13 14h4"/>
|
| 579 |
+
</svg>
|
| 580 |
+
</span>
|
| 581 |
<span class="intro-sitemap__label">
|
| 582 |
<span class="intro-sitemap__title">Sandbox</span>
|
| 583 |
+
<span class="intro-sitemap__arrow" aria-hidden="true">
|
| 584 |
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
| 585 |
+
<path d="M5 12h14"/>
|
| 586 |
+
<path d="M13 6l6 6-6 6"/>
|
| 587 |
+
</svg>
|
| 588 |
+
</span>
|
| 589 |
</span>
|
| 590 |
<span class="intro-sitemap__desc">Run Carbon on your own DNA sequences, end-to-end.</span>
|
| 591 |
</a>
|
|
|
|
| 603 |
<div class="intro-primer-heading" id="primer">
|
| 604 |
<div class="section-num">Background</div>
|
| 605 |
<h2>What Carbon reads</h2>
|
| 606 |
+
<!-- Standfirst: editorial lede framed by a green left-rule (same motif
|
| 607 |
+
as .takeaway in layout.css). The four bases are surfaced as mono
|
| 608 |
+
tokens using the conventional sequence-viewer palette shared with
|
| 609 |
+
tokenizer.js (A green / C blue / G amber / T pink) so the primer
|
| 610 |
+
opens with the same visual vocabulary used throughout the demo.
|
| 611 |
+
The final sentence is isolated as a kicker — it carries the thesis
|
| 612 |
+
of the whole tab ("what they mean is what it has to learn") and
|
| 613 |
+
deserves its own visual beat. -->
|
| 614 |
+
<div class="intro-primer-lede">
|
| 615 |
+
<p>
|
| 616 |
+
<!-- data-letter (not data-base): intro.js auto-injects the
|
| 617 |
+
skeletal-formula molecule SVGs into every [data-base]
|
| 618 |
+
element it finds inside the intro root. We just want
|
| 619 |
+
coloured mono glyphs here, not the full molecule
|
| 620 |
+
diagrams that live in the §1 demo card below. -->
|
| 621 |
+
The model is fed long strings of four letters:
|
| 622 |
+
<span class="intro-base" data-letter="A">A</span>,
|
| 623 |
+
<span class="intro-base" data-letter="C">C</span>,
|
| 624 |
+
<span class="intro-base" data-letter="G">G</span>,
|
| 625 |
+
<span class="intro-base" data-letter="T">T</span>.
|
| 626 |
+
Those letters are the bases of <em>DNA</em>. Stretches of it are <em>genes</em>,
|
| 627 |
+
which cells copy into <em>RNA</em> and translate into <em>proteins</em>.
|
| 628 |
+
A century of molecular biology has been spent working out how.
|
| 629 |
+
Carbon is given only the letters.
|
| 630 |
+
</p>
|
| 631 |
+
<p class="intro-primer-lede__kicker">
|
| 632 |
+
What they mean is what it has to learn.
|
| 633 |
+
</p>
|
| 634 |
+
</div>
|
| 635 |
</div>
|
| 636 |
|
| 637 |
<!-- §0.1 · BASES -->
|