/* ================================================================
   NOVA CORE 賽特 II | styles.css
================================================================ */

/* ── Variables ─────────────────────────────────────────────── */
:root {
  --bg:        #050d1a;
  --bg2:       #071120;
  --bg3:       #0a1628;
  --cyan:      #00eaff;
  --cyan2:     #00f5d4;
  --cyan-dim:  rgba(0,234,255,0.18);
  --pink:      #ff3f8e;
  --pink2:     #ff6aaa;
  --pink-dim:  rgba(255,63,142,0.18);
  --text:      #c8d8ec;
  --text-hi:   #e8f3ff;
  --text-lo:   #6a84a0;
  --border:    rgba(0,234,255,0.14);
  --border2:   rgba(0,234,255,0.28);
  --card-bg:   rgba(6,16,30,0.94);
  --radius:    10px;
  --radius-sm: 6px;
}

/* ── Reset ──────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 14px; }
body {
  font-family: 'Segoe UI', 'PingFang TC', 'Microsoft JhengHei', sans-serif;
  background-color: var(--bg);
  color: var(--text);
  min-height: 100vh;
  overflow-x: hidden;
}

/* ── Body background: grid + glow ──────────────────────────── */
body::before {
  content: '';
  position: fixed; inset: 0; z-index: 0;
  background-image:
    linear-gradient(rgba(0,234,255,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,234,255,0.03) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}
body::after {
  content: '';
  position: fixed; inset: 0; z-index: 0;
  background: radial-gradient(ellipse 80% 60% at 50% 0%, rgba(0,100,160,0.18) 0%, transparent 70%);
  pointer-events: none;
}

/* ── .hidden ────────────────────────────────────────────────── */
.hidden { display: none !important; }

/* ═══════════════════════════════════════════════════════════
   LOGIN SCREEN
═══════════════════════════════════════════════════════════ */
.login-screen {
  position: fixed; inset: 0; z-index: 100;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg);
}
.login-bg-glow {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 60% 50% at 50% 40%, rgba(0,60,120,0.35) 0%, transparent 70%);
}
.scanlines {
  position: absolute; inset: 0; pointer-events: none;
  background: repeating-linear-gradient(
    0deg, transparent 0px, transparent 3px,
    rgba(0,0,0,0.12) 3px, rgba(0,0,0,0.12) 4px
  );
}
.login-card {
  position: relative; z-index: 1;
  background: rgba(6,16,32,0.96);
  border: 1px solid var(--border2);
  border-radius: 14px;
  padding: 44px 48px 40px;
  width: 100%; max-width: 420px;
  box-shadow: 0 0 60px rgba(0,80,160,0.25), inset 0 1px 0 rgba(0,234,255,0.12);
  text-align: center;
}
.terminal-dot-row { display: flex; gap: 7px; margin-bottom: 20px; }
.terminal-dot-row span {
  width: 11px; height: 11px; border-radius: 50%;
  background: var(--border2);
}
.terminal-dot-row span:first-child { background: rgba(255,63,142,0.5); }
.terminal-dot-row span:nth-child(2){ background: rgba(0,234,255,0.4); }
.eyebrow {
  font-size: 10px; letter-spacing: 3px; color: var(--cyan);
  text-transform: uppercase; margin-bottom: 14px; opacity: 0.7;
}
.login-card h1 {
  font-size: 22px; font-weight: 700; color: var(--text-hi);
  letter-spacing: 1px; margin-bottom: 4px;
}
.login-card h2 {
  font-size: 13px; color: var(--cyan); font-weight: 400;
  letter-spacing: 1px; margin-bottom: 24px;
}
.login-desc { font-size: 12px; color: var(--text-lo); margin-bottom: 20px; }
.password-row { display: flex; gap: 8px; margin-bottom: 10px; }
.password-row input {
  flex: 1; padding: 10px 14px; border-radius: var(--radius-sm);
  border: 1px solid var(--border2); background: rgba(0,20,40,0.7);
  color: var(--text-hi); font-size: 14px; outline: none;
  transition: border-color 0.2s;
}
.password-row input:focus { border-color: var(--cyan); }
.password-row button {
  padding: 10px 18px; border-radius: var(--radius-sm);
  background: linear-gradient(135deg, #006680 0%, #004a5c 100%);
  border: 1px solid var(--cyan); color: var(--cyan);
  font-size: 13px; font-weight: 600; cursor: pointer;
  letter-spacing: 0.5px; transition: background 0.2s, box-shadow 0.2s;
  white-space: nowrap;
}
.password-row button:hover {
  background: linear-gradient(135deg, #008aa8 0%, #006070 100%);
  box-shadow: 0 0 14px rgba(0,234,255,0.3);
}
.password-row button:disabled {
  cursor: wait;
  opacity: 0.62;
  box-shadow: none;
}
.login-error { font-size: 12px; color: var(--pink2); min-height: 18px; }
.login-note  { font-size: 11px; color: var(--text-lo); margin-top: 18px; opacity: 0.6; }

/* ═══════════════════════════════════════════════════════════
   ANALYSE SCREEN
═══════════════════════════════════════════════════════════ */
.analyse-screen {
  position: fixed; inset: 0; z-index: 90;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg);
  transition: opacity 0.5s ease;
}
.analyse-screen.fade-out { opacity: 0; pointer-events: none; }
.analyse-inner {
  text-align: center; max-width: 460px; width: 100%; padding: 0 24px;
}
.analyse-icon {
  font-size: 48px; color: var(--cyan); margin-bottom: 28px;
  animation: spin-slow 6s linear infinite;
  display: inline-block;
}
@keyframes spin-slow { to { transform: rotate(360deg); } }
.analyse-title {
  font-size: 16px; font-weight: 600; color: var(--text-hi);
  letter-spacing: 1px; margin-bottom: 18px;
}
.analyse-step {
  font-size: 13px; color: var(--cyan); letter-spacing: 0.5px;
  min-height: 22px; margin-bottom: 24px;
  transition: opacity 0.2s;
}
.analyse-bar-wrap {
  height: 4px; background: rgba(0,234,255,0.1);
  border-radius: 2px; overflow: hidden; margin-bottom: 24px;
}
.analyse-bar {
  height: 100%; width: 0%; background: var(--cyan);
  border-radius: 2px; transition: width 0.1s linear;
  box-shadow: 0 0 8px var(--cyan);
}
.analyse-hint {
  font-size: 10px; color: var(--text-lo); letter-spacing: 2px;
  text-transform: uppercase; opacity: 0.5;
}

/* ═══════════════════════════════════════════════════════════
   DASHBOARD SHELL
═══════════════════════════════════════════════════════════ */
.dashboard {
  position: relative; z-index: 1;
  min-height: 100vh;
  display: flex; flex-direction: column;
}

/* ── Ticker ─────────────────────────────────────────────────── */
.ticker-wrap {
  background: rgba(0,10,22,0.9);
  border-bottom: 1px solid var(--border);
  height: 32px; overflow: hidden;
  display: flex; align-items: center;
}
.ticker-track {
  display: flex; white-space: nowrap;
  animation: ticker 36s linear infinite;
  font-size: 11px; color: var(--text-lo); letter-spacing: 0.4px;
}
.ticker-track span { padding-right: 120px; }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-33.33%); } }

/* ── Topbar ──────────────────────────────────────────────────── */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 24px; gap: 16px; flex-wrap: wrap;
  background: rgba(5,14,28,0.95);
  border-bottom: 1px solid var(--border);
  backdrop-filter: blur(12px);
  box-shadow: 0 2px 20px rgba(0,0,0,0.4), inset 0 -1px 0 var(--border);
  position: sticky; top: 0; z-index: 10;
}
.brand-block { display: flex; align-items: center; gap: 14px; }
.terminal-icon {
  font-size: 28px; color: var(--cyan);
  text-shadow: 0 0 12px rgba(0,234,255,0.6);
  line-height: 1;
}
.brand-block h1 {
  font-size: 17px; font-weight: 700; color: var(--text-hi);
  letter-spacing: 0.5px; white-space: nowrap;
}
.title-sub {
  font-size: 12px; font-weight: 400;
  color: var(--cyan); margin-left: 8px; opacity: 0.85;
}
.brand-en {
  font-size: 10px; color: var(--text-lo);
  letter-spacing: 1.5px; margin-top: 2px; opacity: 0.55;
}
.status-block {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.status-pill {
  font-size: 11px; color: var(--text-lo);
  background: rgba(0,20,40,0.6);
  border: 1px solid var(--border);
  border-radius: 20px; padding: 4px 12px;
  white-space: nowrap;
}
.status-pill b { color: var(--cyan2); font-weight: 600; }
.pulse {
  display: inline-block; width: 7px; height: 7px;
  background: #00ff88; border-radius: 50%;
  margin-right: 6px; vertical-align: middle;
  animation: ping 2s ease infinite;
}
@keyframes ping {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.4; transform: scale(0.7); }
}
.refresh-btn {
  padding: 6px 16px; border-radius: var(--radius-sm);
  background: rgba(0,80,100,0.4);
  border: 1px solid var(--cyan); color: var(--cyan);
  font-size: 12px; font-weight: 600; cursor: pointer;
  letter-spacing: 0.4px; transition: all 0.2s; white-space: nowrap;
}
.refresh-btn:hover { background: rgba(0,120,150,0.5); box-shadow: 0 0 12px rgba(0,234,255,0.25); }
.ghost-btn {
  padding: 6px 14px; border-radius: var(--radius-sm);
  background: transparent; border: 1px solid var(--border2);
  color: var(--text-lo); font-size: 12px; cursor: pointer;
  transition: all 0.2s;
}
.ghost-btn:hover { border-color: var(--pink); color: var(--pink2); }

/* ── Summary Cards ───────────────────────────────────────────── */
.summary-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 12px;
  padding: 16px 24px 0;
}
@media (max-width: 1100px) { .summary-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 600px)  { .summary-grid { grid-template-columns: repeat(2, 1fr); } }

.summary-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
  display: flex; flex-direction: column; gap: 6px;
  box-shadow: 0 2px 10px rgba(0,0,0,0.3), inset 0 1px 0 rgba(0,234,255,0.06);
}
.sc-label { font-size: 10px; color: var(--text-lo); letter-spacing: 0.8px; text-transform: uppercase; }
.sc-value  { font-size: 20px; font-weight: 700; letter-spacing: 0.5px; }
.sc-value.cyan { color: var(--cyan2); text-shadow: 0 0 8px rgba(0,245,212,0.4); }
.sc-value.pink { color: var(--pink);  text-shadow: 0 0 8px rgba(255,63,142,0.4); }
.sc-sync { display: flex; align-items: center; font-size: 13px; }

/* ── Cards Grid ──────────────────────────────────────────────── */
.cards-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 14px;
  padding: 16px 24px;
  flex: 1;
}
@media (max-width: 1400px) { .cards-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 1100px) { .cards-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px)  { .cards-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 420px)  { .cards-grid { grid-template-columns: 1fr; } }

/* ── Room Card ───────────────────────────────────────────────── */
.card {
  background: linear-gradient(160deg, rgba(8,18,34,0.97) 0%, rgba(5,13,26,0.97) 100%);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  position: relative; overflow: hidden;
  box-shadow: 0 4px 16px rgba(0,0,0,0.35), inset 0 1px 0 rgba(0,234,255,0.07);
  transition: border-color 0.3s, box-shadow 0.3s;
}
.card:hover {
  border-color: rgba(0,234,255,0.3);
  box-shadow: 0 6px 24px rgba(0,0,0,0.5), 0 0 20px rgba(0,234,255,0.06);
}
.card::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent 0%, rgba(0,234,255,0.3) 50%, transparent 100%);
}

/* S-tier */
.card.tier-s {
  border-color: rgba(255,63,142,0.35);
  box-shadow: 0 4px 20px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,63,142,0.12);
  animation: breathe-s 3s ease-in-out infinite;
}
@keyframes breathe-s {
  0%, 100% { box-shadow: 0 4px 20px rgba(0,0,0,0.4), 0 0 14px rgba(255,63,142,0.12); }
  50%       { box-shadow: 0 4px 20px rgba(0,0,0,0.4), 0 0 28px rgba(255,63,142,0.22); }
}
.card.tier-s::before {
  background: linear-gradient(90deg, transparent 0%, rgba(255,63,142,0.4) 50%, transparent 100%);
}

/* Card header */
.card-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 12px;
}
.card-room {
  font-size: 15px; font-weight: 700; color: var(--text-hi);
  letter-spacing: 0.5px;
}
.card-tier-badge {
  font-size: 10px; font-weight: 700; letter-spacing: 1px;
  padding: 2px 8px; border-radius: 20px;
}
.badge-s { background: rgba(255,63,142,0.18); color: var(--pink2); border: 1px solid rgba(255,63,142,0.4); }
.badge-a { background: rgba(0,234,255,0.12); color: var(--cyan);  border: 1px solid rgba(0,234,255,0.3); }
.badge-b { background: rgba(100,130,160,0.12); color: var(--text-lo); border: 1px solid rgba(100,130,160,0.25); }

/* Prob row */
.prob-row {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 12px;
}
.prob-label { font-size: 10px; color: var(--text-lo); letter-spacing: 0.5px; }
.prob-value {
  font-size: 28px; font-weight: 800; letter-spacing: 0.5px;
  font-variant-numeric: tabular-nums;
  transition: color 0.3s;
}
.prob-value.tier-s { color: var(--pink2); text-shadow: 0 0 12px rgba(255,63,142,0.5); }
.prob-value.tier-a { color: var(--cyan);  text-shadow: 0 0 10px rgba(0,234,255,0.4); }
.prob-value.tier-b { color: #7aa8c8; }

/* Signals */
.signals { margin-bottom: 10px; display: flex; flex-direction: column; gap: 5px; }
.signal-item {
  display: flex; align-items: center; gap: 7px;
  font-size: 12px; color: var(--text); line-height: 1.4;
}
.signal-tag {
  font-size: 10px; font-weight: 700; letter-spacing: 0.5px;
  padding: 1px 6px; border-radius: 3px; flex-shrink: 0;
}
.tag-s { background: rgba(255,63,142,0.2); color: var(--pink2); }
.tag-a { background: rgba(0,234,255,0.15); color: var(--cyan); }
.tag-b { background: rgba(100,130,160,0.15); color: #7aa8c8; }

/* Command box */
.cmd-row {
  font-size: 12px; font-weight: 500; line-height: 1.5;
  color: #62c8b8; border-left: 2px solid var(--cyan2);
  padding: 6px 10px; margin-bottom: 10px;
  background: rgba(0,234,255,0.05); border-radius: 0 4px 4px 0;
}
.cmd-row.tier-s {
  color: var(--pink2); border-left-color: var(--pink);
  background: rgba(255,63,142,0.06);
}
.cmd-row.tier-b { color: #7aa8c8; border-left-color: #4a6880; }

/* Energy line — flowing sweep */
.energy-line {
  position: relative;
  width: 100%; height: 4px; margin-top: 14px;
  border-radius: 999px; overflow: hidden;
  background: rgba(0,245,212,0.10);
}
.energy-fill {
  position: absolute; inset: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, rgba(0,245,212,0.25), rgba(0,245,212,0.85));
  transition: width 0.8s ease;
}
.energy-line::after {
  content: '';
  position: absolute; top: 0; left: -45%; width: 45%; height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.82), transparent);
  animation: energySweep 1.55s linear infinite;
  animation-delay: var(--delay, 0s);
}
@keyframes energySweep {
  from { left: -45%; }
  to   { left: 100%; }
}
/* S-tier: pink sweep */
.card.tier-s .energy-line {
  background: rgba(255,76,145,0.12);
}
.card.tier-s .energy-fill {
  background: linear-gradient(90deg, rgba(255,76,145,0.28), rgba(255,76,145,0.90));
}
.card.tier-s .energy-line::after {
  background: linear-gradient(90deg, transparent, rgba(255,220,238,0.92), transparent);
}

/* reveal animation */
.reveal-in { animation: reveal-card 0.3s ease both; }
@keyframes reveal-card {
  from { opacity: 0; transform: translateY(6px) scale(0.98); }
  to   { opacity: 1; transform: none; }
}

/* ═══════════════════════════════════════════════════════════
   LOADING CARD
═══════════════════════════════════════════════════════════ */
.loading-card {
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 12px; text-align: center;
  background: linear-gradient(160deg, rgba(5,14,26,0.95) 0%, rgba(4,11,22,0.95) 100%);
  border-color: rgba(0,234,255,0.1);
  min-height: 180px;
  overflow: hidden; position: relative;
}
.loading-card::after {
  content: '';
  position: absolute; top: -100%; left: -20%; width: 40%; height: 300%;
  background: linear-gradient(90deg, transparent, rgba(0,234,255,0.06), transparent);
  animation: lc-scan 2.2s ease-in-out infinite;
}
@keyframes lc-scan {
  0%   { transform: translateX(-50%); }
  100% { transform: translateX(400%); }
}
.lc-icon { font-size: 24px; color: rgba(0,234,255,0.35); animation: spin-slow 4s linear infinite; }
.lc-text  { font-size: 11px; color: var(--text-lo); letter-spacing: 0.4px; }
.lc-bar-wrap {
  width: 70%; height: 2px; background: rgba(0,234,255,0.1); border-radius: 1px; overflow: hidden;
}
.lc-bar {
  height: 100%; width: 40%; background: var(--cyan);
  border-radius: 1px;
  animation: lc-progress 1.8s ease-in-out infinite;
}
@keyframes lc-progress {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(250%); }
}

/* ═══════════════════════════════════════════════════════════
   SYSTEM NOTE
═══════════════════════════════════════════════════════════ */
.system-note {
  text-align: center;
  font-size: 11px; color: var(--text-lo);
  line-height: 1.7; opacity: 0.55;
  padding: 16px 40px 28px;
  border-top: 1px solid var(--border);
  max-width: 820px; margin: 0 auto; width: 100%;
}

/* ═══════════════════════════════════════════════════════════
   NOVA CORE CONFIGURATION FLOW
═══════════════════════════════════════════════════════════ */
.app-shell {
  position: relative;
  z-index: 1;
  min-height: 100vh;
}
.app-header {
  min-height: 76px;
  padding: 14px clamp(16px, 4vw, 52px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  border-bottom: 1px solid var(--border);
  background: rgba(5, 13, 26, 0.82);
  backdrop-filter: blur(16px);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.22);
}
.brand-block h1 { font-size: 17px; color: var(--text-hi); letter-spacing: 2px; }
.brand-block p { margin-top: 3px; color: var(--text-lo); font-size: 9px; letter-spacing: 1.7px; }
.brand-mark {
  position: relative;
  width: 34px;
  height: 34px;
  border: 1px solid var(--cyan);
  transform: rotate(45deg);
  box-shadow: 0 0 18px rgba(0, 234, 255, 0.25), inset 0 0 14px rgba(0, 234, 255, 0.12);
}
.brand-mark::after {
  content: "";
  position: absolute;
  inset: 7px;
  border: 1px solid var(--cyan2);
  animation: core-pulse 2.6s ease-in-out infinite;
}
.connection {
  color: var(--text-lo);
  font-size: 11px;
  border: 1px solid var(--border);
  background: rgba(0, 20, 40, 0.55);
  border-radius: 999px;
  padding: 7px 12px;
  white-space: nowrap;
}
.screen-panel {
  min-height: calc(100vh - 76px);
  padding: clamp(30px, 6vw, 72px) 16px;
  animation: screen-enter 0.48s ease both;
}
.panel-card {
  background:
    linear-gradient(145deg, rgba(8, 22, 41, 0.97), rgba(4, 12, 24, 0.98));
  border: 1px solid var(--border2);
  border-radius: 14px;
  box-shadow: 0 22px 70px rgba(0, 0, 0, 0.38), inset 0 1px rgba(255, 255, 255, 0.03);
}
.settings-card {
  width: min(780px, 100%);
  margin: 0 auto;
  padding: clamp(24px, 5vw, 44px);
  position: relative;
  overflow: hidden;
}
.settings-card::before, .result-card::before, .signal-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 8%;
  width: 84%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cyan), transparent);
  opacity: 0.55;
}
.settings-card h2, .success-heading h2 {
  color: var(--text-hi);
  font-size: clamp(24px, 4vw, 34px);
  letter-spacing: 1px;
}
.panel-subtitle { color: var(--text-lo); margin: 8px 0 30px; font-size: 13px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 19px 22px; }
.field.full { grid-column: 1 / -1; }
.field label {
  display: block;
  margin-bottom: 8px;
  color: #a9bfd8;
  font-size: 12px;
  letter-spacing: 0.6px;
}
.field input, .field select {
  width: 100%;
  height: 44px;
  padding: 0 13px;
  border: 1px solid var(--border2);
  border-radius: 6px;
  outline: 0;
  background: rgba(0, 15, 31, 0.78);
  color: var(--text-hi);
  font: inherit;
  transition: border-color .2s, box-shadow .2s, transform .2s;
}
.field select { color-scheme: dark; }
.field input::placeholder { color: #58718b; }
.field input:focus, .field select:focus {
  border-color: var(--cyan);
  box-shadow: 0 0 0 3px rgba(0, 234, 255, 0.08), 0 0 20px rgba(0, 234, 255, 0.08);
  transform: translateY(-1px);
}
.field input.invalid, .field select.invalid {
  border-color: var(--pink);
  animation: field-shake .28s ease;
}
.field-error { min-height: 17px; margin-top: 5px; color: var(--pink2); font-size: 11px; }
.primary-btn {
  width: 100%;
  min-height: 46px;
  margin-top: 17px;
  border: 1px solid var(--cyan);
  border-radius: 6px;
  background: linear-gradient(135deg, rgba(0, 122, 153, .72), rgba(0, 66, 86, .88));
  color: #c7fbff;
  font-weight: 700;
  letter-spacing: 2px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: transform .2s, box-shadow .2s, filter .2s;
}
.primary-btn::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-110%);
  background: linear-gradient(100deg, transparent 25%, rgba(255,255,255,.18), transparent 75%);
  transition: transform .55s;
}
.primary-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 26px rgba(0,234,255,.18); filter: brightness(1.12); }
.primary-btn:hover::after { transform: translateX(110%); }
.primary-btn:disabled { cursor: wait; opacity: .55; transform: none; }

/* Processing */
.processing-screen {
  position: relative;
  min-height: calc(100vh - 76px);
  display: grid;
  place-items: center;
  padding: 28px 16px;
  overflow: hidden;
  animation: screen-enter .4s ease both;
}
.processing-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(0,234,255,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,234,255,.055) 1px, transparent 1px);
  background-size: 44px 44px;
  perspective: 300px;
  mask-image: linear-gradient(to bottom, transparent, black 30%, black 75%, transparent);
}
.scan-beam {
  position: absolute;
  left: 0;
  right: 0;
  height: 90px;
  background: linear-gradient(180deg, transparent, rgba(0,234,255,.1), rgba(0,234,255,.35), transparent);
  filter: blur(1px);
  animation: scan-page 3.2s linear infinite;
}
.processing-card {
  position: relative;
  z-index: 2;
  width: min(680px, 100%);
  text-align: center;
  padding: clamp(22px, 5vw, 42px);
  background: rgba(4, 13, 27, .9);
  border: 1px solid var(--border2);
  border-radius: 14px;
  box-shadow: 0 0 80px rgba(0,96,145,.2);
  backdrop-filter: blur(12px);
}
.status-orbit {
  position: relative;
  width: 64px;
  height: 64px;
  margin: 0 auto 20px;
  border: 1px solid rgba(0,234,255,.25);
  border-top-color: var(--cyan);
  border-radius: 50%;
  animation: orbit 2.1s linear infinite;
}
.status-orbit::before, .status-orbit span {
  content: "";
  position: absolute;
  border-radius: 50%;
}
.status-orbit::before { inset: 9px; border: 1px dashed rgba(0,245,212,.45); }
.status-orbit span { inset: 23px; background: var(--cyan); box-shadow: 0 0 20px var(--cyan); animation: core-pulse 1.1s ease-in-out infinite; }
.processing-card h2 { color: var(--text-hi); font-size: clamp(20px, 4vw, 29px); }
.processing-percent {
  margin: 12px 0;
  color: var(--cyan);
  font-size: clamp(36px, 8vw, 60px);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  text-shadow: 0 0 22px rgba(0,234,255,.42);
}
.progress-track { height: 6px; overflow: hidden; border-radius: 99px; background: rgba(0,234,255,.1); }
.progress-bar {
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #007e9b, var(--cyan), var(--cyan2));
  box-shadow: 0 0 15px var(--cyan);
}
.terminal-lines {
  height: 97px;
  margin-top: 24px;
  padding: 10px 13px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 4px;
  overflow: hidden;
  text-align: left;
  color: rgba(0,245,212,.62);
  background: rgba(0,10,20,.65);
  border: 1px solid rgba(0,234,255,.1);
  font: 10px/1.35 Consolas, monospace;
}
.terminal-lines span { animation: terminal-line .25s ease both; }
.processing-summary {
  margin-top: 17px;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
}
.processing-summary > * { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.processing-summary dt { color: var(--text-lo); font-size: 9px; }
.processing-summary dd { color: var(--text); font-size: 11px; }

/* Result */
.result-wrap { width: min(900px, 100%); margin: 0 auto; }
.success-heading { display: flex; align-items: center; justify-content: center; gap: 18px; margin-bottom: 24px; }
.success-icon {
  width: 54px;
  height: 54px;
  border: 1px solid var(--cyan2);
  border-radius: 50%;
  position: relative;
  box-shadow: 0 0 28px rgba(0,245,212,.25);
  animation: result-pop .6s cubic-bezier(.2,.8,.3,1.4) both;
}
.success-icon::after {
  content: "";
  position: absolute;
  width: 22px;
  height: 11px;
  left: 14px;
  top: 16px;
  border-left: 2px solid var(--cyan2);
  border-bottom: 2px solid var(--cyan2);
  transform: rotate(-45deg);
}
.result-card, .signal-card { position: relative; overflow: hidden; padding: clamp(22px, 4vw, 34px); }
.result-data {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  background: var(--border);
  border: 1px solid var(--border);
}
.result-data dt, .result-data dd {
  padding: 12px 14px;
  background: rgba(4,14,28,.96);
}
.result-data dt { color: var(--text-lo); font-size: 11px; }
.result-data dd { text-align: right; color: var(--text-hi); font-weight: 600; overflow-wrap: anywhere; }
.signal-card { margin-top: 18px; text-align: center; }
.signal-card h3 { color: #f6d98a; font-size: 21px; letter-spacing: 1px; }
.eyebrow.gold { color: #d7ad4a; }
.signal-results {
  margin-top: 24px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  text-align: left;
}
.signal-plan {
  position: relative;
  min-width: 0;
  padding: 18px;
  overflow: hidden;
  background: linear-gradient(145deg, rgba(5,25,44,.96), rgba(2,14,28,.92));
  border: 1px solid rgba(0,234,255,.18);
  border-radius: 12px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025);
  animation: signal-enter .5s ease both;
}
.signal-plan.primary {
  grid-column: 1 / -1;
  padding: 22px;
  border-color: rgba(255,215,108,.7);
  background:
    radial-gradient(circle at 75% 0%, rgba(255,215,108,.16), transparent 36%),
    linear-gradient(145deg, rgba(18,29,45,.98), rgba(4,17,31,.96));
  box-shadow:
    0 0 0 1px rgba(255,215,108,.12),
    0 0 30px rgba(255,190,70,.13),
    inset 0 1px 0 rgba(255,244,194,.15);
  animation: signal-enter .5s ease both, recommendation-pulse 3s ease-in-out 1s infinite;
}
.signal-plan.primary::after {
  content: "";
  position: absolute;
  inset: -35% auto -35% -45%;
  width: 30%;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(255,247,196,.3), transparent);
  transform: skewX(-18deg);
  animation: recommendation-glint 3.4s ease-in-out 1s infinite;
}
.signal-plan > * { position: relative; z-index: 1; }
.signal-plan.backup-1 { animation-delay: .08s; }
.signal-plan.backup-2 { animation-delay: .16s; }
.signal-plan-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.signal-plan-label {
  margin: 0 0 4px;
  color: var(--cyan);
  font: 700 9px/1 Consolas, monospace;
  letter-spacing: 1.5px;
}
.signal-plan h4 {
  margin: 0;
  color: #eaf7ff;
  font-size: 18px;
  letter-spacing: .5px;
}
.signal-plan.primary .signal-plan-label,
.signal-plan.primary h4 { color: #ffe69a; }
.signal-rank {
  flex: 0 0 auto;
  padding: 5px 10px;
  border: 1px solid rgba(0,234,255,.28);
  border-radius: 99px;
  color: var(--cyan);
  background: rgba(0,234,255,.07);
  font-size: 10px;
  font-weight: 800;
}
.signal-plan.primary .signal-rank {
  color: #fff0b5;
  border-color: rgba(255,215,108,.55);
  background: rgba(255,197,70,.12);
  box-shadow: 0 0 16px rgba(255,205,79,.14);
}
.signal-plan-description {
  margin: 8px 0 14px;
  color: var(--text-lo);
  font-size: 10px;
}
.signal-plan-items {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
  gap: 9px;
}
.signal-item {
  min-width: 0;
  padding: 10px 8px 8px;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  background: rgba(0,13,26,.66);
  border: 1px solid rgba(0,234,255,.11);
  border-radius: 8px;
}
.signal-plan.primary .signal-item {
  background: rgba(12,18,28,.72);
  border-color: rgba(255,215,108,.18);
}
.signal-image-frame { width: 68px; height: 68px; justify-self: center; }
.signal-image-frame img { width: 100%; height: 100%; display: block; object-fit: contain; filter: drop-shadow(0 5px 12px rgba(0,0,0,.55)); }
.signal-item strong { color: var(--cyan); font-size: 21px; text-shadow: 0 0 12px rgba(0,234,255,.35); }
.signal-plan.primary .signal-item strong { color: #ffe69a; text-shadow: 0 0 14px rgba(255,215,108,.35); }
.signal-item > span { grid-column: 1 / -1; color: var(--text-lo); font-size: 11px; }
.signal-item.image-failed .signal-image-frame { border: 1px dashed var(--pink); }
.signal-plan.assets-pending {
  border-style: dashed;
}
.signal-plan.assets-pending .signal-plan-description {
  color: #a9bfd3;
}
.signal-item.signal-placeholder {
  min-height: 118px;
  grid-template-columns: 1fr;
  justify-items: center;
  align-content: center;
  gap: 7px;
  border-style: dashed;
  background:
    radial-gradient(circle at 50% 38%, rgba(0,234,255,.08), transparent 48%),
    rgba(0,13,26,.48);
}
.signal-plan.primary .signal-item.signal-placeholder {
  background:
    radial-gradient(circle at 50% 38%, rgba(255,215,108,.1), transparent 48%),
    rgba(12,18,28,.58);
}
.signal-placeholder-mark {
  position: relative;
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  grid-column: 1 / -1;
  border: 1px dashed rgba(0,234,255,.35);
  border-radius: 12px;
  color: var(--cyan);
  background: rgba(0,234,255,.04);
}
.signal-placeholder-mark::before,
.signal-placeholder-mark::after {
  content: "";
  position: absolute;
  width: 18px;
  height: 1px;
  background: currentColor;
  box-shadow: 0 0 9px currentColor;
}
.signal-placeholder-mark::after {
  transform: rotate(90deg);
}
.signal-plan.primary .signal-placeholder-mark {
  color: #ffe69a;
  border-color: rgba(255,215,108,.4);
  background: rgba(255,215,108,.04);
}
.signal-item.signal-placeholder strong {
  font: 700 8px/1 Consolas, monospace;
  letter-spacing: 1.4px;
}
.signal-item.signal-placeholder > span:last-child {
  color: #819bb2;
}
.image-error { margin-top: 12px; color: var(--pink2); font-size: 11px; }
.time-row {
  margin-top: 18px;
  padding: 15px 18px;
  display: flex;
  justify-content: space-between;
  gap: 12px 24px;
  flex-wrap: wrap;
  border: 1px solid var(--border);
  background: rgba(4,14,28,.76);
  color: var(--text-lo);
  font-size: 12px;
}
.time-row span { color: var(--cyan2); font-variant-numeric: tabular-nums; }
.reset-btn { display: block; width: min(260px, 100%); margin: 20px auto 0; }

@keyframes screen-enter { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes core-pulse { 50% { opacity: .42; transform: scale(.72); } }
@keyframes orbit { to { transform: rotate(360deg); } }
@keyframes scan-page { from { top: -100px; } to { top: 100%; } }
@keyframes terminal-line { from { opacity: 0; transform: translateX(-8px); } }
@keyframes field-shake { 33% { transform: translateX(-4px); } 66% { transform: translateX(4px); } }
@keyframes result-pop { from { opacity: 0; transform: scale(.5) rotate(-45deg); } }
@keyframes signal-enter { from { opacity: 0; transform: translateY(12px) scale(.96); } }
@keyframes recommendation-pulse {
  50% {
    border-color: rgba(255,229,144,.95);
    box-shadow:
      0 0 0 1px rgba(255,215,108,.2),
      0 0 38px rgba(255,190,70,.24),
      inset 0 1px 0 rgba(255,244,194,.2);
  }
}
@keyframes recommendation-glint {
  0%, 28% { left: -45%; opacity: 0; }
  45% { opacity: 1; }
  68%, 100% { left: 125%; opacity: 0; }
}

@media (max-width: 620px) {
  .app-header { min-height: 66px; }
  .brand-mark { width: 28px; height: 28px; }
  .connection { padding: 6px 9px; font-size: 10px; }
  .brand-block p { display: none; }
  .screen-panel, .processing-screen { min-height: calc(100vh - 66px); }
  .form-grid { grid-template-columns: 1fr; gap: 10px; }
  .field.full { grid-column: auto; }
  .processing-summary { grid-template-columns: repeat(2, 1fr); }
  .result-data { grid-template-columns: minmax(98px, .7fr) minmax(0, 1.3fr); }
  .signal-results { grid-template-columns: 1fr; }
  .signal-plan.primary { grid-column: auto; }
  .signal-image-frame { width: 64px; height: 64px; }
  .signal-item { padding: 11px 8px 9px; }
  .signal-item strong { font-size: 21px; }
  .time-row { display: block; text-align: center; line-height: 1.9; }
}
@media (max-width: 350px) {
  .app-header { padding-inline: 10px; }
  .brand-block { gap: 9px; }
  .brand-block h1 { font-size: 14px; }
  .connection { border: 0; padding: 0; background: transparent; }
  .settings-card, .result-card, .signal-card, .processing-card { padding: 19px 14px; }
  .signal-results { gap: 8px; }
  .signal-plan, .signal-plan.primary { padding: 15px 12px; }
  .signal-plan-items { grid-template-columns: repeat(auto-fit, minmax(84px, 1fr)); gap: 6px; }
  .signal-image-frame { width: 56px; height: 56px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* ═══════════════════════════════════════════════════════════
   2026 VISUAL REFRESH — TACTICAL ASSISTANT INTERFACE
═══════════════════════════════════════════════════════════ */
:root {
  --gold: #f4d477;
  --surface-glass: rgba(4, 14, 29, .82);
  --deep-shadow: 0 28px 80px rgba(0, 0, 0, .48);
}
html { color-scheme: dark; }
body {
  background:
    radial-gradient(circle at 14% 18%, rgba(0, 163, 194, .12), transparent 29%),
    radial-gradient(circle at 86% 72%, rgba(37, 63, 155, .13), transparent 31%),
    linear-gradient(145deg, #020711 0%, #050d1a 46%, #030914 100%);
}
body::before {
  opacity: .76;
  background-image:
    linear-gradient(rgba(0, 234, 255, .035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 234, 255, .035) 1px, transparent 1px),
    linear-gradient(rgba(0, 234, 255, .012) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 234, 255, .012) 1px, transparent 1px);
  background-size: 48px 48px, 48px 48px, 12px 12px, 12px 12px;
  mask-image: radial-gradient(circle at 50% 35%, #000 15%, transparent 86%);
  animation: tactical-grid-drift 24s linear infinite;
}
body::after {
  background:
    radial-gradient(circle at 50% -10%, rgba(0, 234, 255, .16), transparent 38%),
    radial-gradient(circle at 0% 72%, rgba(0, 245, 212, .075), transparent 30%),
    radial-gradient(circle at 100% 36%, rgba(255, 63, 142, .055), transparent 27%),
    linear-gradient(90deg, rgba(0,0,0,.26), transparent 18%, transparent 82%, rgba(0,0,0,.28));
  animation: ambient-core-breathe 8s ease-in-out infinite;
}
::selection { color: #00141d; background: var(--cyan); }

.login-screen {
  background:
    radial-gradient(circle at 50% 42%, rgba(0, 98, 145, .16), transparent 32%),
    linear-gradient(145deg, rgba(1, 6, 15, .96), rgba(3, 12, 25, .98));
}
.login-screen::before,
.login-screen::after {
  content: "";
  position: absolute;
  pointer-events: none;
}
.login-screen::before {
  inset: 22px;
  border: 1px solid rgba(0, 234, 255, .07);
  clip-path: polygon(0 0, 120px 0, 120px 1px, 1px 1px, 1px 80px, 0 80px, 0 100%, 100% 100%, 100% 0);
}
.login-screen::after {
  width: min(780px, 82vw);
  height: min(780px, 82vw);
  border: 1px solid rgba(0, 234, 255, .05);
  border-radius: 50%;
  box-shadow:
    0 0 0 70px rgba(0, 234, 255, .018),
    0 0 0 150px rgba(0, 234, 255, .01);
  animation: login-field-rotate 38s linear infinite;
}
.login-bg-glow {
  background:
    radial-gradient(circle at 50% 44%, rgba(0, 218, 255, .13), transparent 21%),
    radial-gradient(ellipse 64% 56% at 50% 46%, rgba(0, 56, 112, .28), transparent 70%);
  animation: ambient-core-breathe 5s ease-in-out infinite;
}
.login-card {
  max-width: 500px;
  padding: 36px 48px 34px;
  isolation: isolate;
  overflow: hidden;
  border-color: rgba(0, 234, 255, .34);
  border-radius: 18px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.025), transparent 32%),
    linear-gradient(155deg, rgba(7, 25, 45, .96), rgba(2, 10, 22, .98));
  box-shadow:
    0 35px 100px rgba(0, 0, 0, .62),
    0 0 0 1px rgba(0, 234, 255, .035),
    0 0 52px rgba(0, 138, 191, .18),
    inset 0 1px 0 rgba(188, 246, 255, .11);
}
.login-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(90deg, var(--cyan), transparent 24%) top left / 44% 1px no-repeat,
    linear-gradient(180deg, var(--cyan), transparent 30%) top left / 1px 44% no-repeat,
    linear-gradient(270deg, rgba(0,245,212,.65), transparent 24%) bottom right / 44% 1px no-repeat,
    linear-gradient(0deg, rgba(0,245,212,.65), transparent 30%) bottom right / 1px 44% no-repeat;
}
.login-card::after {
  content: "";
  position: absolute;
  top: -30%;
  left: -45%;
  width: 26%;
  height: 160%;
  z-index: -1;
  pointer-events: none;
  transform: skewX(-19deg);
  background: linear-gradient(90deg, transparent, rgba(0,234,255,.075), transparent);
  animation: login-card-sweep 5.6s ease-in-out 1s infinite;
}
.terminal-dot-row { position: absolute; top: 17px; left: 20px; margin: 0; }
.terminal-dot-row span { width: 7px; height: 7px; box-shadow: 0 0 7px currentColor; }
.login-core {
  position: relative;
  width: 88px;
  height: 88px;
  margin: 2px auto 25px;
  display: grid;
  place-items: center;
}
.login-core::before {
  content: "";
  position: absolute;
  inset: 15px;
  background: radial-gradient(circle, rgba(0,234,255,.28), rgba(0,234,255,.03) 60%, transparent 70%);
  filter: blur(2px);
  animation: core-pulse 2s ease-in-out infinite;
}
.login-core strong {
  position: relative;
  z-index: 2;
  color: #dcfbff;
  font: 800 29px/1 Consolas, monospace;
  text-shadow: 0 0 18px rgba(0,234,255,.75);
}
.core-ring { position: absolute; border-radius: 50%; }
.core-ring.outer {
  inset: 0;
  border: 1px solid rgba(0,234,255,.38);
  border-top-color: var(--cyan);
  border-bottom-color: transparent;
  box-shadow: 0 0 25px rgba(0,234,255,.12);
  animation: orbit 5s linear infinite;
}
.core-ring.outer::before,
.core-ring.outer::after {
  content: "";
  position: absolute;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--cyan);
  box-shadow: 0 0 10px var(--cyan);
}
.core-ring.outer::before { top: 8px; left: 13px; }
.core-ring.outer::after { right: 9px; bottom: 14px; }
.core-ring.inner {
  inset: 13px;
  border: 1px dashed rgba(0,245,212,.45);
  animation: orbit 7s linear reverse infinite;
}
.login-card .eyebrow { margin-bottom: 10px; color: #77efff; opacity: .85; }
.login-card h1 {
  margin-bottom: 6px;
  font-size: clamp(25px, 5vw, 34px);
  letter-spacing: 3px;
  background: linear-gradient(90deg, #f4fbff, #8defff 58%, #bfffee);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: 0 0 28px rgba(0,234,255,.1);
}
.login-card h2 { margin-bottom: 26px; font-size: 14px; color: #79c8df; letter-spacing: 2px; }
.login-desc { margin-bottom: 14px; color: #86a4c3; }
.password-row {
  padding: 5px;
  gap: 6px;
  border: 1px solid rgba(0,234,255,.12);
  border-radius: 10px;
  background: rgba(0, 8, 18, .58);
  box-shadow: inset 0 0 24px rgba(0,0,0,.28);
}
.password-row input {
  min-width: 0;
  padding-inline: 14px;
  border: 0;
  background: transparent;
  letter-spacing: 1.4px;
}
.password-row input:focus { border-color: transparent; box-shadow: none; }
.password-row:focus-within {
  border-color: rgba(0,234,255,.72);
  box-shadow: 0 0 0 3px rgba(0,234,255,.06), 0 0 24px rgba(0,234,255,.11);
}
.password-row button {
  border-radius: 7px;
  color: #ddfbff;
  background: linear-gradient(135deg, rgba(0,154,190,.8), rgba(0,72,96,.92));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
}
.login-status-row {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  margin-top: 16px;
  padding-top: 13px;
  border-top: 1px solid rgba(0,234,255,.09);
  color: #506d88;
  font: 9px/1 Consolas, monospace;
  letter-spacing: .8px;
}
.login-status-row i {
  display: inline-block;
  width: 5px;
  height: 5px;
  margin-right: 7px;
  border-radius: 50%;
  background: var(--cyan2);
  box-shadow: 0 0 8px var(--cyan2);
  animation: ping 2s ease infinite;
}
.login-note { margin-top: 12px; }

.app-shell::before,
.app-shell::after {
  content: "";
  position: fixed;
  top: 100px;
  bottom: 24px;
  width: 1px;
  z-index: -1;
  pointer-events: none;
  background: linear-gradient(transparent, rgba(0,234,255,.15) 20%, rgba(0,234,255,.08) 80%, transparent);
}
.app-shell::before { left: 22px; }
.app-shell::after { right: 22px; }
.app-header {
  position: sticky;
  top: 0;
  z-index: 20;
  min-height: 82px;
  border-bottom-color: rgba(0,234,255,.18);
  background:
    linear-gradient(90deg, rgba(0,234,255,.035), transparent 30%, transparent 70%, rgba(0,245,212,.025)),
    rgba(2, 10, 21, .86);
  box-shadow: 0 12px 40px rgba(0,0,0,.32), inset 0 -1px 0 rgba(0,234,255,.04);
}
.app-header::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -1px;
  width: 23%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--cyan), transparent);
  animation: header-scan 7s linear infinite;
}
.brand-block { gap: 16px; }
.brand-block h1 {
  font-size: 19px;
  background: linear-gradient(90deg, #f1fbff, #72eaff);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.brand-mark {
  width: 38px;
  height: 38px;
  border-color: rgba(0,234,255,.7);
  background: rgba(0,234,255,.025);
  box-shadow: 0 0 24px rgba(0,234,255,.2), inset 0 0 18px rgba(0,234,255,.1);
}
.header-statuses { display: flex; align-items: center; gap: 9px; }
.node-chip,
.connection {
  border-color: rgba(0,234,255,.17);
  background: rgba(2,17,31,.72);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025);
}
.node-chip {
  padding: 7px 11px;
  border: 1px solid rgba(0,234,255,.12);
  border-radius: 999px;
  color: #58758f;
  font: 9px/1 Consolas, monospace;
  letter-spacing: .6px;
}
.screen-panel {
  position: relative;
  min-height: calc(100vh - 82px);
  padding-top: clamp(38px, 7vw, 82px);
}
.screen-panel::before {
  content: "";
  position: absolute;
  top: 24px;
  left: 50%;
  width: min(1080px, calc(100% - 64px));
  height: calc(100% - 48px);
  pointer-events: none;
  transform: translateX(-50%);
  border-top: 1px solid rgba(0,234,255,.04);
  border-bottom: 1px solid rgba(0,234,255,.025);
}
.panel-card {
  backdrop-filter: blur(18px);
  border-color: rgba(0,234,255,.24);
  background:
    radial-gradient(circle at 84% 0%, rgba(0,234,255,.055), transparent 28%),
    linear-gradient(145deg, rgba(7, 22, 41, .91), rgba(2, 10, 22, .95));
  box-shadow: var(--deep-shadow), inset 0 1px rgba(255,255,255,.04);
}
.settings-card {
  width: min(860px, 100%);
  padding: clamp(27px, 5vw, 49px);
}
.settings-card::after,
.result-card::after,
.signal-card::after {
  content: "";
  position: absolute;
  right: 13px;
  bottom: 12px;
  width: 30px;
  height: 30px;
  pointer-events: none;
  border-right: 1px solid rgba(0,234,255,.23);
  border-bottom: 1px solid rgba(0,234,255,.23);
}
.panel-intro {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 27px;
  padding-bottom: 23px;
  border-bottom: 1px solid rgba(0,234,255,.08);
}
.panel-intro .panel-subtitle { margin: 8px 0 0; }
.step-indicator {
  position: relative;
  width: 78px;
  height: 78px;
  flex: 0 0 auto;
  display: grid;
  place-content: center;
  text-align: center;
  border: 1px solid rgba(0,234,255,.22);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0,234,255,.07), transparent 68%);
  box-shadow: 0 0 28px rgba(0,234,255,.07);
}
.step-indicator::before {
  content: "";
  position: absolute;
  inset: 7px;
  border: 1px dashed rgba(0,245,212,.24);
  border-radius: 50%;
  animation: orbit 13s linear infinite;
}
.step-indicator span {
  color: var(--cyan);
  font: 800 23px/1 Consolas, monospace;
  text-shadow: 0 0 16px rgba(0,234,255,.35);
}
.step-indicator small { margin-top: 5px; color: #58758f; font: 8px/1 Consolas, monospace; letter-spacing: 1px; }
.settings-card .form-grid { counter-reset: nova-field; }
.settings-card .field { position: relative; }
.settings-card .field label {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #adc4dc;
}
.settings-card .field label::before {
  counter-increment: nova-field;
  content: "0" counter(nova-field);
  color: rgba(0,234,255,.58);
  font: 9px/1 Consolas, monospace;
  letter-spacing: .4px;
}
.field input,
.field select {
  height: 49px;
  padding-inline: 15px;
  border-color: rgba(0,234,255,.21);
  border-radius: 8px;
  background:
    linear-gradient(90deg, rgba(0,234,255,.025), transparent 30%),
    rgba(0, 10, 23, .78);
  box-shadow: inset 0 1px 10px rgba(0,0,0,.22);
}
.field input:hover,
.field select:hover { border-color: rgba(0,234,255,.38); }
.field input:focus,
.field select:focus {
  border-color: rgba(0,234,255,.82);
  background-color: rgba(0,18,34,.95);
  box-shadow:
    0 0 0 3px rgba(0,234,255,.065),
    0 0 28px rgba(0,234,255,.1),
    inset 3px 0 0 rgba(0,234,255,.58);
}
.settings-card .primary-btn {
  min-height: 52px;
  margin-top: 21px;
  border-radius: 8px;
  background:
    linear-gradient(110deg, rgba(0,88,112,.96), rgba(0,148,172,.8) 48%, rgba(0,73,94,.96));
  box-shadow: inset 0 1px 0 rgba(218,251,255,.14), 0 12px 34px rgba(0,85,116,.17);
}
.processing-card {
  border-color: rgba(0,234,255,.3);
  background:
    radial-gradient(circle at 50% 0%, rgba(0,234,255,.085), transparent 30%),
    rgba(2, 11, 24, .9);
  box-shadow: 0 32px 100px rgba(0,0,0,.48), 0 0 80px rgba(0,96,145,.16);
}
.processing-card::before,
.processing-card::after {
  content: "";
  position: absolute;
  width: 42px;
  height: 42px;
  pointer-events: none;
}
.processing-card::before { top: 12px; left: 12px; border-top: 1px solid var(--cyan); border-left: 1px solid var(--cyan); }
.processing-card::after { right: 12px; bottom: 12px; border-right: 1px solid var(--cyan2); border-bottom: 1px solid var(--cyan2); }
.progress-track {
  height: 8px;
  padding: 2px;
  border: 1px solid rgba(0,234,255,.15);
  background: rgba(0,4,12,.72);
}
.progress-bar { box-shadow: 0 0 16px rgba(0,234,255,.55); }
.success-heading {
  padding: 18px 22px;
  border: 1px solid rgba(0,245,212,.12);
  border-radius: 12px;
  background: rgba(2, 14, 27, .55);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025);
}
.result-data { border-color: rgba(0,234,255,.12); background: rgba(0,234,255,.1); }
.result-data dt,
.result-data dd { background: rgba(2,12,25,.91); }
.result-data dt {
  color: #afc8df;
  font-weight: 650;
  letter-spacing: .35px;
  text-shadow: 0 0 12px rgba(113, 197, 226, .09);
}
.result-data dd { color: #e5f8ff; text-shadow: 0 0 14px rgba(0,234,255,.07); }
.result-data dd.profit-positive {
  color: #56efa0;
  font-weight: 800;
  text-shadow: 0 0 15px rgba(50, 239, 145, .26);
}
.result-data dd.profit-negative {
  color: #ff6688;
  font-weight: 800;
  text-shadow: 0 0 15px rgba(255, 70, 112, .25);
}
.result-data dd.profit-neutral {
  color: #c6d3df;
  font-weight: 750;
}
.signal-card {
  background:
    radial-gradient(circle at 50% 0%, rgba(244,212,119,.07), transparent 32%),
    linear-gradient(145deg, rgba(7, 22, 41, .94), rgba(2, 10, 22, .97));
}
.time-row {
  border-color: rgba(0,234,255,.13);
  border-radius: 9px;
  background: rgba(2, 12, 25, .68);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025);
}

@keyframes tactical-grid-drift {
  to { background-position: 48px 48px, 48px 48px, 12px 12px, 12px 12px; }
}
@keyframes ambient-core-breathe {
  50% { opacity: .72; filter: saturate(1.18); }
}
@keyframes login-field-rotate { to { transform: rotate(360deg); } }
@keyframes login-card-sweep {
  0%, 38% { left: -45%; opacity: 0; }
  50% { opacity: 1; }
  68%, 100% { left: 125%; opacity: 0; }
}
@keyframes header-scan {
  from { left: -23%; }
  to { left: 100%; }
}

@media (max-width: 620px) {
  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }
  .login-screen::before { inset: 10px; }
  .login-screen::after { width: 118vw; height: 118vw; animation: none; }
  .login-card { width: calc(100% - 26px); padding: 30px 20px 26px; border-radius: 14px; }
  .login-core { width: 76px; height: 76px; margin-bottom: 21px; }
  .login-core::before,
  .brand-mark::after,
  .status-orbit span {
    transform: none;
    animation: mobile-glow-pulse 2.2s ease-in-out infinite;
  }
  .login-card h1 { letter-spacing: 2px; }
  .login-status-row { font-size: 8px; }
  .password-row input,
  .field input,
  .field select {
    font-size: 16px;
  }
  .app-shell::before, .app-shell::after { display: none; }
  .node-chip { display: none; }
  .app-header { min-height: 70px; }
  .screen-panel,
  .processing-screen {
    min-height: calc(100dvh - 70px);
  }
  .screen-panel { padding: 28px 11px; }
  .screen-panel::before { display: none; }
  .panel-intro { margin-bottom: 21px; padding-bottom: 18px; }
  .step-indicator { display: none; }
  .settings-card { padding: 25px 17px; }
  .success-icon,
  .signal-plan {
    animation: mobile-fade-in .32s ease both;
  }
  .signal-plan.primary {
    animation: mobile-fade-in .32s ease both, recommendation-pulse 3s ease-in-out .8s infinite;
  }
}

@keyframes mobile-glow-pulse {
  50% { opacity: .55; }
}
@keyframes mobile-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
