roomnumber103's picture
Add LLM Text Watermark Microscope
c126239 verified
Raw
History Blame Contribute Delete
4.67 kB
/* Paper-white research-tool palette. */
:root {
--bg: #ffffff;
--panel: #ffffff;
--panel-2: #f7f8fa;
--panel-3: #eef1f5;
--border: #dfe3e9;
--border-strong: #c3cad4;
--text: #14181f;
--text-dim: #5f6b7a;
--text-faint: #8b95a3;
--accent: #1d5fd0;
--accent-soft: #e8effc;
--green: #1f7a45;
--green-bg: #e2f3e9;
--green-border: #a9d8bd;
--red: #b3392f;
--red-bg: #fbe9e7;
--red-border: #eebbb5;
--amber: #9a6a10;
--amber-bg: #fdf2dc;
--mono: 'SF Mono', ui-monospace, 'Cascadia Code', Menlo, Consolas, monospace;
color-scheme: light;
}
* {
box-sizing: border-box;
}
html,
body {
margin: 0;
background: var(--bg);
color: var(--text);
font-family:
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
line-height: 1.55;
font-size: 15px;
-webkit-font-smoothing: antialiased;
}
h1,
h2,
h3 {
line-height: 1.25;
font-weight: 650;
}
button {
font: inherit;
color: var(--text);
background: #fff;
border: 1px solid var(--border-strong);
border-radius: 6px;
padding: 6px 12px;
cursor: pointer;
transition: background 0.12s, border-color 0.12s;
}
button:hover:not(:disabled) {
background: var(--panel-2);
border-color: var(--accent);
}
button:disabled {
opacity: 0.4;
cursor: not-allowed;
}
button.primary {
background: var(--accent);
color: #fff;
border-color: var(--accent);
font-weight: 600;
}
button.primary:hover:not(:disabled) {
background: #1a54ba;
border-color: #1a54ba;
}
input,
textarea,
select {
font: inherit;
color: var(--text);
background: #fff;
border: 1px solid var(--border-strong);
border-radius: 6px;
padding: 6px 9px;
}
input:focus,
textarea:focus,
select:focus {
outline: 2px solid var(--accent-soft);
border-color: var(--accent);
}
textarea {
width: 100%;
resize: vertical;
}
input[type='range'] {
padding: 0;
border: none;
accent-color: var(--accent);
}
code,
.mono {
font-family: var(--mono);
font-size: 0.86em;
}
.panel {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 10px;
padding: 14px 16px;
}
.dim {
color: var(--text-dim);
}
.small {
font-size: 12.5px;
}
.badge {
display: inline-block;
padding: 0 8px;
border-radius: 999px;
font-size: 11.5px;
border: 1px solid var(--border-strong);
color: var(--text-dim);
background: var(--panel-2);
white-space: nowrap;
}
.badge.ok {
color: var(--green);
border-color: var(--green-border);
background: var(--green-bg);
}
.badge.bad {
color: var(--red);
border-color: var(--red-border);
background: var(--red-bg);
}
.badge.warn {
color: var(--amber);
border-color: #e6cd94;
background: var(--amber-bg);
}
/* token classification */
.tok-green {
background: var(--green-bg);
box-shadow: inset 0 -2px 0 var(--green-border);
border-radius: 2px;
}
.tok-red {
background: var(--red-bg);
box-shadow: inset 0 -2px 0 var(--red-border);
border-radius: 2px;
}
.tok-neutral {
background: var(--panel-3);
border-radius: 2px;
}
.tok-skip {
opacity: 0.5;
text-decoration: underline dotted;
}
/**
* Any box showing generated text. Fixed height rather than max-height so the
* baseline and the watermarked output line up whatever their lengths are —
* the two panels are meant to be read against each other.
*/
:root {
--text-box-h: 268px;
}
.text-box {
height: var(--text-box-h);
overflow-y: auto;
border: 1px solid var(--border);
border-radius: 8px;
background: var(--panel-2);
padding: 10px 12px;
margin: 0;
white-space: pre-wrap;
font-size: 14px;
line-height: 1.9;
}
.text-box.plain {
background: #fff;
}
/** Sentence-list variant: same footprint, but the children lay themselves out. */
.text-box.list {
white-space: normal;
line-height: 1.55;
display: flex;
flex-direction: column;
gap: 5px;
list-style: none;
padding: 8px;
}
/* Keep rows at their natural size instead of squashing them to fit. */
.text-box.list > * {
flex: 0 0 auto;
}
table.data {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
table.data th,
table.data td {
text-align: left;
padding: 5px 9px;
border-bottom: 1px solid var(--border);
}
table.data th {
color: var(--text-dim);
font-weight: 550;
background: var(--panel-2);
}
table.data tr.hl {
background: var(--accent-soft);
}
/* caret hint for the seed input that invites the user to type */
@keyframes caret-pulse {
0%,
100% {
box-shadow: 0 0 0 0 rgba(29, 95, 208, 0.35);
}
50% {
box-shadow: 0 0 0 5px rgba(29, 95, 208, 0);
}
}
.awaiting-input {
animation: caret-pulse 1.4s ease-in-out infinite;
border-color: var(--accent) !important;
}