Build spec and host brief carried in from C:\Claude and WRPS/02-env; the plant model (equipment, tags, alarm bitmask, enums, unit conversions) is derived from WRPS/04-plc/register-map.csv, WRPS/05-scada/modbus/scada-points.csv and WRPS-CTL-003. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
115 lines
3.1 KiB
CSS
115 lines
3.1 KiB
CSS
/* Deliberately plain. An operator reads this on a SCADA workstation in a
|
|
control room, often on a screen with poor contrast, standing up. Large type,
|
|
high contrast, no animation. */
|
|
|
|
:root {
|
|
--bg: #ffffff;
|
|
--fg: #1a1a1a;
|
|
--muted: #5a5a5a;
|
|
--line: #d4d4d4;
|
|
--chip: #eef2f7;
|
|
--scope: #fff6e5;
|
|
--scope-line: #d99b00;
|
|
--fixture: #ffe9e9;
|
|
--fixture-line: #c0392b;
|
|
--error: #c0392b;
|
|
}
|
|
|
|
* { box-sizing: border-box; }
|
|
|
|
body {
|
|
margin: 0;
|
|
background: var(--bg);
|
|
color: var(--fg);
|
|
font: 16px/1.55 system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
}
|
|
|
|
main { max-width: 60rem; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
|
|
|
h1 { font-size: 1.5rem; margin: 0 0 0.25rem; }
|
|
.subtitle { color: var(--muted); margin: 0 0 1.5rem; }
|
|
|
|
textarea {
|
|
width: 100%;
|
|
padding: 0.75rem;
|
|
font: inherit;
|
|
border: 1px solid var(--line);
|
|
border-radius: 6px;
|
|
resize: vertical;
|
|
}
|
|
|
|
.row { display: flex; align-items: center; gap: 1rem; margin-top: 0.75rem; }
|
|
|
|
button {
|
|
padding: 0.55rem 1.4rem;
|
|
font: inherit;
|
|
font-weight: 600;
|
|
color: #fff;
|
|
background: #12507a;
|
|
border: none;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
}
|
|
button:disabled { background: #9aa7b1; cursor: default; }
|
|
|
|
label { color: var(--muted); display: flex; align-items: center; gap: 0.4rem; }
|
|
|
|
.error {
|
|
margin-top: 1.5rem;
|
|
padding: 0.75rem 1rem;
|
|
border-left: 4px solid var(--error);
|
|
background: var(--fixture);
|
|
}
|
|
|
|
.answer { margin-top: 2rem; }
|
|
|
|
.class-chip {
|
|
display: inline-block;
|
|
padding: 0.15rem 0.6rem;
|
|
border-radius: 999px;
|
|
background: var(--chip);
|
|
color: var(--muted);
|
|
font-size: 0.8rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
}
|
|
|
|
/* The two banners are the same visual weight as the answer itself, on purpose.
|
|
A scope limit rendered as fine print is a scope limit nobody reads. */
|
|
.banner {
|
|
margin: 1rem 0;
|
|
padding: 0.85rem 1rem;
|
|
border-left: 4px solid;
|
|
font-size: 0.95rem;
|
|
}
|
|
.banner.scope { background: var(--scope); border-color: var(--scope-line); }
|
|
.banner.fixture { background: var(--fixture); border-color: var(--fixture-line); }
|
|
|
|
.prose { font-size: 1.08rem; white-space: pre-wrap; }
|
|
.deferral { padding-left: 1rem; border-left: 3px solid var(--line); color: var(--muted); }
|
|
|
|
.block { margin-top: 1.75rem; }
|
|
.block h3 { font-size: 1rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); }
|
|
|
|
dl { display: grid; grid-template-columns: 11rem 1fr; gap: 0.35rem 1rem; margin: 0; }
|
|
dt { color: var(--muted); }
|
|
dd { margin: 0; }
|
|
|
|
table { width: 100%; border-collapse: collapse; margin-top: 0.5rem; }
|
|
th, td { text-align: left; padding: 0.45rem 0.5rem; border-bottom: 1px solid var(--line); }
|
|
th { color: var(--muted); font-weight: 600; font-size: 0.9rem; }
|
|
|
|
q { font-style: italic; }
|
|
.cite { color: var(--muted); }
|
|
|
|
.working { margin-top: 2rem; border-top: 1px solid var(--line); padding-top: 1rem; }
|
|
.working summary { cursor: pointer; color: var(--muted); font-weight: 600; }
|
|
.working h4 { margin: 1rem 0 0.35rem; font-size: 0.9rem; color: var(--muted); }
|
|
pre {
|
|
background: #f6f8fa;
|
|
padding: 0.75rem;
|
|
border-radius: 6px;
|
|
overflow-x: auto;
|
|
font-size: 0.85rem;
|
|
}
|
|
code { font-size: 0.9em; }
|