/* Landing: a marked-up review desk. Product screenshots carry the explanation. */ .landing-page { --paper: #fff; --ink: #20241e; --secondary: #596054; --line: #dfe3da; --pencil: #dc452c; background: var(--paper); color: var(--ink); font-family: Manrope, Arial, sans-serif; font-size: 16px; line-height: 1.5; } .landing-page .wrap { width: min(1280px, calc(100% - 96px)); } .landing-page h1, .landing-page h2, .landing-page h3 { font-weight: 800; } .landing-page .site-header { height: 88px; border: 0; display: flex; justify-content: space-between; align-items: center; padding: 0; } .landing-page .site-header nav { display: flex; gap: 32px; align-items: center; } .landing-page .site-header nav a { font-size: 16px; padding: 12px 0; text-decoration: none; } .landing-page .wordmark { font-size: 27px; letter-spacing: -1.2px; display: flex; gap: 8px; align-items: center; font-weight: 800; text-decoration: none; } .landing-page .wordmark-dot { color: var(--pencil); margin-left: -8px; } .intro { display: grid; grid-template-columns: 1.8fr 1fr; gap: 50px; align-items: center; padding: 28px 0 36px; } .intro h1 { font-size: clamp(40px, 5.3vw, 76px); line-height: 1.08; letter-spacing: -0.04em; margin: 0; } .marked { position: relative; white-space: nowrap; } .marked svg { position: absolute; left: -4%; bottom: -12px; width: 110%; height: 24px; overflow: visible; fill: none; stroke: var(--pencil); stroke-width: 3; stroke-linecap: round; } .intro-aside { padding-bottom: 4px; } .intro-aside > p:first-child { font-size: 20px; line-height: 1.5; max-width: 32ch; } .start-button { display: inline-flex; gap: 40px; align-items: center; min-height: 52px; background: var(--ink); color: #fff; text-decoration: none; padding: 13px 22px; border-radius: 5px; margin-top: 24px; font-weight: 600; transition: transform 0.18s; } .start-button:hover { transform: translateY(-2px); background: #394431; } .start-button span { font-size: 24px; line-height: 1; } .intro-aside .setup-note { font-size: 14px; color: var(--secondary); margin-top: 12px; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .story { padding-bottom: 48px; } .story-controls { display: flex; gap: 18px; align-items: center; margin: 8px 0 20px; flex-wrap: wrap; } .story-controls button { border: 0; background: none; min-height: 48px; padding: 9px 6px; font-size: 16px; font-weight: 600; color: var(--secondary); position: relative; } .story-controls button span { font-size: 14px; margin-right: 8px; font-variant-numeric: tabular-nums; } .story-controls button[aria-pressed="true"] { color: var(--ink); } .story-controls button[aria-pressed="true"]:not(.play-story):after { content: ""; position: absolute; bottom: 0; left: 5px; right: 3px; height: 3px; background: var(--pencil); transform: rotate(-1deg); } .step-arrow { font-size: 32px; color: #646d5e; } .story-controls .play-story { margin-left: auto; font-size: 14px; border: 1px solid #b4bcae; border-radius: 30px; padding: 8px 18px; min-height: 44px; } .story-stage { display: grid; grid-template-columns: minmax(0, 2.35fr) minmax(240px, 1fr); gap: 42px; align-items: center; background: #edf2e5; border-radius: 10px; padding: 30px 38px 30px 30px; min-height: 540px; transition: background 0.4s; } .story-stage[data-active="1"] { background: #f6ece6; } .story-stage[data-active="2"] { background: #edf0f9; } .screen-stack { position: relative; min-width: 0; transform: rotate(-1deg); } .screen-zoom { display: block; width: 100%; padding: 0; border: 1px solid #b9c0b2; border-radius: 6px; background: #fff; overflow: hidden; cursor: zoom-in; } .screen-zoom img { display: block; width: 100%; height: auto; object-fit: contain; background: #fff; } .screen-label { display: block; text-align: center; font-size: 14px; margin-top: 12px; color: #49533f; } .story-note { position: relative; padding-top: 30px; } .pencil-note { font-family: Caveat, cursive; font-size: 30px; font-weight: 600; font-style: normal; letter-spacing: -0.6px; transform: rotate(-5deg); margin: 0 0 60px 10px; } .story-note h3 { font-size: 28px; line-height: 1.2; letter-spacing: -1px; margin: 0 0 18px; max-width: 18ch; } .story-note > p { font-size: 16px; line-height: 1.6; max-width: 32ch; } .story-note .context-slip { border-top: 1px solid #99a38e; margin-top: 22px; padding-top: 16px; font-weight: 600; line-height: 1.5; } .story-note > a { display: inline-block; font-size: 14px; margin-top: 20px; padding: 8px 0; } .story-bottom { display: flex; justify-content: space-between; gap: 24px; margin-top: 15px; color: var(--secondary); font-size: 14px; } .handoff { padding: 66px 0 90px; } .handoff-heading { display: flex; align-items: baseline; gap: 40px; flex-wrap: wrap; } .handoff h2 { font-size: clamp(28px, 3.4vw, 44px); letter-spacing: -1.7px; line-height: 1.2; } .handoff-heading p { font-size: 20px; color: var(--secondary); } .circled { position: relative; display: inline-block; } .circled:after { content: ""; position: absolute; inset: -3px -11px; border: 2px solid var(--pencil); border-radius: 48% 52% 44% 56%; transform: rotate(-8deg); } .context-trail { display: flex; align-items: center; gap: 12px; margin: 36px 0 24px; flex-wrap: wrap; } .context-trail span { font-weight: 600; font-size: 16px; padding: 9px 16px; border: 1px solid #cad1c1; border-radius: 3px; } .context-trail span + span:before { content: "+"; position: relative; margin-left: -29px; margin-right: 16px; background: #fff; color: #758069; padding: 0 3px; } .context-trail .agent-end { border: 0; background: #e4efc3; margin-left: 8px; transform: rotate(-2deg); } .context-trail .agent-end:before { content: none; } .agent-instruction { max-width: 70ch; font-size: 16px; color: var(--secondary); } .setup-section { background: #f6f7f3; border-block: 1px solid #dfe3da; padding: 64px 0 32px; } .setup-heading { display: flex; justify-content: space-between; gap: 40px; align-items: center; } .setup-heading h2 { font-size: clamp(28px, 3.3vw, 44px); line-height: 1.16; letter-spacing: -1.5px; } .setup-heading p { font-size: 16px; color: var(--secondary); max-width: 46ch; } .setup-path { display: grid; grid-template-columns: repeat(4, 1fr); list-style: none; padding: 0; margin: 48px 0 32px; gap: 28px; } .setup-path a { display: flex; flex-direction: column; align-items: flex-start; text-decoration: none; gap: 10px; } .setup-number { display: flex; align-items: center; justify-content: center; width: 38px; height: 38px; font-size: 20px; border: 1.5px solid #59634e; border-radius: 48% 45% 50% 44%; transform: rotate(-6deg); margin-bottom: 8px; } .setup-path strong { font-size: 20px; font-weight: 800; letter-spacing: -0.6px; } .setup-path a > span:last-child { font-size: 14px; color: var(--secondary); } .setup-path a:hover strong { text-decoration: underline; text-decoration-color: var(--pencil); text-underline-offset: 5px; } .server-tip { font-size: 16px; padding: 20px 0; border-block: 1px solid var(--line); } .role-links { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; margin-top: 24px; font-size: 14px; } .role-links a { padding: 8px 0; } .role-links > span { font-weight: 600; } .landing-page .landing-footer { display: flex; align-items: flex-start; justify-content: space-between; gap: 36px; padding: 40px 0; border: 0; } .landing-footer p, .landing-footer a, .landing-footer summary { font-size: 14px; } .landing-footer .wordmark { font-size: 24px; } .landing-footer > nav { display: flex; gap: 20px; flex-wrap: wrap; } .compare-disclosure { max-width: 430px; } .compare-disclosure summary { cursor: pointer; min-height: 44px; padding: 8px 0; } .footer-comparisons { padding-top: 12px; } .footer-comparisons > div { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; } #screen-dialog { padding: 20px; border: 0; border-radius: 8px; max-width: calc(100vw - 32px); width: 1180px; max-height: calc(100dvh - 32px); background: white; color: var(--ink); } #screen-dialog::backdrop { background: #172015d9; } .close-screen { display: block; margin: 0 0 14px auto; min-height: 44px; border: 1px solid #87947c; border-radius: 4px; background: #fff; padding: 8px 18px; font-size: 16px; } .zoom-scroll { overflow: auto; max-height: calc(100dvh - 190px); } .zoom-scroll img { display: block; width: 100%; min-width: 900px; height: auto; } #screen-dialog p { font-size: 14px; margin: 12px 0 0; } @keyframes scene-in { from { opacity: 0.55; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .scene-enter { animation: scene-in 0.35s ease-out; } @media (min-width: 1450px) { .intro h1 { font-size: 80px; } .story-stage { min-height: 600px; } } @media (max-width: 1050px) { .landing-page .wrap { width: calc(100% - 64px); } .intro { gap: 32px; grid-template-columns: 1.5fr 1fr; } .intro h1 { font-size: clamp(40px, 5.3vw, 76px); } .intro-aside > p:first-child { font-size: 18px; } .story-stage { gap: 28px; padding: 24px; grid-template-columns: minmax(0, 1.8fr) minmax(220px, 1fr); min-height: 450px; } .story-note h3 { font-size: 24px; } .pencil-note { font-size: 28px; } .setup-path { grid-template-columns: repeat(2, 1fr); gap: 32px; } .story-controls { gap: 10px; } .story-controls button { font-size: 14px; } .handoff-heading { gap: 20px; } } @media (max-width: 900px) { .landing-page .wrap { width: calc(100% - 36px); } .landing-page .site-header { height: 80px; } .landing-page .site-header nav { gap: 18px; } .landing-page .site-header nav a { font-size: 14px; } .landing-page .site-header nav a:first-child { display: none; } .landing-page .wordmark { font-size: 24px; } .intro { display: block; padding: 30px 0 32px; } .intro h1 { font-size: clamp(38px, 8.4vw, 60px); line-height: 1.13; letter-spacing: -0.04em; } .intro-aside { margin-top: 32px; } .intro-aside > p:first-child { font-size: 18px; } .intro-aside > p:first-child br { display: none; } .start-button { margin-top: 20px; } .story-controls { gap: 0; justify-content: space-between; margin-bottom: 16px; } .story-controls button { font-size: 14px; max-width: 28%; padding: 9px 4px; line-height: 1.4; text-align: left; } .story-controls button span { display: block; font-size: 14px; } .story-controls .play-story { max-width: none; margin-left: 0; min-height: 44px; margin-top: 12px; width: 100%; text-align: center; } .step-arrow { font-size: 24px; } .story-stage { display: flex; flex-direction: column; gap: 8px; padding: 18px 14px 24px; min-height: 0; border-radius: 6px; } .screen-stack { width: 100%; transform: none; } .story-note { padding: 12px 8px 0; align-self: stretch; } .pencil-note { display: inline-block; margin: 0 0 18px; font-size: 28px; transform: rotate(-3deg); } .pencil-arrow { display: none; } .story-note h3 { font-size: 26px; max-width: none; margin-bottom: 12px; } .story-note h3 br { display: none; } .story-note > p { max-width: 52ch; } .story-note .context-slip { margin-top: 16px; padding-top: 12px; } .story-note > a { margin-top: 10px; font-size: 16px; } .story-bottom { display: block; font-size: 12px; } .story-bottom p + p { margin-top: 5px; } .story { padding-bottom: 0; } .handoff { padding: 52px 0; } .handoff h2 { font-size: 30px; letter-spacing: -1px; } .handoff-heading { gap: 12px; } .handoff-heading p { font-size: 18px; } .context-trail { gap: 10px; margin: 24px 0; } .context-trail span { font-size: 14px; padding: 8px 12px; } .context-trail span + span:before { display: none; } .context-trail .agent-end { margin-left: 0; } .setup-section { padding-top: 42px; } .setup-heading { display: block; } .setup-heading h2 { font-size: 30px; letter-spacing: -1px; } .setup-heading p { margin-top: 20px; } .setup-heading p br { display: none; } .setup-path { margin: 30px 0; gap: 28px 18px; } .setup-path strong { font-size: 18px; } .setup-path a > span:last-child { font-size: 14px; } .server-tip { font-size: 16px; } .role-links { gap: 8px 18px; font-size: 16px; } .role-links > span { width: 100%; } .landing-page .landing-footer { flex-wrap: wrap; padding: 30px 0; gap: 20px; } .landing-footer > div { width: 100%; } } @media (prefers-reduced-motion: reduce) { .scene-enter { animation: none; } .story-stage, .start-button { transition: none; } .start-button:hover { transform: none; } } /* Pencil annotations stay registered to the captured control, not the frame. */ .screen-zoom { position: relative; } .screen-zoom picture { display: block; } .capture-mark, .detail-mark { position: absolute; inset: 0; width: 100%; height: 100%; fill: none; stroke: #c63f29; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; } .detail-mark { display: none; } .link-arrow { display: inline-block; width: 1em; height: 1em; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; vertical-align: -0.12em; } .step-arrow { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; } .play-icon { width: 16px; height: 16px; fill: currentColor; vertical-align: -2px; margin-right: 5px; } .story-controls .play-story { display: inline-flex; align-items: center; justify-content: center; } @media (max-width: 900px) { .landing-page .site-header { height: 64px; } .intro { padding: 16px 0 18px; } .intro h1 { font-size: clamp(36px, 6.2vw, 48px); line-height: 1.1; } .intro-aside { margin-top: 20px; display: grid; grid-template-columns: auto 1fr; column-gap: 22px; align-items: center; } .intro-aside > p:first-child { grid-column: 1/-1; font-size: 16px; max-width: 50ch; margin-bottom: 14px; } .start-button { margin: 0; min-height: 48px; padding: 10px 16px; gap: 18px; } .intro-aside .setup-note { margin: 0; font-size: 14px; max-width: 21ch; } .story-controls { display: flex; gap: 8px; flex-wrap: nowrap; margin: 8px 0 12px; } .story-controls button { font-size: 14px; max-width: none; flex: 1; min-height: 48px; line-height: 1.3; } .story-controls button span { font-size: 12px; } .story-controls .step-arrow { display: none; } .story-controls .play-story { flex: 0 0 44px; width: 44px; margin: 0; padding: 0; } .play-icon { margin: 0; } .play-label { display: none; } .story-stage { padding: 12px 12px 20px; } .screen-stack { width: 100%; max-width: 560px; } .story-stage[data-active="0"] .capture-mark { display: none; } .story-stage[data-active="0"] .detail-mark { display: block; } .screen-label { font-size: 12px; margin-top: 8px; } .pencil-note { margin-bottom: 12px; } } @media (min-width: 600px) and (max-width: 900px) { .intro { display: grid; grid-template-columns: 1.2fr 1fr; gap: 26px; } .intro h1 { font-size: 42px; } .intro-aside { display: block; margin: 0; } .intro-aside .setup-note { max-width: none; margin-top: 10px; } .story-stage { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(200px, 1fr); align-items: center; padding: 22px; gap: 24px; } .story-note { padding: 0; } .story-note h3 { font-size: 24px; } .story-note .context-slip { margin-top: 14px; padding-top: 14px; } .story-note > a { font-size: 14px; } } .screen-stack > [hidden] { display: none; } .screen-stack feedbacks-demo { margin: 0; width: 100%; } /* One opening composition: explanation beside the complete working example. */ .landing-page .hero { display: grid; grid-template-columns: minmax(280px, 0.85fr) minmax(0, 1.5fr); align-items: center; gap: 40px; padding-block: 16px 24px; text-align: left; } .landing-page .hero .intro { display: block; padding: 0; } .landing-page .hero .intro h1 { font-size: clamp(40px, 4.1vw, 60px); } .landing-page .hero .intro-aside { margin-top: 32px; } .landing-page .hero .intro-aside > p:first-child { font-size: 18px; } .landing-page .hero .story { min-width: 0; padding: 0; } .landing-page .hero .story-controls { gap: 8px; margin: 0 0 12px; flex-wrap: nowrap; justify-content: space-between; } .landing-page .hero .story-controls button { font-size: 14px; padding-inline: 2px; } .landing-page .hero .story-controls button span { margin-right: 4px; } .landing-page .hero .step-arrow { width: 18px; flex-shrink: 0; } .landing-page .hero .story-stage { display: block; min-height: 0; padding: 16px; } .landing-page .hero .screen-stack { transform: none; } .landing-page .hero feedbacks-demo { --demo-screen-height: clamp(220px, calc(100svh - 430px), 360px); } .landing-page .hero .story-note { padding: 12px 4px 0; display: grid; grid-template-columns: 1fr auto; gap: 4px 16px; align-items: center; } .landing-page .hero .pencil-note { font-size: 23px; margin: 0; transform: rotate(-2deg); grid-column: 1 / -1; } .landing-page .hero .story-note h3 { font-size: 18px; letter-spacing: -0.025em; margin: 0; max-width: none; } .landing-page .hero .story-note h3 br { display: none; } .landing-page .hero .story-note > a { font-size: 13px; margin: 0; padding: 8px 0; } .landing-page .site-header { height: 64px; } .landing-page .site-header nav { gap: 24px; } .comparisons { padding-block: 64px; } .comparison-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; } .comparison-heading h2 { font-size: clamp(28px, 3.3vw, 44px); line-height: 1.2; letter-spacing: -0.03em; } .comparisons > p { color: var(--secondary); margin-top: 12px; } .comparison-links { display: flex; flex-wrap: wrap; gap: 0 32px; margin-top: 24px; border-block: 1px solid var(--line); padding-block: 16px; } .comparison-links a { padding-block: 10px; font-size: 18px; font-weight: 600; } html[data-feedbacks-motion="paused"] .scene-enter { animation: none; } html[data-feedbacks-motion="paused"] .story-stage { transition: none; } @media (max-width: 1100px) { .landing-page .hero { gap: 24px; grid-template-columns: minmax(270px, 0.85fr) minmax(0, 1.5fr); } .landing-page .hero .story-controls button span { display: none; } .landing-page .hero .story-note { display: block; } .landing-page .hero .story-note h3 { margin-top: 6px; } .landing-page .hero feedbacks-demo { --demo-screen-height: clamp(200px, calc(100svh - 470px), 320px); } } @media (max-width: 900px) { .landing-page .hero { display: block; padding-top: 16px; } .landing-page .hero .intro h1 { font-size: clamp(36px, 6.2vw, 48px); } .landing-page .hero .intro-aside { margin-top: 20px; } .landing-page .hero .story { margin-top: 28px; } .landing-page .hero feedbacks-demo { --demo-screen-height: clamp(220px, 60vw, 360px); } .landing-page .hero .story-controls button { max-width: none; } .landing-page .hero .story-note { padding-top: 16px; } .landing-page .site-header { height: auto; min-height: 64px; flex-wrap: wrap; gap: 8px 16px; padding-block: 12px; } .landing-page .site-header nav { gap: 16px; flex-wrap: wrap; } .landing-page .site-header nav a:first-child { display: inline-block; } .landing-page .site-header nav a[href*="github.com"] { display: none; } .comparisons { padding-block: 40px; } } @media (min-width: 901px) { .landing-page .hero feedbacks-demo { --demo-footer-display: grid; --demo-caption-height: 0; --demo-controls-gap: 0; } }