:host { display: block; min-height: 100dvh; color: var(--page-text); } .shell { min-height: 100dvh; } /* ── Panel primitives ───────────────────────────────────────────────────── */ .hero-panel, .panel, .session-card, .empty-state { border: 1px solid var(--surface-border); background: var(--panel-background); 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); } .hero-panel { border-radius: 2rem; } .panel { border-radius: 1.75rem; } .session-card { border-radius: 1.5rem; } .panel-muted { background: var(--panel-alt-background); } /* ── Hero header ────────────────────────────────────────────────────────── */ .hero-copy { max-width: 52rem; } .eyebrow { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.4rem 0.9rem; border-radius: 999px; margin-bottom: 0.75rem; letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.68rem; font-weight: 700; font-family: var(--font-mono); color: var(--accent-color); background: var(--accent-color-soft); border: 1px solid color-mix(in srgb, var(--accent-color) 25%, transparent); } .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 ───────────────────────────────────────────────────────── */ .theme-toggle { display: inline-flex; align-items: center; gap: 0.5rem; min-width: 7.5rem; height: 2.75rem; padding: 0 1rem; border: 1px solid var(--surface-border); border-radius: 999px; color: var(--page-text); 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; line-height: 1; transition: transform 160ms ease, background 160ms ease, border-color 160ms ease, box-shadow 160ms ease; } .theme-toggle-icon { font-size: 1.15rem; } .theme-toggle-label { letter-spacing: 0.06em; } .theme-toggle:hover, .theme-toggle:focus-visible { border-color: color-mix(in srgb, var(--accent-color) 40%, transparent); background: var(--surface-hover-background); transform: translateY(-1px); box-shadow: 0 0 0 3px var(--accent-color-soft); } /* ── Session card ───────────────────────────────────────────────────────── */ .session-card { min-width: min(100%, 18rem); } .status-pill { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.38rem 0.85rem; border-radius: 999px; background: var(--badge-background); border: 1px solid var(--surface-border-soft); font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--page-text-soft); } /* ── Auth form card ─────────────────────────────────────────────────────── */ .form-control, .form-control:focus, .form-select, .form-select:focus { color: var(--page-text); background-color: var(--input-background); border-color: var(--input-border); border-radius: 0.85rem; box-shadow: none; transition: border-color 160ms ease, box-shadow 160ms ease; } .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); } .form-control::placeholder { color: var(--placeholder-color); } .form-label, .h3, .h4, .h5, .fw-semibold, .fw-bold { color: var(--page-text); } .text-secondary, .lead, .small { color: var(--page-text-muted) !important; } /* 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; }