ef1498ba08
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
395 lines
14 KiB
CSS
395 lines
14 KiB
CSS
/* ecomm app chrome — the hf-kit primitives (Direction A · Quiet centered) as CSS.
|
|
Depth = layered surfaces + hairlines; hover = small lift, no new shadows. */
|
|
|
|
* { box-sizing: border-box; }
|
|
|
|
html, body, #root { height: 100%; }
|
|
|
|
body {
|
|
margin: 0;
|
|
background: var(--wv-midnight);
|
|
color: var(--wv-starlight);
|
|
font-family: var(--wv-font-body);
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
/* ── screen ground: barely-there starfield + optional gold horizon ─────────── */
|
|
.screen {
|
|
min-height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
position: relative;
|
|
background:
|
|
radial-gradient(1.3px 1.3px at 16% 22%, rgba(237, 234, 255, .34), transparent),
|
|
radial-gradient(1.2px 1.2px at 78% 14%, rgba(237, 234, 255, .22), transparent),
|
|
radial-gradient(1.1px 1.1px at 88% 46%, rgba(155, 140, 255, .30), transparent),
|
|
radial-gradient(1.3px 1.3px at 30% 72%, rgba(237, 234, 255, .24), transparent),
|
|
radial-gradient(1.1px 1.1px at 62% 86%, rgba(237, 234, 255, .18), transparent),
|
|
radial-gradient(1.2px 1.2px at 7% 56%, rgba(155, 140, 255, .26), transparent),
|
|
var(--wv-midnight);
|
|
}
|
|
.screen--horizon {
|
|
background:
|
|
radial-gradient(120% 70% at 50% 142%, rgba(244, 199, 107, .16) 0%, rgba(244, 199, 107, .05) 38%, transparent 64%),
|
|
radial-gradient(1.3px 1.3px at 16% 22%, rgba(237, 234, 255, .34), transparent),
|
|
radial-gradient(1.2px 1.2px at 78% 14%, rgba(237, 234, 255, .22), transparent),
|
|
radial-gradient(1.1px 1.1px at 88% 46%, rgba(155, 140, 255, .30), transparent),
|
|
radial-gradient(1.3px 1.3px at 30% 72%, rgba(237, 234, 255, .24), transparent),
|
|
radial-gradient(1.1px 1.1px at 62% 86%, rgba(237, 234, 255, .18), transparent),
|
|
radial-gradient(1.2px 1.2px at 7% 56%, rgba(155, 140, 255, .26), transparent),
|
|
var(--wv-midnight);
|
|
}
|
|
.screen--plain { background: var(--wv-midnight); }
|
|
|
|
.screen__main {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 32px 24px;
|
|
}
|
|
|
|
/* ── top bar: glass chrome ──────────────────────────────────────────────────── */
|
|
.topbar {
|
|
flex: 0 0 auto;
|
|
height: 68px;
|
|
padding: 0 36px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
border-bottom: 1px solid var(--border-soft);
|
|
background: var(--glass-sky);
|
|
backdrop-filter: blur(var(--glass-blur));
|
|
position: relative;
|
|
z-index: 5;
|
|
}
|
|
.topbar__side { display: flex; align-items: center; gap: 16px; min-width: 0; }
|
|
|
|
/* ── wordmark ───────────────────────────────────────────────────────────────── */
|
|
.wordmark { display: inline-flex; align-items: center; gap: 10px; }
|
|
.wordmark img { display: block; border-radius: 6px; }
|
|
.wordmark__name {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-bold);
|
|
font-size: 22px;
|
|
letter-spacing: var(--tracking-display);
|
|
color: var(--wv-starlight);
|
|
}
|
|
|
|
/* ── links & text buttons ───────────────────────────────────────────────────── */
|
|
.lk {
|
|
color: var(--wv-lilac);
|
|
text-decoration: none;
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
font: inherit;
|
|
cursor: pointer;
|
|
transition: color var(--dur-fast) var(--ease);
|
|
}
|
|
.lk:hover { color: var(--wv-gold); }
|
|
.lk--mute { color: var(--text-on-dark-mute); }
|
|
.lk--nav {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-medium);
|
|
font-size: 14px;
|
|
color: var(--wv-starlight);
|
|
}
|
|
|
|
.signout {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-medium);
|
|
font-size: 14px;
|
|
color: var(--wv-starlight);
|
|
background: transparent;
|
|
border: none;
|
|
cursor: pointer;
|
|
padding: 0;
|
|
transition: color var(--dur-fast) var(--ease);
|
|
}
|
|
.signout:hover { color: var(--wv-gold); }
|
|
|
|
/* ── account chip (top-bar right, signed in) ────────────────────────────────── */
|
|
.chip { display: flex; align-items: center; gap: 14px; min-width: 0; }
|
|
.chip__avatar {
|
|
width: 30px;
|
|
height: 30px;
|
|
border-radius: 15px;
|
|
background: var(--wv-lilac-16);
|
|
border: 1px solid var(--border-card);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-bold);
|
|
font-size: 13px;
|
|
flex: 0 0 auto;
|
|
}
|
|
.chip__email {
|
|
font-size: 14px;
|
|
color: var(--text-on-dark-soft);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.chip__divider { width: 1px; height: 18px; background: var(--border-soft); flex: 0 0 auto; }
|
|
|
|
/* ── eyebrow ────────────────────────────────────────────────────────────────── */
|
|
.eyebrow {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-medium);
|
|
font-size: var(--text-eyebrow);
|
|
letter-spacing: var(--tracking-eyebrow);
|
|
text-transform: uppercase;
|
|
color: var(--wv-lilac);
|
|
margin: 0;
|
|
}
|
|
|
|
/* ── auth card — the one surface with a real shadow ─────────────────────────── */
|
|
.card {
|
|
width: 440px;
|
|
max-width: 100%;
|
|
background: var(--surface-raised);
|
|
border: 1px solid var(--border-card);
|
|
border-radius: var(--radius-card);
|
|
padding: 40px 40px 34px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 22px;
|
|
box-shadow: var(--shadow-soft);
|
|
position: relative;
|
|
z-index: 2;
|
|
}
|
|
.card h1 {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-bold);
|
|
letter-spacing: var(--tracking-display);
|
|
font-size: 27px;
|
|
line-height: 1.08;
|
|
margin: 0 0 9px;
|
|
}
|
|
.card__sub { font-size: 14.5px; line-height: 1.55; color: var(--text-on-dark-soft); margin: 0; }
|
|
|
|
/* ── fields ─────────────────────────────────────────────────────────────────── */
|
|
.field { display: flex; flex-direction: column; gap: 8px; }
|
|
.field__label {
|
|
font-weight: var(--weight-medium);
|
|
font-size: 13.5px;
|
|
color: var(--text-on-dark-soft);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
}
|
|
.field__optional { font-size: 12.5px; color: var(--text-on-dark-mute); font-weight: var(--weight-regular); }
|
|
.field__input {
|
|
height: 52px;
|
|
border-radius: 10px;
|
|
padding: 0 16px;
|
|
background: rgba(237, 234, 255, .035);
|
|
border: 1.5px solid var(--border-soft);
|
|
font-family: var(--wv-font-body);
|
|
font-size: 16px;
|
|
color: var(--wv-starlight);
|
|
width: 100%;
|
|
transition: border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
|
|
}
|
|
.field__input::placeholder { color: var(--text-on-dark-mute); }
|
|
.field__input:hover { border-color: var(--border-strong); }
|
|
.field__input:focus {
|
|
outline: none;
|
|
border-color: var(--wv-gold);
|
|
box-shadow: 0 0 0 3px var(--wv-gold-28);
|
|
background: rgba(237, 234, 255, .06);
|
|
}
|
|
.field__input--error { border-color: var(--wv-gold); }
|
|
|
|
.note { font-size: 13px; line-height: 1.45; color: var(--text-on-dark-mute); margin: 0; }
|
|
.note--attn { color: var(--wv-gold); display: flex; gap: 7px; align-items: baseline; }
|
|
.note--attn::before { content: "◆"; font-size: 11px; }
|
|
|
|
/* ── primary button: gold pill ──────────────────────────────────────────────── */
|
|
.btn-primary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: .4em;
|
|
width: 100%;
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-medium);
|
|
font-size: 15.5px;
|
|
line-height: 1;
|
|
padding: .85rem 1.4rem;
|
|
border-radius: var(--radius-pill);
|
|
border: var(--btn-border-w) solid transparent;
|
|
background: var(--cta);
|
|
color: var(--cta-text);
|
|
cursor: pointer;
|
|
transition: transform var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
|
|
}
|
|
.btn-primary:hover:not(:disabled) { background: var(--cta-hover); transform: var(--lift-1); }
|
|
.btn-primary:disabled { opacity: .5; cursor: not-allowed; }
|
|
.btn-primary--auto { width: auto; }
|
|
.btn-primary:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
|
|
|
|
/* ── banner: gold attention / lilac info (no red in the palette) ────────────── */
|
|
.banner {
|
|
display: flex;
|
|
gap: 12px;
|
|
padding: 14px 16px;
|
|
border-radius: 12px;
|
|
align-items: flex-start;
|
|
font-size: 14px;
|
|
line-height: 1.5;
|
|
color: var(--text-on-dark-soft);
|
|
text-align: left;
|
|
}
|
|
.banner--attn { background: rgba(244, 199, 107, .10); border: 1px solid var(--wv-gold-40); }
|
|
.banner--info { background: var(--wv-lilac-08); border: 1px solid var(--wv-lilac-18); }
|
|
.banner__icon { font-size: 13px; line-height: 22px; flex: 0 0 auto; }
|
|
.banner--attn .banner__icon { color: var(--wv-gold); }
|
|
.banner--info .banner__icon { color: var(--wv-lilac); }
|
|
.banner__title { color: var(--wv-starlight); font-weight: var(--weight-semibold); margin-bottom: 2px; }
|
|
|
|
/* ── code input: 6 cells over one invisible input ───────────────────────────── */
|
|
.code { position: relative; display: flex; gap: 11px; justify-content: center; }
|
|
.code__hidden {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
opacity: 0;
|
|
border: none;
|
|
font-size: 16px;
|
|
cursor: pointer;
|
|
}
|
|
.code__cell {
|
|
width: 52px;
|
|
height: 64px;
|
|
border-radius: 11px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: rgba(237, 234, 255, .035);
|
|
border: 1.5px solid var(--border-soft);
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-medium);
|
|
font-size: 26px;
|
|
transition: border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
|
|
}
|
|
.code--focus .code__cell--active {
|
|
border-color: var(--wv-gold);
|
|
box-shadow: 0 0 0 3px var(--wv-gold-28);
|
|
}
|
|
.code--error .code__cell { border-color: var(--wv-gold); }
|
|
|
|
/* ── footer ─────────────────────────────────────────────────────────────────── */
|
|
.footer {
|
|
flex: 0 0 auto;
|
|
padding: 20px 36px;
|
|
border-top: 1px solid var(--border-soft);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 16px;
|
|
font-size: 12.5px;
|
|
color: var(--text-on-dark-mute);
|
|
background: rgba(9, 12, 34, .4);
|
|
}
|
|
.footer__id { display: inline-flex; align-items: center; gap: 9px; }
|
|
.footer__id img { opacity: .85; }
|
|
|
|
/* ── landing ────────────────────────────────────────────────────────────────── */
|
|
.hero { max-width: 680px; display: flex; flex-direction: column; align-items: center; text-align: center; }
|
|
.hero h1 {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-bold);
|
|
letter-spacing: -0.02em;
|
|
line-height: 1.02;
|
|
font-size: clamp(36px, 6.5vw, 62px);
|
|
margin: 20px 0 22px;
|
|
}
|
|
.hero h1 em { font-style: normal; color: var(--wv-gold); }
|
|
.hero__lead {
|
|
font-size: clamp(15.5px, 1.8vw, 18.5px);
|
|
line-height: 1.6;
|
|
color: var(--text-on-dark-soft);
|
|
max-width: 520px;
|
|
margin: 0 0 32px;
|
|
text-wrap: pretty;
|
|
}
|
|
.hero__actions { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; justify-content: center; }
|
|
.hero__actions .btn-primary { width: auto; }
|
|
|
|
.promises {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
width: 100%;
|
|
margin-top: 44px;
|
|
border-top: 1px solid var(--border-soft);
|
|
padding-top: 24px;
|
|
text-align: left;
|
|
}
|
|
.promises > div { padding: 0 22px; }
|
|
.promises > div + div { border-left: 1px solid var(--border-soft); }
|
|
.promises__title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
margin-bottom: 5px;
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-medium);
|
|
font-size: 14.5px;
|
|
}
|
|
.promises__title::before { content: "◆"; color: var(--wv-gold); font-size: 10px; }
|
|
.promises p { font-size: 13px; line-height: 1.5; color: var(--text-on-dark-mute); margin: 0; }
|
|
|
|
/* ── admin shell ────────────────────────────────────────────────────────────── */
|
|
.storeid { display: inline-flex; align-items: center; gap: 11px; min-width: 0; }
|
|
.storeid img { display: block; border-radius: 7px; flex: 0 0 auto; }
|
|
.storeid__col { display: inline-flex; flex-direction: column; line-height: 1.12; min-width: 0; }
|
|
.storeid__name {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-bold);
|
|
font-size: 17px;
|
|
letter-spacing: -0.01em;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.storeid__sub { font-size: 11px; color: var(--text-on-dark-mute); }
|
|
|
|
.empty { display: flex; flex-direction: column; align-items: center; text-align: center; max-width: 560px; }
|
|
.empty__seal {
|
|
width: 76px;
|
|
height: 76px;
|
|
border-radius: 50%;
|
|
border: 1px solid var(--border-card);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-bottom: 26px;
|
|
background: var(--wv-lilac-08);
|
|
}
|
|
.empty h1 {
|
|
font-family: var(--wv-font-display);
|
|
font-weight: var(--weight-bold);
|
|
letter-spacing: var(--tracking-display);
|
|
line-height: 1.04;
|
|
font-size: clamp(30px, 4.5vw, 42px);
|
|
margin: 12px 0 16px;
|
|
}
|
|
.empty__copy { font-size: 17px; line-height: 1.6; color: var(--text-on-dark-soft); max-width: 460px; margin: 0; text-wrap: pretty; }
|
|
|
|
/* ── small screens ──────────────────────────────────────────────────────────── */
|
|
@media (max-width: 720px) {
|
|
.topbar { padding: 0 20px; }
|
|
.footer { padding: 16px 20px; flex-direction: column; }
|
|
.card { padding: 28px 22px 24px; }
|
|
.promises { grid-template-columns: 1fr; gap: 14px; }
|
|
.promises > div { padding: 0; }
|
|
.promises > div + div { border-left: none; }
|
|
.code__cell { width: 44px; height: 56px; font-size: 22px; }
|
|
}
|