/* ========================================================================== Lumen — page layout -------------------------------------------------------------------------- Everything in this file is *layout*: where things sit, how wide they get, when they stack. Not one color, shadow, radius, type size or duration is stated here — those all come from Niveus, which is the whole point of the split. If you find yourself writing a hex value in a file like this, the system is missing a token. ========================================================================== */ .shell { max-inline-size: var(--nv-layout-max-width); margin-inline: auto; padding-inline: var(--nv-layout-gutter); } .section { padding-block: var(--nv-space-20); } .section__head { max-inline-size: var(--nv-measure); margin-block-end: var(--nv-space-8); display: flex; flex-direction: column; gap: var(--nv-space-3); } .section__head--center { margin-inline: auto; text-align: center; align-items: center; } /* --- Hero ------------------------------------------------------------------ */ .hero { display: grid; gap: var(--nv-space-12); padding-block: var(--nv-space-16) var(--nv-space-8); align-items: center; } @media (min-width: 62rem) { .hero { grid-template-columns: 1fr 1fr; gap: var(--nv-space-16); } } .hero__copy { display: flex; flex-direction: column; gap: var(--nv-space-5); align-items: flex-start; } .hero__title { font-size: clamp(var(--nv-font-size-4xl), 6vw, var(--nv-font-size-5xl)); } /* --- Preview --------------------------------------------------------------- A mock of the product, sitting on a bed so the frosted panel above it has something to be frosted against. */ .preview { display: flex; flex-direction: column; gap: var(--nv-space-3); max-inline-size: 30rem; margin-inline: auto; } .bubble { padding: var(--nv-space-3) var(--nv-space-4); border-radius: var(--nv-radius-lg); max-inline-size: 85%; } .bubble--from-user { align-self: flex-end; border-end-end-radius: var(--nv-radius-xs); } .bubble--from-agent { align-self: flex-start; border-end-start-radius: var(--nv-radius-xs); } /* --- Logos ------------------------------------------------------------------ */ .logos { display: flex; flex-wrap: wrap; gap: var(--nv-space-8); justify-content: center; align-items: center; padding-block: var(--nv-space-8); opacity: 0.75; } /* --- Features ---------------------------------------------------------------- */ .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr)); gap: var(--nv-space-5); } .feature__icon { inline-size: var(--nv-space-10); block-size: var(--nv-space-10); display: grid; place-items: center; margin-block-end: var(--nv-space-4); border-radius: var(--nv-radius-md); background-color: var(--nv-color-accent-subtle); color: var(--nv-color-accent-text); } .feature__icon svg { inline-size: var(--nv-space-5); block-size: var(--nv-space-5); } /* --- Pricing ------------------------------------------------------------------ */ .pricing { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr)); gap: var(--nv-space-5); align-items: start; } .price { display: flex; align-items: baseline; gap: var(--nv-space-2); margin-block: var(--nv-space-4); } .price__amount { font-size: var(--nv-font-size-4xl); font-weight: var(--nv-font-weight-semibold); letter-spacing: var(--nv-letter-spacing-tighter); color: var(--nv-color-text-primary); } .plan-features { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--nv-space-2-5); } .plan-features li { display: flex; align-items: flex-start; gap: var(--nv-space-2-5); } .plan-features svg { inline-size: 1em; block-size: 1em; margin-block-start: 0.25em; flex: none; color: var(--nv-color-success-text); } /* --- Closing ------------------------------------------------------------------- */ .closing { text-align: center; display: flex; flex-direction: column; align-items: center; gap: var(--nv-space-5); padding-block: var(--nv-space-12); } .site-footer { padding-block: var(--nv-space-8) var(--nv-space-12); border-block-start: var(--nv-border-width) solid var(--nv-color-border-subtle); }