- fg
#F7F7F8- bg
#000000- APCA Lc
- -103
- Use
- background on foreground
Railway
A deploy/infra landing that feels like the product's render pipeline rather than a brochure — deep purple ground, magenta-violet gradients, IBM Plex Serif + Inter. Infra as canvas.

Editorial disclaimer
This entry documents observable design-language patterns for educational transfer and AI-agent briefing. Screenshots and trademarks are property of their respective owners. AI2 Design is not affiliated with or endorsed by the featured brand. Inspiration here is about language and rhythm - do not reproduce brand identity, logo, product copy, or proprietary features.
Fair Use & Gallery PolicyCopy the full design language into your agent
A typed, paste-ready design system brief - philosophy, tokens, rules, techniques, and fitness checks. Drop it into Claude, Cursor, v0 or any coding agent and it builds in Railway’s language, not just a screenshot.
Atmospheric maximalism on a violet-tinted near-black canvas. The base is #13111c (everything is tinted toward indigo, never neutral); on top of it, multi-layer angular linear gradients — magenta rgb(209,21,111), electric violet rgb(98,19,255), deep purple #21004B — pool like light leaks at single-digit opacity. Voice alternates between a serif display register (IBM Plex Serif) and machine register (JetBrains Mono). Structure stays austere — 4px spacing rhythm, hairline borders, modest 6-8px radii — precisely so the gradients have room to glow. Color is the emotion; scaffolding stays quiet.
Use this capture as a design language transfer brief for my project. Adopt the palette (violet-tinted near-black #13111c base + #f7f7f8 near-white foreground + purple/magenta/violet gradient accents), the multi-layer angular gradient technique (stack 2-3 low-opacity linear washes over the dark base, never a single flat gradient), the multi-voice typography (IBM Plex Serif for display headings, Inter for body, JetBrains Mono for technical/code asides), 4px-base spacing scale, hairline 1px border + soft glow elevation, the cubic-bezier(0.4, 0, 0.2, 1) / cubic-bezier(0.4, 0, 1, 1) motion curves at 0.15s, and lazy-by-default imagery across every page and component I ship. Treat this as my project's constitution — any new component I author should pass as if crafted in the same studio. Apply the language, not the source brand's specific copy or identity. When I ask you to build a page or component, enforce these rules by default, and call out any decision that deviates.
- Layout
- Editorial
- Content width
- Bounded
- Framing
- Layered
- Grid strength
- Soft
Violet-tinted dark-first canvas — #13111c primary background (hsl(250,24%,9%)) paired with a #181122-tinted secondary surface and #f7f7f8 near-white foreground doing the reading work. Nothing is truly neutral: grays descend through indigo-tinted steps (#a1a0ab → #868593) and even borders carry a faint violet cast (#33323e). The accent system is gradient-first — magenta rgb(209,21,111), electric violet rgb(98,19,255), and deep purple #21004B / #2C0A5C / #5E084D appear almost exclusively inside layered angular washes, with a solid purple #59497a for buttons and a semantic green #37cd8f for positive/active state.
- Near-white #f7f7f8 text (Inter, weight 400, ~2228 measured occurrences) — dominant reading layer on the dark canvas
- Background pair #13111c (body, hsl(250,24%,9%)) + secondary hsl(250,21%,11%) panel, maintaining high contrast with #f7f7f8 foreground
- Indigo-tinted gray descender #a1a0ab → #868593 for captions, metadata, de-emphasized labels — never a pure gray
- Solid purple #59497a for primary button fills (hover #6d5d8e); border violet-cast #33323e for hairline delimiters
- Gradient accents (magenta / violet / deep-purple) live inside multi-layer washes only — flat fills of the gradient hues are forbidden
- Semantic green #37cd8f reserved for positive/active/widget state — never decorative
Gradients (paste-ready)
linear-gradient(327.21deg, rgba(33, 0, 75, 0.24) 3.65%, rgba(60, 0, 136, 0) 40.32%), linear-gradient(245.93deg, rgba(209, 21, 111, 0.16) 0%, rgba(209, 25, 80, 0) 36.63%), linear-gradient(147.6deg, rgba(58, 19, 255, 0) 29.79%, rgba(98, 19, 255, 0.01) 85.72%), #13111C linear-gradient(245.93deg, rgba(209, 21, 111, 0.16) 0%, rgba(209, 25, 80, 0) 36.63%), linear-gradient(186.67deg, rgba(56, 0, 169, 0.2) 17.55%, rgba(56, 0, 169, 0.2) 21.02%, rgba(58, 19, 255, 0) 91.62%), #13111C linear-gradient(108.94deg, #16093B 18.43%, #221228 52.22%) linear-gradient(97.9deg, rgba(24, 0, 77, 0.4) 5.96%, rgba(104, 3, 88, 0.4) 81.62%, rgba(9, 251, 251, 0.4) 95.18%), linear-gradient(59.12deg, #2C0A5C 45.19%, #5E084D 68.24%)
- Multi-family voice system: IBM Plex Serif (display headings, e.g. heading-3 at 36px / line-height 48px / tracking -0.72px) + Inter (body + UI, self-hosted via --font-inter) + Inter Tight (tight display variant) + JetBrains Mono (code, small technical labels at 12px / line-height 19.5px).
- Serif is the headline voice, mono is the technical voice — alternate deliberately. A serif H1 against a mono eyebrow/caption is the signature pairing; never collapse both into a single sans.
- Inter body scale: 14px (UI, line-height 20px) / 16px (body, line-height 26px) / 18px (lead, line-height 27-28.8px). Display 40px Inter at weight 700, line-height 65px, tracking -0.8px.
- Negative tracking on display in px: -0.72px on 36px serif headings, -0.8px on 40px display, -0.09px on 18px lead — optical correction grows with size.
- Weight ladder: 400 (reading) / 500 (UI labels, medium emphasis) / 600 (semibold) / 700 (display bold). Serif headings sit at 400 and lean on size, not weight.
- JetBrains Mono carries code, kbd, and small technical eyebrows (12px). Use `font-variant-numeric: tabular-nums` for aligned metrics.
- Body line-height runs generous (26px on 16px ≈ 1.625) for breathing room on the dark canvas; tighten serif display to ~1.33 (48px on 36px).
- 4px base unit. Scale: 4 / 6 / 8 / 12 / 16 / 24 / 32 / 40 / 64 / 92 / 96 / 108 px — 16px is the dominant padding rhythm (51 occurrences), 8px the dominant gap.
- Container max-width pair: 1160px (container-sm, narrow content rails) and 1696px (container-md, full bleed-ish wide sections). Do not invent intermediate widths.
- Section vertical rhythm: 64-108px on desktop (the 92/96/108 tier is reserved for major section breaks), 40-64px on mobile.
- Card / panel padding: 16-40px on desktop, 12-16px on mobile. Always pick from the scale; no magic numbers.
- Gutter values for flex/grid: 8 / 16 / 24 / 32 px — 8px flex gap is the default cluster spacing, 32px the grid column gap.
- Primary elevation is the gradient wash itself — depth comes from stacking low-opacity angular gradients over the #13111c base, not from drop shadow. Light pools in corners; surfaces feel lit rather than raised.
- Hairline 1px borders (#33323e, violet-cast) delimit panels and inputs — the structural workhorse. 2px borders only for emphasized/active edges.
- Soft ambient glow shadow for floating elements: `0 0 30px hsla(0,0%,30%,.25)` (--spreadShadow) — a diffuse bloom, never a hard directional shadow.
- Large dramatic shadow (modals, hero cards) uses a multi-stop dark cascade peaking at rgba(62,45,45,0.24) 0 100px 191px — used sparingly for the single most-elevated surface only.
- Inset white-line highlight `rgba(255,255,255,0.1) 0 0 0 1px inset` (or 0.2 at 1.5px) for subtle top-edge sheen on cards.
Techniques
Multi-layer gradient wash as depth
Hero and feature sections stack 2-3 angular linear gradients over #13111c — e.g. `linear-gradient(327.21deg, rgba(33,0,75,0.24) 3.65%, rgba(60,0,136,0) 40.32%), linear-gradient(245.93deg, rgba(209,21,111,0.16) 0%, rgba(209,25,80,0) 36.63%), #13111C`. Opacities stay single-to-low-double digit so the washes read as ambient light, never as flat color blocks. Depth is the layering, not a shadow.
Hairline border + ambient glow pairing
Panels default to a 1px #33323e border for structure, optionally paired with `box-shadow: 0 0 30px hsla(0,0%,30%,.25)` for a soft diffuse lift. Never combine with a hard directional drop shadow — the glow is omnidirectional, matching the lit-from-within feel of the gradient canvas.
- Radius scale is tight: 6px (radius-sm, inputs/chips), 8px (radius-md, the dominant — buttons/cards, 21 occurrences), 16px (radius-lg, large panels/modals).
- Buttons default to 8px radius, inputs/chips 6px, large feature cards and modals 16px. Pills (`rounded-full`) reserved for status indicator badges only.
- Icons are stroke-based at 1.5-2px weight; partner/tech logos render as SVG (40+ SVG assets observed) — keep them monochrome-tinted to sit on the dark canvas.
- Border widths: 1px hairline (default, 25 occurrences) and 2px (emphasized/active). No thicker strokes.
button-primary- backgroundColor
- #59497a
- textColor
- #ffffff
- radius
- 8px
- padding
- 8px 16px
- border
- 1px solid #33323e
- boxShadow
- 0 0 30px hsla(0,0%,30%,.25)
- fontFamily
- Inter
- fontWeight
- 500
- fontSize
- 14px
- lineHeight
- 20px
Tailwind
inline-flex items-center gap-2 rounded-[8px] border border-[#33323e] bg-[#59497a] px-4 py-2 text-[14px] font-medium leading-5 text-white shadow-[0_0_30px_hsla(0,0%,30%,.25)] transition-colors duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] hover:bg-[#6d5d8e] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#37cd8f]/60
button-secondary- backgroundColor
- #20202e
- textColor
- #ffffff
- radius
- 8px
- padding
- 8px 16px
- border
- 1px solid #34343d
- boxShadow
- none
- fontFamily
- Inter
- fontWeight
- 500
- fontSize
- 14px
Tailwind
inline-flex items-center gap-2 rounded-[8px] border border-[#34343d] bg-[#20202e] px-4 py-2 text-[14px] font-medium leading-5 text-white transition-colors duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] hover:bg-[#272530] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#37cd8f]/60
card-gradient-surface- background
- linear-gradient(108.94deg, #16093B 18.43%, #221228 52.22%)
- textColor
- #f7f7f8
- radius
- 16px
- padding
- 40px
- border
- 1px solid #33323e
- boxShadow
- rgba(255,255,255,0.1) 0 0 0 1px inset
Tailwind
rounded-[16px] border border-[#33323e] bg-[linear-gradient(108.94deg,#16093B_18.43%,#221228_52.22%)] p-10 text-[#f7f7f8] shadow-[rgba(255,255,255,0.1)_0_0_0_1px_inset] transition-shadow duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] hover:shadow-[0_0_30px_hsla(0,0%,30%,.25)]
hero-gradient-canvas- background
- linear-gradient(327.21deg, rgba(33,0,75,0.24) 3.65%, rgba(60,0,136,0) 40.32%), linear-gradient(245.93deg, rgba(209,21,111,0.16) 0%, rgba(209,25,80,0) 36.63%), linear-gradient(147.6deg, rgba(58,19,255,0) 29.79%, rgba(98,19,255,0.01) 85.72%), #13111C
- textColor
- #f7f7f8
- radius
- 0px
- padding
- 96px 0
Tailwind
relative isolate w-full bg-[linear-gradient(327.21deg,rgba(33,0,75,0.24)_3.65%,rgba(60,0,136,0)_40.32%),linear-gradient(245.93deg,rgba(209,21,111,0.16)_0%,rgba(209,25,80,0)_36.63%),linear-gradient(147.6deg,rgba(58,19,255,0)_29.79%,rgba(98,19,255,0.01)_85.72%),#13111C] py-24 text-[#f7f7f8]
input-field- backgroundColor
- #13111c
- textColor
- #f7f7f8
- radius
- 6px
- padding
- 8px 12px
- border
- 1px solid #33323e
- boxShadow
- none
- fontFamily
- Inter
- fontWeight
- 400
- fontSize
- 14px
- lineHeight
- 20px
Tailwind
w-full rounded-[6px] border border-[#33323e] bg-[#13111c] px-3 py-2 text-[14px] leading-5 text-[#f7f7f8] placeholder:text-[#868593] transition-colors duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] focus-visible:outline-none focus-visible:border-[#59497a] focus-visible:ring-2 focus-visible:ring-[#59497a]/40
code-inline- backgroundColor
- #181122
- textColor
- #a1a0ab
- radius
- 6px
- padding
- 2px 6px
- border
- 1px solid #33323e
- fontFamily
- JetBrains Mono
- fontSize
- 12px
- lineHeight
- 19.5px
Tailwind
rounded-[6px] border border-[#33323e] bg-[#181122] px-1.5 py-0.5 font-[var(--font-jetbrains-mono)] text-[12px] leading-[19.5px] text-[#a1a0ab]
Easings
cubic-bezier(0.4, 0, 0.2, 1)cubic-bezier(0.4, 0, 1, 1)ease-outease-in-outcubic-bezier(0.25, 0.1, 0.25, 0.8)Scroll patterns
- Framer Motion intersection-triggered opacity + translateY reveals at 0.2-0.4s on ease-out
- Ambient looped accents (pulse-station, 3s on cubic-bezier(0.25,0.1,0.25,0.8)) for atmospheric station/train motifs — sparingly
- Linear marquee for logo/train scroller (duration auto, timing linear)
- No parallax beyond subtle translateY — depth comes from gradient layering, not theatrical scroll
- Primary easing: cubic-bezier(0.4, 0, 0.2, 1) (Material-standard ease) — anchors most color/background/border transitions at 0.15s.
- Secondary easing: cubic-bezier(0.4, 0, 1, 1) (ease-in) for transform-driven hovers; ease-out / ease-in-out for fades; cubic-bezier(0.25,0.1,0.25,0.8) only for the 3s ambient pulse loops.
- Five durations captured: 0.05s (instant flips) / 0.15s (primary state change, 11 occurrences — the dominant) / 0.2s (slightly slower hovers) / 0.4s (reveals) / 3s (ambient loops). Most interactive transitions sit on 0.15s.
- Framer Motion is the motion engine (confirmed via window.MotionIsMounted) — use `motion.*` primitives with explicit initial/animate.
- useReducedMotion mandatory: all animations collapse to opacity-only or disable.
- Ambient loop animations (pulse, marquee) are the only permitted infinite loops — interactive affordances never loop.
- Spring physics forbidden in favor of the captured deterministic cubic-bezier set.
- Primary CTA is a solid purple #59497a button; secondary is a dark #20202e outlined variant — clear two-tier hierarchy, never two solid CTAs competing.
- Toggle switches use the green #37cd8f on-state track (matching the widget/positive semantic) against a #535361 off-track.
- Tooltips reveal on hover + focus; dismiss instantly on blur.
- Modals (z-index 50) for confirmations; toasts pinned at high z-index (9999) for transient status.
- Logo / partner walls render as lazy-loaded monochrome SVGs in a scrolling marquee row.
- Empty/loading states: skeleton on the dark surface with a faint gradient shimmer; inline spinner for buttons — no full-page overlays.
- Sticky nav at z-index 10 stays translucent over the gradient canvas, never an opaque bar that breaks the atmosphere.
Desktop-first because the audience is developers on wide displays where the gradient canvas and dusk imagery read at full atmospheric scale. The container pair (1160 narrow / 1696 wide) anchors the layout; mobile reflows the same language — gradients simplify to fewer layers for paint performance, but the violet-black DNA and serif/mono voice carry through unchanged. No hamburger-hidden alternate architecture.
- Breakpoints: sm 376 / md 768 / lg 1024 / xl 1280 / 2xl 1536 — note sm is 376 (not 375/640), matching the observed media queries.
- Container max-width: 1160px for bounded content rails, 1696px for full-width gradient/hero sections.
- On mobile, reduce hero gradient stack from 3 layers to 1-2 for paint cost; keep the #13111c base and a single accent wash.
- Tap target minimum 44×44 on touch; 40×40 on pointer devices.
- Typography scales down proportionally: display 40 → 28, serif headings drop ~25% per tier while negative tracking eases toward 0.
- focus-visible: 2px ring in the green #37cd8f (or purple #59497a for form fields) — mandatory on every interactive element; never rely on the gradient alone for focus signaling.
- All interactive elements reachable via Tab in logical reading order; never rely on hover to expose actions.
- Color contrast: #f7f7f8 on #13111c ≈ 17:1 (AAA); secondary #a1a0ab on #13111c ≈ 6.5:1 (AA). Never drop body text below 4.5:1, and never place body copy directly over a high-chroma gradient stop — keep text on the flat base or lowest-opacity region.
- ARIA labels on icon-only and logo-link buttons; aria-expanded on collapsible regions; aria-live='polite' on toasts and status.
- Motion respects prefers-reduced-motion — gradient pulse loops and marquees disable, reveals reduce to opacity-only.
- Tap targets minimum 44×44 on touch; 40×40 on pointer.
- Decorative gradient/texture imagery uses empty alt (alt=''); meaningful logos carry descriptive alt (e.g. 'Docker logo').
- Form errors announced via aria-describedby on the associated input; never color-only signaling against the dark canvas.
Framer Motion confirmed via window.MotionIsMounted — drives reveals, hovers, and ambient station/train loops. Imagery (WebP hero + texture layers, SVG logos) is 86% lazy-loaded; only the above-fold dusk hero (1696×1696, loading='eager') is eager. The signature visual is CSS multi-layer gradients, not canvas/WebGL — keep it that way for paint performance.
- Framer Motion `motion.div` with `whileInView` + `viewport={{ once: true, margin: '-10%' }}` for scroll reveals at duration 0.2-0.4, ease-out
- Hover transitions use ease `[0.4, 0, 0.2, 1]` and duration 0.15 — constants only
- useReducedMotion guard wraps every animation primitive and disables the 3s ambient loops
- Next/Image with `sizes` always set; `priority` only on the eager hero (dusk-train WebP); everything else loading='lazy'
- Gradients are pure CSS `linear-gradient` stacks — no canvas, no WebGL, no Lottie. Texture WebP layers sit under the gradient at low opacity for warmth.
- Stack 2-3 low-opacity angular linear gradients over the #13111c base — depth comes from layering, never a single flat gradient.
- Pair the serif display voice (IBM Plex Serif) against the mono technical voice (JetBrains Mono) — alternate human and machine registers deliberately.
- Keep structure austere (4px spacing, 1px #33323e hairline borders, 6-8px radii) so the gradients have room to glow.
- Use the green #37cd8f exclusively for positive/active/widget state; the purple #59497a for primary CTAs.
- Reach for the ambient glow shadow `0 0 30px hsla(0,0%,30%,.25)` for soft lift; reserve the big multi-stop cascade for the single most-elevated surface.
- Default to cubic-bezier(0.4, 0, 0.2, 1) at 0.15s for interactive transitions; use Framer Motion with useReducedMotion guards.
- Lazy-load all imagery except the above-fold hero; keep the gradient identity in pure CSS.
- Never flatten the gradient identity into a single solid fill of magenta/violet — the multi-layer wash at low opacity IS the brand; one flat gradient looks generic.
- Never let the canvas drift to true neutral gray — everything stays violet/indigo-tinted (base hsl(250,24%,9%), borders #33323e). A pure #000/#111 base breaks the DNA.
- Never run body text directly over a high-chroma gradient stop — keep paragraphs on the flat base or lowest-opacity region for legibility.
- Never add a fifth type voice — the serif/Inter/Inter-Tight/mono quartet is the ceiling.
- Never invent durations outside the captured set {0.05, 0.15, 0.2, 0.4, 3}s or a sixth easing beyond {cubic-bezier(0.4,0,0.2,1), cubic-bezier(0.4,0,1,1), ease-out, ease-in-out, cubic-bezier(0.25,0.1,0.25,0.8)}.
- Never use hard directional drop shadows for routine elevation — the glow is omnidirectional; depth is light, not lift.
- Never exceed the 1160 / 1696 container pair or coarsen the 4px spacing floor.
- Tailwind v4 @theme inline — gradients expressed as bracketed arbitrary values, no runtime style concatenation.
- Spacing base 4px, scale 4/6/8/12/16/24/32/40/64/92/96/108.
- Container pair 1160px (bounded) / 1696px (wide) — do not exceed.
- Type system: IBM Plex Serif (display) + Inter + Inter Tight + JetBrains Mono (code). No fifth family.
- Weight ladder 400 / 500 / 600 / 700; serif headings lean on size at weight 400.
- Color base #13111c (hsl(250,24%,9%)); accents only inside layered gradients; solid purple #59497a for CTA, green #37cd8f for positive state.
- Motion: five durations (0.05/0.15/0.2/0.4/3s) and five easings (cubic-bezier(0.4,0,0.2,1) primary). Framer Motion engine. No springs.
- Radius scale 6 / 8 / 16 px; border widths 1px / 2px only.
- Container width: no page exceeds 1696px; bounded content sits at 1160px.
- Background audit: base resolves to #13111c (hsl(250,24%,9%)) — violet-tinted, never pure neutral black.
- Gradient audit: hero/feature backgrounds are multi-layer (2-3 stacked linear-gradients), not single flat gradients; per-layer opacity stays ≤ ~0.24.
- Spacing grep: no values outside the 4/6/8/12/16/24/32/40/64/92/96/108 ladder.
- Font audit: only IBM Plex Serif, Inter, Inter Tight, JetBrains Mono appear; serif used for display headings, mono for code/small technical labels.
- Font weight grep: only 400, 500, 600, 700 appear.
- Transition grep: timing-function values draw from {cubic-bezier(0.4,0,0.2,1), cubic-bezier(0.4,0,1,1), ease-out, ease-in-out, cubic-bezier(0.25,0.1,0.25,0.8)}; cubic-bezier(0.4,0,0.2,1) carries most.
- Transition duration grep: values draw from {0.05s, 0.15s, 0.2s, 0.4s, 3s}; 0.15s dominates interactive transitions.
- Radius audit: every corner radius is one of 6 / 8 / 16 px; borders are 1px or 2px.
- Shadow audit: elevation uses the ambient glow `0 0 30px hsla(0,0%,30%,.25)` or gradient layering before any hard directional drop shadow.
- Image audit: loading='lazy' on every non-LCP image; priority/eager only on the dusk hero.
- Contrast audit: body text on #13111c ≥ 4.5:1 (WCAG AA); no body copy over high-chroma gradient stops.
Design tokens
Observed token system
Color, type, spacing, gradients, and stacking order captured from the live page and rendered here as living, paste-ready previews.
Inspector
Observable layers
Structure, breakpoints, motion, fonts, and images captured from the live page and kept paste-ready alongside the tokens.
Depth-first walk of the meaningful sections. 2 nodes across 2 levels, shallow to deep by color.
- body1
- div (×2)
Accessibility
Contrast matrix
258 combinations - 102 pass AA - 54 pass AAA. Each pair is previewed with its real foreground on background; APCA Lc sits alongside the WCAG 2.1 ratio for draft WCAG 3 awareness.
- fg
#000000- bg
#F7F7F8- APCA Lc
- +101
- Use
- foreground on background
- fg
#000000- bg
#DCDCE0- APCA Lc
- +86
- Use
- foreground on foreground
- fg
#DCDCE0- bg
#000000- APCA Lc
- -86
- Use
- foreground on foreground
- fg
#000000- bg
#F0DB4F- APCA Lc
- +84
- Use
- foreground on accent
- fg
#F0DB4F- bg
#000000- APCA Lc
- -84
- Use
- accent on foreground
- fg
#F7F7F8- bg
#3D2259- APCA Lc
- -97
- Use
- background on accent
- fg
#3D2259- bg
#F7F7F8- APCA Lc
- +95
- Use
- accent on background
- fg
#000000- bg
#EEBBBB- APCA Lc
- +74
- Use
- foreground on accent
Images
Image strategy
Observable image posture - total count, lazy-loading ratio, and format mix. The hero image is measured above the fold.
- svg40 · 62%
- webp25 · 38%
Hero image
https://railway.com/secret-landing/hero/bg-train-dusk.webp- Format
- WEBP
- Dimensions
- 1696x1696
- Loading
- eager
- srcset
- yes
- Industry
- developer-tools
- Industry
- saas
- Theme
- Dark
- Added
- 2026-06-24
FAQ
Questions people ask about Railway
3questionsAnswers are pulled from the curator verdict and design brief - the same text your AI agent sees when it paste-reads this page.
Compare this with



