/* Shared component states. Load after page styles. */
.btn,.button {
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  min-height:44px;padding:10px 18px;border:1px solid transparent;border-radius:12px;
  font:600 16px/1.4 var(--font-sans);text-decoration:none;cursor:pointer;
  transition:background .16s,box-shadow .16s,transform .16s;
}
.btn {background:var(--blue);color:#fff;box-shadow:0 4px 12px #1c4ed81c}
.btn:hover,.button.primary:hover {background:#163fb0;color:#fff;text-decoration:none;box-shadow:0 5px 16px #1c4ed82b}
.btn.ghost,.btn.secondary {background:#fff;border-color:#d4e3f5;color:var(--blue);box-shadow:var(--shadow)}
.btn.ghost:hover,.btn.secondary:hover {background:#e6f6ff;border-color:#a8c8ee}
.btn.cyan {background:#e6f6ff;color:var(--navy);border-color:#b9eaff}
.btn.danger {background:var(--bad);color:#fff}
.btn.ai {background:#7040d9;color:#fff}
.btn.small,.button.small {min-height:36px;padding:7px 12px;font-size:14px}
.btn:active,.button:active {transform:translateY(1px)}
.btn:disabled,.button:disabled,.btn[aria-disabled=true],.button[aria-disabled=true] {opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}
:where(a,button,input,textarea,select,summary):focus-visible {outline:3px solid var(--blue);outline-offset:3px}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]),select,textarea {
  width:100%;min-height:46px;padding:11px 13px;border:1px solid #c7d6e8;
  border-radius:12px;background:#fff;color:var(--ink);font:inherit;
  transition:border-color .16s,box-shadow .16s;
}
textarea {resize:vertical;min-height:112px}
input::placeholder,textarea::placeholder {color:#64748b;opacity:1}
input:focus,select:focus,textarea:focus {border-color:var(--blue);box-shadow:var(--focus);outline:none}
input[aria-invalid=true],textarea[aria-invalid=true],select[aria-invalid=true] {border-color:var(--bad)}
input:disabled,select:disabled,textarea:disabled {background:#eef2f7;color:#64748b;cursor:not-allowed}
input[type=checkbox],input[type=radio] {accent-color:var(--blue);width:18px;height:18px;vertical-align:middle}
.field-error {color:var(--bad);font-size:14px;margin:6px 0}
.badge {display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:99px;font-size:14px;line-height:1.4;font-weight:600;background:#edf2f8;color:#526580}
.badge.connected,.badge.completed,.badge.done,.badge.passed {background:#e8f8ef;color:#146c35}
.badge.pending,.badge.planning,.badge.awaiting_approval,.badge.planned,.badge.preparing_workspace,.badge.testing,.badge.blocked {background:#fff4dc;color:#8a5000}
.badge.running,.badge.awaiting_review {background:#e4f2ff;color:#184cb3}
.badge.generating {background:#efe8ff;color:#6538bd}
.badge.error,.badge.failed,.badge.uncertain,.badge.timeout {background:#ffebee;color:#ab2430}
.flash {padding:14px 16px;border-radius:12px;border:1px solid;margin-bottom:16px;overflow-wrap:anywhere}
.flash.success {background:#effaf3;border-color:#bee8cb;color:#146c35}
.flash.error {background:#fff1f2;border-color:#f6c8ce;color:#ab2430}
.flash.warning {background:#fff8e9;border-color:#f0d89d;color:#8a5000}
.flash.info {background:#edf6ff;border-color:#c6dffc;color:#184cb3}
.brand-image {display:block;width:174px;height:auto;object-fit:contain}
.logo .brand-image {width:174px;margin:0;letter-spacing:normal}
.brand:hover,.logo:hover {text-decoration:none}
progress {width:100%;height:8px;border:0;border-radius:99px;overflow:hidden;accent-color:var(--blue);background:#e5eefb}
progress::-webkit-progress-bar {background:#e5eefb;border-radius:99px}
progress::-webkit-progress-value {background:var(--brand-gradient);border-radius:99px}
progress::-moz-progress-bar {background:var(--blue);border-radius:99px}
@media(prefers-reduced-motion:reduce) {*,*::before,*::after {scroll-behavior:auto!important;animation:none!important;transition:none!important}}
