.esp-flasher {
  --esp-bg: #ffffff;
  --esp-surface: #f8f9fb;
  --esp-border: #d8dee8;
  --esp-border-strong: #b8c2d0;
  --esp-text: #1a2332;
  --esp-muted: #5a6578;
  --esp-primary: #0a5c5c;
  --esp-primary-hover: #084848;
  --esp-success: #1a6b42;
  --esp-error: #9b2c2c;
  --esp-warning: #8a6200;
  --esp-terminal: #0f1419;
  --esp-terminal-text: #c8d4dc;
  background: var(--esp-bg);
  border: 1px solid var(--esp-border);
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(26, 35, 50, 0.06);
  color: var(--esp-text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 14px;
  line-height: 1.5;
  margin: 2rem 0;
  overflow: hidden;
  padding: 1.25rem 1.5rem 1.5rem;
}

.esp-flasher__header,
.esp-flasher__controls,
.esp-flasher__meta,
.esp-flasher__status,
.esp-flasher__terminal-header {
  display: flex;
  gap: 1rem;
}

.esp-flasher__header,
.esp-flasher__status,
.esp-flasher__terminal-header {
  align-items: center;
  justify-content: space-between;
}

.esp-flasher__header {
  border-bottom: 1px solid var(--esp-border);
  margin: -1.25rem -1.5rem 0;
  padding: 1rem 1.5rem;
}

.esp-flasher__title {
  font-size: 1.125rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin: 0;
}

.esp-flasher__subtitle {
  color: var(--esp-muted);
  font-size: 0.8125rem;
  margin: 0.2rem 0 0;
}

.esp-flasher__badge {
  background: var(--esp-surface);
  border: 1px solid var(--esp-border);
  border-radius: 4px;
  color: var(--esp-muted);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  padding: 0.35rem 0.55rem;
  text-transform: uppercase;
}

.esp-flasher__controls {
  align-items: end;
  flex-wrap: wrap;
  margin-top: 1.25rem;
}

.esp-flasher__field {
  display: flex;
  flex: 1 1 220px;
  flex-direction: column;
  gap: 0.35rem;
}

.esp-flasher__field label,
.esp-flasher__label {
  color: var(--esp-muted);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.esp-flasher__field--wide {
  flex-basis: 280px;
}

.esp-flasher__select,
.esp-flasher__filename {
  background: var(--esp-bg);
  border: 1px solid var(--esp-border-strong);
  border-radius: 4px;
  color: var(--esp-text);
  font-size: 0.875rem;
  min-height: 38px;
  padding: 0.5rem 0.75rem;
}

.esp-flasher__select:focus {
  border-color: var(--esp-primary);
  box-shadow: 0 0 0 2px rgba(10, 92, 92, 0.15);
  outline: none;
}

.esp-flasher__filename {
  align-items: center;
  background: var(--esp-surface);
  border-color: var(--esp-border);
  display: flex;
  font-family: ui-monospace, "Cascadia Code", "Segoe UI Mono", "Roboto Mono", monospace;
  font-size: 0.8125rem;
  font-weight: 400;
  word-break: break-all;
}

.esp-flasher__actions {
  display: flex;
  gap: 0.5rem;
}

.esp-flasher__button,
.esp-flasher__clear {
  appearance: none;
  border: 0;
  border-radius: 4px;
  cursor: pointer;
  font: inherit;
  font-size: 0.875rem;
  font-weight: 500;
  transition: background-color 0.12s ease, border-color 0.12s ease, opacity 0.12s ease;
}

.esp-flasher__button {
  background: var(--esp-primary);
  color: #fff;
  min-height: 38px;
  min-width: 140px;
  padding: 0.5rem 1.25rem;
}

.esp-flasher__button:hover:not(:disabled) {
  background: var(--esp-primary-hover);
}

.esp-flasher__button--secondary {
  background: var(--esp-bg);
  border: 1px solid var(--esp-border-strong);
  color: var(--esp-text);
}

.esp-flasher__button--secondary:hover:not(:disabled) {
  background: var(--esp-surface);
  border-color: var(--esp-muted);
}

.esp-flasher__clear:hover:not(:disabled) {
  color: #fff;
}

.esp-flasher__button:disabled,
.esp-flasher__clear:disabled {
  cursor: not-allowed;
  opacity: 0.5;
}

.esp-flasher__meta {
  border-top: 1px solid var(--esp-border);
  color: var(--esp-muted);
  flex-wrap: wrap;
  font-size: 0.75rem;
  gap: 1.25rem;
  margin-top: 1rem;
  padding-top: 0.75rem;
}

.esp-flasher__meta code {
  background: var(--esp-surface);
  border: 1px solid var(--esp-border);
  border-radius: 3px;
  color: var(--esp-text);
  font-family: ui-monospace, "Cascadia Code", "Segoe UI Mono", "Roboto Mono", monospace;
  font-size: 0.8125rem;
  padding: 0.1rem 0.35rem;
}

.esp-flasher__status {
  background: var(--esp-surface);
  border: 1px solid var(--esp-border);
  border-radius: 4px;
  margin-top: 0.75rem;
  padding: 0.625rem 0.75rem;
}

.esp-flasher__status-pill {
  background: var(--esp-bg);
  border: 1px solid var(--esp-border);
  border-radius: 3px;
  color: var(--esp-muted);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  min-width: 72px;
  padding: 0.25rem 0.5rem;
  text-align: center;
  text-transform: uppercase;
}

.esp-flasher__status-pill[data-tone="working"] {
  background: #fef9ec;
  border-color: #e8d49a;
  color: var(--esp-warning);
}

.esp-flasher__status-pill[data-tone="success"] {
  background: #edf7f0;
  border-color: #a8d4b8;
  color: var(--esp-success);
}

.esp-flasher__status-pill[data-tone="error"] {
  background: #fdf2f2;
  border-color: #e8b4b4;
  color: var(--esp-error);
}

.esp-flasher__status-text {
  color: var(--esp-text);
  flex: 1 1 auto;
  font-size: 0.8125rem;
  font-weight: 400;
}

.esp-flasher__progress {
  background: var(--esp-surface);
  border: 1px solid var(--esp-border);
  border-radius: 3px;
  height: 6px;
  margin-top: 0.75rem;
  overflow: hidden;
}

.esp-flasher__progress-bar {
  background: var(--esp-primary);
  border-radius: 0;
  height: 100%;
  transition: width 0.2s ease;
  width: 0;
}

.esp-flasher__terminal-wrap {
  background: var(--esp-terminal);
  border: 1px solid #1e2832;
  border-radius: 4px;
  margin-top: 1rem;
  overflow: hidden;
}

.esp-flasher__terminal-header {
  background: #161d24;
  border-bottom: 1px solid #252f3a;
  color: #8a96a3;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  padding: 0.5rem 0.75rem;
  text-transform: uppercase;
}

.esp-flasher__clear {
  background: transparent;
  color: #8a96a3;
  font-size: 0.75rem;
  padding: 0.15rem 0.35rem;
  text-transform: uppercase;
}

.esp-flasher__terminal {
  color: var(--esp-terminal-text);
  font-family: ui-monospace, "Cascadia Code", "Segoe UI Mono", "Roboto Mono", monospace;
  font-size: 0.8125rem;
  height: 280px;
  line-height: 1.55;
  margin: 0;
  overflow: auto;
  padding: 0.75rem;
  white-space: pre-wrap;
  word-break: break-word;
}

@media (max-width: 720px) {
  .esp-flasher {
    border-radius: 6px;
    padding: 1rem;
  }

  .esp-flasher__header {
    margin: -1rem -1rem 0;
    padding: 0.875rem 1rem;
  }

  .esp-flasher__header,
  .esp-flasher__status,
  .esp-flasher__terminal-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .esp-flasher__actions {
    width: 100%;
  }

  .esp-flasher__button {
    flex: 1 1 auto;
  }

  .esp-flasher__terminal {
    height: 220px;
  }
}
