 * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      font-family: 'Segoe UI', sans-serif;
      background: #0f172a;
      color: #e2e8f0;
      min-height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .container {
      background: #1e293b;
      border-radius: 12px;
      padding: 2rem;
      max-width: 700px;
      width: 90%;
      box-shadow: 0 4px 24px rgba(0,0,0,0.4);
    }
    h1 {
      font-size: 1.4rem;
      color: #38bdf8;
      margin-bottom: 0.5rem;
    }
    .subtitle {
      color: #94a3b8;
      font-size: 0.9rem;
      margin-bottom: 1.5rem;
    }
    .form-group {
      margin-bottom: 1rem;
    }
    label {
      display: block;
      color: #94a3b8;
      font-size: 0.85rem;
      margin-bottom: 0.4rem;
    }
    input, select {
      width: 100%;
      padding: 0.6rem 0.8rem;
      background: #0f172a;
      border: 1px solid #334155;
      border-radius: 6px;
      color: #e2e8f0;
      font-size: 0.95rem;
    }
    button {
      width: 100%;
      padding: 0.8rem;
      background: #0ea5e9;
      color: white;
      border: none;
      border-radius: 8px;
      font-size: 1rem;
      cursor: pointer;
      margin-top: 1rem;
      font-weight: 600;
      transition: background 0.2s;
    }
    button:hover { background: #0284c7; }
    button:disabled {
      background: #334155;
      cursor: not-allowed;
    }
    .status {
      margin-top: 1rem;
      padding: 0.8rem;
      border-radius: 6px;
      font-size: 0.9rem;
      display: none;
    }
    .status.success {
      background: #064e3b;
      border: 1px solid #10b981;
      color: #6ee7b7;
      display: block;
    }
    .status.error {
      background: #7f1d1d;
      border: 1px solid #ef4444;
      color: #fca5a5;
      display: block;
    }
    .status.loading {
      background: #1e3a5f;
      border: 1px solid #38bdf8;
      color: #7dd3fc;
      display: block;
    }
    .signals {
      margin-top: 1.5rem;
      border-top: 1px solid #334155;
      padding-top: 1rem;
    }
    .signals h3 {
      color: #94a3b8;
      font-size: 0.85rem;
      text-transform: uppercase;
      letter-spacing: 0.05em;
      margin-bottom: 0.8rem;
    }
    .signal-item {
      display: flex;
      justify-content: space-between;
      padding: 0.4rem 0;
      border-bottom: 1px solid #1e293b;
      font-size: 0.85rem;
    }
    .signal-name { color: #94a3b8; }
    .signal-value {
      color: #38bdf8;
      max-width: 60%;
      text-align: right;
      word-break: break-all;
      font-family: monospace;
    }
    .signal-value.collecting { color: #f59e0b; }
    .signal-value.done { color: #10b981; }
    .signal-value.error { color: #ef4444; }
    .hash-display {
      margin-top: 1rem;
      padding: 0.8rem;
      background: #0f172a;
      border-radius: 6px;
      font-family: monospace;
      font-size: 0.8rem;
      color: #38bdf8;
      word-break: break-all;
    }
    canvas { display: none; }