From 49da442682d88b35c1f2bf1833c59b0f303ede69 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 14:59:36 +0000 Subject: [PATCH 1/3] Site: move onto the shared Basalt design system Keeps every Upright colour. Geist Mono for labels and the uppercase eyebrows, ad-hoc text sizes (12.5/13.5/14.5/15.5/16/16.5/18/19/24px) onto the shared scale, size-specific tracking, radius scale 6/10/14/20/pill, press scale 0.97 over 120ms, colour-only hover (arrow nudges and the mouse-card lift go), 180ms FAQ open, solid chrome with reduced transparency and stronger lines with more contrast. The macOS mock-ups in the stages are unchanged. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Q52L7FKxosfCxSN3qT1iDD --- site/assets/fonts/geist-mono.woff2 | Bin 0 -> 23388 bytes site/assets/site.css | 223 ++++++++++++++++------------- 2 files changed, 126 insertions(+), 97 deletions(-) create mode 100644 site/assets/fonts/geist-mono.woff2 diff --git a/site/assets/fonts/geist-mono.woff2 b/site/assets/fonts/geist-mono.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..af516ca66c5f43040c45b634f1113559ed261239 GIT binary patch literal 23388 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 DSM)M< literal 0 HcmV?d00001 diff --git a/site/assets/site.css b/site/assets/site.css index 76a2471..63c7897 100644 --- a/site/assets/site.css +++ b/site/assets/site.css @@ -1,3 +1,12 @@ +/* Geist Mono: the one web font in the Basalt system, for labels and data. */ +@font-face { + font-family: "Geist Mono"; + src: url("fonts/geist-mono.woff2") format("woff2"); + font-weight: 400 600; + font-style: normal; + font-display: swap; +} + /* Layout: a centered hero over the live demo, then one section per feature. Each feature pairs a short text block with its own animated stage, alternating sides on wide screens and stacking on phones. Page tokens first, then the macOS tokens the recreated Upright interface @@ -35,10 +44,21 @@ --sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable Text", "Segoe UI", "Inter", Roboto, "Helvetica Neue", Arial, sans-serif; --display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI Variable Display", "Segoe UI", "Inter Display", "Inter", Roboto, "Helvetica Neue", Arial, sans-serif; --body: var(--sans); - --mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; + --mono: "Geist Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; --mac: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", "Helvetica Neue", Arial, sans-serif; - --ease-out: cubic-bezier(0.16, 1, 0.3, 1); + /* Shared Basalt design system: motion, shape and tap size (colours above stay Upright's own). */ + --ease-out: cubic-bezier(0.23, 1, 0.32, 1); + --dur-press: 120ms; + --dur-hover: 150ms; + --press-scale: 0.97; + --radius-xs: 6px; + --radius-sm: 10px; + --radius-md: 14px; + --radius-lg: 20px; + --radius-pill: 999px; + --tap-min: 44px; + --measure: 65ch; --section: clamp(96px, 12vw, 168px); /* macOS interface (light) */ @@ -191,8 +211,8 @@ body { margin: 0; background: var(--bg); color: var(--ink); - font: 400 17px/1.55 var(--sans); - letter-spacing: -0.006em; + font: 400 17px/1.5 var(--sans); + letter-spacing: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; @@ -236,7 +256,7 @@ svg { flex: none; } background: var(--card); color: var(--ink); padding: 8px 14px; - border-radius: 8px; + border-radius: var(--radius-sm); z-index: 100; } .skip:focus { top: 12px; } @@ -259,7 +279,7 @@ code { -webkit-backdrop-filter: saturate(1.8) blur(20px); backdrop-filter: saturate(1.8) blur(20px); border-bottom: 1px solid transparent; - transition: border-color 0.3s ease, background-color 0.3s ease; + transition: border-color var(--dur-hover) ease, background-color var(--dur-hover) ease; } .nav.scrolled { border-bottom-color: var(--rule); } .nav-inner { @@ -291,7 +311,7 @@ code { color: var(--ink-3); text-decoration: none; white-space: nowrap; - transition: color 0.2s ease; + transition: color var(--dur-hover) ease; } @media (hover: hover) and (pointer: fine){.by-basalt:hover{ color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }} /* Hide the tag where the header stops fitting it (about 370px and narrower). */ @@ -299,12 +319,12 @@ code { .nav-links { display: flex; gap: 28px; - font-size: 14px; - letter-spacing: -0.006em; + font-size: 15px; + letter-spacing: 0; color: var(--ink-2); } .nav-links a, -.nav-gh { text-decoration: none; transition: color 0.2s ease; } +.nav-gh { text-decoration: none; transition: color var(--dur-hover) ease; } @media (hover: hover) and (pointer: fine){.nav-links a:hover,.nav-gh:hover{ color: var(--ink); }} .nav-end { display: flex; @@ -316,7 +336,7 @@ code { display: inline-flex; align-items: center; gap: 7px; - font-size: 14px; + font-size: 15px; color: var(--ink-2); } .nav-gh svg { width: 18px; height: 18px; } @@ -329,18 +349,18 @@ code { gap: 8px; height: 44px; padding: 0 20px; - border-radius: 980px; - font: 500 16px/1 var(--sans); - letter-spacing: -0.01em; + border-radius: var(--radius-pill); + font: 500 17px/1 var(--sans); + letter-spacing: -0.005em; text-decoration: none; white-space: nowrap; - transition: transform 0.2s var(--ease-out), background-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease; + transition: transform var(--dur-press) var(--ease-out), background-color var(--dur-hover) ease, box-shadow var(--dur-hover) ease, color var(--dur-hover) ease; touch-action: manipulation; -webkit-user-select: none; user-select: none; } .btn svg { width: 18px; height: 18px; } -.btn:active { transform: scale(0.98); } +.btn:active { transform: scale(var(--press-scale)); } .btn-primary { background: var(--accent-fill); color: var(--accent-ink); @@ -354,13 +374,14 @@ code { } @media (hover: hover) and (pointer: fine){.btn-secondary:hover{ box-shadow: 0 0 0 1px var(--ink-3) inset, var(--shadow-sm); }} .btn-lg { height: 52px; padding: 0 26px; font-size: 17px; } -.btn-sm { height: 30px; padding: 0 14px; font-size: 13px; font-weight: 500; } +.btn-sm { height: 32px; padding: 0 14px; font-size: 15px; font-weight: 500; } /* Shared text */ .eyebrow { margin: 0 0 14px; - font: 600 14px/1.2 var(--sans); - letter-spacing: -0.005em; + font: 500 12px/1.3 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; color: var(--accent); } .section { padding-block: var(--section) 0; } @@ -370,15 +391,15 @@ code { .final h2 { margin: 0; font: 700 clamp(34px, 5vw, 60px)/1.05 var(--display); - letter-spacing: -0.024em; + letter-spacing: -0.025em; text-wrap: balance; } .section-head > p:not(.eyebrow) { margin: 20px 0 0; max-width: 60ch; - font-size: clamp(18px, 1.6vw, 21px); + font-size: clamp(17px, 1.6vw, 21px); line-height: 1.5; - letter-spacing: -0.015em; + letter-spacing: -0.01em; color: var(--ink-3); text-wrap: pretty; } @@ -391,7 +412,7 @@ code { .fineprint code { font-size: 1em; padding: 0.1em 0.35em; } .card { - border-radius: 22px; + border-radius: var(--radius-lg); background: var(--card); box-shadow: 0 0 0 1px var(--rule) inset, var(--shadow-sm); } @@ -426,31 +447,31 @@ code { gap: 10px; margin-bottom: 24px; padding: 5px 12px 5px 5px; - border-radius: 980px; + border-radius: var(--radius-pill); background: var(--glass); box-shadow: 0 0 0 1px var(--rule) inset, var(--shadow-sm); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); - font-size: 13.5px; + font-size: 13px; color: var(--ink-2); text-decoration: none; - transition: box-shadow 0.2s ease; + transition: box-shadow var(--dur-hover) ease; } @media (hover: hover) and (pointer: fine){.pill:hover{ box-shadow: 0 0 0 1px var(--rule-2) inset, var(--shadow-sm); }} .pill-tag { padding: 3px 9px; - border-radius: 980px; + border-radius: var(--radius-pill); background: var(--accent-soft); color: var(--accent); font-weight: 600; - font-size: 12.5px; + font-size: 12px; } -.pill svg { width: 14px; height: 14px; color: var(--ink-3); transition: transform 0.2s var(--ease-out); } -@media (hover: hover) and (pointer: fine){.pill:hover svg{ transform: translateX(2px); }} +.pill svg { width: 14px; height: 14px; color: var(--ink-3); transition: color var(--dur-hover) ease; } +@media (hover: hover) and (pointer: fine){.pill:hover svg{ color: var(--ink); }} .hero h1 { margin: 0; font: 700 clamp(42px, 7.4vw, 92px)/1.04 var(--display); - letter-spacing: -0.028em; + letter-spacing: -0.025em; text-wrap: balance; } .lede { @@ -458,7 +479,7 @@ code { max-width: 60ch; font-size: clamp(19px, 2vw, 24px); line-height: 1.4; - letter-spacing: -0.02em; + letter-spacing: -0.01em; color: var(--ink-3); text-wrap: balance; } @@ -471,15 +492,15 @@ code { } .trust-line { margin: 20px 0 0; - font-size: 14px; - letter-spacing: -0.005em; + font-size: 15px; + letter-spacing: 0; color: var(--ink-3); } .hero-demo { position: relative; margin: clamp(40px, 5vw, 64px) auto 0; padding: clamp(10px, 1.4vw, 16px); - border-radius: clamp(22px, 2.4vw, 32px); + border-radius: var(--radius-lg); background: var(--glass); box-shadow: 0 0 0 1px var(--rule) inset, var(--shadow-lg); } @@ -505,15 +526,15 @@ code { .feature-copy { min-width: 0; max-width: 460px; } .feature h3 { margin: 0; - font: 700 clamp(30px, 3.6vw, 44px)/1.08 var(--display); - letter-spacing: -0.022em; + font: 700 clamp(30px, 3.6vw, 44px)/1.1 var(--display); + letter-spacing: -0.02em; text-wrap: balance; } .feature-copy > p:not(.eyebrow):not(.fineprint) { margin: 18px 0 0; - font-size: 18px; + font-size: 17px; line-height: 1.5; - letter-spacing: -0.014em; + letter-spacing: 0; color: var(--ink-3); text-wrap: pretty; } @@ -521,7 +542,7 @@ code { position: relative; min-width: 0; padding: clamp(14px, 2.6vw, 36px); - border-radius: clamp(22px, 2.4vw, 32px); + border-radius: var(--radius-lg); background: radial-gradient(80% 70% at 70% 0%, var(--accent-soft), transparent 70%), var(--bg-2); @@ -537,10 +558,10 @@ code { } .chips li { padding: 6px 12px; - border-radius: 980px; + border-radius: var(--radius-pill); background: var(--bg-2); box-shadow: 0 0 0 1px var(--rule) inset; - font-size: 14px; + font-size: 15px; color: var(--ink-2); } @@ -558,7 +579,7 @@ code { margin: 30px 0 0; padding: 14px; list-style: none; - border-radius: 22px; + border-radius: var(--radius-lg); background: var(--bg-2); box-shadow: 0 0 0 1px var(--rule) inset; } @@ -570,13 +591,13 @@ code { gap: 2px; min-height: 60px; padding: 8px 4px; - border-radius: 14px; + border-radius: var(--radius-md); text-align: center; font-size: 12.5px; line-height: 1.25; color: var(--ink-3); } -.gpad li b { font-size: 13.5px; font-weight: 600; color: var(--ink); } +.gpad li b { font-size: 13px; font-weight: 600; color: var(--ink); } .gpad .gp-click { flex-direction: row; gap: 8px; min-height: 40px; margin-top: 4px; } .gp-up { grid-area: up; } .gp-down { grid-area: down; } @@ -613,16 +634,16 @@ code { .privacy-card { padding: 30px 28px 32px; } .privacy-card h3 { margin: 22px 0 8px; - font: 600 21px/1.2 var(--display); - letter-spacing: -0.022em; + font: 600 21px/1.3 var(--display); + letter-spacing: -0.01em; } -.privacy-card p { margin: 0; font-size: 16px; line-height: 1.5; color: var(--ink-3); } +.privacy-card p { margin: 0; font-size: 15px; line-height: 1.5; color: var(--ink-3); } .icon-tile { width: 44px; height: 44px; display: grid; place-items: center; - border-radius: 12px; + border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent); } @@ -631,7 +652,7 @@ code { .ledger-title { margin: 0 0 10px; font: 500 12px/1 var(--mono); - letter-spacing: 0.08em; + letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-3); } @@ -644,8 +665,8 @@ code { padding: 14px 0; border-top: 1px solid var(--rule); } -.ledger dt { font-weight: 600; font-size: 15.5px; white-space: nowrap; } -.ledger dd { margin: 0; font-size: 14.5px; color: var(--ink-3); text-align: right; } +.ledger dt { font-weight: 600; font-size: 15px; white-space: nowrap; } +.ledger dd { margin: 0; font-size: 15px; color: var(--ink-3); text-align: right; } .protocol { display: flex; flex-wrap: wrap; @@ -673,21 +694,21 @@ code { gap: 6px 10px; min-width: 0; padding: 16px 18px; - border-radius: 16px; + border-radius: var(--radius-md); background: var(--card); box-shadow: 0 0 0 1px var(--rule) inset; - transition: box-shadow 0.2s ease, transform 0.2s var(--ease-out); + transition: box-shadow var(--dur-hover) ease, transform var(--dur-press) var(--ease-out); } -@media (hover: hover) and (pointer: fine){.mice-grid li:hover{ box-shadow: 0 0 0 1px var(--rule-2) inset, var(--shadow-md); transform: translateY(-1px); }} -.m-name { flex: 1 1 auto; min-width: 0; font-weight: 600; font-size: 15.5px; letter-spacing: -0.015em; } +@media (hover: hover) and (pointer: fine){.mice-grid li:hover{ box-shadow: 0 0 0 1px var(--rule-2) inset, var(--shadow-md); }} +.m-name { flex: 1 1 auto; min-width: 0; font-weight: 600; font-size: 17px; letter-spacing: -0.005em; } .m-note { flex-basis: 100%; font-size: 13px; color: var(--ink-3); } .badge { flex: none; padding: 3px 9px; - border-radius: 980px; + border-radius: var(--radius-pill); background: var(--bg-2); box-shadow: 0 0 0 1px var(--rule) inset; - font-size: 11.5px; + font-size: 12px; font-weight: 500; letter-spacing: 0; color: var(--ink-3); @@ -716,8 +737,8 @@ code { box-shadow: 0 6px 16px -6px var(--accent-fill); } .verified .seal svg { width: 22px; height: 22px; } -.verified .m-name { grid-area: name; font-size: 19px; } -.verified .m-note { grid-area: note; font-size: 14px; } +.verified .m-name { grid-area: name; font-size: 21px; letter-spacing: -0.01em; } +.verified .m-note { grid-area: note; font-size: 15px; } .badge-verified { grid-area: badge; align-self: center; @@ -746,8 +767,7 @@ code { text-decoration: none; font-weight: 500; } -.links-row a svg { width: 14px; height: 14px; transition: transform 0.2s var(--ease-out); } -@media (hover: hover) and (pointer: fine){.links-row a:hover svg{ transform: translateX(2px); }} +.links-row a svg { width: 14px; height: 14px; } @media (hover: hover) and (pointer: fine){.links-row a:hover{ text-decoration: underline; text-underline-offset: 3px; }} /* Install */ @@ -763,8 +783,8 @@ code { .install-card h3, .note-card h3 { margin: 0; - font: 600 21px/1.25 var(--display); - letter-spacing: -0.022em; + font: 600 21px/1.3 var(--display); + letter-spacing: -0.01em; } .steps { margin: 24px 0 28px; @@ -778,7 +798,7 @@ code { gap: 16px; padding: 14px 0; border-top: 1px solid var(--rule); - font-size: 16px; + font-size: 17px; line-height: 1.5; color: var(--ink-2); } @@ -800,12 +820,12 @@ code { .steps b { color: var(--ink); font-weight: 600; } .steps a { color: var(--accent); text-underline-offset: 3px; } .note-card { padding: 26px 28px; min-width: 0; } -.note-card p { margin: 10px 0 0; font-size: 15px; line-height: 1.55; color: var(--ink-3); } +.note-card p { margin: 10px 0 0; font-size: 15px; line-height: 1.45; color: var(--ink-3); } .note-card p b { color: var(--ink-2); font-weight: 600; } .code { position: relative; margin-top: 16px; - border-radius: 14px; + border-radius: var(--radius-md); background: var(--bg-2); box-shadow: 0 0 0 1px var(--rule) inset; } @@ -825,16 +845,16 @@ code { height: 32px; padding: 0 12px; border: 0; - border-radius: 980px; + border-radius: var(--radius-pill); background: var(--bg-2); box-shadow: 0 0 0 1px var(--rule) inset; color: var(--ink-2); font: 500 13px/1 var(--sans); cursor: pointer; - transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.16s var(--ease-out); + transition: background-color var(--dur-hover) ease, color var(--dur-hover) ease, box-shadow var(--dur-hover) ease, transform 0.16s var(--ease-out); touch-action: manipulation; } -.copy:active { transform: scale(0.97); } +.copy:active { transform: scale(var(--press-scale)); } @media (hover: hover) and (pointer: fine){.copy:hover{ color: var(--ink); box-shadow: 0 0 0 1px var(--rule-2) inset; }} .copy svg { width: 15px; height: 15px; } .copy .ic-done { display: none; } @@ -853,7 +873,7 @@ code { .callout { margin: 20px 0 0; padding: 16px 20px; - border-radius: 16px; + border-radius: var(--radius-md); background: var(--accent-soft); font-size: 15px; color: var(--ink-2); @@ -879,9 +899,9 @@ code { padding: 22px 2px; cursor: pointer; list-style: none; - font: 600 18px/1.35 var(--sans); - letter-spacing: -0.018em; - transition: color 0.2s ease; + font: 600 17px/1.4 var(--sans); + letter-spacing: -0.005em; + transition: color var(--dur-hover) ease; } @media (hover: hover) and (pointer: fine){.faq summary:hover{ color: var(--accent); }} .faq summary::-webkit-details-marker { display: none; } @@ -892,7 +912,7 @@ code { transition: transform 0.3s var(--ease-out); } .faq details[open] summary svg { transform: rotate(180deg); } -.faq-a p { margin: -8px 0 24px; max-width: 64ch; font-size: 16.5px; color: var(--ink-3); } +.faq-a p { margin: -8px 0 24px; max-width: 64ch; font-size: 17px; color: var(--ink-3); } .faq-a a { color: var(--accent); text-underline-offset: 3px; } /* Final */ @@ -903,7 +923,7 @@ code { align-items: center; text-align: center; padding: clamp(48px, 7vw, 88px) 24px; - border-radius: 32px; + border-radius: var(--radius-lg); background: radial-gradient(60% 80% at 50% 0%, var(--glow), transparent 70%), var(--bg-2); @@ -915,7 +935,7 @@ code { margin-bottom: 24px; filter: drop-shadow(0 14px 24px rgba(0, 0, 0, 0.18)); } -.final-card p { margin: 16px 0 0; max-width: 46ch; font-size: 19px; color: var(--ink-3); } +.final-card p { margin: 16px 0 0; max-width: 46ch; font-size: 21px; color: var(--ink-3); } .final-card .actions { margin-top: 32px; } /* Footer */ @@ -923,7 +943,7 @@ code { padding-block: 56px 48px; border-top: 1px solid var(--rule); background: var(--bg-2); - font-size: 14px; + font-size: 15px; color: var(--ink-3); } .footer-grid { @@ -942,7 +962,7 @@ code { letter-spacing: 0.02em; color: var(--ink); } -.footer nav a { text-decoration: none; color: var(--ink-3); transition: color 0.2s ease; } +.footer nav a { text-decoration: none; color: var(--ink-3); transition: color var(--dur-hover) ease; } @media (hover: hover) and (pointer: fine){.footer nav a:hover{ color: var(--ink); }} .footer-base { display: grid; @@ -961,7 +981,7 @@ code { display: flex; gap: 8px; margin-bottom: 24px; - font-size: 14px; + font-size: 15px; color: var(--ink-3); } .crumbs a { color: var(--accent); text-decoration: none; } @@ -979,15 +999,15 @@ code { .doc-head h1 { margin: 0; font: 700 clamp(40px, 6vw, 64px)/1.04 var(--display); - letter-spacing: -0.026em; + letter-spacing: -0.025em; } -.doc-meta { margin: 16px 0 0; font-size: 14px; color: var(--ink-3); } -.doc-body { font-size: 17px; line-height: 1.65; color: var(--ink-2); } -.doc-lede { margin: 32px 0 0; font-size: 21px; line-height: 1.5; letter-spacing: -0.016em; color: var(--ink); } +.doc-meta { margin: 16px 0 0; font-size: 15px; color: var(--ink-3); } +.doc-body { font-size: 17px; line-height: 1.5; color: var(--ink-2); } +.doc-lede { margin: 32px 0 0; font-size: 21px; line-height: 1.45; letter-spacing: -0.01em; color: var(--ink); } .doc-body h2 { margin: 48px 0 0; - font: 600 24px/1.25 var(--display); - letter-spacing: -0.022em; + font: 600 28px/1.18 var(--display); + letter-spacing: -0.015em; color: var(--ink); } .doc-body p { margin: 14px 0 0; } @@ -1000,15 +1020,15 @@ code { /* Comparison pages */ .doc-head .crumbs { margin-bottom: 20px; } -.cmp-scroll { margin: 24px 0 0; overflow-x: auto; border: 1px solid var(--rule); border-radius: 16px; background: var(--card); -webkit-overflow-scrolling: touch; } +.cmp-scroll { margin: 24px 0 0; overflow-x: auto; border: 1px solid var(--rule); border-radius: var(--radius-md); background: var(--card); -webkit-overflow-scrolling: touch; } .cmp-scroll:focus-visible { outline: 2px solid var(--accent-ring); outline-offset: 2px; } -.cmp { width: 100%; min-width: 680px; border-collapse: collapse; font-size: 14.5px; line-height: 1.45; } +.cmp { width: 100%; min-width: 680px; border-collapse: collapse; font-size: 15px; line-height: 1.45; } .cmp th, .cmp td { padding: 12px 14px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--rule); } -.cmp thead th { font-size: 12.5px; font-weight: 600; color: var(--ink-3); background: var(--bg-2); } +.cmp thead th { font-size: 13px; font-weight: 600; color: var(--ink-3); background: var(--bg-2); } .cmp tbody th { font-weight: 600; color: var(--ink); white-space: nowrap; } .cmp tbody tr:last-child > * { border-bottom: 0; } .cmp-us > * { background: var(--accent-soft); } -.cmp-note, .cmp-sources { font-size: 14px; color: var(--ink-3); } +.cmp-note, .cmp-sources { font-size: 15px; color: var(--ink-3); } .cmp-sources { margin-top: 48px !important; padding-top: 20px; border-top: 1px solid var(--rule); } .doc-body .cmp-cta { margin-top: 20px; } .doc-body .btn { text-decoration: none; } @@ -1060,7 +1080,7 @@ code { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } } -.faq details[open] .faq-a { animation: faq-in 0.35s var(--ease-out); } +.faq details[open] .faq-a { animation: faq-in 180ms var(--ease-out); } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } @@ -1071,8 +1091,7 @@ code { .gpad li { animation: none !important; } .btn, .mice-grid li { transition: none; } - .btn:active{ transform: none; }@media (hover: hover) and (pointer: fine){.mice-grid li:hover{ transform: none; }} -} + .btn:active{ transform: none; }} /* Responsive */ @media (max-width: 960px) { @@ -1093,15 +1112,15 @@ code { .nav-links { display: none; } .nav-gh span { display: none; } .nav-end { gap: 16px; } - .hero-demo { margin-inline: -8px; padding: 8px; border-radius: 22px; } + .hero-demo { margin-inline: -8px; padding: 8px; border-radius: var(--radius-lg); } .hero-demo .demo-bar { padding: 6px 4px 4px; } - .frame { margin-inline: -4px; padding: 12px; border-radius: 22px; } + .frame { margin-inline: -4px; padding: 12px; border-radius: var(--radius-lg); } .ledger dl > div { flex-direction: column; gap: 2px; } .ledger dd { text-align: left; } .faq summary { font-size: 17px; padding-block: 20px; } } @media (max-width: 520px) { - .pill { font-size: 12.5px; } + .pill { font-size: 12px; } .actions { width: 100%; } .actions .btn { flex: 1 1 100%; } .mice-grid { grid-template-columns: minmax(0, 1fr); } @@ -1991,7 +2010,17 @@ code { @media (pointer: coarse) { .nav-gh, .nav-end .btn-sm { position: relative; } .nav-gh::after { content: ""; position: absolute; inset: -13px -10px; } - .nav-end .btn-sm::after { content: ""; position: absolute; inset: -7px -4px; } + .nav-end .btn-sm::after { content: ""; position: absolute; inset: -6px -4px; } .footer nav { gap: 0; } .footer nav a { padding-block: 10px; } } + +/* Basalt system: solid chrome when the visitor turns transparency down, stronger lines with more contrast. */ +@media (prefers-reduced-transparency: reduce) { + .nav { background: var(--bg); -webkit-backdrop-filter: none; backdrop-filter: none; } + .pill, .btn-secondary { background: var(--card); -webkit-backdrop-filter: none; backdrop-filter: none; } +} +@media (prefers-contrast: more) { + .nav.scrolled { border-bottom-color: var(--rule-2); } + .card, .btn-secondary, .pill, .mice-grid li { box-shadow: 0 0 0 1px var(--rule-2) inset; } +} From 85c9d1b3bce5b79de3e6e8100b3f6e69c6427d45 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 15:00:12 +0000 Subject: [PATCH 2/3] Site: buttons at the shared 15px, small header button 36px Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Q52L7FKxosfCxSN3qT1iDD --- site/assets/site.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/site/assets/site.css b/site/assets/site.css index 63c7897..f588f12 100644 --- a/site/assets/site.css +++ b/site/assets/site.css @@ -350,7 +350,7 @@ code { height: 44px; padding: 0 20px; border-radius: var(--radius-pill); - font: 500 17px/1 var(--sans); + font: 500 15px/1 var(--sans); letter-spacing: -0.005em; text-decoration: none; white-space: nowrap; @@ -374,7 +374,7 @@ code { } @media (hover: hover) and (pointer: fine){.btn-secondary:hover{ box-shadow: 0 0 0 1px var(--ink-3) inset, var(--shadow-sm); }} .btn-lg { height: 52px; padding: 0 26px; font-size: 17px; } -.btn-sm { height: 32px; padding: 0 14px; font-size: 15px; font-weight: 500; } +.btn-sm { height: 36px; padding: 0 14px; font-size: 13px; font-weight: 500; } /* Shared text */ .eyebrow { @@ -2010,7 +2010,7 @@ code { @media (pointer: coarse) { .nav-gh, .nav-end .btn-sm { position: relative; } .nav-gh::after { content: ""; position: absolute; inset: -13px -10px; } - .nav-end .btn-sm::after { content: ""; position: absolute; inset: -6px -4px; } + .nav-end .btn-sm::after { content: ""; position: absolute; inset: -4px 0; } .footer nav { gap: 0; } .footer nav a { padding-block: 10px; } } From 229554c096ccc3b5551238d397026049eda8149a Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 15:03:38 +0000 Subject: [PATCH 3/3] Site: ship the Geist Mono licence next to the font Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Q52L7FKxosfCxSN3qT1iDD --- site/assets/fonts/LICENSE-GeistMono.txt | 92 +++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 site/assets/fonts/LICENSE-GeistMono.txt diff --git a/site/assets/fonts/LICENSE-GeistMono.txt b/site/assets/fonts/LICENSE-GeistMono.txt new file mode 100644 index 0000000..8d003fe --- /dev/null +++ b/site/assets/fonts/LICENSE-GeistMono.txt @@ -0,0 +1,92 @@ +Copyright (c) 2023 Vercel, in collaboration with basement.studio + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE.