/* Theme tokens shared by the full single-page demo. */ :root { --base00: #263238; --base01: #2e3c43; --base02: #314549; --base03: #546e7a; --base04: #b2ccd6; --base05: #eeffff; --base07: #ffffff; --base08: #f07178; --base0a: #ffcb6b; --base0b: #c3e88d; --base0c: #89ddff; --base0d: #82aaff; --base0e: #c792ea; --base0f: #ff5370; --bg: var(--base00); --off-bg: var(--base01); --inner-bg: var(--base02); --fg: var(--base05); --off-fg: var(--base04); --muted: var(--base03); --link: var(--base0d); --hover: var(--base0c); --highlight: var(--base0a); --logo: var(--base0b); --danger: var(--base08); --border: rgba(178, 204, 214, 0.18); --mono: "Fira Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; } * { box-sizing: border-box; } /* Page shell and header status. */ body { margin: 0; font-family: var(--mono); font-size: 16px; line-height: 1.5rem; background: var(--bg); color: var(--fg); } .site-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1.5rem; max-width: 78rem; margin: 1rem auto 0; padding: 0 1rem; } .eyebrow { margin: 0; color: var(--logo); font-size: 1rem; } .site-header h1 { margin: 0; font-size: 1rem; font-weight: 600; } .site-header h1::before { content: "# "; color: var(--muted); } .site-header p { margin: 0; color: var(--off-fg); } .health { flex-shrink: 0; font-size: 0.78rem; color: var(--highlight); white-space: nowrap; border: 1px solid var(--border); padding: 0.25rem 0.5rem; background: var(--inner-bg); } .layout { display: grid; grid-template-columns: 22rem minmax(0, 1fr); gap: 2rem; padding: 2rem 1rem 1rem; max-width: 78rem; margin: 0 auto; } /* Control cards, form fields, and action buttons. */ .controls { display: flex; flex-direction: column; gap: 1rem; } .card, .result-card { background: var(--off-bg); border: 1px solid var(--border); padding: 1rem; } .card h2, .result-card h2 { margin: 0 0 1rem; font-size: 1rem; font-weight: 600; color: var(--fg); } .card h2::before, .result-card h2::before { content: "## "; color: var(--muted); } label { display: block; margin: 0.7rem 0; font-size: 0.82rem; color: var(--off-fg); } input, select, textarea { display: block; width: 100%; margin-top: 0.28rem; border: 1px solid var(--border); padding: 0.6rem 0.7rem; font: inherit; color: var(--fg); background: var(--inner-bg); } input:focus, select:focus, textarea:focus { outline: 2px solid rgba(137, 221, 255, 0.28); border-color: var(--hover); } textarea { resize: vertical; min-height: 96px; font-size: 0.78rem; } button { width: 100%; border: 1px solid var(--link); padding: 0.68rem 0.9rem; margin-top: 0.4rem; font-weight: 700; color: var(--bg); background: var(--link); cursor: pointer; font-family: var(--mono); } button:hover { border-color: var(--hover); background: var(--hover); } button:disabled { opacity: 0.55; cursor: not-allowed; } button.secondary { background: transparent; color: var(--link); border-color: var(--border); } button.secondary:hover { color: var(--bg); border-color: var(--hover); } .button-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.55rem; } .note p, .small { color: var(--off-fg); font-size: 0.82rem; line-height: 1.45; } .builder-list { list-style: none; margin: 0.8rem 0 0; padding: 0; color: var(--off-fg); font-size: 0.78rem; max-height: 160px; overflow: auto; } .builder-list li { display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.25rem 0; border-bottom: 1px dashed rgba(176, 190, 197, 0.16); } /* Result panel and board overlay stage. */ .result-header { text-align: center; margin-bottom: 0.85rem; } .result-header h2 { margin-bottom: 0.25rem; } .result-header p { margin: 0; color: var(--off-fg); font-size: 0.84rem; } .result-note { max-width: 760px; margin: 0 auto 0.85rem; color: var(--off-fg); font-size: 0.78rem; line-height: 1.45; text-align: center; } .board-stage { position: relative; width: 100%; max-width: 960px; margin: 0 auto; overflow: hidden; border: 1px solid var(--border); background: var(--bg); } .board-stage img { display: block; width: 100%; height: auto; } .board-stage svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: auto; } /* SVG overlay interaction layers. */ .click-target { cursor: crosshair; } .route-marker, .builder-marker { pointer-events: none; } .hover-marker { pointer-events: none; fill: none; stroke: var(--highlight); stroke-width: 0.55; opacity: 0.9; } .json-block { margin-top: 1rem; color: var(--off-fg); } .json-block pre { overflow: auto; max-height: 300px; padding: 1rem; background: var(--inner-bg); color: var(--off-fg); border: 1px solid var(--border); font-size: 0.76rem; } /* Stack controls above the board on narrower screens. */ @media (max-width: 900px) { .layout { grid-template-columns: 1fr; } .site-header { flex-direction: column; } } /* Supporting notes, explanations, links, and footer content. */ .checkbox-label { display: flex; align-items: center; gap: 0.55rem; } .checkbox-label input { width: auto; margin: 0; } .warning-box { margin: 0.7rem auto 0.85rem; max-width: 760px; border: 1px solid rgba(255, 203, 107, 0.55); background: rgba(255, 203, 107, 0.12); color: var(--highlight); padding: 0.65rem 0.8rem; font-size: 0.8rem; text-align: left; white-space: pre-line; } .clear-board { width: auto; min-width: 150px; margin: 0.85rem auto 0; display: inline-block; } .field-help { display: block; margin-top: 0.35rem; color: var(--muted); font-size: 0.72rem; line-height: 1.35; } .explain dl { margin: 0; } .explain dt { color: var(--highlight); font-size: 0.78rem; margin-top: 0.75rem; } .explain dt:first-child { margin-top: 0; } .explain dd { margin: 0.22rem 0 0; color: var(--off-fg); font-size: 0.78rem; line-height: 1.45; } .explain code { color: var(--off-fg); background: var(--inner-bg); border: 1px solid var(--border); padding: 0.05rem 0.25rem; font-size: 0.74rem; } .link-list { margin: 0; padding-left: 1.1rem; color: var(--off-fg); font-size: 0.82rem; line-height: 1.6; } .link-list li::marker { content: "* "; color: var(--muted); } .link-list a { color: var(--link); } .link-list a:hover { color: var(--hover); } .site-footer { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; max-width: 78rem; margin: 0 auto 1.5rem; padding: 0 1rem; color: var(--off-fg); font-size: 0.82rem; } .site-footer a { color: var(--link); } .site-footer a:hover { color: var(--hover); } #data-acknowledgement-card p, #model-disclaimer-card p { color: var(--off-fg); font-size: 0.8rem; line-height: 1.45; } #data-acknowledgement-card a { color: var(--link); } #data-acknowledgement-card a:hover { color: var(--hover); }