KnowYourRepo / frontend /src /styles.css
kushalkachari's picture
Add grounded chat verification
9cec7d1
Raw
History Blame Contribute Delete
10.9 kB
:root {
--bg: #f4f1ea;
--surface: #fffdf8;
--surface-2: #ebe5d9;
--ink: #171717;
--muted: #6f6a60;
--line: #d8d0c2;
--line-strong: #b9ad9c;
--accent: #0f766e;
--accent-strong: #115e59;
--accent-soft: #d9f0eb;
--warn: #a16207;
--dark: #1f2421;
--shadow: 0 18px 50px rgba(42, 38, 31, 0.08);
--sans: "Aptos", "Segoe UI", ui-sans-serif, system-ui, -apple-system, sans-serif;
--mono: "Cascadia Code", "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
color: var(--ink);
background: var(--bg);
font-family: var(--sans);
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 320px;
background:
linear-gradient(180deg, rgba(255, 253, 248, 0.84), rgba(244, 241, 234, 0.96) 34rem),
var(--bg);
}
button,
input {
font: inherit;
}
button {
min-height: 42px;
border: 1px solid var(--dark);
border-radius: 8px;
background: var(--dark);
color: #fffdf8;
font-weight: 750;
cursor: pointer;
transition:
transform 0.15s ease,
border-color 0.15s ease,
background 0.15s ease;
}
button:hover {
transform: translateY(-1px);
}
button.secondary {
background: transparent;
color: var(--ink);
border-color: var(--line-strong);
}
button.dark {
background: var(--accent-strong);
border-color: var(--accent-strong);
}
button:disabled {
opacity: 0.55;
cursor: not-allowed;
}
input {
width: 100%;
min-height: 44px;
border: 1px solid var(--line-strong);
border-radius: 8px;
padding: 0 12px;
color: var(--ink);
background: #fff;
outline: none;
}
input:focus {
border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.14);
}
.page {
max-width: 1240px;
margin: 0 auto;
padding: 20px 22px 42px;
}
.nav {
min-height: 62px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
border-bottom: 1px solid var(--line);
margin-bottom: 30px;
}
.brand {
display: flex;
align-items: center;
gap: 12px;
}
.brand span {
display: block;
font-size: 1rem;
font-weight: 850;
}
.brand small {
display: block;
margin-top: 2px;
color: var(--muted);
font-family: var(--mono);
font-size: 0.72rem;
}
.brandMark {
width: 38px;
height: 38px;
display: grid;
place-items: center;
border: 1px solid var(--dark);
border-radius: 9px;
color: #fffdf8;
background: var(--dark);
font-family: var(--mono);
font-weight: 900;
}
.navPills {
display: flex;
gap: 8px;
flex-wrap: wrap;
justify-content: flex-end;
}
.navPills span,
.eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
border: 1px solid var(--line);
border-radius: 999px;
padding: 7px 10px;
background: rgba(255, 253, 248, 0.8);
color: var(--muted);
font-family: var(--mono);
font-size: 0.72rem;
font-weight: 650;
}
.eyebrow span {
width: 7px;
height: 7px;
border-radius: 50%;
background: var(--accent);
}
.workspaceHeader {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(430px, 0.95fr);
gap: 24px;
align-items: end;
margin-bottom: 18px;
}
.titleBlock h1 {
margin: 14px 0 10px;
max-width: 720px;
font-size: clamp(2.2rem, 4.8vw, 4.25rem);
line-height: 0.98;
letter-spacing: 0;
font-weight: 880;
}
.titleBlock p,
.panel p,
.workspace p,
.accountCard p,
footer {
color: var(--muted);
line-height: 1.55;
font-size: 0.98rem;
}
.topGrid {
display: grid;
grid-template-columns: minmax(340px, 0.8fr) minmax(0, 1.2fr);
gap: 14px;
margin: 18px 0;
}
.accountCard,
.panel,
.workspace,
.resultCard,
.sessionNotice,
.jobCard {
background: var(--surface);
border: 1px solid var(--line);
border-radius: 10px;
box-shadow: var(--shadow);
}
.accountCard,
.panel,
.workspace {
padding: 20px;
}
.accountCard form,
.panel form {
display: grid;
gap: 11px;
}
.accountSignedIn {
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
}
.accountSignedIn h2 {
margin-bottom: 2px;
}
.tabs {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
}
.tabs button {
background: transparent;
color: var(--muted);
border: 1px solid var(--line);
box-shadow: none;
}
.tabs button.active {
color: #fffdf8;
background: var(--dark);
border-color: var(--dark);
}
.kicker {
color: var(--accent-strong);
text-transform: uppercase;
font-family: var(--mono);
font-size: 0.68rem;
letter-spacing: 0;
font-weight: 900;
}
.sectionHead {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 20px;
margin-bottom: 18px;
}
.sectionHead h2,
.panel h2,
.accountCard h2,
.resultsHead h2 {
margin: 7px 0 4px;
font-size: 1.2rem;
font-weight: 820;
}
.notice,
.busy {
border-radius: 8px;
padding: 12px 14px;
margin: 14px 0;
font-weight: 700;
}
.notice {
border: 1px solid #9dc9c0;
background: #edf8f5;
color: #115e59;
}
.notice.danger {
border-color: #efc4b3;
background: #fff4ef;
color: #9f3412;
}
.busy {
border: 1px solid #d6c38e;
color: var(--warn);
background: #fff9e8;
}
.sessionNotice {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 16px;
box-shadow: none;
}
.sessionNotice p {
margin: 4px 0 0;
color: var(--muted);
}
.sessionNotice strong {
color: var(--ink);
font-family: var(--mono);
}
.sessionNotice button {
min-width: 126px;
}
.metrics {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 0;
border: 1px solid var(--line);
border-radius: 10px;
overflow: hidden;
background: var(--surface);
box-shadow: var(--shadow);
}
.metric {
min-height: 92px;
padding: 16px;
border-right: 1px solid var(--line);
}
.metric:last-child {
border-right: 0;
}
.metric span {
display: block;
color: var(--muted);
font-size: 0.78rem;
}
.metric strong {
display: block;
margin-top: 8px;
font-family: var(--mono);
font-size: 1.2rem;
}
.jobCard {
padding: 16px;
margin: 14px 0;
box-shadow: none;
}
.jobCard.completed {
border-color: #9dc9a8;
}
.jobCard.failed {
border-color: #efc4b3;
}
.jobTop {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18px;
}
.jobTop h2 {
margin: 6px 0 4px;
}
.jobTop p {
margin: 0;
color: var(--muted);
}
.jobTop strong {
color: var(--accent-strong);
font-family: var(--mono);
font-size: 1.1rem;
}
.progressTrack {
height: 8px;
border-radius: 999px;
background: var(--surface-2);
overflow: hidden;
margin: 14px 0 10px;
}
.progressTrack div {
height: 100%;
border-radius: inherit;
background: var(--accent);
transition: width 0.25s ease;
}
.jobMeta {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.jobMeta span {
border: 1px solid var(--line);
border-radius: 999px;
color: var(--muted);
padding: 5px 9px;
font-size: 0.78rem;
font-weight: 700;
}
.jobError {
margin-top: 12px;
color: #9f3412;
background: #fff4ef;
border: 1px solid #efc4b3;
border-radius: 8px;
padding: 12px;
}
.workspace {
margin: 18px 0;
}
.indexGrid,
.queryGrid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
}
.panel label {
display: grid;
gap: 8px;
color: var(--ink);
font-size: 0.88rem;
font-weight: 780;
}
.queryGrid {
align-items: start;
margin-top: 18px;
}
.searchForm,
.chatForm {
margin-top: 14px;
}
.controls {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
}
.controls label {
grid-template-columns: 1fr;
}
input[type="range"] {
min-height: auto;
padding: 0;
accent-color: var(--accent);
box-shadow: none;
}
.resultsHead {
display: flex;
align-items: end;
justify-content: space-between;
gap: 18px;
margin: 24px 0 12px;
}
.resultsHead > span {
color: var(--muted);
font-family: var(--mono);
font-size: 0.78rem;
}
.results {
display: grid;
gap: 12px;
margin: 0 0 20px;
}
.resultCard {
padding: 18px;
box-shadow: none;
}
.resultTop {
display: flex;
justify-content: space-between;
gap: 20px;
align-items: flex-start;
margin-bottom: 14px;
}
.resultTop h3 {
margin: 0 0 4px;
font-weight: 820;
}
.resultTop p {
margin: 0;
color: var(--muted);
}
.resultTop a {
color: var(--accent-strong);
font-weight: 800;
text-decoration: none;
}
.excerpt {
border-left: 3px solid var(--accent);
background: #faf7f0;
padding: 12px 14px;
margin-top: 10px;
}
.excerpt span {
display: block;
color: var(--muted);
font-size: 0.78rem;
font-family: var(--mono);
font-weight: 700;
margin-bottom: 8px;
}
.excerpt p {
margin: 0;
white-space: pre-wrap;
}
.answer {
margin-top: 14px;
border-radius: 8px;
background: #faf7f0;
border: 1px solid var(--line);
padding: 14px;
line-height: 1.65;
white-space: pre-wrap;
}
.answerTop {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 10px;
}
.answerTop span {
border: 1px solid var(--line);
border-radius: 999px;
padding: 4px 8px;
color: var(--muted);
background: var(--surface);
font-family: var(--mono);
font-size: 0.72rem;
}
.groundedBadge.grounded {
border-color: #8fbc9b;
color: #166534;
background: #eef8ef;
}
.groundedBadge.partially_grounded {
border-color: #d6c38e;
color: #854d0e;
background: #fff9e8;
}
.groundedBadge.insufficient_evidence {
border-color: #efc4b3;
color: #9f3412;
background: #fff4ef;
}
.answer > p {
margin: 0;
}
.citations,
.unsupportedClaims {
display: grid;
gap: 10px;
margin-top: 14px;
padding-top: 14px;
border-top: 1px solid var(--line);
}
.citation {
border-left: 3px solid var(--line-strong);
padding-left: 10px;
}
.citation strong {
display: block;
margin-bottom: 4px;
font-size: 0.86rem;
}
.citation p {
margin: 0;
color: var(--muted);
font-size: 0.92rem;
}
.unsupportedClaims ul {
margin: 0;
padding-left: 18px;
color: var(--muted);
}
footer {
margin-top: 26px;
color: var(--muted);
font-family: var(--mono);
font-size: 0.76rem;
}
@media (max-width: 960px) {
.workspaceHeader,
.topGrid,
.indexGrid,
.queryGrid,
.controls {
grid-template-columns: 1fr;
}
.metrics {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.metric:nth-child(2) {
border-right: 0;
}
.metric:nth-child(-n + 2) {
border-bottom: 1px solid var(--line);
}
}
@media (max-width: 680px) {
.page {
padding: 16px 14px 34px;
}
.nav {
align-items: flex-start;
flex-direction: column;
padding-bottom: 14px;
margin-bottom: 24px;
}
.navPills {
justify-content: flex-start;
}
.titleBlock h1 {
font-size: 2.45rem;
}
.metrics {
grid-template-columns: 1fr;
}
.metric {
border-right: 0;
border-bottom: 1px solid var(--line);
}
.metric:last-child {
border-bottom: 0;
}
.accountSignedIn,
.sessionNotice,
.resultTop {
align-items: stretch;
flex-direction: column;
}
}