/* Shared chrome for the signed-in consoles (/app and /admin).
   Layered on observatory.css; it adds nothing analytical of its own. */

.hdr-row{display:flex;align-items:center;gap:16px;padding:12px 22px;
  border-bottom:1px solid var(--rule);background:var(--panel)}
.brand{display:flex;flex-direction:column;line-height:1.25}
.brand strong{font-family:var(--serif);font-size:16px;font-weight:600}
.who{margin-left:auto;display:flex;align-items:center;gap:10px}

.pill{display:inline-block;padding:6px 12px;border-radius:999px;
  border:1px solid var(--rule);background:var(--panel-2);color:var(--ink-dim);
  font-family:var(--mono);font-size:11.5px;cursor:pointer;text-decoration:none}
.pill:hover{border-color:var(--m-resp);color:var(--ink)}

.btn-primary{padding:8px 18px;border-radius:7px;border:1px solid var(--rule);
  background:var(--m-resp);color:#062028;font-family:var(--mono);font-size:12.5px;
  font-weight:600;cursor:pointer}
.btn-primary:disabled{opacity:.5;cursor:progress}

.console{max-width:1080px;margin:0 auto;padding:24px 22px 80px;
  display:flex;flex-direction:column;gap:20px}
.console .panel{background:var(--panel);border:1px solid var(--rule);
  border-radius:9px;padding:20px 22px}
.console .panel > h3{margin:0 0 10px;font-family:var(--serif);font-size:17px;font-weight:600}
.muted{color:var(--ink-faint)}

.uprow{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px}
.uprow input[type=file]{color:var(--ink-dim);font-family:var(--mono);font-size:12px;
  max-width:100%}

.schema-box{margin-top:14px;padding:14px 16px;border-radius:7px;
  border:1px solid var(--rule-soft);background:var(--ground);
  font-family:var(--mono);font-size:11.5px;color:var(--ink-dim);
  white-space:pre;overflow-x:auto}

.status{margin-top:14px;padding:11px 14px;border-radius:7px;font-size:12px;line-height:1.6}
.status.ok{border:1px solid var(--ok);color:var(--ok)}
.status.err{border:1px solid var(--err);color:var(--err)}
.status.busy{border:1px solid var(--rule);color:var(--ink-dim)}
.status ul{margin:8px 0 0;padding-left:18px}

.rows{display:flex;flex-direction:column;gap:1px;background:var(--rule-soft);
  border:1px solid var(--rule-soft);border-radius:7px;overflow:hidden}
.row{display:flex;align-items:center;gap:14px;padding:11px 14px;background:var(--panel);
  cursor:pointer}
.row:hover{background:var(--panel-2)}
.row .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .meta{color:var(--ink-faint);font-size:11.5px;white-space:nowrap}

/* Wide content scrolls inside its own box; the page never scrolls sideways. */
.tablewrap{overflow-x:auto;margin-top:12px}
table.grid{border-collapse:collapse;width:100%;font-size:12px;min-width:520px}
table.grid th,table.grid td{text-align:left;padding:8px 12px;
  border-bottom:1px solid var(--rule-soft);white-space:nowrap}
table.grid th{color:var(--ink-faint);font-weight:400;font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase}
table.grid td.num{font-variant-numeric:tabular-nums;text-align:right}

.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-top:12px}
.kv .cell{padding:12px 14px;border:1px solid var(--rule-soft);border-radius:7px;
  background:var(--ground)}
.kv .cell .k{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}
.kv .cell .v{font-size:19px;font-variant-numeric:tabular-nums;margin-top:3px}
.kv .cell .v.null{font-size:12px;color:var(--ink-faint)}

.transcript{margin-top:14px;display:flex;flex-direction:column;gap:9px;
  max-height:460px;overflow-y:auto}
.msg{padding:10px 13px;border-radius:7px;border:1px solid var(--rule-soft);background:var(--ground)}
.msg .hdr{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
.msg .body{margin-top:5px;font-family:var(--serif);font-size:14px;line-height:1.6;
  white-space:pre-wrap;overflow-wrap:anywhere}
.msg.human{border-left:2px solid var(--human)}
.msg.assistant{border-left:2px solid var(--assistant)}

/* ------------------------------------------------------------------ */
/* Simulation wizard                                                   */
/* ------------------------------------------------------------------ */

.steps{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px;padding:0;list-style:none}
.steps li{display:flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;
  border:1px solid var(--rule-soft);color:var(--ink-faint);font-size:11.5px}
.steps li .n{font-variant-numeric:tabular-nums;opacity:.7}
.steps li.on{border-color:var(--m-resp);color:var(--ink)}
.steps li.done{border-color:var(--rule);color:var(--ink-dim)}

.step[hidden]{display:none}

.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-top:14px}
.fields.one{grid-template-columns:1fr}
.f{display:flex;flex-direction:column;gap:5px;min-width:0}
.f > span{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}
.f input,.f select,.f textarea{width:100%;padding:9px 11px;border-radius:7px;
  border:1px solid var(--rule);background:var(--ground);color:var(--ink);
  font-family:var(--mono);font-size:12.5px}
.f textarea{resize:vertical;min-height:64px;line-height:1.6}
.f input:focus,.f select:focus,.f textarea:focus{outline:none;border-color:var(--m-resp)}
.f .hint{font-size:11px;color:var(--ink-faint);line-height:1.5}

.checks{display:flex;flex-wrap:wrap;gap:6px}
.checks label{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;
  border:1px solid var(--rule-soft);font-size:11.5px;color:var(--ink-dim);cursor:pointer}
.checks label:hover{border-color:var(--rule)}
.checks input{accent-color:var(--m-resp)}
.checks input:checked + span{color:var(--ink)}

.cast{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.cast .card{border:1px solid var(--rule-soft);border-radius:9px;padding:14px 15px;background:var(--ground)}
.cast .card .top{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.cast .card .top .who{margin-left:auto}
.cast .card .idx{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}

.picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;margin-top:14px}
.picker .opt{text-align:left;padding:13px 15px;border-radius:9px;border:1px solid var(--rule-soft);
  background:var(--ground);color:var(--ink);cursor:pointer;font:inherit}
.picker .opt:hover{border-color:var(--rule)}
.picker .opt.on{border-color:var(--m-resp)}
.picker .opt strong{display:block;font-family:var(--serif);font-size:14.5px;margin-bottom:4px}
.picker .opt .d{font-size:11.5px;color:var(--ink-dim);line-height:1.55}
.picker .opt .o{margin-top:7px;font-size:11px;color:var(--ink-faint);line-height:1.5}

.navrow{display:flex;align-items:center;gap:10px;margin-top:20px;
  padding-top:16px;border-top:1px solid var(--rule-soft)}
.navrow .right{margin-left:auto;display:flex;gap:10px}

.review{margin-top:14px;font-size:12.5px;line-height:1.9}
.review dt{color:var(--ink-faint);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase}
.review dd{margin:0 0 12px;overflow-wrap:anywhere}

/* Synthetic provenance is never decoration: it says what the data is. */
.synthetic{margin-top:14px;padding:11px 14px;border-radius:7px;border:1px solid var(--warn);
  color:var(--warn);font-size:11.5px;line-height:1.6}

.msg.agent{border-left:2px solid var(--m-coh)}
.msg.avatar{border-left:2px solid var(--m-imp)}
.msg.system{border-left:2px solid var(--ink-faint)}
.msg.tool{border-left:2px solid var(--m-new)}

@media (max-width:640px){
  .hdr-row{flex-wrap:wrap;gap:10px}
  .who{margin-left:0;width:100%}
  .console{padding:16px 14px 60px}
  .fields{grid-template-columns:1fr}
}
