:root{--paper: #eef0ea;--paper-sunk: #e5e8e0;--paper-edge: #d6dbd2;--rule: #b4c1b7;--rule-major: #8b9c90;--ink: #16201a;--ink-soft: #5d6a62;--ink-faint: #8a958e;--observed: #0b5563;--model: #4a3aa8;--derivative: #8a6a00;--misfit: #a32020;--excluded: #9aa69e;--mono: ui-monospace, "SF Mono", "Cascadia Mono", "JetBrains Mono", "DejaVu Sans Mono", Menlo, Consolas, monospace;--step: 4px;--rail: 320px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--mono);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased}.app{display:grid;grid-template-columns:var(--rail) 1fr;grid-template-rows:auto 1fr;height:100%;min-height:0}.masthead{grid-column:1 / -1;display:flex;align-items:baseline;gap:calc(var(--step) * 4);padding:calc(var(--step) * 3) calc(var(--step) * 4);border-bottom:1px solid var(--paper-edge);background:var(--paper)}.wordmark{font-size:19px;font-weight:700;letter-spacing:.34em;text-transform:uppercase;margin:0}.tagline{color:var(--ink-soft);font-size:11px;letter-spacing:.02em}.masthead-spacer{flex:1}.rail{border-right:1px solid var(--paper-edge);overflow-y:auto;padding-bottom:calc(var(--step) * 8);min-height:0}.stage{display:flex;flex-direction:column;min-width:0;min-height:0;overflow-y:auto}.section{border-bottom:1px solid var(--paper-edge);padding:calc(var(--step) * 3) calc(var(--step) * 4)}.section-title{font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 calc(var(--step) * 2.5)}.field{display:flex;align-items:center;gap:var(--step);margin-bottom:calc(var(--step) * 2)}.field label{flex:0 0 88px;font-size:11px;color:var(--ink-soft)}.hint{font-size:11px;color:var(--ink-soft);margin:calc(var(--step) * 2) 0 0}input,select,textarea,button{font:inherit;color:var(--ink);background:var(--paper-sunk);border:1px solid var(--paper-edge);border-radius:2px;padding:calc(var(--step) * 1.25) calc(var(--step) * 1.5)}input,select{min-width:0;flex:1}select{flex:0 0 auto}textarea{width:100%;min-height:150px;resize:vertical;font-size:12px;line-height:1.6;tab-size:12;white-space:pre;overflow-x:auto}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:1px}button{cursor:pointer;background:var(--paper);border-color:var(--rule-major);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}button:hover:not(:disabled){background:var(--ink);color:var(--paper)}button:disabled{cursor:not-allowed;color:var(--ink-faint);border-color:var(--paper-edge)}button.primary{background:var(--ink);color:var(--paper);border-color:var(--ink);width:100%;padding:calc(var(--step) * 2)}button.primary:hover:not(:disabled){background:var(--paper);color:var(--ink)}.button-row{display:flex;gap:var(--step);flex-wrap:wrap}.model-choice{display:grid;gap:var(--step)}.model-option{display:grid;grid-template-columns:auto 1fr;gap:calc(var(--step) * 1.5);align-items:start;padding:calc(var(--step) * 1.5);border:1px solid transparent;border-radius:2px;cursor:pointer}.model-option:hover{background:var(--paper-sunk)}.model-option[data-on=true]{border-color:var(--rule-major);background:var(--paper-sunk)}.model-option input{margin:3px 0 0;flex:none}.model-option b{font-weight:700;font-size:12px}.model-option span{display:block;color:var(--ink-soft);font-size:11px}.sheet-wrap{padding:calc(var(--step) * 4);padding-bottom:calc(var(--step) * 2)}.sheet{display:block;width:100%;height:auto;touch-action:none}.sheet-caption{display:flex;flex-wrap:wrap;gap:calc(var(--step) * 4);align-items:center;padding:0 calc(var(--step) * 4) calc(var(--step) * 3);font-size:11px;color:var(--ink-soft)}.key{display:inline-flex;align-items:center;gap:calc(var(--step) * 1.5)}.key-swatch{width:20px;height:0;border-top-width:2px;border-top-style:solid}.grab-curve{cursor:grab}.grab-curve.dragging{cursor:grabbing}.readout{border-top:1px solid var(--paper-edge);padding:calc(var(--step) * 3) calc(var(--step) * 4);display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:calc(var(--step) * 3) calc(var(--step) * 6)}.result-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft)}.result-value{font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--model);font-variant-numeric:tabular-nums}.result-unit{font-size:12px;font-weight:400;color:var(--ink-soft);margin-left:calc(var(--step))}.result-note{font-size:11px;color:var(--ink-soft)}.warnings{margin:0 calc(var(--step) * 4) calc(var(--step) * 4);padding:calc(var(--step) * 2) calc(var(--step) * 3);border-left:3px solid var(--misfit);background:var(--paper-sunk);color:var(--ink);font-size:11px}.warnings p{margin:0 0 var(--step)}.warnings p:last-child{margin-bottom:0}.provenance{margin:0 calc(var(--step) * 4) calc(var(--step) * 6);font-size:11px;color:var(--ink-soft);max-width:74ch}.provenance b{color:var(--ink);font-weight:700}.readings{max-height:210px;overflow-y:auto;border:1px solid var(--paper-edge);background:var(--paper-sunk)}.readings table{width:100%;border-collapse:collapse;font-size:11px;font-variant-numeric:tabular-nums}.readings th{position:sticky;top:0;background:var(--paper-sunk);text-align:right;font-weight:700;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);padding:calc(var(--step) * 1.25) calc(var(--step) * 1.5);border-bottom:1px solid var(--paper-edge)}.readings td{padding:2px calc(var(--step) * 1.5);text-align:right;border-bottom:1px solid var(--paper)}.readings tr[data-excluded=true] td{color:var(--excluded);text-decoration:line-through}.readings td:last-child{text-align:center;width:34px}.readings button{border:none;background:none;padding:0 4px;font-size:12px;text-transform:none;letter-spacing:0;color:var(--ink-faint)}.readings button:hover{background:none;color:var(--misfit)}.piezo-head{display:flex;align-items:center;justify-content:space-between;gap:var(--step);margin:calc(var(--step) * 3) 0 calc(var(--step) * 1.5)}.piezo-head:first-of-type{margin-top:0}.piezo-name{display:inline-flex;align-items:center;gap:calc(var(--step) * 1.5);font-weight:700;font-size:12px}@media (max-width: 860px){.app{grid-template-columns:1fr;grid-template-rows:auto auto 1fr}.rail{border-right:none;border-bottom:1px solid var(--paper-edge);order:2;overflow:visible}.stage{order:1;overflow:visible}.masthead{flex-wrap:wrap;gap:var(--step)}}@media (prefers-reduced-motion: no-preference){.sheet-ghost{transition:opacity .12s ease-out}}
