dataset-tldr / static /style.css
davanstrien's picture
davanstrien HF Staff
deploy librarian-bot
0ed226c verified
Raw
History Blame Contribute Delete
12.9 kB
/* Visual language: nico-martin LFM2.5 WebGPU Space (editorial lab: paper + grid,
hairlines, numbered smallcaps sections) × summary_audit.html (dark mode, viewer). */
:root {
--paper: #faf9f6;
--ink: #1a1a18;
--muted: #8a8781;
--hair: #e3e1db;
--card: #ffffff;
--soft: #f3f1ec;
--accent: #b45309;
--ok-bg: #e5f0e3; --ok-ink: #2f5e2f;
--warn-bg: #f7ecd4; --warn-ink: #8a5a10;
--fail-bg: #f8e2e0; --fail-ink: #a13030;
}
@media (prefers-color-scheme: dark) {
:root {
--paper: #161614; --ink: #e6e4df; --muted: #8f8c85; --hair: #2e2d2a;
--card: #1d1d1a; --soft: #232320; --accent: #d98a3d;
--ok-bg: #223a22; --ok-ink: #a8d4a4;
--warn-bg: #3d2f12; --warn-ink: #ecd39a;
--fail-bg: #401f1d; --fail-ink: #e8a9a2;
}
}
* { box-sizing: border-box; }
body {
font: 15px/1.5 -apple-system, "Helvetica Neue", sans-serif;
color: var(--ink);
background:
linear-gradient(var(--hair) 1px, transparent 1px) 0 0 / 100% 56px,
linear-gradient(90deg, var(--hair) 1px, transparent 1px) 0 0 / 56px 100%,
var(--paper);
background-blend-mode: soft-light, soft-light, normal;
max-width: 960px; margin: 0 auto; padding: 0 1.2rem 4rem;
}
.eyebrow { font-size: 0.72em; letter-spacing: 0.18em; text-transform: uppercase;
color: var(--muted); }
header.masthead { padding: 2.2rem 0 1.2rem; border-bottom: 1px solid var(--ink); }
header.masthead h1 { font-size: 2.6em; line-height: 1.05; margin: 0.25em 0 0.15em;
letter-spacing: -0.02em; }
header.masthead .sub { font-family: Georgia, serif; font-style: italic; color: var(--muted);
max-width: 40rem; }
.masthead-row { display: flex; align-items: flex-end; gap: 1.5rem; justify-content: space-between;
position: relative; }
.bubble { position: absolute; right: 128px; top: -2px; max-width: 240px;
background: var(--card); border: 1px solid var(--ink); border-radius: 8px;
padding: 7px 12px; font-size: 0.82em; line-height: 1.35; z-index: 3;
transform-origin: bottom right; animation: bubblepop 0.25s ease-out; }
.bubble::after { content: ""; position: absolute; right: -7px; bottom: 10px;
width: 10px; height: 10px; background: var(--card);
border-right: 1px solid var(--ink); border-top: 1px solid var(--ink);
transform: rotate(45deg); }
@keyframes bubblepop { from { transform: scale(0.7); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.botcorner.wave .arm { animation: wave 0.7s ease-in-out 3; }
@keyframes wave { 0%, 100% { transform: rotate(0deg); } 40% { transform: rotate(-26deg); }
70% { transform: rotate(12deg); } }
@media (max-width: 640px) { .bubble { display: none; } }
/* busy = an episode is running: the librarian reads along, fast */
.botcorner.busy .pupils { animation-duration: 0.9s; }
.botcorner.busy .page,
.botcorner.busy .arm { animation-duration: 2.1s; }
/* consult = a tool call just fired: reach for the stack, magnifier out */
.botcorner.consult .arm { animation: consult 1s ease-in-out; }
@keyframes consult {
0%, 100% { transform: rotate(0deg); }
35% { transform: rotate(-34deg); }
75% { transform: rotate(-30deg); }
}
.botcorner .stackbook { transform-box: fill-box; transform-origin: center; }
.botcorner.consult .stackbook { animation: booklift 1s ease-in-out; }
@keyframes booklift {
0%, 100% { transform: translate(0, 0) rotate(0deg); }
40% { transform: translate(1px, -5px) rotate(-6deg); }
70% { transform: translate(1px, -4px) rotate(-4deg); }
}
.botcorner .magnifier { opacity: 0; transform-box: fill-box; transform-origin: center; }
.botcorner.consult .magnifier { animation: magsweep 1s ease-in-out; }
@keyframes magsweep {
0%, 100% { opacity: 0; transform: translate(6px, 6px) scale(0.7); }
25% { opacity: 1; transform: translate(0, 0) scale(1); }
45% { opacity: 1; transform: translate(-3px, 1px) scale(1); }
65% { opacity: 1; transform: translate(2px, -1px) scale(1); }
85% { opacity: 1; transform: translate(0, 0) scale(1); }
}
/* thought bubble: shown while a model turn is in flight (it really is thinking) */
.thought[hidden] { display: none; }
.thought { position: absolute; right: 108px; top: 6px; background: var(--card);
border: 1px solid var(--muted); border-radius: 50%; padding: 8px 12px; z-index: 2;
display: flex; gap: 4px; align-items: center; }
.thought::before, .thought::after { content: ""; position: absolute; background: var(--card);
border: 1px solid var(--muted); border-radius: 50%; }
.thought::before { width: 8px; height: 8px; right: -10px; bottom: -6px; }
.thought::after { width: 4px; height: 4px; right: -17px; bottom: -13px; }
.thought span { width: 5px; height: 5px; border-radius: 50%; background: var(--muted);
animation: thinkdots 1.2s infinite; }
.thought span:nth-child(2) { animation-delay: 0.2s; }
.thought span:nth-child(3) { animation-delay: 0.4s; }
@keyframes thinkdots { 0%, 100% { opacity: 0.25; } 40% { opacity: 1; } }
@media (max-width: 640px) { .thought { display: none; } }
@media (prefers-reduced-motion: reduce) { .thought span { animation: none; } }
.masthead-text { min-width: 0; }
.botcorner { width: 120px; flex: 0 0 auto; color: var(--ink); opacity: 0.85; }
.botcorner .pupils { animation: scanline 3.2s infinite; }
@keyframes scanline { /* read left-to-right, snap back like a carriage return */
0% { transform: translateX(-1.6px); }
78% { transform: translateX(1.8px); }
84% { transform: translateX(-1.6px); }
100% { transform: translateX(-1.6px); }
}
.botcorner .page { transform-origin: 58px 90px; animation: pageflip 6.4s infinite; }
@keyframes pageflip {
0%, 55% { transform: rotate(0deg); opacity: 1; }
70% { transform: rotate(-38deg); opacity: 1; }
78% { transform: rotate(-64deg); opacity: 0; }
79%, 100%{ transform: rotate(0deg); opacity: 0; }
54.9% { opacity: 1; }
}
.botcorner .arm { transform-origin: 58px 68px; animation: scribble 6.4s infinite; }
@keyframes scribble {
0%, 55%, 100% { transform: rotate(0deg); }
62% { transform: rotate(9deg); }
70% { transform: rotate(-4deg); }
76% { transform: rotate(6deg); }
}
@media (max-width: 640px) { .botcorner { display: none; } }
@media (prefers-reduced-motion: reduce) {
.botcorner .pupils, .botcorner .page, .botcorner .arm { animation: none; }
}
section.block { border: 1px solid var(--hair); background: var(--card);
border-radius: 4px; margin: 1.4rem 0; }
section.block > .block-head { display: flex; align-items: center; gap: 10px;
padding: 10px 16px; border-bottom: 1px solid var(--hair); }
.block-num { border: 1px solid var(--hair); border-radius: 50%; width: 26px; height: 26px;
display: inline-flex; align-items: center; justify-content: center;
font-size: 0.7em; color: var(--muted); }
.block-body { padding: 14px 16px; }
button { padding: 7px 16px; cursor: pointer; border: 1px solid var(--ink);
border-radius: 3px; background: transparent; color: var(--ink); font: inherit;
font-size: 0.85em; letter-spacing: 0.06em; text-transform: uppercase; }
button:hover { background: var(--soft); }
button:disabled { opacity: 0.45; cursor: default; }
select, input[type=text] { padding: 7px 10px; font: inherit; border: 1px solid var(--hair);
border-radius: 3px; min-width: 230px; background: var(--card); color: inherit; }
.meta { color: var(--muted); font-size: 0.85em; }
.reject { color: var(--fail-ink); font-size: 0.9em; }
.caps { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
border: 1px solid var(--hair); border-radius: 3px; margin: 6px 0 10px; }
.caps > div { padding: 5px 10px; border-right: 1px solid var(--hair); font-size: 0.78em; }
.caps > div:last-child { border-right: none; }
.caps b { display: block; letter-spacing: 0.1em; text-transform: uppercase; font-size: 0.85em;
color: var(--muted); font-weight: 500; }
.caps.spec { margin: 1rem 0 0.2rem; background: var(--card); }
.caps.spec a { color: inherit; }
footer.gate { margin-top: 2.2rem; border-top: 1px solid var(--hair); padding-top: 0.9rem;
display: grid; gap: 5px; max-width: 34rem; }
footer.gate a { color: inherit; }
.gatebar { height: 5px; border: 1px solid var(--hair); border-radius: 3px;
background: var(--card); overflow: hidden; }
.gatebar-fill { height: 100%; width: 0%; background: var(--ink);
transition: width 0.8s ease-out; }
.health { font-size: 0.9em; }
.health.ok { color: var(--ok-ink); }
.health.warm { color: var(--warn-ink); }
.health.bad { color: var(--fail-ink); }
.gen { border: 1px solid var(--hair); border-radius: 4px; padding: 12px 14px;
margin: 12px 0; background: var(--card); }
.gen h3 { margin: 0 0 8px; font-size: 0.78em; letter-spacing: 0.16em;
text-transform: uppercase; color: var(--muted); font-weight: 600; }
details.tool { margin: 6px 0; border-left: 2px solid var(--hair); padding-left: 10px; }
details.tool summary { cursor: pointer; font-family: ui-monospace, monospace;
font-size: 0.83em; color: var(--muted); }
.actor { font-family: -apple-system, sans-serif; font-size: 0.85em; letter-spacing: 0.1em;
text-transform: uppercase; color: var(--accent); }
.obs-label { font-size: 0.72em; letter-spacing: 0.1em; text-transform: uppercase;
color: var(--muted); margin: 6px 0 0; }
details.tool[open] summary { color: var(--ink); }
details.tool pre { margin: 6px 0 2px; padding: 8px 10px; background: var(--soft);
border-radius: 3px; font-size: 0.78em; overflow: auto; white-space: pre-wrap;
word-break: break-word; max-height: 260px; }
.assistant { color: var(--muted); font-size: 0.85em; font-style: italic; margin: 4px 0; }
details.think { margin: 5px 0; border-left: 2px dotted var(--hair); padding-left: 10px; }
details.think summary { cursor: pointer; font-size: 0.78em; letter-spacing: 0.08em;
text-transform: uppercase; color: var(--muted); }
details.think pre { margin: 6px 0 2px; padding: 8px 10px; background: var(--soft);
border-radius: 3px; font-size: 0.78em; color: var(--muted); white-space: pre-wrap;
word-break: break-word; max-height: 220px; overflow-y: auto; font-style: italic; }
.nudge { color: var(--accent); font-size: 0.78em; letter-spacing: 0.08em;
text-transform: uppercase; }
.coverage { display: inline-block; background: var(--warn-bg); color: var(--warn-ink);
border-radius: 3px; padding: 0 6px; font-size: 0.75em; margin-left: 6px; }
.spin { display: inline-block; animation: pulse 1.2s infinite; color: var(--muted); }
@keyframes pulse { 50% { opacity: 0.25; } }
.tldr { margin: 10px 0 6px; padding: 12px 14px; background: var(--soft);
border-radius: 3px; border-left: 3px solid var(--ink);
font-family: Georgia, serif; font-size: 1.05em; position: relative; }
.tldr.stamped { padding-right: 132px; } /* text never runs under the stamp */
.stamp { position: absolute; top: 8px; right: 14px; transform: rotate(-8deg);
color: #a33327; border: 2px solid #a33327; border-radius: 4px;
box-shadow: inset 0 0 0 1px var(--soft), inset 0 0 0 2px #a33327;
padding: 3px 10px; font: 600 0.62em/1.3 -apple-system, sans-serif;
letter-spacing: 0.18em; text-transform: uppercase; text-align: center;
opacity: 0.82; pointer-events: none; mix-blend-mode: multiply;
animation: stampin 0.45s cubic-bezier(0.2, 2.2, 0.4, 1); }
@media (prefers-color-scheme: dark) {
.stamp { color: #e07a6d; border-color: #e07a6d;
box-shadow: inset 0 0 0 1px var(--soft), inset 0 0 0 2px #e07a6d;
mix-blend-mode: normal; }
}
@keyframes stampin {
0% { transform: rotate(-20deg) scale(2.4); opacity: 0; }
60% { transform: rotate(-8deg) scale(0.96); opacity: 0.9; }
100% { transform: rotate(-8deg) scale(1); opacity: 0.82; }
}
@media (prefers-reduced-motion: reduce) { .stamp { animation: none; } }
.tldr.refusal { color: var(--muted); font-style: italic; background: transparent;
border: 1px dashed var(--hair); border-left-style: dashed; }
.badges { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0 2px; }
.chip { border-radius: 3px; padding: 1px 8px; font-size: 0.78em;
font-family: ui-monospace, monospace; }
.chip.ok { background: var(--ok-bg); color: var(--ok-ink); }
.chip.warn { background: var(--warn-bg); color: var(--warn-ink); }
.chip.fail { background: var(--fail-bg); color: var(--fail-ink); }
.chip.muted{ background: var(--soft); color: var(--muted); }
.rate { display: flex; gap: 10px; margin: 12px 0; align-items: center; }
.rate button.picked { background: var(--ink); color: var(--paper); }
.viewer { margin-top: 10px; }
.viewer summary { cursor: pointer; font-size: 0.8em; letter-spacing: 0.12em;
text-transform: uppercase; color: var(--muted); }
.viewer iframe { width: 100%; height: 420px; border: 1px solid var(--hair);
border-radius: 4px; margin-top: 8px; }