Spaces:
Sleeping
Sleeping
fix: unclip Cartographer brand descender, slow suggestion box stagger
Browse files- sidebar-brand-name: line-height 1.1β1.2 + padding-bottom 0.08em
fixes 'g' descender clipping caused by background-clip gradient mask
- suggestionIn: duration 560msβ800ms, stagger 80+90iβ150+180i ms
makes the 3 landing boxes cascade visibly instead of all at once
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ui/src/App.jsx +1 -1
- ui/src/index.css +7 -6
ui/src/App.jsx
CHANGED
|
@@ -807,7 +807,7 @@ export default function App() {
|
|
| 807 |
{ icon: "explore", title: "Explore the structure", body: "Concept map of key components and how they connect." },
|
| 808 |
].map(({ icon, title, body }, i) => (
|
| 809 |
<div key={title} className="suggestion-btn"
|
| 810 |
-
style={{ animationDelay: `${
|
| 811 |
<span className="suggestion-icon">{ICONS[icon]}</span>
|
| 812 |
<span className="suggestion-content">
|
| 813 |
<span className="suggestion-title">{title}</span>
|
|
|
|
| 807 |
{ icon: "explore", title: "Explore the structure", body: "Concept map of key components and how they connect." },
|
| 808 |
].map(({ icon, title, body }, i) => (
|
| 809 |
<div key={title} className="suggestion-btn"
|
| 810 |
+
style={{ animationDelay: `${150 + i * 180}ms`, cursor: "default" }}>
|
| 811 |
<span className="suggestion-icon">{ICONS[icon]}</span>
|
| 812 |
<span className="suggestion-content">
|
| 813 |
<span className="suggestion-title">{title}</span>
|
ui/src/index.css
CHANGED
|
@@ -296,7 +296,8 @@ textarea:focus-visible {
|
|
| 296 |
background-clip: text;
|
| 297 |
color: #FFFFFF;
|
| 298 |
letter-spacing: -0.02em;
|
| 299 |
-
line-height: 1.
|
|
|
|
| 300 |
}
|
| 301 |
|
| 302 |
/* ββ Sidebar sections β gradient dividers instead of harsh solid lines βββββββ */
|
|
@@ -1358,9 +1359,9 @@ textarea:focus-visible {
|
|
| 1358 |
animation: onboardIn 580ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
| 1359 |
animation-delay: 0ms;
|
| 1360 |
}
|
| 1361 |
-
.onboarding-steps .onboarding-step:nth-child(2) { animation: onboardIn
|
| 1362 |
-
.onboarding-steps .onboarding-step:nth-child(3) { animation: onboardIn
|
| 1363 |
-
.onboarding-steps .onboarding-step:nth-child(4) { animation: onboardIn
|
| 1364 |
|
| 1365 |
/* Header for onboarding section */
|
| 1366 |
.onboarding-header {
|
|
@@ -1560,7 +1561,7 @@ textarea:focus-visible {
|
|
| 1560 |
/* Staggered entrance β delay set inline via animationDelay style prop in App.jsx
|
| 1561 |
so index-based order is always guaranteed correct */
|
| 1562 |
@keyframes suggestionIn {
|
| 1563 |
-
from { opacity: 0; transform: translateY(
|
| 1564 |
to { opacity: 1; transform: translateY(0); }
|
| 1565 |
}
|
| 1566 |
|
|
@@ -1578,7 +1579,7 @@ textarea:focus-visible {
|
|
| 1578 |
padding: 13px 14px 13px 14px;
|
| 1579 |
text-align: left;
|
| 1580 |
transition: border-color var(--transition), background var(--transition), transform var(--transition), box-shadow var(--transition);
|
| 1581 |
-
animation: suggestionIn
|
| 1582 |
box-shadow: 0 1px 3px rgba(0,0,0,0.25), 0 4px 16px rgba(0,0,0,0.15);
|
| 1583 |
}
|
| 1584 |
|
|
|
|
| 296 |
background-clip: text;
|
| 297 |
color: #FFFFFF;
|
| 298 |
letter-spacing: -0.02em;
|
| 299 |
+
line-height: 1.2;
|
| 300 |
+
padding-bottom: 0.08em; /* gradient clip mask cuts descenders β padding restores them */
|
| 301 |
}
|
| 302 |
|
| 303 |
/* ββ Sidebar sections β gradient dividers instead of harsh solid lines βββββββ */
|
|
|
|
| 1359 |
animation: onboardIn 580ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
| 1360 |
animation-delay: 0ms;
|
| 1361 |
}
|
| 1362 |
+
.onboarding-steps .onboarding-step:nth-child(2) { animation: onboardIn 560ms cubic-bezier(0.16, 1, 0.3, 1) 120ms both; }
|
| 1363 |
+
.onboarding-steps .onboarding-step:nth-child(3) { animation: onboardIn 560ms cubic-bezier(0.16, 1, 0.3, 1) 210ms both; }
|
| 1364 |
+
.onboarding-steps .onboarding-step:nth-child(4) { animation: onboardIn 560ms cubic-bezier(0.16, 1, 0.3, 1) 300ms both; }
|
| 1365 |
|
| 1366 |
/* Header for onboarding section */
|
| 1367 |
.onboarding-header {
|
|
|
|
| 1561 |
/* Staggered entrance β delay set inline via animationDelay style prop in App.jsx
|
| 1562 |
so index-based order is always guaranteed correct */
|
| 1563 |
@keyframes suggestionIn {
|
| 1564 |
+
from { opacity: 0; transform: translateY(16px); }
|
| 1565 |
to { opacity: 1; transform: translateY(0); }
|
| 1566 |
}
|
| 1567 |
|
|
|
|
| 1579 |
padding: 13px 14px 13px 14px;
|
| 1580 |
text-align: left;
|
| 1581 |
transition: border-color var(--transition), background var(--transition), transform var(--transition), box-shadow var(--transition);
|
| 1582 |
+
animation: suggestionIn 800ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
| 1583 |
box-shadow: 0 1px 3px rgba(0,0,0,0.25), 0 4px 16px rgba(0,0,0,0.15);
|
| 1584 |
}
|
| 1585 |
|