:root { color-scheme: light dark; --ink: #111; --bg: #fafafa; --rule: #ddd; }
@media (prefers-color-scheme: dark) { :root { --ink: #eee; --bg: #16161a; --rule: #333; } }
body { margin: 0; background: var(--bg); color: var(--ink);
       font: 14px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }
main { max-width: 820px; margin: 0 auto; padding: 24px 16px; }
form { display: grid; gap: 12px; margin-bottom: 24px; }
textarea, button, input { font: inherit; padding: 8px; }
pre { white-space: pre-wrap; }

#toolbar { display: flex; justify-content: flex-end; margin-bottom: 8px; }

.steps { list-style: none; padding: 0; margin: 0 0 16px; display: flex; flex-wrap: wrap;
         gap: 8px 16px; font-size: 12px; opacity: 0.8; }
.steps li[data-status="failed"] { color: #c33; opacity: 1; }
.steps li[data-status="running"] { font-style: italic; }

section { margin-bottom: 20px; }

/* MEASURED is signal analysis; everything else is model output that has been
   observed to be confidently wrong. The visual split is load-bearing. */
.measured { border-left: 3px solid #2a7; padding-left: 12px; }
.modelled { border-left: 3px solid #c83; padding-left: 12px; opacity: 0.95; }
h2 span { font-weight: normal; opacity: 0.6; font-size: 12px; margin-left: 8px; }
.caveat { margin: 4px 0 8px; font-size: 12px; opacity: 0.7; }
.sections { columns: 3; list-style: none; padding: 0; }
dl { display: grid; grid-template-columns: max-content 1fr; gap: 2px 16px; margin: 0; }
dt { opacity: 0.6; }

/* The spec's drop zone. The <input type=file> inside it is hidden; the zone is the
   click target, so dropping and picking end up on the same FileList. */
#drop { display: grid; gap: 4px; justify-items: center; text-align: center;
        padding: 28px 16px; border: 2px dashed var(--rule); border-radius: 6px;
        cursor: pointer; }
#drop[data-over] { border-color: #2a7; border-style: solid; }
#drop small { opacity: 0.6; }
#drop:focus-visible { outline: 2px solid #2a7; outline-offset: 2px; }

.failed { border-left: 3px solid #c33; padding-left: 12px; }
.failed h2 { color: #c33; }
