Files
feresaria/site/styles.css
T
Samuel Onoja 3533fac521 Update branding
Update the Ferese symbols, appearance-specific wallpapers, and rounded wallpaper and theme previews. Bundle Figtree and add the Ferese name to the website header.

Verified configuration, theme, Settings, wallpaper and installer tests, both UI renderers, the static site build, and browser layouts.
2026-10-04 11:11:14 +01:00

1182 lines
20 KiB
CSS

@font-face {
font-family: "Figtree";
src: url("assets/fonts/Figtree-Variable.ttf") format("truetype");
font-style: normal;
font-weight: 300 900;
font-display: swap;
}
@font-face {
font-family: "JetBrains Mono";
src: url("assets/fonts/JetBrainsMono-Regular.ttf") format("truetype");
font-style: normal;
font-weight: 400;
font-display: swap;
}
:root {
--paper: #10151c;
--white: #18212c;
--ink: #edf2f8;
--muted: #a5b1c1;
--line: #2c3745;
--blue: #91b8ff;
--soft: #1c2838;
--mono:
"JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;
--sans: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;
color-scheme: dark;
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
scroll-padding-top: 95px;
}
body {
margin: 0;
background: var(--paper);
color: var(--ink);
font: 17px/1.65 var(--sans);
-webkit-font-smoothing: antialiased;
}
a {
color: inherit;
text-decoration: none;
}
button,
input {
font: inherit;
}
button {
cursor: pointer;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
summary:focus-visible {
outline: 3px solid var(--blue);
outline-offset: 4px;
}
img {
display: block;
max-width: 100%;
height: auto;
}
h1,
h2,
h3,
p,
figure,
dl {
margin: 0;
}
.page-width,
.header-inner {
width: min(1280px, calc(100% - 96px));
margin-inline: auto;
}
.site-header {
border-bottom: 1px solid var(--line);
background: var(--paper);
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
height: 88px;
gap: 30px;
}
.brand {
display: inline-flex;
align-items: center;
}
.site-header .brand {
gap: 8px;
flex-shrink: 0;
}
.brand-name {
font-size: 20px;
font-weight: 600;
letter-spacing: -0.02em;
}
.brand-icon {
width: 56px;
height: auto;
}
.site-header nav {
display: flex;
gap: 36px;
align-items: center;
font-size: 14px;
}
.site-header nav a {
padding: 10px 0;
position: relative;
white-space: nowrap;
}
.site-header nav a[aria-current="page"]:after {
content: "";
position: absolute;
height: 2px;
bottom: 0;
left: 0;
right: 0;
background: var(--ink);
}
.site-header nav a:hover,
.inline-link:hover,
.rail-link:hover,
.site-footer > a:last-child:hover {
color: var(--blue);
}
.eyebrow {
font: 10px/1.7 var(--mono);
letter-spacing: 1.2px;
}
.hero {
padding-block: 58px 64px;
}
.hero-kicker {
display: flex;
justify-content: space-between;
color: var(--muted);
margin-bottom: 34px;
}
.hero-grid {
display: grid;
grid-template-columns: 1.35fr 1fr;
gap: 80px;
align-items: end;
}
h1 {
font-size: clamp(47px, 5.5vw, 78px);
font-weight: 500;
letter-spacing: -3.7px;
line-height: 1.08;
}
h1 span {
color: var(--blue);
}
.hero-description {
max-width: 410px;
padding-bottom: 5px;
}
.hero-description > p {
font-size: 15px;
line-height: 1.9;
color: var(--muted);
}
.hero-links {
display: flex;
align-items: center;
gap: 24px;
margin-top: 26px;
}
.button {
display: inline-flex;
align-items: center;
justify-content: space-between;
gap: 33px;
background: var(--ink);
color: #fff;
padding: 13px 19px;
font-size: 14px;
transition: background 0.15s;
}
.button:hover {
background: var(--blue);
}
.inline-link {
font-size: 12px;
display: inline-flex;
gap: 12px;
align-items: center;
}
.desktop-hero {
scroll-margin-top: 25px;
}
.image-label {
display: flex;
justify-content: space-between;
padding: 12px 0;
border-top: 1px solid var(--ink);
font: 9px var(--mono);
letter-spacing: 1px;
}
.desktop-hero img {
width: 100%;
border: 1px solid var(--line);
}
figcaption {
display: flex;
justify-content: space-between;
gap: 20px;
color: var(--muted);
font-size: 11px;
padding-top: 17px;
}
figcaption > span:last-child {
font: 9px/1.7 var(--mono);
}
.editorial-section {
display: grid;
grid-template-columns: 220px minmax(0, 1fr);
column-gap: 65px;
padding-block: 105px;
border-top: 1px solid var(--line);
margin-top: 76px;
}
.section-rail {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start;
gap: 30px;
color: var(--muted);
}
.rail-link {
font-size: 11px;
}
h2 {
font-size: clamp(32px, 3.2vw, 46px);
font-weight: 500;
line-height: 1.18;
letter-spacing: -1.7px;
}
.section-intro {
max-width: 630px;
font-size: 16px;
line-height: 1.85;
color: var(--muted);
margin-top: 24px;
}
.layout-explanations {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
margin-top: 46px;
}
.layout-explanations article {
border-top: 1px solid var(--line);
padding-top: 20px;
}
h3 {
font-size: 18px;
font-weight: 550;
letter-spacing: -0.4px;
}
.layout-explanations p,
.appearance-notes p {
font-size: 13px;
line-height: 1.9;
color: var(--muted);
margin-top: 12px;
}
.key-line {
display: flex;
align-items: center;
gap: 6px;
flex-wrap: wrap;
font: 10px var(--mono);
margin-top: 23px;
}
.key-line > span:last-child {
font: 10px var(--sans);
margin-left: 4px;
color: var(--muted);
}
kbd {
border: 1px solid var(--line);
border-bottom-width: 2px;
padding: 3px 6px;
background: var(--white);
font: 10px var(--mono);
}
.aside-note {
font-size: 11px;
color: var(--muted);
margin-top: 30px;
}
.appearance-section {
background: var(--soft);
}
.appearance-section .editorial-section {
border: 0;
margin-top: 0;
padding-block: 85px;
}
.appearance-shot {
grid-column: 1/-1;
margin-top: 46px;
}
.appearance-shot img {
width: 100%;
border: 1px solid var(--line);
}
.appearance-shot figcaption > span:first-child {
font: 10px var(--mono);
}
.appearance-notes {
grid-column: 1/-1;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 45px;
margin-top: 44px;
}
.appearance-notes h3 {
font-size: 16px;
}
.setup-section {
margin-top: 0;
border-top: 0;
}
.capabilities {
margin-top: 37px;
}
.capabilities > div {
display: grid;
grid-template-columns: 150px 1fr;
gap: 25px;
border-top: 1px solid var(--line);
padding: 21px 0;
}
.capabilities dt {
font-size: 13px;
font-weight: 600;
}
.capabilities dd {
margin: 0;
font-size: 13px;
color: var(--muted);
max-width: 480px;
line-height: 1.9;
}
.start-section {
background: #202a24;
color: #f7f8f5;
padding-block: 75px;
}
.start-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 100px;
}
.start-section .eyebrow {
color: #b9c9b5;
}
.start-section h2 {
font-size: 51px;
margin-block: 22px;
}
.start-section p {
font-size: 13px;
line-height: 1.9;
color: #c1ccc3;
max-width: 410px;
margin-bottom: 28px;
}
.button.light {
background: #edf3e8;
color: #202a24;
}
.button.light:hover {
background: #d9e6d0;
}
.start-links {
align-self: center;
}
.start-links a {
display: flex;
justify-content: space-between;
align-items: center;
gap: 20px;
padding: 25px 0;
border-top: 1px solid #4a564a;
}
.start-links a:last-child {
border-bottom: 1px solid #4a564a;
}
.start-links small {
display: block;
color: #b9c9b5;
font: 9px var(--mono);
letter-spacing: 1.2px;
margin-bottom: 8px;
}
.start-links strong {
font-size: 19px;
font-weight: 400;
}
.start-links a:hover strong {
text-decoration: underline;
text-underline-offset: 5px;
}
.site-footer {
display: flex;
align-items: center;
gap: 25px;
padding-block: 35px;
}
.site-footer p {
font-size: 12px;
color: var(--muted);
}
.site-footer > a:last-child {
margin-left: auto;
font-size: 12px;
}
.skip {
position: fixed;
left: 14px;
top: -100px;
padding: 12px 18px;
color: #10151c;
background: var(--blue);
z-index: 10;
}
.skip:focus {
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;
}
/* The handbook shares the site's typography and navigation. */
.docs-page .site-header {
position: sticky;
top: 0;
z-index: 5;
}
.docs-layout {
display: grid;
grid-template-columns: 205px minmax(0, 760px) 180px;
gap: 42px;
width: min(1360px, calc(100% - 72px));
margin: 0 auto;
padding-block: 42px 80px;
align-items: start;
}
.docs-sidebar,
.docs-toc {
position: sticky;
top: 124px;
max-height: calc(100vh - 155px);
overflow: auto;
}
.docs-sidebar summary {
font: 10px var(--mono);
letter-spacing: 1px;
list-style: none;
margin-bottom: 18px;
color: var(--muted);
}
.docs-sidebar nav {
display: grid;
gap: 3px;
}
.docs-sidebar nav a {
font-size: 14px;
padding: 8px 12px;
border-left: 2px solid transparent;
}
.docs-sidebar nav a:hover {
background: var(--soft);
}
.docs-sidebar nav a[aria-current="page"] {
border-color: var(--blue);
color: var(--blue);
background: var(--soft);
font-weight: 600;
}
.sidebar-links {
border-top: 1px solid var(--line);
padding-top: 17px;
margin-top: 25px;
font-size: 11px;
display: grid;
gap: 12px;
color: var(--muted);
}
.docs-article {
min-width: 0;
}
.breadcrumb {
font: 10px var(--mono);
color: var(--muted);
margin-bottom: 18px;
display: flex;
gap: 10px;
}
.docs-article h1 {
font-size: 46px;
letter-spacing: -1.7px;
margin-bottom: 28px;
line-height: 1.15;
}
.prose {
font-size: 16px;
line-height: 1.9;
}
.prose > p {
margin-block: 18px;
color: #c2ccd9;
}
.prose > p:first-of-type {
font-size: 17px;
line-height: 1.85;
color: var(--muted);
}
.prose h2 {
font-size: 27px;
letter-spacing: -0.8px;
border-top: 1px solid var(--line);
padding-top: 28px;
margin-top: 48px;
margin-bottom: 17px;
scroll-margin-top: 115px;
}
.prose h3 {
font-size: 18px;
margin-block: 30px 12px;
scroll-margin-top: 115px;
}
.prose a {
color: var(--blue);
text-decoration: underline;
text-underline-offset: 3px;
overflow-wrap: anywhere;
}
.prose code {
font-family: var(--mono);
font-size: 0.88em;
background: var(--soft);
padding: 2px 5px;
overflow-wrap: anywhere;
}
.prose pre {
position: relative;
border: 1px solid var(--line);
background: #151e29;
margin-block: 25px;
padding: 40px 18px 18px;
overflow-x: auto;
line-height: 1.8;
font-size: 12px;
}
.prose pre code {
padding: 0;
background: none;
white-space: pre;
overflow-wrap: normal;
font-size: inherit;
}
.code-copy {
position: absolute;
right: 8px;
top: 7px;
background: var(--paper);
border: 1px solid var(--line);
padding: 3px 9px;
font: 10px var(--sans);
color: var(--muted);
}
.prose li {
margin-bottom: 8px;
}
.prose ul,
.prose ol {
padding-left: 23px;
}
.table-scroll {
overflow-x: auto;
margin-block: 25px;
border: 1px solid var(--line);
}
.prose table {
border-collapse: collapse;
width: 100%;
font-size: 12px;
line-height: 1.7;
}
.prose th {
text-align: left;
background: var(--soft);
font-weight: 600;
white-space: nowrap;
}
.prose td,
.prose th {
padding: 12px;
border-bottom: 1px solid var(--line);
vertical-align: top;
min-width: 110px;
}
.prose td:first-child {
min-width: 160px;
}
.prose tr:last-child td {
border-bottom: 0;
}
.prose blockquote {
border-left: 2px solid var(--blue);
padding: 2px 18px;
margin: 25px 0;
background: var(--soft);
}
.prose blockquote p {
margin-block: 12px;
}
.docs-toc > p {
font: 9px var(--mono);
letter-spacing: 1px;
color: var(--muted);
margin: 0 0 15px;
}
.docs-toc nav {
display: grid;
gap: 12px;
}
.docs-toc a {
font-size: 12px;
line-height: 1.5;
color: var(--muted);
border-left: 1px solid var(--line);
padding-left: 13px;
}
.docs-toc a:hover {
color: var(--blue);
border-color: var(--blue);
}
.docs-pager {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-top: 50px;
padding-top: 25px;
border-top: 1px solid var(--line);
}
.docs-pager a {
font-size: 14px;
}
.docs-pager a:last-child {
text-align: right;
grid-column: 2;
}
.docs-pager small {
display: block;
color: var(--muted);
font: 9px var(--mono);
margin-bottom: 6px;
}
.edit-link {
font-size: 11px;
color: var(--muted);
display: inline-block;
margin-top: 35px;
}
.docs-search {
margin-bottom: 24px;
position: relative;
}
.docs-search input {
width: 100%;
border: 1px solid var(--line);
background: var(--white);
color: var(--ink);
padding: 10px 12px;
font-size: 12px;
border-radius: 0;
}
.search-results {
position: absolute;
top: 47px;
left: 0;
width: min(660px, calc(100vw - 48px));
max-height: 65vh;
overflow: auto;
background: var(--white);
border: 1px solid var(--line);
box-shadow: 0 12px 35px #0006;
z-index: 8;
}
.search-results[hidden] {
display: none;
}
.search-results a {
display: block;
padding: 14px 17px;
border-bottom: 1px solid var(--line);
}
.search-results a:hover {
background: var(--soft);
}
.search-results strong {
display: block;
font-size: 13px;
color: var(--blue);
}
.search-results span {
display: block;
font-size: 11px;
color: var(--muted);
line-height: 1.7;
margin-top: 5px;
}
.search-results > p {
padding: 15px;
font-size: 12px;
}
.search-summary {
color: var(--muted);
font-size: 11px;
margin-top: 6px;
}
.docs-sidebar:has(.search-results:not([hidden])) {
overflow: visible;
}
@media (max-width: 1100px) {
.hero-grid {
gap: 40px;
}
.editorial-section {
grid-template-columns: 175px minmax(0, 1fr);
gap: 35px;
}
.docs-layout {
grid-template-columns: 185px minmax(0, 1fr);
gap: 35px;
}
.docs-toc {
display: none;
}
.start-grid {
gap: 60px;
}
}
@media (max-width: 760px) {
.page-width,
.header-inner {
width: calc(100% - 40px);
}
.header-inner {
height: 74px;
gap: 12px;
}
.brand-icon {
width: 48px;
height: auto;
}
.site-header nav {
gap: 12px;
font-size: 12px;
}
.site-header nav a:first-child {
display: none;
}
.hero {
padding-block: 35px 40px;
}
.hero-platform {
display: none;
}
.hero-kicker {
margin-bottom: 25px;
}
.hero-grid {
grid-template-columns: 1fr;
gap: 25px;
}
h1 {
font-size: 54px;
letter-spacing: -2.8px;
}
.hero-description {
max-width: 480px;
}
.hero-description > p {
font-size: 14px;
}
.hero-links {
gap: 22px;
margin-top: 22px;
}
.hero-links .button {
font-size: 12px;
}
.inline-link {
font-size: 11px;
}
.image-label {
font-size: 8px;
}
.desktop-hero figcaption {
font-size: 10px;
display: block;
}
.desktop-hero figcaption > span:last-child {
display: block;
margin-top: 5px;
font-size: 8px;
}
.editorial-section {
grid-template-columns: 1fr;
gap: 25px;
margin-top: 40px;
padding-block: 45px;
}
.section-rail {
flex-direction: row;
align-items: center;
gap: 15px;
}
.eyebrow {
font-size: 9px;
letter-spacing: 0.7px;
}
.rail-link {
font-size: 10px;
}
h2 {
font-size: 33px;
letter-spacing: -1px;
}
.section-intro {
font-size: 14px;
margin-top: 20px;
}
.layout-explanations {
gap: 25px;
margin-top: 32px;
grid-template-columns: 1fr;
}
.layout-explanations h3 {
font-size: 18px;
}
.key-line {
margin-top: 16px;
}
.aside-note {
margin-top: 24px;
}
.appearance-section .editorial-section {
padding-block: 45px;
}
.appearance-shot {
margin-top: 6px;
}
.appearance-shot figcaption {
font-size: 9px;
gap: 15px;
}
.appearance-shot figcaption > span:first-child {
font-size: 8px;
white-space: nowrap;
}
.appearance-shot figcaption > span:last-child {
font: 9px var(--sans);
}
.appearance-notes {
grid-template-columns: 1fr;
gap: 24px;
margin-top: 3px;
}
.appearance-notes p {
margin-top: 6px;
}
.setup-section {
margin-top: 0;
}
.capabilities {
margin-top: 25px;
}
.capabilities > div {
grid-template-columns: 1fr;
gap: 7px;
padding-block: 17px;
}
.start-section {
padding-block: 43px;
}
.start-grid {
grid-template-columns: 1fr;
gap: 30px;
}
.start-section h2 {
font-size: 43px;
}
.start-section p {
font-size: 13px;
}
.start-links strong {
font-size: 17px;
}
.site-footer {
gap: 12px;
flex-wrap: wrap;
padding-block: 26px;
}
.site-footer p {
font-size: 12px;
}
.site-footer > a:last-child {
font-size: 12px;
}
.docs-layout {
width: calc(100% - 36px);
grid-template-columns: 1fr;
gap: 30px;
padding-top: 24px;
}
.docs-sidebar {
position: relative;
top: auto;
max-height: none;
overflow: visible;
}
.docs-sidebar details {
border-bottom: 1px solid var(--line);
padding-bottom: 16px;
}
.docs-sidebar summary {
cursor: pointer;
list-style: revert;
margin: 0 0 13px;
}
.docs-sidebar nav {
grid-template-columns: 1fr 1fr;
gap: 0;
}
.docs-sidebar nav a {
font-size: 13px;
padding: 6px 10px;
}
.sidebar-links {
display: none;
}
.docs-search {
margin-bottom: 18px;
}
.search-results {
width: 100%;
}
.docs-article h1 {
font-size: 37px;
letter-spacing: -1px;
}
.prose {
font-size: 16px;
}
.prose h2 {
font-size: 25px;
}
.prose pre {
font-size: 11px;
}
.docs-page .site-header {
position: relative;
}
.prose h2,
.prose h3 {
scroll-margin-top: 20px;
}
}
@media (max-width: 480px) {
.header-inner {
height: auto;
min-height: 74px;
flex-wrap: wrap;
gap: 4px;
padding-block: 10px;
}
.site-header nav {
width: 100%;
justify-content: space-between;
}
}
@media (max-width: 380px) {
h1 {
font-size: 47px;
}
.site-header nav {
gap: 12px;
}
.hero-links {
gap: 14px;
}
.button {
gap: 20px;
}
.site-footer > a:last-child {
margin-left: 0;
}
.rail-link {
max-width: 130px;
text-align: right;
}
}
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
*,
*::before,
*::after {
animation: none !important;
transition: none !important;
}
}
/* Compact product homepage. */
.simple-home .page-width {
max-width: 1000px;
}
.product-intro {
text-align: center;
padding-block: 24px 34px;
}
.intro-icon {
width: 128px;
height: auto;
margin: 0 auto;
}
.product-tagline {
font-size: 20px;
font-weight: 400;
letter-spacing: normal;
line-height: 1.5;
}
.product-description {
color: var(--muted);
max-width: 600px;
margin: 13px auto 0;
font-size: 17px;
}
.product-links {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
gap: 14px;
margin-top: 24px;
}
.product-links .button {
border-radius: 5px;
background: #285ec2;
border: 1px solid #285ec2;
padding: 11px 20px;
}
.product-links .button:hover {
background: #3471db;
}
.product-links .secondary {
background: transparent;
color: var(--blue);
}
.product-links .secondary:hover {
background: var(--soft);
}
.source-link {
font-size: 14px;
color: var(--muted);
margin-left: 5px;
}
.product-screenshot img {
width: 100%;
border: 1px solid var(--line);
border-radius: 8px;
}
.product-screenshot figcaption {
justify-content: center;
padding-top: 10px;
font-size: 12px;
}
.product-features {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 35px;
padding-block: 40px;
}
.product-features h2,
.product-motion h2,
.product-getting-started h2 {
font-size: 22px;
font-weight: 600;
letter-spacing: -0.4px;
line-height: 1.4;
}
.product-features p,
.product-motion p,
.product-getting-started p {
font-size: 16px;
color: var(--muted);
margin-top: 12px;
line-height: 1.8;
}
.product-features a,
.product-motion a {
display: inline-block;
font-size: 14px;
color: var(--blue);
margin-top: 12px;
}
.product-motion,
.product-getting-started {
border-top: 1px solid var(--line);
padding-block: 28px 42px;
}
.product-getting-started a {
color: var(--blue);
text-decoration: underline;
text-underline-offset: 3px;
}
.simple-home + .site-footer {
max-width: 1000px;
border-top: 1px solid var(--line);
}
@media (max-width: 760px) {
.product-intro {
padding-block: 35px 27px;
}
.product-tagline {
font-size: 19px;
}
.product-description {
font-size: 16px;
}
.product-links {
gap: 10px;
}
.product-links .button {
padding: 10px 15px;
font-size: 13px;
}
.source-link {
font-size: 13px;
}
.product-features {
grid-template-columns: 1fr;
gap: 25px;
padding-block: 30px;
}
.product-features p {
margin-top: 7px;
}
}
/* SVG external-link arrows avoid platform emoji presentation. */
.link-arrow {
display: inline-block;
width: 1em;
height: 1em;
vertical-align: -0.125em;
}