.model-terminal {
  --matrix-green: #7cf7a6;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border: 1px solid #224b34;
  border-radius: 10px;
  color: #c4e8d0;
  background: #050c08;
  box-shadow: 0 10px 30px #03100912, inset 0 1px #97ffc20a;
  font-family: var(--font-mono, ui-monospace, monospace);
}
.model-terminal *, .model-terminal *::before, .model-terminal *::after { box-sizing: border-box; }
.model-terminal-rain { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; opacity: .2; mask-image: linear-gradient(to right, transparent 15%, #000 100%); }
.model-terminal-rain i { position: absolute; top: -440px; left: calc(var(--column) * 3.7%); color: #3ce87a; white-space: pre; font: 12px/20px monospace; font-style: normal; text-shadow: 0 0 7px #56ff9260; opacity: .6; animation: model-code-fall var(--duration) var(--delay) linear infinite; animation-play-state: paused; }
.model-terminal.is-active .model-terminal-rain i { animation-play-state: running; }
.model-terminal:not(.is-active) .model-terminal-rain { opacity: .06; }
.model-terminal .model-terminal-head { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 22px 24px 18px; background: linear-gradient(100deg, #0b1911e8, #08140bab); }
.model-terminal-eyebrow { display: flex; align-items: center; gap: 12px; font-size: 10px; line-height: 1.5; letter-spacing: .16em; color: #86a58f; }
.model-terminal-eyebrow b { color: var(--matrix-green); border: 1px solid #2b573b; border-radius: 3px; padding: 2px 6px; font-size: 9px; font-weight: 500; letter-spacing: .08em; }
.model-terminal h3 { margin: 10px 0 6px; color: #e1f8e8; font-family: var(--font-sans, sans-serif); font-size: 19px; font-weight: 600; letter-spacing: -.025em; }
.model-terminal .model-terminal-model { margin: 0; color: #93b39d; font-size: 11px; line-height: 1.6; }
.model-terminal-progress { display: grid; gap: 6px; text-align: right; flex-shrink: 0; }
.model-terminal-progress strong { color: var(--matrix-green); font-size: 26px; font-weight: 500; font-variant-numeric: tabular-nums; letter-spacing: -.055em; }
.model-terminal-progress > span { color: #86a58f; font-size: 10px; }
.model-terminal-meter { height: 2px; background: #193022; }
.model-terminal-meter i { display: block; height: 100%; background: #78fda2; box-shadow: 0 0 9px #68fc9a80; transition: width .35s ease; }
.model-terminal-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 24px 8px; color: #8eb89b; font-size: 11px; }
.model-terminal-toolbar > div { display: flex; gap: 8px; }
.model-terminal .model-terminal-toolbar button { border: 1px solid #264532; border-radius: 4px; padding: 4px 8px; color: #a5dcb5; background: #0c1b12; font: inherit; cursor: pointer; }
.model-terminal .model-terminal-toolbar button:hover:not(:disabled) { color: #e1ffe9; border-color: #609f75; background: #122b1c; }
.model-terminal .model-terminal-toolbar button:disabled { opacity: .4; cursor: default; }
.model-terminal button:focus-visible, .model-terminal-screen:focus-visible { outline: 2px solid #8dffb0; outline-offset: -2px; }
.model-terminal-screen { position: relative; height: 274px; overflow: auto; overscroll-behavior: contain; padding: 12px 24px 24px; scrollbar-width: thin; scrollbar-color: #2f6542 #061009; }
.model-terminal-screen pre { display: none; margin: 0; color: #a5efbc; white-space: pre-wrap; overflow-wrap: anywhere; font: 13px/1.9 var(--font-mono, ui-monospace, monospace); tab-size: 2; text-shadow: 0 0 9px #63ff9c12; }
.model-terminal-screen code { color: inherit; background: transparent; font: inherit; }
.model-terminal.has-output .model-terminal-screen pre { display: block; }
.model-terminal.has-output .model-terminal-waiting { display: none; }
.model-terminal-waiting { min-height: 200px; display: flex; align-items: center; justify-content: center; gap: 15px; }
.model-terminal-waiting > span { color: #69e88f; font-size: 32px; font-weight: 300; }
.model-terminal-waiting strong { font: 500 14px/1.8 var(--font-sans, sans-serif); color: #b8ddc4; }
.model-terminal-waiting p { margin: 5px 0 0; color: #80a08c; font-size: 11px; }
.model-terminal-cursor { display: none; margin-left: 3px; color: #9affb8; }
.model-terminal.is-active .model-terminal-cursor { display: inline; animation: model-cursor 1.1s steps(1) infinite; }
.model-terminal .model-terminal-foot { display: flex; justify-content: space-between; align-items: center; gap: 18px; min-height: 42px; margin: 0; padding: 10px 24px; border-top: 1px solid #1b3826; background: #0a170fe8; color: #8db69a; font-size: 10px; line-height: 1.6; }
.model-terminal-status { min-width: 0; overflow-wrap: anywhere; }
.model-terminal-status::before { content: ''; display: inline-block; width: 5px; height: 5px; margin: 0 8px 1px 0; border-radius: 50%; background: #71ef99; box-shadow: 0 0 8px #71ef9950; }
.model-terminal-count { flex-shrink: 0; font-variant-numeric: tabular-nums; }
.model-terminal.is-failed .model-terminal-status { color: #efb1a0; }
.model-terminal.is-failed .model-terminal-status::before { background: #efb1a0; box-shadow: none; }
#script-analysis-history { margin-top: 18px; }
#script-analysis-history > summary { padding: 10px 0; color: var(--muted); font-size: 12px; cursor: pointer; }
#active-script-output { margin-bottom: 16px; }
#active-script-output .model-terminal-screen { height: 230px; }
@keyframes model-code-fall { from { transform: translateY(0); } to { transform: translateY(1000px); } }
@keyframes model-cursor { 50% { opacity: 0; } }
@media (max-width: 650px) {
  .model-terminal .model-terminal-head { padding: 18px 16px 14px; gap: 12px; }
  .model-terminal h3 { font-size: 17px; }
  .model-terminal-toolbar { padding: 12px 16px 8px; }
  .model-terminal-screen { padding: 12px 16px 20px; height: 290px; }
  .model-terminal-progress strong { font-size: 23px; }
  .model-terminal .model-terminal-foot { padding: 10px 16px; align-items: flex-start; gap: 8px; flex-direction: column; }
  .model-terminal-waiting { justify-content: flex-start; }
}
@media (prefers-reduced-motion: reduce) {
  .model-terminal .model-terminal-rain i, .model-terminal.is-active .model-terminal-cursor { animation: none; }
  .model-terminal .model-terminal-meter i { transition: none; }
}

/* Stage-first layout: motion communicates activity, never an invented percent. */
.model-terminal { border-radius: 18px; background: radial-gradient(ellipse at 80% 0, #123924 0, transparent 55%), #070e0b; box-shadow: 0 20px 55px #001b1814; }
.model-terminal-rain { opacity: .09; mask-image: linear-gradient(to bottom, #000, transparent 90%); }
.model-terminal .model-terminal-head { padding: 26px 28px 22px; background: transparent; }
.model-terminal h3 { font-size: 24px; letter-spacing: -.04em; }
.model-terminal-progress strong { font-size: 20px; letter-spacing: .04em; }
.model-terminal-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 0 28px 22px; }
.model-terminal-steps > span { position: relative; display: flex; align-items: center; gap: 8px; padding: 12px 8px; border-bottom: 2px solid #203b2d; color: #6c8879; font: 12px/1.5 var(--font-sans, sans-serif); }
.model-terminal-steps b { font: 11px monospace; color: #557160; }
.model-terminal-steps .is-current { color: #d3ffe0; border-color: #84f5ad; background: linear-gradient(0deg,#7bff9e0d,transparent); }
.model-terminal-steps .is-current b { color: #9dffbc; }
.model-terminal-steps .is-current::after { content: ''; position: absolute; height: 2px; width: 28%; bottom: -2px; left: 0; background: #effff4; box-shadow: 0 0 12px #7fffab; animation: model-stage-sweep 2.8s ease-in-out infinite; }
.model-terminal-steps .is-done { color: #96bea6; border-color: #366b4b; }
.model-terminal-steps .is-done b { font-size: 0; }
.model-terminal-steps .is-done b::after { content: '✓'; font-size: 13px; color: #78d898; }
.model-terminal-meter { display: none; }
.model-terminal-waiting { flex-direction: column; min-height: 235px; text-align: center; gap: 24px; }
.model-terminal-waiting strong { color: #d4efdf; font-size: 17px; }
.model-terminal-waiting p { max-width: 400px; margin: 8px auto 0; line-height: 1.8; font: 12px/1.8 var(--font-sans,sans-serif); color: #8eaf9c; }
.model-terminal-orbit { position: relative; display: grid; place-items: center; width: 78px; height: 78px; border: 1px solid #356247; border-radius: 50%; background: radial-gradient(circle,#56e88c14,transparent 70%); box-shadow: 0 0 50px #68f69b0d; }
.model-terminal-orbit::before { content:''; position:absolute; inset:-10px; border-radius:50%; border:1px dashed #294a37; }
.model-terminal-orbit i { position:absolute; inset:-1px; border:2px solid transparent; border-top-color:#aeffcc; border-radius:50%; }
.model-terminal-orbit b { color:#b7ffd2; font-size:30px; font-weight:400; text-shadow:0 0 20px #6dffad60; }
.model-terminal.is-active .model-terminal-orbit i { animation:model-orbit 4s linear infinite; }
.model-terminal.is-active .model-terminal-orbit b { animation:model-breathe 3s ease-in-out infinite; }
.model-terminal.has-output .model-terminal-screen { background:#07110dd9; border:1px solid #213e2d; border-radius:10px; margin:8px 20px 20px; padding:16px 18px; }
.model-terminal-screen { height:310px; }
#active-script-output .model-terminal-screen { height:290px; }
.model-terminal-screen pre { color:#c0ebce; font-size:12px; line-height:1.95; text-shadow:none; }
.model-terminal .model-terminal-foot { background:#0a160f; }
@keyframes model-orbit { to { transform:rotate(360deg); } }
@keyframes model-breathe { 50% { opacity:.55; transform:scale(.9); } }
@keyframes model-stage-sweep { 50% { left:72%; } }
@media(max-width:650px) {
 .model-terminal .model-terminal-head { padding:22px 18px 18px; }
 .model-terminal h3 { font-size:20px; }
 .model-terminal-progress strong { font-size:16px; }
 .model-terminal-steps { margin:0 16px 14px; gap:4px; }
 .model-terminal-steps > span { flex-direction:column; gap:5px; padding:10px 2px; font-size:11px; }
 .model-terminal-waiting strong { font-size:15px; }
}
@media(prefers-reduced-motion:reduce) {
 .model-terminal .model-terminal-orbit i,.model-terminal .model-terminal-orbit b,.model-terminal-steps .is-current::after { animation:none; }
}
