:root{--bg:#030806;--panel:#07120c;--panel2:#0a1b11;--line:#185c33;--accent:#54ff91;--muted:#83ad92;--text:#d9ffe5;--danger:#ff5b66;--glow:rgba(84,255,145,.25)}
html[data-theme="red"]{--bg:#090303;--panel:#170707;--panel2:#220a0a;--line:#6c1b22;--accent:#ff5663;--muted:#c1878c;--text:#ffe0e3;--danger:#ffb15b;--glow:rgba(255,86,99,.25)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,var(--panel2),var(--bg) 55%);color:var(--text);font-family:Consolas,"Courier New",monospace;min-height:100vh}.scanline{position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0,transparent 3px,rgba(255,255,255,.018) 4px);z-index:50}.topbar{display:flex;justify-content:space-between;gap:24px;padding:24px;border-bottom:1px solid var(--line);box-shadow:0 0 22px var(--glow)}.kicker,.eyebrow{color:var(--accent);font-size:12px;letter-spacing:.16em}.topbar h1{margin:6px 0;font-size:clamp(22px,3vw,38px);text-shadow:0 0 14px var(--glow)}.sub{margin:0;color:var(--muted)}.session-card{min-width:260px;border:1px solid var(--line);background:var(--panel);padding:13px 15px;display:flex;align-items:center;gap:12px}.session-card small{display:block;color:var(--muted);margin-top:4px}.status-dot{width:12px;height:12px;border-radius:50%;background:var(--muted);box-shadow:0 0 12px currentColor}.status-dot.ok{background:var(--accent)}.status-dot.fail{background:var(--danger)}.global-nav,.shortcut-row{display:flex;flex-wrap:wrap;gap:8px;padding:12px 24px;border-bottom:1px solid var(--line);background:rgba(3,8,6,.82)}a,button,input,textarea{font:inherit}a,button{border:1px solid var(--line);background:var(--panel);color:var(--accent);padding:9px 12px;text-decoration:none;cursor:pointer}a:hover,button:hover{box-shadow:0 0 14px var(--glow);border-color:var(--accent)}main{padding:24px}.panel{border:1px solid var(--line);background:linear-gradient(145deg,var(--panel),var(--panel2));box-shadow:0 0 18px var(--glow);padding:18px}.gate{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.gate h2{margin:8px 0}.gate p{margin:0;color:var(--muted)}.workspace{display:grid;grid-template-columns:minmax(260px,34%) 1fr;gap:18px}.row{display:flex;gap:8px;margin:12px 0}.row input{flex:1}.file-list{max-height:470px;overflow:auto;border-top:1px solid var(--line)}.file-item{padding:9px 4px;border-bottom:1px dotted var(--line);color:var(--muted)}input,textarea{width:100%;background:#010403;color:var(--text);border:1px solid var(--line);padding:10px}html[data-theme="red"] input,html[data-theme="red"] textarea{background:#050101}.terminal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.terminal-head strong{display:block;margin-top:5px}label{display:block;color:var(--muted);margin-bottom:7px}pre{min-height:220px;max-height:520px;overflow:auto;background:#010403;border:1px solid var(--line);padding:14px;white-space:pre-wrap;color:var(--accent)}@media(max-width:820px){.topbar{display:block}.session-card{margin-top:16px}.workspace{grid-template-columns:1fr}.global-nav,.shortcut-row,main,.topbar{padding-left:14px;padding-right:14px}}

/* RP_TERMINAL_QR_OVERLAY_CSS_V0312_BEGIN
   External trusted stylesheet for the V0.3.11 per-client QR overlay.
   The JavaScript's dynamic <style> block is intentionally ignored by CSP
   because Terminal uses style-src 'self'. Keep these rules in style.css. */
#rp-qr-v0311 {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  box-sizing: border-box;
  background: rgba(0, 8, 3, 0.96);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  overflow: auto;
  font-family: Consolas, Monaco, "Courier New", monospace;
  color: #9dffb4;
}
#rp-qr-v0311,
#rp-qr-v0311 * { box-sizing: border-box; }
#rp-qr-v0311.open { display: flex; }
#rp-qr-v0311 .box {
  width: min(790px, 94vw);
  max-height: 94vh;
  overflow: auto;
  border: 1px solid #1aff63;
  background: #031108;
  box-shadow: 0 0 28px rgba(0,255,90,.25);
}
#rp-qr-v0311 .head {
  position: sticky;
  top: 0;
  z-index: 2;
  min-height: 42px;
  padding: 10px 12px;
  border-bottom: 1px solid #145f31;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  background: #031108;
  color: #caffd5;
  font-weight: 700;
  letter-spacing: .04em;
}
#rp-qr-v0311 .body {
  padding: 16px;
  display: grid;
  grid-template-columns: minmax(240px, 330px) minmax(0, 1fr);
  gap: 20px;
  align-items: start;
}
#rp-qr-v0311 img {
  display: block;
  width: 100%;
  max-width: 330px;
  min-width: 220px;
  min-height: 220px;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  background: #fff;
  border: 1px solid #1aff63;
  color: #001b09;
  image-rendering: auto;
}
#rp-qr-v0311 .lab {
  margin-top: 9px;
  font-size: 10px;
  line-height: 1.25;
  color: #50d978;
  letter-spacing: .12em;
}
#rp-qr-v0311 .lab:first-child { margin-top: 0; }
#rp-qr-v0311 .val {
  margin-top: 3px;
  min-height: 20px;
  font-size: 16px;
  line-height: 1.35;
  color: #d5ffdf;
  word-break: break-word;
}
#rp-qr-v0311 .code {
  min-height: 40px;
  font-size: clamp(22px, 4vw, 30px);
  letter-spacing: .14em;
  color: #ffffff;
}
#rp-qr-v0311 .actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 18px;
}
#rp-qr-v0311 button {
  min-height: 31px;
  padding: 7px 11px;
  border: 1px solid #167b3a;
  border-radius: 0;
  background: #001b09;
  color: #62ff8e;
  font: inherit;
  cursor: pointer;
}
#rp-qr-v0311 button:hover,
#rp-qr-v0311 button:focus-visible {
  outline: none;
  border-color: #42ff75;
  background: #073d19;
  color: #d5ffdf;
}
#rp-qr-v0311 .note {
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px solid #0d5227;
  font-size: 11px;
  line-height: 1.5;
  color: #55b66f;
}
@media (max-width: 650px) {
  #rp-qr-v0311 { padding: 8px; align-items: flex-start; }
  #rp-qr-v0311 .box { width: 100%; max-height: none; }
  #rp-qr-v0311 .body { grid-template-columns: 1fr; }
  #rp-qr-v0311 img { margin: 0 auto; }
}
/* RP_TERMINAL_QR_OVERLAY_CSS_V0312_END */


/* RP_TERMINAL_PROGRESSIVE_PERMISSIONS_V043_BEGIN */
button:disabled,
button:disabled:hover {
  cursor: not-allowed;
  opacity: .55;
  box-shadow: none;
  border-color: var(--line);
}

.rp-ops-panel {
  margin-bottom: 18px;
}
.rp-ops-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}
.rp-ops-heading {
  margin-top: 5px;
  font-size: clamp(18px, 2.5vw, 28px);
  font-weight: 700;
  color: var(--text);
}
.rp-policy-badge {
  border: 1px solid var(--accent);
  padding: 7px 10px;
  color: var(--accent);
  background: var(--panel);
  white-space: nowrap;
}
.rp-policy-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  padding: 12px 0 4px;
  color: var(--muted);
  font-size: 12px;
}
.rp-policy-line {
  color: var(--muted);
  margin: 8px 0;
}
.rp-ops-grid {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 14px;
  margin-top: 12px;
}
.rp-ops-card {
  min-width: 0;
  border: 1px solid var(--line);
  background: rgba(1,8,4,.45);
  padding: 14px;
}
.rp-ops-card-wide {
  grid-column: 1 / -1;
}
.rp-ops-card-head {
  margin-bottom: 12px;
}
.rp-ops-title {
  margin-top: 5px;
  font-size: 17px;
  color: var(--text);
  font-weight: 700;
}
.rp-ops-card label {
  margin-top: 10px;
}
.rp-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
}
.rp-inline-status {
  color: var(--muted);
  font-size: 12px;
  min-height: 16px;
}
.rp-inline-status[data-kind="ok"] { color: var(--accent); }
.rp-inline-status[data-kind="fail"] { color: var(--danger); }
.rp-inline-status[data-kind="pending"] { color: var(--muted); }
.rp-muted {
  color: var(--muted);
  line-height: 1.5;
  margin: 10px 0;
}
.rp-warning {
  color: var(--danger);
  line-height: 1.5;
  margin: 10px 0;
}
.rp-install-locked {
  width: 100%;
  margin-top: 12px;
}
.rp-request-list {
  border-top: 1px solid var(--line);
  margin-top: 12px;
}
.rp-request-row {
  padding: 12px 2px;
  border-bottom: 1px dotted var(--line);
}
.rp-request-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.rp-request-name {
  color: var(--text);
  font-weight: 700;
  word-break: break-word;
}
.rp-request-meta {
  margin-top: 5px;
  color: var(--muted);
  font-size: 11px;
  word-break: break-word;
}
.rp-request-reason,
.rp-request-decision {
  margin-top: 7px;
  color: var(--muted);
  white-space: pre-wrap;
  word-break: break-word;
}
.rp-request-decision {
  color: var(--accent);
}
.rp-request-empty {
  padding: 14px 2px;
  color: var(--muted);
}
.rp-req-status {
  flex: 0 0 auto;
  border: 1px solid var(--line);
  padding: 3px 7px;
  font-size: 10px;
  color: var(--muted);
}
.rp-status-approved,
.rp-status-succeeded { color: var(--accent); border-color: var(--accent); }
.rp-status-rejected,
.rp-status-failed { color: var(--danger); border-color: var(--danger); }
.rp-status-running,
.rp-status-queued { color: var(--text); border-color: var(--accent); }
.rp-migration-grid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 10px;
}
.rp-migration-group {
  border: 1px solid var(--line);
  padding: 10px;
  min-width: 0;
}
.rp-migration-title {
  color: var(--accent);
  margin-bottom: 8px;
  font-weight: 700;
}
.rp-migration-item {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
  padding: 4px 0;
  border-bottom: 1px dotted rgba(131,173,146,.2);
}
@media(max-width:820px){
  .rp-ops-grid,
  .rp-migration-grid { grid-template-columns:1fr; }
  .rp-ops-card-wide { grid-column:auto; }
  .rp-ops-header { align-items:flex-start; flex-direction:column; }
}
/* RP_TERMINAL_PROGRESSIVE_PERMISSIONS_V043_END */


/* RP_TERMINAL_PHASE4F_PROJECTS_READONLY_UI_V0471 */
.rp-project-list{display:grid;gap:10px;margin-top:10px}
.rp-project-row{border:1px solid var(--line);background:var(--panel2);padding:12px;min-width:0}
.rp-project-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.rp-project-name{font-weight:800;letter-spacing:.06em}
.rp-project-state{font-size:11px;border:1px solid var(--line);padding:3px 7px;letter-spacing:.08em}
.rp-project-state-legacy_reference{border-color:var(--warn);color:var(--warn)}
.rp-project-meta,.rp-project-authority,.rp-project-path,.rp-project-legacy{font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.rp-project-meta{margin-top:6px;opacity:.85}
.rp-project-authority{margin-top:8px;font-weight:700}
.rp-project-path{opacity:.9}
.rp-project-legacy{opacity:.65}
.rp-project-section-title{margin-top:16px;font-size:12px;font-weight:800;letter-spacing:.08em}
.rp-project-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px;margin-top:8px}
.rp-project-action{border:1px solid var(--line);padding:9px;background:var(--panel2)}
.rp-project-action-name{font-size:12px;font-weight:800}
.rp-project-action-state{font-size:11px;margin-top:4px;color:var(--warn)}
.rp-project-action-cap{font-size:10px;margin-top:3px;opacity:.65;overflow-wrap:anywhere}
