Files
PrivateChat/client/src/app/home-page.component.scss

276 lines
7.5 KiB
SCSS
Raw Normal View History

2026-03-09 19:35:08 +01:00
:host {
display: block;
min-height: 100dvh;
color: var(--page-text);
}
.shell {
min-height: 100dvh;
}
2026-04-16 00:30:22 +02:00
/* ── Panel primitives ───────────────────────────────────────────────────── */
2026-03-09 19:35:08 +01:00
.hero-panel,
.panel,
.session-card,
.empty-state {
border: 1px solid var(--surface-border);
background: var(--panel-background);
2026-04-16 00:30:22 +02:00
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
box-shadow:
0 24px 64px var(--shadow-color),
inset 0 1px 0 rgba(255, 255, 255, 0.06);
2026-03-09 19:35:08 +01:00
}
2026-04-16 00:30:22 +02:00
.hero-panel { border-radius: 2rem; }
.panel { border-radius: 1.75rem; }
.session-card { border-radius: 1.5rem; }
2026-03-09 19:35:08 +01:00
.panel-muted {
background: var(--panel-alt-background);
}
2026-04-16 00:30:22 +02:00
/* ── Hero header ────────────────────────────────────────────────────────── */
.hero-copy { max-width: 52rem; }
2026-03-09 19:35:08 +01:00
.eyebrow {
display: inline-flex;
align-items: center;
gap: 0.5rem;
2026-04-16 00:30:22 +02:00
padding: 0.4rem 0.9rem;
2026-03-09 19:35:08 +01:00
border-radius: 999px;
2026-04-16 00:30:22 +02:00
margin-bottom: 0.75rem;
letter-spacing: 0.18em;
2026-03-09 19:35:08 +01:00
text-transform: uppercase;
2026-04-16 00:30:22 +02:00
font-size: 0.68rem;
2026-03-09 19:35:08 +01:00
font-weight: 700;
2026-04-16 00:30:22 +02:00
font-family: var(--font-mono);
2026-03-09 19:35:08 +01:00
color: var(--accent-color);
background: var(--accent-color-soft);
2026-04-16 00:30:22 +02:00
border: 1px solid color-mix(in srgb, var(--accent-color) 25%, transparent);
2026-03-09 19:35:08 +01:00
}
2026-04-16 00:30:22 +02:00
.eyebrow::before {
content: '';
width: 0.45rem;
height: 0.45rem;
border-radius: 50%;
background: var(--accent-color);
animation: glow-pulse 3s ease-in-out infinite;
}
/* ── Theme toggle ───────────────────────────────────────────────────────── */
2026-03-09 19:35:08 +01:00
.theme-toggle {
display: inline-flex;
align-items: center;
2026-04-16 00:30:22 +02:00
gap: 0.5rem;
2026-03-09 19:35:08 +01:00
min-width: 7.5rem;
2026-04-16 00:30:22 +02:00
height: 2.75rem;
padding: 0 1rem;
2026-03-09 19:35:08 +01:00
border: 1px solid var(--surface-border);
border-radius: 999px;
color: var(--page-text);
2026-04-16 00:30:22 +02:00
background: rgba(255, 255, 255, 0.04);
font-size: 0.88rem;
font-weight: 600;
font-family: var(--font-mono);
text-transform: uppercase;
letter-spacing: 0.06em;
2026-03-09 19:35:08 +01:00
line-height: 1;
2026-04-16 00:30:22 +02:00
transition: transform 160ms ease, background 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
2026-03-09 19:35:08 +01:00
}
2026-04-16 00:30:22 +02:00
.theme-toggle-icon { font-size: 1.15rem; }
.theme-toggle-label { letter-spacing: 0.06em; }
2026-03-09 19:35:08 +01:00
.theme-toggle:hover,
.theme-toggle:focus-visible {
2026-04-16 00:30:22 +02:00
border-color: color-mix(in srgb, var(--accent-color) 40%, transparent);
2026-03-09 19:35:08 +01:00
background: var(--surface-hover-background);
2026-03-10 22:36:21 +01:00
transform: translateY(-1px);
2026-04-16 00:30:22 +02:00
box-shadow: 0 0 0 3px var(--accent-color-soft);
2026-03-09 19:35:08 +01:00
}
2026-04-16 00:30:22 +02:00
/* ── Session card ───────────────────────────────────────────────────────── */
2026-03-10 22:36:21 +01:00
.session-card { min-width: min(100%, 18rem); }
2026-03-09 19:35:08 +01:00
.status-pill {
display: inline-flex;
2026-04-16 00:30:22 +02:00
align-items: center;
gap: 0.5rem;
padding: 0.38rem 0.85rem;
2026-03-09 19:35:08 +01:00
border-radius: 999px;
background: var(--badge-background);
2026-03-25 21:17:55 +01:00
border: 1px solid var(--surface-border-soft);
2026-04-16 00:30:22 +02:00
font-family: var(--font-mono);
font-size: 0.72rem;
2026-03-25 21:17:55 +01:00
letter-spacing: 0.06em;
text-transform: uppercase;
2026-04-16 00:30:22 +02:00
color: var(--page-text-soft);
2026-03-09 19:35:08 +01:00
}
2026-04-16 00:30:22 +02:00
/* ── Auth form card ─────────────────────────────────────────────────────── */
2026-03-09 19:35:08 +01:00
.form-control,
2026-03-26 19:38:54 +01:00
.form-control:focus,
.form-select,
.form-select:focus {
2026-03-09 19:35:08 +01:00
color: var(--page-text);
background-color: var(--input-background);
border-color: var(--input-border);
2026-04-16 00:30:22 +02:00
border-radius: 0.85rem;
2026-03-09 19:35:08 +01:00
box-shadow: none;
2026-04-16 00:30:22 +02:00
transition: border-color 160ms ease, box-shadow 160ms ease;
2026-03-09 19:35:08 +01:00
}
2026-04-16 00:30:22 +02:00
.form-control:focus,
.form-select:focus {
border-color: color-mix(in srgb, var(--accent-color) 55%, transparent);
box-shadow: 0 0 0 3px var(--accent-color-soft);
2026-03-09 19:35:08 +01:00
}
2026-04-16 00:30:22 +02:00
.form-control::placeholder { color: var(--placeholder-color); }
2026-03-09 19:35:08 +01:00
.form-label,
2026-04-16 00:30:22 +02:00
.h3, .h4, .h5,
2026-03-09 19:35:08 +01:00
.fw-semibold,
.fw-bold {
color: var(--page-text);
}
.text-secondary,
.lead,
.small {
color: var(--page-text-muted) !important;
}
2026-04-16 00:30:22 +02:00
/* Auth tab toggle */
.btn-group .btn {
border-radius: 0.75rem;
font-weight: 500;
font-size: 0.9rem;
}
.btn-group .btn-primary {
background: var(--accent-gradient);
border-color: transparent;
color: #fff;
box-shadow: 0 2px 12px rgba(13, 148, 136, 0.28);
}
.btn-group .btn-outline-primary {
color: var(--page-text-muted);
border-color: var(--surface-border);
background: transparent;
}
.btn-group .btn-outline-primary:hover {
background: var(--panel-soft-background);
color: var(--page-text);
}
/* ── Access key / settings panels ──────────────────────────────────────── */
.access-key-panel {
padding: 1.1rem 1.25rem;
border-radius: 1.25rem;
background: var(--panel-soft-background);
border: 1px solid var(--surface-border-soft);
transition: border-color 160ms ease;
}
.access-key-panel:hover {
border-color: var(--surface-border);
}
.access-key-card {
border-radius: 1rem;
border: 1px solid var(--surface-border-soft);
background: var(--surface-background);
transition: border-color 160ms ease;
}
.access-key-card:hover {
border-color: var(--surface-border);
}
/* ── User search ────────────────────────────────────────────────────────── */
.user-search-panel,
.user-search-shell,
.dictation-language-panel,
.dictation-language-select-shell {
display: grid;
gap: 0.75rem;
}
.user-search-results {
display: grid;
gap: 0.5rem;
}
.user-search-result {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
width: 100%;
padding: 0.85rem 1rem;
border: 1px solid var(--surface-border-soft);
border-radius: 1rem;
color: var(--page-text);
background: var(--surface-background);
text-align: left;
transition: border-color 160ms ease, background 160ms ease, transform 160ms ease;
}
.user-search-result:hover,
.user-search-result:focus-visible {
border-color: color-mix(in srgb, var(--accent-color) 38%, transparent);
background: var(--surface-hover-background);
transform: translateY(-1px);
}
.user-search-result-copy {
display: grid;
gap: 0.08rem;
min-width: 0;
}
.user-search-result-action {
flex: 0 0 auto;
font-size: 0.72rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
font-family: var(--font-mono);
color: var(--accent-color);
}
/* ── How-it-works info rail ─────────────────────────────────────────────── */
.info-rail article {
padding: 1rem 1.15rem;
border-radius: 1rem;
background: var(--panel-soft-background);
border: 1px solid var(--surface-border-soft);
position: relative;
overflow: hidden;
}
.info-rail article::before {
content: attr(data-step);
position: absolute;
top: 0.65rem;
right: 0.9rem;
font-family: var(--font-mono);
font-size: 0.65rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--accent-color);
opacity: 0.7;
}
/* ── Empty state ────────────────────────────────────────────────────────── */
.empty-state {
border-radius: 1.25rem;
border: 1px dashed var(--surface-border);
background: var(--panel-soft-background) !important;
}