pocket-confidant / theme.css
LocutusofArgo
feat: surface recent entries and fix public repo links
495b368
Raw
History Blame Contribute Delete
25.3 kB
/* Pocket Confidant — Off-Brand theme.
A calm, warm, journal-like aesthetic. Soft paper background, a serif voice for
the companion, generous whitespace, one gentle accent. Deliberately NOT the
default Gradio look. */
:root {
--pc-paper: #f3eadc; /* warm paper */
--pc-paper-deep: #e8d7bc; /* slightly deeper paper for cards */
--pc-ink: #221910; /* stronger dark ink */
--pc-ink-soft: #4b3d2e; /* readable secondary text */
--pc-accent: #b07a4f; /* gentle terracotta */
--pc-accent-2: #7d8f71; /* sage, for the "private" assurance */
--pc-line: #ccb895; /* hairline */
--pc-shadow: rgba(58, 52, 43, 0.12);
}
/* ---- Page canvas -------------------------------------------------------- */
.gradio-container,
body,
.gradio-container .main {
background: var(--pc-paper) !important;
color: var(--pc-ink) !important;
font-family: "Iowan Old Style", "Palatino Linotype", "Hoefler Text", Georgia, serif;
}
.gradio-container {
max-width: 820px !important;
margin: 0 auto !important;
}
/* Force the custom HTML blocks to stay legible even when Gradio injects
theme wrappers or markdown defaults with their own color rules. */
#pc-masthead *,
#pc-privacy *,
.pc-landing-row *,
.pc-explainer *,
.pc-samples *,
.pc-hero *,
.pc-pulse *,
.pc-utility-strip *,
.pc-card *,
.pc-week *,
.pc-entry-block *,
.pc-empty,
.pc-submitted-entry *,
.chat-history *,
.chat-bubble,
.chat-label,
.chat-thinking,
#pc-version-footer,
.pc-footer,
.pc-footer a {
opacity: 1 !important;
}
/* Subtle paper grain via layered gradients (no external asset). */
body {
background-image:
radial-gradient(circle at 18% 12%, rgba(176,122,79,0.07), transparent 38%),
radial-gradient(circle at 82% 18%, rgba(125,143,113,0.06), transparent 34%),
radial-gradient(circle at 85% 80%, rgba(138,154,123,0.06), transparent 45%);
background-attachment: fixed;
}
/* ---- Masthead ----------------------------------------------------------- */
#pc-masthead {
text-align: center;
padding: 28px 0 6px;
}
#pc-masthead .pc-title {
font-size: 2.1rem;
letter-spacing: 0.01em;
margin: 0;
color: var(--pc-ink);
font-weight: 600;
}
#pc-masthead .pc-sub {
font-size: 1.02rem;
color: var(--pc-ink-soft);
font-style: italic;
margin-top: 4px;
}
/* The privacy assurance — present, tasteful, not spammy. */
#pc-privacy {
text-align: center;
margin: 10px auto 22px;
font-size: 0.86rem;
letter-spacing: 0.02em;
color: var(--pc-accent-2);
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
}
#pc-privacy .pc-dot { opacity: 0.55; padding: 0 8px; }
/* ---- Landing hero ------------------------------------------------------- */
.pc-landing-row {
display: grid;
grid-template-columns: minmax(0, 1.3fr) minmax(280px, 0.9fr);
gap: 20px;
align-items: stretch;
margin: 8px 0 22px;
}
.pc-hero,
.pc-pulse {
background: linear-gradient(180deg, #fcf6ec 0%, #ead9be 100%);
border: 1px solid rgba(90, 71, 49, 0.16);
border-radius: 24px;
box-shadow:
0 18px 36px rgba(58, 52, 43, 0.14),
inset 0 1px 0 rgba(255,255,255,0.5);
color: var(--pc-ink);
}
.pc-hero {
padding: 24px 24px 20px;
}
.pc-hero-kicker {
font-family: ui-sans-serif, system-ui, sans-serif;
text-transform: uppercase;
letter-spacing: 0.12em;
font-size: 0.7rem;
color: var(--pc-accent-2);
margin-bottom: 10px;
}
.pc-hero h1 {
font-size: 2.28rem;
line-height: 0.98;
margin: 0 0 10px;
color: var(--pc-ink);
}
.pc-hero-line {
display: inline-flex;
margin: 0 0 14px;
padding: 8px 12px;
border-radius: 999px;
background: rgba(125, 143, 113, 0.12);
color: #4d5a43;
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.84rem;
letter-spacing: 0.02em;
}
.pc-hero-copy {
margin: 0 0 16px;
font-size: 1.04rem;
line-height: 1.65;
color: #2b2219;
max-width: 56ch;
}
.pc-pill-row {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.pc-pill {
flex: 1 1 160px;
min-width: 150px;
padding: 12px 14px;
border-radius: 16px;
background: linear-gradient(180deg, rgba(255,253,248,0.92), rgba(245,234,214,0.98));
border: 1px solid rgba(143, 118, 87, 0.36);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.65);
}
.pc-pill-label {
display: block;
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.71rem;
letter-spacing: 0.09em;
text-transform: uppercase;
color: #66745e;
margin-bottom: 5px;
}
.pc-pill-value {
display: block;
color: #241d16;
line-height: 1.35;
font-size: 0.99rem;
font-weight: 700;
}
.pc-pill--warm { border-left: 3px solid var(--pc-accent); }
.pc-pill--accent { border-left: 3px solid #9a6440; }
.pc-pill--sage { border-left: 3px solid var(--pc-accent-2); }
.pc-pulse {
padding: 22px 20px 18px;
display: grid;
gap: 14px;
align-items: center;
grid-template-columns: 122px minmax(0, 1fr);
position: relative;
}
.pc-pulse::after {
content: "";
position: absolute;
inset: 0;
border-radius: 24px;
background: radial-gradient(circle at 80% 18%, rgba(255,255,255,0.28), transparent 30%);
pointer-events: none;
}
.pc-orb-shell {
position: relative;
width: 112px;
height: 112px;
margin: 0 auto;
}
.pc-orb {
position: absolute;
inset: 16px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%, #fffaf1 0%, #f2d6b6 42%, #c98e63 100%);
box-shadow: inset 0 0 0 1px rgba(255,255,255,0.34), 0 0 24px rgba(176,122,79,0.14);
animation: pc-orb-breathe 4.8s ease-in-out infinite;
}
.pc-orb-ring {
position: absolute;
inset: 5px;
border-radius: 50%;
border: 1px solid rgba(138, 154, 123, 0.35);
animation: pc-orb-ring 7s linear infinite;
}
.pc-orb-leaf {
position: absolute;
width: 26px;
height: 12px;
background: rgba(138, 154, 123, 0.7);
border-radius: 999px 999px 999px 999px;
top: 52px;
box-shadow: 0 0 8px rgba(138,154,123,0.25);
transform-origin: center center;
--leaf-rotate: 0deg;
animation: pc-leaf-sway 5.5s ease-in-out infinite;
}
.pc-orb-leaf--left {
left: 0;
--leaf-rotate: -28deg;
}
.pc-orb-leaf--right {
right: 0;
--leaf-rotate: 28deg;
}
.pc-pulse-copy {
min-width: 0;
}
.pc-pulse-label {
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.72rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--pc-accent-2);
margin-bottom: 8px;
}
.pc-pulse-status {
color: #241d16;
font-size: 1.06rem;
line-height: 1.52;
margin-bottom: 8px;
}
.pc-pulse-badge {
display: inline-block;
padding: 4px 10px;
border-radius: 999px;
background: rgba(138,154,123,0.12);
color: var(--pc-accent-2);
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.7rem;
letter-spacing: 0.08em;
text-transform: uppercase;
margin-bottom: 10px;
}
.pc-pulse-stats {
color: #4b4033;
font-size: 0.92rem;
line-height: 1.45;
}
.pc-pulse--awake .pc-orb {
animation-duration: 2.8s;
box-shadow: inset 0 0 0 1px rgba(255,255,255,0.4), 0 0 28px rgba(176,122,79,0.24);
}
.pc-pulse--awake .pc-pulse-badge {
background: rgba(176,122,79,0.12);
color: var(--pc-accent);
}
.pc-pulse--growing .pc-orb {
background: radial-gradient(circle at 35% 30%, #fffaf1 0%, #d8e0c8 42%, #8a9a7b 100%);
}
.pc-pulse--quiet .pc-orb {
background: radial-gradient(circle at 35% 30%, #fffaf1 0%, #efdfc7 42%, #cab79b 100%);
}
.pc-pulse--listening .pc-orb {
background: radial-gradient(circle at 35% 30%, #fffaf1 0%, #f0d8b8 42%, #c98e63 100%);
}
@keyframes pc-orb-breathe {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.03); }
}
@keyframes pc-orb-ring {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@keyframes pc-leaf-sway {
0%, 100% { transform: translateY(0) rotate(var(--leaf-rotate, 0deg)); }
50% { transform: translateY(-2px) rotate(calc(var(--leaf-rotate, 0deg) + 4deg)); }
}
/* ---- Utility strip / footer --------------------------------------------- */
.pc-utility-strip {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 2px 0 14px;
}
.pc-utility-strip span {
display: inline-flex;
align-items: center;
padding: 6px 10px;
border-radius: 999px;
background: linear-gradient(180deg, rgba(255,253,248,0.96), rgba(247,239,226,0.99));
border: 1px solid rgba(207, 191, 159, 0.96);
color: #372d24;
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.74rem;
letter-spacing: 0.04em;
}
.pc-explainer {
margin: 0 0 22px;
padding: 20px 20px 18px;
border-radius: 22px;
border: 1px solid rgba(47, 37, 29, 0.22);
background:
radial-gradient(circle at top right, rgba(176,122,79,0.14), transparent 32%),
linear-gradient(180deg, rgba(26, 21, 17, 0.84), rgba(36, 28, 22, 0.94));
box-shadow: 0 16px 30px rgba(0, 0, 0, 0.20);
}
.pc-explainer-kicker {
font-family: ui-sans-serif, system-ui, sans-serif;
text-transform: uppercase;
letter-spacing: 0.14em;
font-size: 0.7rem;
color: #c9c0ae;
margin-bottom: 12px;
}
.pc-explainer-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.pc-step {
display: flex;
gap: 12px;
align-items: flex-start;
padding: 12px 12px 11px;
border-radius: 14px;
background: rgba(255, 251, 242, 0.07);
border: 1px solid rgba(224, 212, 189, 0.16);
}
.pc-step-num {
width: 30px;
height: 30px;
border-radius: 999px;
display: grid;
place-items: center;
background: rgba(176, 122, 79, 0.2);
color: #f4eadf;
font-family: ui-sans-serif, system-ui, sans-serif;
font-weight: 700;
flex: 0 0 auto;
}
.pc-step-title {
color: #fff5ea;
font-size: 0.98rem;
font-weight: 700;
line-height: 1.2;
}
.pc-step-copy {
margin-top: 4px;
color: #d3c6b2;
font-size: 0.92rem;
line-height: 1.45;
}
.pc-explainer-foot {
margin-top: 12px;
color: #c6bba8;
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.84rem;
}
.pc-samples {
margin: 0 0 22px;
padding: 16px 18px 14px;
border-radius: 22px;
border: 1px solid rgba(47, 37, 29, 0.22);
background:
radial-gradient(circle at top left, rgba(176,122,79,0.08), transparent 28%),
linear-gradient(180deg, rgba(28, 22, 18, 0.93), rgba(41, 31, 24, 0.98));
box-shadow: 0 16px 30px rgba(0, 0, 0, 0.20);
}
.pc-samples-kicker {
font-family: ui-sans-serif, system-ui, sans-serif;
text-transform: uppercase;
letter-spacing: 0.14em;
font-size: 0.7rem;
color: #c9c0ae;
margin-bottom: 10px;
}
.pc-samples-row {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.pc-sample {
display: inline-flex;
align-items: center;
padding: 10px 12px;
border-radius: 999px;
background: rgba(255, 251, 244, 0.08);
border: 1px solid rgba(224, 212, 189, 0.2);
color: #f1e9dd;
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.86rem;
letter-spacing: 0.01em;
}
.pc-footer {
text-align: center;
padding: 20px 0 12px;
margin-top: 18px;
border-top: 1px solid var(--pc-line);
}
.pc-footer a {
color: var(--pc-ink-soft);
text-decoration: none;
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.9rem;
}
.pc-footer a:hover {
color: var(--pc-accent);
}
/* ---- Responsive --------------------------------------------------------- */
@media (max-width: 800px) {
.pc-landing-row,
.pc-pulse {
grid-template-columns: 1fr;
}
.pc-explainer-grid {
grid-template-columns: 1fr;
}
.pc-samples-row {
flex-direction: column;
}
.pc-hero h1 {
font-size: 1.9rem;
}
.pc-pill {
min-width: 0;
}
}
/* ---- Writing area ------------------------------------------------------- */
#pc-entry textarea {
background: #fffdf8 !important;
border: 1px solid var(--pc-line) !important;
border-radius: 10px !important;
color: var(--pc-ink) !important;
font-family: "Iowan Old Style", Georgia, serif !important;
font-size: 1.06rem !important;
line-height: 1.6 !important;
padding: 16px 18px !important;
box-shadow: inset 0 1px 2px var(--pc-shadow) !important;
}
#pc-entry textarea::placeholder {
color: #705d47 !important;
font-style: italic;
}
#pc-entry label span,
#pc-entry .gr-text-label { color: var(--pc-ink-soft) !important; }
/* ---- Buttons ------------------------------------------------------------ */
button.pc-primary, #pc-submit button, .pc-primary button {
background: var(--pc-accent) !important;
border: none !important;
color: #fdf8f0 !important;
border-radius: 999px !important;
font-family: ui-sans-serif, system-ui, sans-serif !important;
font-weight: 600 !important;
letter-spacing: 0.02em !important;
padding: 10px 22px !important;
box-shadow: 0 2px 6px var(--pc-shadow) !important;
transition: transform 0.08s ease, filter 0.15s ease !important;
}
button.pc-primary:hover, #pc-submit button:hover, .pc-primary button:hover {
filter: brightness(1.05) !important;
transform: translateY(-1px) !important;
}
.pc-quiet button {
background: transparent !important;
border: 1px solid var(--pc-line) !important;
color: var(--pc-ink-soft) !important;
border-radius: 999px !important;
font-family: ui-sans-serif, system-ui, sans-serif !important;
}
/* Model selector — keep it unobtrusive. */
#pc-model { max-width: 230px; }
#pc-model label span { color: var(--pc-ink-soft) !important; font-size: 0.82rem; }
/* ---- The companion's card ---------------------------------------------- */
.pc-card {
background:
linear-gradient(180deg, rgba(255,255,255,0.20), rgba(255,255,255,0.02)),
linear-gradient(180deg, #f7ecd8 0%, var(--pc-paper-deep) 100%);
border: 1px solid var(--pc-line);
border-left: 4px solid var(--pc-accent);
border-radius: 18px;
padding: 22px 24px;
margin: 8px 0 4px;
box-shadow: 0 10px 24px var(--pc-shadow);
}
.pc-card .pc-callback {
font-size: 0.92rem;
color: #403326;
font-style: italic;
margin-bottom: 12px;
padding-left: 12px;
border-left: 2px solid var(--pc-line);
}
.pc-card .pc-callback::before {
content: "↩ remembering — ";
color: var(--pc-accent-2);
font-style: normal;
font-size: 0.8rem;
}
.pc-card .pc-reflection {
font-size: 1.12rem;
line-height: 1.65;
color: #211911;
margin-bottom: 14px;
}
.pc-card .pc-question {
font-size: 1.06rem;
color: #9a6240;
font-style: italic;
}
.pc-card .pc-meta {
margin-top: 14px;
font-size: 0.72rem;
letter-spacing: 0.03em;
color: #6b5e4d;
font-family: ui-sans-serif, system-ui, sans-serif;
}
/* ---- "This week" patterns panel ---------------------------------------- */
.pc-week {
background: #fbf7ee;
border: 1px dashed var(--pc-accent-2);
border-radius: 12px;
padding: 16px 20px;
margin: 6px 0;
color: #211911;
font-size: 1.0rem;
line-height: 1.6;
}
.pc-week .pc-week-head {
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.74rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--pc-accent-2);
margin-bottom: 8px;
}
/* ---- Timeline ----------------------------------------------------------- */
.pc-timeline-head {
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.88rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: #241d16;
}
.pc-recent-shell {
margin: 0 0 14px;
padding: 14px 16px 12px;
border-radius: 18px;
border: 1px solid rgba(90, 71, 49, 0.14);
background: linear-gradient(180deg, rgba(255,253,248,0.96), rgba(244,236,223,0.98));
box-shadow: 0 10px 24px rgba(58, 52, 43, 0.08);
}
.pc-recent-entry {
padding: 12px 0 14px;
border-bottom: 1px solid rgba(90, 71, 49, 0.10);
}
.pc-recent-entry:last-child {
border-bottom: none;
padding-bottom: 4px;
}
.pc-timeline-shell {
margin: 24px 0 4px;
padding: 14px 16px 10px;
border-radius: 20px;
border: 1px solid rgba(90, 71, 49, 0.16);
background:
radial-gradient(circle at top right, rgba(176,122,79,0.08), transparent 28%),
linear-gradient(180deg, rgba(255,253,248,0.92), rgba(242,233,217,0.98));
box-shadow: 0 12px 28px rgba(58, 52, 43, 0.08);
}
.pc-timeline-top {
padding-bottom: 10px;
margin-bottom: 6px;
border-bottom: 1px solid rgba(90, 71, 49, 0.12);
}
.pc-timeline-sub {
margin-top: 6px;
color: var(--pc-ink-soft);
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.8rem;
line-height: 1.45;
}
.pc-entry-block {
padding: 16px 10px 18px;
border-bottom: 1px solid rgba(90, 71, 49, 0.12);
}
.pc-entry-block .pc-date {
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.72rem;
letter-spacing: 0.05em;
color: #9a6240;
text-transform: uppercase;
margin-bottom: 6px;
}
.pc-entry-block .pc-text {
font-size: 1.06rem;
line-height: 1.6;
color: #1f1812;
white-space: pre-wrap;
}
.pc-entry-block .pc-echo {
margin-top: 10px;
padding: 10px 14px;
background: rgba(255, 251, 244, 0.74);
border: 1px solid rgba(174, 146, 113, 0.18);
border-radius: 12px;
font-size: 0.95rem;
color: #4b3e31;
font-style: italic;
}
.pc-entry-block .pc-echo .pc-q { color: var(--pc-accent); }
/* ---- Empty / onboarding state ------------------------------------------ */
.pc-empty {
text-align: center;
padding: 30px 24px;
color: #3f3328;
font-style: italic;
font-size: 1.05rem;
line-height: 1.7;
}
/* ---- Theme toggle button ----------------------------------------------- */
#pc-theme-toggle,
#pc-theme-toggle button {
position: fixed;
top: 12px;
right: 16px;
z-index: 1000;
background: var(--pc-paper-deep) !important;
border: 1px solid var(--pc-line) !important;
color: var(--pc-ink-soft) !important;
border-radius: 999px !important;
width: 36px !important;
height: 36px !important;
min-width: 36px !important;
min-height: 36px !important;
padding: 0 !important;
font-size: 1.1rem !important;
cursor: pointer !important;
box-shadow: 0 2px 6px var(--pc-shadow) !important;
transition: background 0.2s, color 0.2s !important;
display: flex !important;
align-items: center;
justify-content: center;
}
#pc-theme-toggle:hover,
#pc-theme-toggle button:hover {
background: var(--pc-accent) !important;
color: #fdf8f0 !important;
}
/* Hide Gradio footer branding to keep the off-brand feel. */
footer { display: none !important; }
/* ==========================================================================
DARK MODE
Gradio applies .dark to <body> or .gradio-container when the user picks
dark theme. We also respect prefers-color-scheme for OS-level dark mode.
========================================================================== */
/* Dark mode — triggered by Gradio's .dark class OR OS preference */
html.dark,
html.dark body,
html.dark .gradio-container,
html.dark .gradio-container .main,
body.dark,
body[data-pc-theme="dark"],
.gradio-container.dark,
.gradio-container[data-pc-theme="dark"] {
/* Paper → deep charcoal with warm undertone */
--pc-paper: #1a1814;
--pc-paper-deep: #242019;
--pc-ink: #e8e0d4;
--pc-ink-soft: #a89e8e;
--pc-accent: #d4956a;
--pc-accent-2: #8aab78;
--pc-line: #3a342b;
--pc-shadow: rgba(0, 0, 0, 0.35);
background: var(--pc-paper) !important;
color: var(--pc-ink) !important;
}
/* Dark paper grain */
.dark body,
.dark .gradio-container,
body.dark .gradio-container {
background-image:
radial-gradient(circle at 20% 15%, rgba(212,149,106,0.04), transparent 40%),
radial-gradient(circle at 85% 80%, rgba(138,171,120,0.03), transparent 45%) !important;
background-attachment: fixed !important;
}
/* Dark textarea */
.dark #pc-entry textarea,
.dark #pc-entry textarea {
background: #1e1b16 !important;
border-color: var(--pc-line) !important;
color: var(--pc-ink) !important;
}
/* Dark cards */
.dark .pc-card {
background: var(--pc-paper-deep) !important;
border-color: var(--pc-line) !important;
box-shadow: 0 3px 10px var(--pc-shadow) !important;
}
/* Dark callback */
.dark .pc-card .pc-callback {
color: var(--pc-ink-soft) !important;
border-left-color: var(--pc-line) !important;
}
.dark .pc-card .pc-callback::before {
color: var(--pc-accent-2) !important;
}
/* Dark reflection */
.dark .pc-card .pc-reflection {
color: var(--pc-ink) !important;
}
/* Dark week panel */
.dark .pc-week {
background: #1e1b16 !important;
border-color: var(--pc-accent-2) !important;
color: var(--pc-ink) !important;
}
/* Dark timeline */
.dark .pc-timeline-shell {
background:
radial-gradient(circle at top right, rgba(212,149,106,0.06), transparent 28%),
linear-gradient(180deg, rgba(26, 21, 17, 0.96), rgba(32, 27, 21, 0.99)) !important;
border-color: var(--pc-line) !important;
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.24) !important;
}
.dark .pc-recent-shell {
background:
radial-gradient(circle at top right, rgba(212,149,106,0.05), transparent 28%),
linear-gradient(180deg, rgba(26, 21, 17, 0.96), rgba(32, 27, 21, 0.99)) !important;
border-color: var(--pc-line) !important;
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.24) !important;
}
.dark .pc-recent-entry {
border-bottom-color: rgba(232, 224, 212, 0.08) !important;
}
.dark .pc-timeline-top {
border-bottom-color: rgba(232, 224, 212, 0.08) !important;
}
.dark .pc-timeline-head {
color: #f3eadc !important;
}
.dark .pc-timeline-sub {
color: var(--pc-ink-soft) !important;
}
.dark .pc-entry-block {
border-bottom-color: rgba(232, 224, 212, 0.08) !important;
}
.dark .pc-entry-block .pc-date {
color: #d4956a !important;
}
.dark .pc-entry-block .pc-text {
color: var(--pc-ink) !important;
}
.dark .pc-entry-block .pc-echo {
background: rgba(255, 255, 255, 0.03) !important;
border-color: rgba(255, 255, 255, 0.05) !important;
color: var(--pc-ink-soft) !important;
}
/* Dark utility strip pills */
.dark .pc-utility-strip span {
background: rgba(255, 255, 255, 0.06) !important;
border-color: rgba(232, 224, 212, 0.14) !important;
color: var(--pc-ink) !important;
}
/* Dark empty state */
.dark .pc-empty {
color: var(--pc-ink-soft) !important;
}
/* Dark model selector */
.dark #pc-model {
color: var(--pc-ink) !important;
}
/* Dark button styles */
.dark button.pc-primary,
.dark #pc-submit button,
.dark .pc-primary button {
background: var(--pc-accent) !important;
color: #1a1814 !important;
}
.dark .pc-quiet button {
border-color: var(--pc-line) !important;
color: var(--pc-ink-soft) !important;
}
/* Dark theme toggle */
.dark #pc-theme-toggle,
.dark #pc-theme-toggle button {
background: var(--pc-paper-deep) !important;
border-color: var(--pc-line) !important;
color: var(--pc-ink-soft) !important;
}
/* OS-level dark mode fallback (when Gradio hasn't set .dark) */
@media (prefers-color-scheme: dark) {
:root:not(.dark):not([data-pc-theme="dark"]) {
--pc-paper: #1a1814;
--pc-paper-deep: #242019;
--pc-ink: #e8e0d4;
--pc-ink-soft: #a89e8e;
--pc-accent: #d4956a;
--pc-accent-2: #8aab78;
--pc-line: #3a342b;
--pc-shadow: rgba(0, 0, 0, 0.35);
}
}
/* ---- Chat Tab ----------------------------------------------------------- */
.chat-history {
max-height: 480px;
overflow-y: auto;
padding: 8px 4px;
scroll-behavior: smooth;
}
.chat-msg {
display: flex;
margin-bottom: 16px;
animation: chat-fade-in 0.2s ease;
}
@keyframes chat-fade-in {
from { opacity: 0; transform: translateY(4px); }
to { opacity: 1; transform: translateY(0); }
}
.chat-msg.chat-user {
justify-content: flex-end;
}
.chat-msg.chat-companion {
justify-content: flex-start;
}
.chat-bubble {
max-width: 80%;
padding: 12px 18px;
border-radius: 18px;
line-height: 1.55;
font-size: 1.0rem;
word-wrap: break-word;
white-space: pre-wrap;
}
.chat-user .chat-bubble {
background: var(--pc-accent);
color: #fdf8f0;
border-bottom-right-radius: 4px;
}
.chat-companion .chat-bubble {
background: var(--pc-paper-deep);
border: 1px solid var(--pc-line);
color: var(--pc-ink);
border-bottom-left-radius: 4px;
}
.chat-label {
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.68rem;
letter-spacing: 0.06em;
text-transform: uppercase;
color: #56483a;
margin: 0 6px 3px;
}
.chat-user .chat-label {
text-align: right;
}
.chat-thinking {
text-align: center;
color: #4a3e31;
font-style: italic;
padding: 16px 0;
animation: chat-pulse 1.2s ease-in-out infinite;
}
@keyframes chat-pulse {
0%, 100% { opacity: 0.5; }
50% { opacity: 1; }
}
/* Dark mode overrides for chat */
.dark .chat-user .chat-bubble {
background: var(--pc-accent);
color: #1a1814;
}
.dark .chat-companion .chat-bubble {
background: var(--pc-paper-deep);
border-color: var(--pc-line);
color: var(--pc-ink);
}
/* ---- Submitted Entry Display ------------------------------------------- */
.pc-submitted-entry {
background: linear-gradient(180deg, #f5ead6 0%, var(--pc-paper-deep) 100%);
border: 1px solid var(--pc-line);
border-left: 3px solid var(--pc-accent);
border-radius: 8px;
padding: 16px 20px;
margin: 12px 0;
}
.pc-submitted-label {
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.72rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #8f5e3f;
margin-bottom: 8px;
}
.pc-submitted-text {
font-size: 1.05rem;
line-height: 1.65;
color: #211911;
white-space: pre-wrap;
}
.pc-submitted-date {
font-family: ui-sans-serif, system-ui, sans-serif;
font-size: 0.72rem;
color: #5e4d3e;
margin-top: 8px;
}