Add contact and about pages with shared CTA buttons.
Wire forms to the Meshkee contact API, tighten page-title spacing, and polish outline button hover so it fades cleanly. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
b0ba7b1de8
commit
e6404eaaec
+112
-5
@@ -117,20 +117,127 @@ h4 {
|
||||
}
|
||||
|
||||
/* Gradient hover utilities */
|
||||
/* Simple fade for primary CTAs */
|
||||
.btn-primary {
|
||||
position: relative;
|
||||
isolation: isolate;
|
||||
background: var(--ink);
|
||||
color: var(--surface);
|
||||
transition:
|
||||
background 0.25s ease,
|
||||
color 0.25s ease,
|
||||
box-shadow 0.25s ease;
|
||||
cursor: pointer;
|
||||
transition: color 0.3s ease;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
.btn-primary::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: -1;
|
||||
border-radius: inherit;
|
||||
background: var(--brand-gradient);
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.btn-primary:hover:not(:disabled) {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.btn-primary:hover:not(:disabled)::before {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.btn-primary:disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
/* Outline CTA: opacity-only fades (no blink on mouse-out) */
|
||||
.btn-outline {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
isolation: isolate;
|
||||
border: 1px solid transparent;
|
||||
background-color: #fff;
|
||||
color: var(--ink-soft);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-outline::before,
|
||||
.btn-outline::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 0;
|
||||
border-radius: inherit;
|
||||
padding: 1px;
|
||||
pointer-events: none;
|
||||
transition: opacity 0.3s ease;
|
||||
-webkit-mask:
|
||||
linear-gradient(#fff 0 0) content-box,
|
||||
linear-gradient(#fff 0 0);
|
||||
mask:
|
||||
linear-gradient(#fff 0 0) content-box,
|
||||
linear-gradient(#fff 0 0);
|
||||
-webkit-mask-composite: xor;
|
||||
mask-composite: exclude;
|
||||
}
|
||||
|
||||
.btn-outline::after {
|
||||
background: var(--line);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.btn-outline::before {
|
||||
background: var(--brand-gradient);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.btn-outline:hover::after {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.btn-outline:hover::before {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.btn-outline-label {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.375rem;
|
||||
}
|
||||
|
||||
.btn-outline-label-base {
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.btn-outline-label-grad {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: inherit;
|
||||
gap: 0.375rem;
|
||||
background-image: var(--brand-gradient);
|
||||
background-clip: text;
|
||||
-webkit-background-clip: text;
|
||||
color: transparent;
|
||||
-webkit-text-fill-color: transparent;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.btn-outline:hover .btn-outline-label-base {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.btn-outline:hover .btn-outline-label-grad {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.link-hover {
|
||||
display: inline-block;
|
||||
width: fit-content;
|
||||
|
||||
Reference in New Issue
Block a user