browser-speak / styles.css
Mike0021's picture
Show live microphone input level
1a21e8c verified
:root {
color-scheme: dark;
--bg: #101114;
--panel: #191c20;
--panel-2: #20242a;
--line: #313741;
--text: #f4f5f7;
--muted: #aab2bd;
--green: #45c486;
--yellow: #f4bd4f;
--red: #ee6b6e;
--blue: #70a7ff;
--accent: #f1d270;
font-family:
Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 320px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent 280px),
var(--bg);
color: var(--text);
}
button,
select,
input {
font: inherit;
}
button,
select {
border: 1px solid var(--line);
border-radius: 8px;
background: #252a31;
color: var(--text);
}
button {
min-height: 40px;
padding: 0 14px;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
}
button:hover:not(:disabled) {
border-color: #5d6877;
background: #2d343d;
}
button:disabled {
cursor: not-allowed;
opacity: 0.5;
}
select {
width: 100%;
min-height: 38px;
padding: 0 10px;
}
.shell {
width: min(1440px, 100%);
margin: 0 auto;
padding: 24px;
}
.topbar {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 20px;
padding-bottom: 20px;
}
h1,
h2,
p {
margin: 0;
}
h1 {
font-size: clamp(30px, 4vw, 56px);
line-height: 0.95;
letter-spacing: 0;
}
h2 {
font-size: 14px;
text-transform: uppercase;
letter-spacing: 0;
color: var(--muted);
}
.topbar p {
max-width: 760px;
margin-top: 10px;
color: var(--muted);
line-height: 1.5;
}
.actions {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 10px;
}
.button-icon {
width: 18px;
text-align: center;
color: var(--accent);
}
.status-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 10px;
margin-bottom: 14px;
}
.status-tile {
border: 1px solid var(--line);
border-radius: 8px;
background: var(--panel);
min-height: 76px;
padding: 14px;
}
.status-tile span {
display: block;
color: var(--muted);
font-size: 12px;
margin-bottom: 8px;
}
.status-tile strong {
font-size: 16px;
font-weight: 650;
}
.status-tile[data-state="ready"] {
border-color: color-mix(in srgb, var(--green), var(--line) 50%);
}
.status-tile[data-state="active"] {
border-color: color-mix(in srgb, var(--blue), var(--line) 30%);
background: #1b2430;
}
.status-tile[data-state="warn"] {
border-color: color-mix(in srgb, var(--yellow), var(--line) 35%);
}
.status-tile[data-state="error"] {
border-color: color-mix(in srgb, var(--red), var(--line) 35%);
}
.workspace {
display: grid;
grid-template-columns: minmax(0, 1fr) 360px;
gap: 14px;
}
.conversation {
display: grid;
gap: 14px;
min-width: 0;
}
.transcript-panel,
.response-panel,
.settings,
.metrics,
.events,
.bench-results {
border: 1px solid var(--line);
border-radius: 8px;
background: var(--panel);
}
.transcript-panel,
.response-panel {
min-height: 280px;
padding: 16px;
}
.panel-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 14px;
}
.badge {
min-width: 82px;
text-align: center;
border: 1px solid var(--line);
border-radius: 999px;
padding: 5px 10px;
color: var(--muted);
font-size: 12px;
white-space: nowrap;
}
.badge.active {
color: var(--text);
border-color: color-mix(in srgb, var(--green), var(--line) 40%);
}
.mic-level {
display: grid;
grid-template-columns: auto minmax(120px, 1fr) 42px;
align-items: center;
gap: 10px;
min-height: 30px;
margin-top: 12px;
color: var(--muted);
font-size: 12px;
}
.mic-level-meter {
height: 7px;
overflow: hidden;
border-radius: 999px;
background: #11151a;
}
.mic-level-meter span {
display: block;
width: 0%;
height: 100%;
background: var(--blue);
transition: width 80ms linear;
}
.mic-level output {
text-align: right;
color: var(--text);
font-variant-numeric: tabular-nums;
}
.partial {
min-height: 86px;
color: var(--muted);
line-height: 1.55;
padding-bottom: 14px;
border-bottom: 1px solid var(--line);
}
.final,
.output {
margin-top: 14px;
font-size: clamp(18px, 2vw, 25px);
line-height: 1.45;
white-space: pre-wrap;
overflow-wrap: anywhere;
}
.output {
min-height: 190px;
color: #f8f1dc;
}
.side {
display: grid;
gap: 14px;
align-content: start;
}
.settings,
.metrics,
.events,
.bench-results {
padding: 16px;
}
.settings {
display: grid;
gap: 12px;
}
.settings label {
display: grid;
gap: 7px;
min-width: 0;
color: var(--muted);
font-size: 13px;
}
.settings input[type="range"] {
width: 100%;
max-width: 100%;
min-width: 0;
}
.runtime-status {
display: grid;
gap: 3px;
min-height: 44px;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
padding: 10px 0;
color: var(--muted);
font-size: 13px;
overflow-wrap: anywhere;
}
.runtime-status span {
color: var(--text);
font-weight: 650;
}
.runtime-status small {
color: var(--muted);
line-height: 1.35;
}
.runtime-status[data-state="ready"] span {
color: var(--green);
}
.runtime-status[data-state="warn"] span {
color: var(--yellow);
}
.runtime-status[data-state="error"] span {
color: var(--red);
}
.build-status {
min-height: 24px;
color: var(--muted);
font-size: 12px;
overflow-wrap: anywhere;
}
.range-label {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.range-label span {
color: var(--text);
font-variant-numeric: tabular-nums;
}
.settings .check {
grid-template-columns: auto 1fr;
align-items: center;
color: var(--text);
}
.metrics dl {
margin: 0;
display: grid;
gap: 10px;
}
.metrics dl div {
display: flex;
justify-content: space-between;
gap: 16px;
border-bottom: 1px solid var(--line);
padding-bottom: 9px;
}
.metrics dt {
color: var(--muted);
}
.metrics dd {
margin: 0;
font-variant-numeric: tabular-nums;
}
.mic-validation {
display: grid;
gap: 5px;
margin-top: 14px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--panel-2);
padding: 12px;
overflow-wrap: anywhere;
}
.mic-validation span {
color: var(--muted);
font-size: 12px;
text-transform: uppercase;
}
.mic-validation strong {
color: var(--text);
font-size: 15px;
font-weight: 650;
}
.mic-validation small {
color: var(--muted);
line-height: 1.35;
}
.mic-validation[data-state="active"] {
border-color: color-mix(in srgb, var(--blue), var(--line) 35%);
}
.mic-validation[data-state="active"] strong {
color: var(--blue);
}
.mic-validation[data-state="ready"] {
border-color: color-mix(in srgb, var(--green), var(--line) 45%);
}
.mic-validation[data-state="ready"] strong {
color: var(--green);
}
.mic-validation[data-state="warn"] {
border-color: color-mix(in srgb, var(--yellow), var(--line) 40%);
}
.mic-validation[data-state="warn"] strong {
color: var(--yellow);
}
.mic-progress {
height: 6px;
overflow: hidden;
border-radius: 999px;
background: #11151a;
}
.mic-progress span {
display: block;
width: 0%;
height: 100%;
background: var(--green);
transition: width 160ms ease;
}
#suiteButton,
#benchmarkButton,
#ttsBenchmarkButton,
#loopbackButton,
#bargeInButton,
#gpuBenchmarkButton,
#evidenceCaptureButton,
#micBenchmarkButton,
#micSeriesButton {
width: 100%;
margin-top: 14px;
}
#benchmarkButton,
#ttsBenchmarkButton,
#loopbackButton,
#bargeInButton,
#gpuBenchmarkButton,
#evidenceCaptureButton,
#micBenchmarkButton,
#micSeriesButton {
margin-top: 8px;
}
.events {
margin-top: 14px;
}
.events .panel-head button,
.mini-actions button {
min-height: 30px;
padding: 0 10px;
font-size: 13px;
}
.bench-results {
margin-top: 14px;
}
.mini-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.benchmark-summary {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(138px, 1fr));
gap: 8px;
margin-bottom: 12px;
color: var(--muted);
font-size: 13px;
}
.summary-item {
min-height: 58px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--panel-2);
padding: 10px;
}
.summary-item span,
.summary-item strong {
display: block;
}
.summary-item span {
margin-bottom: 6px;
}
.summary-item strong {
color: var(--text);
font-size: 15px;
font-weight: 650;
font-variant-numeric: tabular-nums;
}
.table-wrap {
overflow-x: auto;
}
table {
width: 100%;
border-collapse: collapse;
min-width: 1500px;
font-size: 13px;
}
th,
td {
border-bottom: 1px solid var(--line);
padding: 9px 10px;
text-align: left;
vertical-align: top;
}
th {
color: var(--muted);
font-weight: 650;
text-transform: uppercase;
letter-spacing: 0;
white-space: nowrap;
}
td {
color: #dce3ec;
}
td:nth-child(13),
td:nth-child(14) {
max-width: 260px;
overflow-wrap: anywhere;
}
#eventLog {
height: 170px;
margin: 0;
padding-left: 22px;
overflow: auto;
color: var(--muted);
line-height: 1.45;
}
#eventLog li {
padding: 3px 0;
}
@media (max-width: 980px) {
.shell {
padding: 16px;
}
.topbar,
.workspace {
grid-template-columns: 1fr;
display: grid;
}
.actions {
justify-content: stretch;
}
.actions button {
flex: 1 1 150px;
}
.status-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.benchmark-summary {
grid-template-columns: repeat(auto-fit, minmax(138px, 1fr));
}
}
@media (max-width: 560px) {
.actions {
display: grid;
grid-template-columns: 1fr;
}
.actions button {
width: 100%;
}
.status-grid {
grid-template-columns: 1fr;
}
.benchmark-summary {
grid-template-columns: 1fr;
}
.transcript-panel,
.response-panel {
min-height: 230px;
}
}