/* Professional polish: glows removed.
 *
 * Loaded last, overriding app.css and brand.css. Kept separate for the same
 * reason brand.css is: app.css is the shared design system copied from the
 * Seefa assistant and should stay re-syncable without a merge.
 *
 * What is being removed and why. The base stylesheet leans on coloured
 * halos - `box-shadow: 0 0 0 Npx color-mix(accent ...)` - to signal focus
 * and state. On a dark UI that reads as a soft glow, which looks lively in a
 * demo and cheap in a tool someone uses for six hours a day. Every one is
 * replaced rather than simply deleted, because each was doing a real job:
 *
 *   focus rings   -> a crisp 2px outline. Sharper, higher contrast, and it
 *                    honours the OS high-contrast setting, which a
 *                    box-shadow does not.
 *   status dots   -> a solid ring at full opacity instead of a faint bloom.
 *   elevation     -> neutral black at low alpha rather than accent-tinted.
 *                    A shadow the colour of the brand reads as light
 *                    leaking out of the element.
 *   infinite pulses -> removed. A control that never stops moving pulls the
 *                    eye away from the numbers, which are the point.
 *
 * Nothing here removes a state signal. Focus, recording and busy are all
 * still visible; they are just stated rather than radiated.
 */

/* ---- focus: outline, not halo ----------------------------------------- */
.composer:focus-within {
  box-shadow: var(--shadow-sm);
  border-color: var(--accent);
}

.auth-card input:focus,
.auth-card input:focus-visible {
  box-shadow: none;
  border-color: var(--accent);
  outline: 2px solid var(--accent);
  outline-offset: -1px;
}

/* One consistent focus treatment for everything keyboard-reachable. */
.btn-icon:focus-visible,
.btn-text:focus-visible,
.planner select:focus-visible,
.planner-go:focus-visible,
.popover > button:focus-visible,
.provider-row:focus-visible,
.suggestion:focus-visible,
.auth-submit:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  box-shadow: none;
}

/* ---- status dot: a ring, not a bloom ---------------------------------- */
.brand-dot,
.brand-dot[data-state="ok"],
.brand-dot[data-state="warn"],
.brand-dot[data-state="down"] {
  box-shadow: none;
  border: 2px solid transparent;
}
.brand-dot[data-state="ok"]   { border-color: color-mix(in srgb, var(--success) 55%, transparent); }
.brand-dot[data-state="warn"] { border-color: color-mix(in srgb, var(--warning) 55%, transparent); }
.brand-dot[data-state="down"] { border-color: color-mix(in srgb, var(--danger) 55%, transparent); }

/* ---- no ambient bloom behind the sign-in card ------------------------- */
.auth-page::before,
.auth-page::after {
  content: none;
  display: none;
}

/* ---- elevation: neutral, not accent-tinted ---------------------------- */
.auth-mark {
  box-shadow: 0 1px 2px rgba(0, 0, 0, .10);
  background: var(--accent);
}

.auth-submit,
.auth-submit:hover:not(:disabled) {
  box-shadow: none;
}

.planner-go {
  box-shadow: none;
}

.btn-send,
.btn-send:hover {
  box-shadow: none;
}

.popover {
  box-shadow: 0 6px 20px rgba(0, 0, 0, .12), 0 1px 3px rgba(0, 0, 0, .08);
}
:root[data-theme="dark"] .popover {
  box-shadow: 0 6px 20px rgba(0, 0, 0, .45), 0 1px 3px rgba(0, 0, 0, .35);
}

/* ---- stillness: nothing loops forever --------------------------------- */
/* A control that never stops moving competes with the numbers beside it.
   Recording state stays obvious through colour and the level meter; the
   busy state stays obvious through the spinner that accompanies real work
   and then stops. */
.btn-mic[data-recording="true"] {
  animation: none;
  background: var(--danger);
  color: #fff;
}

.progress-dot {
  animation: none;
  opacity: .85;
}

.thinking i {
  animation: none;
  opacity: .55;
}

/* ---- calmer motion on arrival ----------------------------------------- */
/* The base uses a springy, slightly overshooting curve. Overshoot suits a
   consumer app; here it makes a table of production quantities wobble as it
   lands. Same duration, no bounce. */
:root {
  --spring: cubic-bezier(.22, .61, .36, 1);
  --spring-bounce: cubic-bezier(.22, .61, .36, 1);
}

/* ---- flatter, quieter surfaces ---------------------------------------- */
.app-bar {
  box-shadow: none;
  border-bottom: 1px solid var(--separator);
}

.result-table-wrap,
.planner {
  box-shadow: none;
}
