/* ==== ./reset-focus.css ==== */
* {
  -webkit-tap-highlight-color: transparent;
}
a:focus,
button:focus,
input:focus,
textarea:focus,
select:focus,
.button-item:focus,
.loading-trigger:focus,
*:focus-visible,
*:focus {
  outline: none !important;
  box-shadow: none !important;
}

/* ==== ./src/styles.css ==== */
:root {
  --primary: #ff720d;
  --secondary: #8a3d00;
  --tertiary: #8a3d00;
  --bg: #fff4ed;
  --input: #eef0f3;
  --text: #1f2937;
  --muted: #64748b;
  --line: rgba(15, 23, 42, .10);
  --glass: rgba(255, 255, 255, .70);
  --shadow: 0 26px 60px rgba(0, 0, 0, .10);
  --banner-url: none;
  --banner-opacity: .08;
  --admin-primary-dark: color-mix(in srgb, var(--primary) 72%, #000 28%);
  --admin-primary-soft: color-mix(in srgb, var(--primary) 10%, #fff);
  --admin-primary-soft-strong: color-mix(in srgb, var(--primary) 16%, #fff);
  --admin-primary-border: color-mix(in srgb, var(--primary) 38%, transparent);
  --admin-primary-focus: color-mix(in srgb, var(--primary) 18%, transparent);
}

* { box-sizing: border-box; }

html,
body {
  margin: 0;
  padding: 0;
  min-height: 100vh;
}

body {
  font-family: 'Nunito Sans', sans-serif;
  color: var(--text);
  background:
    radial-gradient(1200px 700px at 0% 0%, color-mix(in srgb, var(--primary) 10%, var(--bg)), transparent 62%),
    radial-gradient(900px 520px at 100% 8%, color-mix(in srgb, var(--secondary) 10%, var(--bg)), transparent 64%),
    radial-gradient(1000px 600px at 50% 100%, color-mix(in srgb, var(--tertiary) 7%, var(--bg)), transparent 68%),
    linear-gradient(145deg,
      color-mix(in srgb, var(--bg) 90%, var(--bg) 10%) 0%,
      color-mix(in srgb, var(--bg) 94%, var(--primary) 6%) 38%,
      color-mix(in srgb, var(--bg) 95%, var(--secondary) 5%) 100%);
  overflow-x: hidden;
}

button,
input {
  font: inherit;
}

button {
  border: 0;
  cursor: pointer;
}

/* ==== ./src/styles/public.css ==== */
.page-shell {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 22px;
}

.desktop-container {
  width: min(1180px, 100%);
  display: grid;
  grid-template-columns: minmax(320px, 440px) minmax(0, 1fr);
  gap: 18px;
  align-items: center;
}

.container {
  position: relative;
  background: transparent;
  border: none;
  border-radius: 24px;
  box-shadow: none;
  backdrop-filter: none;
  padding: 22px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  align-self: center;
  animation: cardIn .55s ease-out both;
}

.container img.logo {
  width: auto;
  max-width: 220px;
  max-height: 70px;
  margin: 0 auto 6px;
  display: block;
}

.container form {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}

.input-container {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 52px;
  background: var(--input);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 0 12px;
  transition: .18s ease;
  position: relative;
}

.input-container:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 16%, transparent);
  transform: translateY(-1px);
}

.input-container .icon-email,
.input-container .icon-key {
  color: color-mix(in srgb, var(--text) 60%, white) !important;
  width: 18px;
  flex: 0 0 18px;
  font-size: 16px;
}

/* Ícones SVG dos campos de login (não dependem de webfont) */
.input-container .icon-email,
.input-container .icon-key,
.input-container > .icon-id-card,
.input-container > .icon-shield {
  display: inline-flex;
  flex: 0 0 18px;
  color: color-mix(in srgb, var(--text) 60%, white);
}

/* Olho do toggle de senha: por padrão mostra o olho cortado (oculto), e o olho aberto ao exibir */
.toggle-password .eye-svg {
  display: none;
}
.toggle-password .eye-svg.eye-slash {
  display: inline-block;
}
.toggle-password.is-visible .eye-svg.eye-slash {
  display: none;
}
.toggle-password.is-visible .eye-svg.eye-open {
  display: inline-block;
}

.input-container input {
  border: none;
  background: none;
  outline: none;
  width: 100%;
  font: inherit;
  font-size: 16px;
  color: var(--text);
}

.input-container:has([data-toggle-password]) {
  padding-right: 44px;
}

.input-container:has([data-toggle-password]) .toggle-password {
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  z-index: 2;
}

.input-container:has([data-toggle-password]) .toggle-password:hover,
.input-container:has([data-toggle-password]) .toggle-password:focus-visible {
  color: var(--primary);
  background: color-mix(in srgb, var(--primary) 12%, transparent);
  outline: none;
}

.input-container input::placeholder {
  color: color-mix(in srgb, var(--muted) 84%, white);
}

.input-container > .documento-field-app {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: 0;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 44px;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.input-container > .documento-field-app select,
.input-container > .documento-field-app input {
  min-width: 0;
  width: 100%;
  min-height: 44px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  outline: none;
  transition: color 160ms ease;
}

.input-container > .documento-field-app select {
  max-width: 104px;
  padding: 0 24px 0 10px;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='m1 1 4 4 4-4' fill='none' stroke='%2364758b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  background-size: 10px 6px;
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.input-container > .documento-field-app input {
  padding: 0 10px;
}

.input-container > .documento-field-app select:focus,
.input-container > .documento-field-app input:focus {
  border: 0;
  background-color: transparent;
  box-shadow: none;
}

.input-container.password-error {
  background: #ffe1e1;
  border-color: #ff7f7f;
  box-shadow: 0 0 0 3px rgba(255, 0, 0, .06);
}

.input-container.password-error input,
.input-container.password-error i {
  color: #b91c1c !important;
}

.remember-line {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 42px;
  margin: 0;
  color: var(--text);
  font-weight: 800;
  font-size: 14px;
  cursor: pointer;
  user-select: none;
}

/* Mesmo switch booleano usado pelo admin: trilho primário e indicador deslizante. */
.remember-line input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  width: 36px;
  height: 21px;
  min-width: 36px;
  min-height: 21px;
  flex: 0 0 36px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: var(--admin-switch-off, #cbd5e1);
  box-shadow: none;
  cursor: pointer;
  transition: background 160ms ease;
}

.remember-line input[type="checkbox"]::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 2px 6px rgba(15, 23, 42, .2);
  transition: transform 160ms ease;
}

.remember-line input[type="checkbox"]:checked {
  background: var(--admin-switch-on, var(--primary));
}

.remember-line input[type="checkbox"]:checked::after {
  transform: translateX(15px);
}

.remember-line input[type="checkbox"]:focus-visible {
  outline: 3px solid var(--admin-primary-focus, color-mix(in srgb, var(--primary) 18%, transparent));
  outline-offset: 2px;
}

.container .section-title {
  margin: 0;
  color: var(--text);
  font-size: 30px;
  font-weight: 900;
}

.headline {
  margin: 0 0 2px;
  text-align: center;
}

.headline h1 {
  margin: 0;
  color: var(--text);
  font-size: clamp(24px, 3vw, 34px);
  font-weight: 900;
  letter-spacing: -.02em;
}

.headline p {
  margin: 6px 0 0;
  color: var(--muted);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.35;
}

.public-desc-app {
  margin: -4px 0 2px;
  color: var(--muted);
  font-size: 16px;
  font-weight: 800;
  line-height: 1.35;
}

.terms-line-app {
  display: flex;
  gap: 10px;
  align-items: center;
  color: var(--text) !important;
  font-size: 13px !important;
  line-height: 1.35;
}

.terms-line-app input {
  width: 16px;
  height: 16px;
  min-height: 0;
  flex: 0 0 16px;
}

.button-container {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  margin-top: 2px;
}

.container button[type="submit"],
.register-button,
.contact-button {
  color: #fff;
  min-height: 50px;
  padding: 12px 14px;
  border: none;
  border-radius: 14px;
  cursor: pointer;
  width: 100%;
  position: relative;
  font: inherit;
  font-weight: 800;
  transition: .18s ease;
}

.container button[type="submit"] {
  background: linear-gradient(135deg, color-mix(in srgb, var(--primary) 92%, white 8%), color-mix(in srgb, var(--primary) 74%, var(--secondary) 26%));
  box-shadow: 0 12px 22px color-mix(in srgb, var(--primary) 22%, transparent);
}

.register-button,
.contact-button {
  background: hsl(from var(--tertiary) h s l / 0.15);
  color: var(--text);
}

.container button[type="submit"]:hover,
.register-button:hover,
.contact-button:hover {
  transform: translateY(-1px);
  filter: brightness(1.02);
}

.password-reset-field-app {
  position: relative;
  padding-right: 44px;
}

.password-reset-field-app input {
  padding-right: 0;
}

.toggle-password {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  color: color-mix(in srgb, var(--text) 60%, white);
  font-size: 18px;
}

.loading-icon {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  border: 2px solid rgba(255, 255, 255, .4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spinInline .8s linear infinite;
  display: none;
}

.register-button .loading-icon,
.contact-button .loading-icon {
  border-color: rgba(31, 41, 55, .20);
  border-top-color: var(--text);
}

.error-message {
  color: #b91c1c;
  background: #ffe3e3;
  border: 1px solid #ffb0b0;
  border-radius: 12px;
  font-size: 13px;
  text-align: center;
  padding: 8px 10px;
  min-height: 0;
  display: none;
  font-weight: 700;
}

.error-message:not(:empty) {
  display: block;
}

.meta-actions {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.forgot-password a,
.policy-links a {
  color: var(--secondary);
  text-decoration: none;
  font-weight: 800;
}

.forgot-password a:hover,
.policy-links a:hover {
  text-decoration: underline;
}

.policy-links {
  text-align: center;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.4;
  margin-top: 2px;
}

.desktop-banner {
  position: relative;
  border-radius: 0;
  border: none;
  background: transparent;
  box-shadow: none;
  overflow: hidden;
  min-height: 620px;
  animation: cardIn .65s ease-out .08s both;
}

.desktop-banner::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--banner-url);
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
  opacity: var(--banner-opacity);
  transform: translateY(6px) scale(.985);
  animation: bannerIn .9s ease-out .18s both;
}

#loading-screen {
  display: none;
  justify-content: center;
  align-items: center;
  position: fixed;
  inset: 0;
  background-color: rgba(255, 255, 255, .42);
  backdrop-filter: none;
  z-index: 9999;
}

body.app-loading #app {
  filter: blur(7px);
  transform: scale(1.006);
  transition: filter .18s ease, transform .18s ease;
  pointer-events: none;
}

.spinner {
  border: 6px solid rgba(0, 0, 0, .08);
  border-top: 6px solid var(--primary);
  border-radius: 50%;
  width: 58px;
  height: 58px;
  animation: spin 1s linear infinite;
}

.popup-overlay {
  display: none;
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, .5);
  justify-content: center;
  align-items: center;
  z-index: 10000;
}

.popup-content {
  background: #fff !important;
  padding: 20px;
  max-width: 90%;
  width: 500px;
  border-radius: 16px !important;
  box-shadow: 0 20px 50px rgba(0, 0, 0, .25) !important;
  text-align: center;
}

.popup-content iframe {
  border: none;
  width: 100%;
  height: 400px;
}

.legal-page-app {
  min-height: 100vh;
  background: var(--legal-bg);
  color: #333;
  font-family: Arial, sans-serif;
  padding: 20px;
}

.legal-container-app {
  max-width: 800px;
  width: 100%;
  margin: 0 auto;
  padding: 20px;
}

.legal-logo-app {
  display: block;
  width: 150px;
  max-height: 110px;
  object-fit: contain;
  margin: 0 auto 20px;
}

.legal-container-app h1 {
  margin: 0 0 10px;
  text-align: center;
  font-size: 18px;
  color: var(--legal-primary);
}

.legal-updated-app {
  text-align: center;
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 20px;
}

.legal-content-app h2 {
  font-size: 16px;
  margin: 22px 0 8px;
  color: var(--legal-primary);
}

.legal-content-app p {
  text-align: justify;
  font-size: 14px;
  line-height: 1.6;
  margin: 0 0 10px;
}

.popup-close {
  background-color: var(--primary);
  color: #fff;
  border: none;
  padding: 10px 20px;
  border-radius: 5px;
  cursor: pointer;
  margin-top: 10px;
}

input:-webkit-autofill {
  background-color: transparent !important;
  color: inherit !important;
  box-shadow: 0 0 0 1000px var(--input) inset !important;
  transition: background-color 5000s ease-in-out 0s;
}

input:-webkit-autofill:hover,
input:-webkit-autofill:focus {
  box-shadow: 0 0 0 1000px var(--input) inset !important;
  color: inherit !important;
}

.public-toast {
  position: fixed;
  z-index: 10000;
  left: 50%;
  bottom: 28px;
  width: min(420px, calc(100vw - 32px));
  padding: 14px 18px;
  border-radius: 14px;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
  text-align: center;
  box-shadow: 0 14px 34px rgba(15, 23, 42, .24);
  opacity: 0;
  transform: translate(-50%, 16px);
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease;
}

.public-toast.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
}

.public-toast.is-success {
  background: #198754;
}

.public-toast.is-error {
  background: #c0392b;
}

/* ==== ./src/styles/shell.css ==== */
.shell {
  width: min(1100px, 100%);
  min-height: 100vh;
  margin: 0 auto;
  padding: 22px 22px 96px;
}

.patient-root-shell {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0 0 70px;
  min-height: 100vh;
  background: var(--bg);
  display: flex;
  flex-direction: column;
}

.precall-root-shell {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  width: 100dvw !important;
  max-width: none !important;
  height: 100vh !important;
  height: 100dvh !important;
  min-height: 100vh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: #000 !important;
}

.precall-root-content {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  width: 100dvw !important;
  height: 100vh !important;
  height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  transform: none !important;
  animation: none !important;
}

.root-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 18px;
  background-color: var(--bg);
  box-sizing: border-box;
}

.root-header-actions {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.root-back-btn {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid #eee;
  background: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--primary);
  box-shadow: 0 6px 14px rgba(0,0,0,0.12);
  text-decoration: none;
  padding: 0;
}

.root-back-btn svg {
  width: 18px;
  height: 18px;
}

.root-header-greet {
  display: flex;
  flex-direction: column;
  line-height: 1.1;
}

.root-header-greet span {
  font-size: 10px;
  color: #777;
  font-weight: 600;
}

.root-header-greet strong {
  font-size: 12px;
  color: #555;
  font-weight: 700;
}

.root-logo-header {
  height: 36px;
  width: auto;
  max-width: 150px;
  object-fit: contain;
}

.root-shell-content {
  flex: 1;
}

.root-dock {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  display: flex;
  justify-content: flex-start;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
  background: linear-gradient(135deg, var(--primary) 0%, color-mix(in srgb, var(--primary) 72%, #000 28%) 100%);
  padding: 10px 8px;
  z-index: 100;
  box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.2);
}

.root-dock::-webkit-scrollbar {
  display: none;
}

.root-dock .dock-item {
  text-decoration: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #fff;
  background: transparent !important;
  border: 0;
  padding: 0 4px;
  flex: 1 0 68px;
  min-width: 68px;
}

.root-dock .icon-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: transparent;
}

.root-dock .dock-icon {
  width: 18px;
  height: 18px;
  display: block;
  margin-bottom: 3px;
  background: #fff;
  -webkit-mask: var(--dock-icon) no-repeat center / contain;
  mask: var(--dock-icon) no-repeat center / contain;
}

.root-dock .icon-label {
  font-size: 12px;
  text-align: center;
  color: #fff;
  max-width: 74px;
  line-height: 1.15;
}

.topbar {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}

.ghost {
  width: 48px;
  height: 48px;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 10px 30px rgba(0, 0, 0, .08);
  font-size: 32px;
}

.brand {
  max-width: 150px;
  max-height: 58px;
  object-fit: contain;
}

.profile {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 12px;
  font-weight: 900;
}

.link {
  background: transparent;
  color: var(--primary);
  font-weight: 900;
}

.hero {
  padding: 34px;
  border-radius: 36px;
  color: #fff;
  background:
    radial-gradient(circle at 90% 20%, rgba(255, 255, 255, .24), transparent 18rem),
    linear-gradient(135deg, var(--primary), var(--secondary));
  box-shadow: var(--shadow);
}

.hero h1 {
  font-size: clamp(34px, 7vw, 68px);
  line-height: .95;
  margin: 0 0 10px;
}

.hero p,
.hero span {
  opacity: .92;
  font-weight: 800;
}

.grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin: 22px 0;
}

.action,
.card {
  padding: 22px;
  border-radius: 26px;
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 16px 44px rgba(38, 30, 24, .08);
  text-align: left;
}

.action strong {
  display: block;
  font-size: 20px;
  margin-bottom: 8px;
}

.action small,
.muted {
  color: var(--muted);
  font-weight: 700;
}

.action.disabled {
  opacity: .48;
  cursor: not-allowed;
}

.card {
  margin: 16px 0;
}

.details {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 10px 18px;
}

.details dt {
  color: var(--muted);
  font-weight: 900;
}

.details dd {
  margin: 0;
  font-weight: 800;
}

.avatar-choice {
  display: grid;
  justify-items: center;
  gap: 12px;
  width: fit-content;
}

.avatar {
  width: 92px;
  height: 92px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  font-size: 42px;
  font-weight: 900;
}

.profile-picker-app {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 24px;
  margin-top: 14px;
}

.profile-choice-app {
  display: grid;
  justify-items: center;
  gap: 8px;
  width: 132px;
  border: 0;
  background: transparent;
  color: #1f2937;
  cursor: pointer;
  font-family: inherit;
  font-weight: 900;
  text-align: center;
}

.profile-choice-photo {
  width: 92px;
  height: 92px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: #fff;
  border: 4px solid var(--primary);
  box-shadow: 0 14px 30px rgba(0,0,0,.12);
  overflow: hidden;
}

.profile-choice-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.profile-choice-app small {
  color: #64748b;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.dock:not(.root-dock) {
  position: fixed;
  left: 50%;
  bottom: 16px;
  transform: translateX(-50%);
  width: min(680px, calc(100% - 26px));
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
  gap: 8px;
  padding: 10px;
  border-radius: 24px;
  background: rgba(255, 255, 255, .86);
  box-shadow: var(--shadow);
  backdrop-filter: blur(16px);
}

.dock:not(.root-dock) button {
  padding: 12px 8px;
  border-radius: 16px;
  background: transparent;
  color: var(--text);
  font-weight: 900;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 70px;
  font-size: 12px;
}

.dock:not(.root-dock) button:hover {
  background: color-mix(in srgb, var(--primary) 12%, white);
}

.dock:not(.root-dock) .dock-icon {
  width: 22px;
  height: 22px;
  display: block;
  background: var(--primary);
  -webkit-mask: var(--dock-icon) no-repeat center / contain;
  mask: var(--dock-icon) no-repeat center / contain;
}

/* ==== ./src/styles/home.css ==== */
.enter {
  /* Acessibilidade e estabilidade: o conteúdo nasce visível. Antes ele nascia
     com opacity:0 e só aparecia ao terminar uma animação; perfis com
     prefers-reduced-motion desativam animações e ficavam numa tela branca. */
  opacity: 1;
  transform: none;
  animation: homeFadeUp .5s ease both;
}

@keyframes homeFadeUp {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

.patient-home {
  min-height: 100vh;
  background: var(--bg);
  display: flex;
  flex-direction: column;
}

.patient-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 18px 6px;
  background: transparent;
}

.patient-header-actions {
  display: flex;
  align-items: center;
}

.home-logo {
  height: 36px;
  width: auto;
  max-width: 180px;
  object-fit: contain;
}

#btnChangeAccount {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  margin-right: 2px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: #636363;
  color: #fff;
  cursor: pointer;
  box-shadow: 0 6px 16px rgba(0,0,0,.12);
  transition: background 200ms, border-color 200ms, color 200ms;
}

#btnChangeAccount img {
  width: 20px;
  height: 20px;
  display: block;
  object-fit: contain;
  filter: brightness(0) invert(1);
  transition: filter 200ms;
}

#btnChangeAccount:hover,
#btnChangeAccount:focus-visible {
  background: transparent;
  border-color: #636363;
  color: #636363;
  outline: none;
}

#btnChangeAccount:hover img,
#btnChangeAccount:focus-visible img {
  filter: brightness(0);
}

.logout-button {
  display: flex;
  align-items: center;
  background: #e74c3c;
  color: #fff;
  padding: 8px 12px;
  margin-left: 2px;
  transition: 200ms;
  border-radius: 10px;
  cursor: pointer;
  border: solid 1px transparent;
  box-shadow: 0 6px 16px rgba(0,0,0,.12);
  font-weight: 800;
}

.logout-button:hover {
  background: transparent;
  border-color: #e74c3c;
  color: #636363;
}

.logout-button:hover svg {
  fill: #636363;
}

.logout-button span {
  margin-right: 5px;
}

.logout-button svg {
  width: 18px;
  height: 18px;
  fill: #fff;
  margin-left: 5px;
}

h3.page-title {
  font-size: 20px;
  color: var(--primary);
  text-align: center;
  margin: 0 0 10px;
}

.patient-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 20px 72px;
  box-sizing: border-box;
  max-width: 900px;
  width: 100%;
  margin: 0 auto;
}

@media (min-width: 768px) {
  .patient-container {
    width: 50vw;
    max-width: none;
  }
}

.patient-card {
  background: linear-gradient(135deg, var(--primary) 0%, color-mix(in srgb, var(--primary) 72%, #000 28%) 100%);
  border-radius: 18px;
  padding: 16px;
  margin-bottom: 14px;
  color: #fff;
  width: 100%;
  box-sizing: border-box;
  box-shadow: 0 10px 24px rgba(0,0,0,.12);
}

.tertiary-background {
  background: transparent;
  padding: 0;
  border-radius: 0;
  display: flex;
  align-items: center;
  margin-bottom: 10px;
}

.profile-pic {
  width: 68px;
  height: 68px;
  aspect-ratio: 1 / 1;
  flex: 0 0 68px;
  border-radius: 50%;
  overflow: hidden;
  margin-right: 15px;
  background: #ccc;
}

.profile-pic img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.welcome-text {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.welcome-text h1 {
  font-size: 15px;
  font-weight: 800;
  margin: 0;
  color: #fff;
}

.welcome-text h2 {
  font-size: 12px;
  font-weight: 400;
  margin: 0;
  color: #fff;
}

.welcome-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}

.status-badge {
  background: rgba(255,255,255,.22);
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  color: #fff;
  white-space: nowrap;
}

.status-badge::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--status-color, #00c853);
  margin-right: 6px;
}

.plan-badge {
  background: rgba(255,255,255,.22);
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  color: #fff;
  display: inline-flex;
  width: fit-content;
}

.main-buttons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
}

.button-item {
  width: 100%;
  height: 110px;
  border-radius: 16px;
  margin: 0;
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  box-shadow: 0 10px 20px rgba(0,0,0,.08);
}

.button-item a {
  text-decoration: none;
  height: 100%;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-weight: 700;
}

.button-item .icon {
  width: 40px;
  height: 40px;
  margin-bottom: 10px;
  -webkit-mask: var(--icon-url) no-repeat center / contain;
  mask: var(--icon-url) no-repeat center / contain;
}

.bottom-solid-bg {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  height: 120px;
  background: linear-gradient(to bottom, rgba(255,255,255,0) 0%, var(--bg) 34%, var(--bg) 100%);
  z-index: 140;
  pointer-events: none;
}

.floating-actions {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 38px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 0 18px;
  pointer-events: none;
  z-index: 200;
}

.support-container,
.call-container {
  width: calc((100% - 12px) / 2);
  display: flex;
  align-items: center;
  padding: 0;
  box-sizing: border-box;
  pointer-events: auto;
}

.call-container {
  justify-content: flex-start;
}

.support-container {
  justify-content: flex-end;
}

.support-fixed {
  position: fixed;
  right: 18px;
  bottom: 38px;
  z-index: 200;
  width: auto;
}

.support-button,
.call-button {
  background: var(--primary);
  color: #fff;
  border-radius: 999px;
  font-size: 14px;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  padding: 0 14px;
  width: 100%;
  height: 56px;
  text-decoration: none;
  margin-bottom: 0;
  box-shadow: none;
  font-weight: 800;
}

.support-button--link {
  width: 56px;
  min-width: 56px;
  padding: 0;
  border-radius: 50%;
}

.support-button.support-button--link span {
  display: none !important;
}

.call-button {
  background: #00ba46;
}

.support-button img,
.call-button img {
  width: 20px;
  filter: invert(1);
  opacity: .95;
}

.wave-bottom {
  position: fixed;
  left: 0;
  transform: none;
  width: 100%;
  bottom: 6px;
  height: auto;
  background: transparent;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 0;
  padding: 0;
  box-sizing: border-box;
  z-index: 150;
}

.patient-home .policy-links {
  position: relative;
  font-size: 12px;
  color: var(--primary);
  left: 0;
  padding: 4px 10px;
  margin: 0;
  text-align: center;
  white-space: normal;
  background: var(--bg);
  border-radius: 12px;
}

.patient-home .policy-links a {
  color: var(--primary);
  font-weight: bold;
  margin: 0 5px;
  text-decoration: none;
}

/* ==== ./src/styles/patient/base.css ==== */
.page-section {
  width: min(900px, calc(100% - 28px));
  margin: 0 auto;
}

.page-title-app {
  color: var(--primary);
  font-size: 26px;
  margin: 0 0 16px;
}

.root-page-title {
  font-size: 22px;
  text-align: center;
  color: var(--primary);
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}

.assinatura-extra-app {
  margin: 12px 0;
}

.assinatura-extra-app.hidden {
  display: none;
}

.assinatura-extra-app label {
  color: #1f2937;
  display: grid;
  font-size: 13px;
  font-weight: 900;
  gap: 6px;
}

.assinatura-extra-app select {
  background: #d9d9d9;
  border: 0;
  border-radius: 10px;
  color: #1f2937;
  font-weight: 800;
  min-height: 44px;
  padding: 0 14px;
}

.assinatura-extra-app small {
  color: #64748b;
  display: block;
  font-size: 12px;
  font-weight: 800;
  margin-top: 6px;
}


/* ==== ./src/styles/patient/shared.css ==== */
.agenda-list,
.dependentes-list {
  display: grid;
  gap: 12px;
}

.root-simple-list {
  display: block;
}

.empty-card {
  padding: 15px;
  text-align: left;
  font-size: 14px;
  font-weight: 800;
  text-align: center;
}


.start-card {
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(15,23,42,.08);
  border-radius: 22px;
  box-shadow: 0 18px 46px rgba(0,0,0,.08);
  width: 100%;
  padding: 24px;
  text-align: center;
  max-width: 520px;
}

.start-card-icon {
  width: 64px;
  height: 64px;
  object-fit: contain;
  margin-bottom: 10px;
}

.start-card h1 {
  margin: 0 0 10px;
  color: var(--primary);
}

.start-card p {
  color: #475569;
  font-weight: 800;
  line-height: 1.45;
}

.checkout-summary-app {
  display: grid;
  gap: 8px;
  width: 100%;
}

.checkout-summary-app div {
  background: #f3f4f6;
  border-radius: 12px;
  padding: 10px 12px;
  text-align: left;
}

.checkout-summary-app span {
  color: #64748b;
  display: block;
  font-size: 11px;
  font-weight: 900;
  margin-bottom: 3px;
  text-transform: uppercase;
}

.checkout-summary-app strong {
  color: #1f2937;
  font-size: 14px;
}

.reservation-note-app {
  background: rgba(255, 122, 0, .12);
  border: 1px solid rgba(255, 122, 0, .32);
  border-radius: 14px;
  color: var(--text);
  display: grid;
  gap: 4px;
  padding: 12px 14px;
  text-align: left;
  width: 100%;
}

.reservation-note-app span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
}


/* ==== ./src/styles/patient/checkout.css ==== */
.pix-box-app {
  display: grid;
  gap: 10px;
  justify-items: center;
  width: 100%;
}

.pix-box-app.hidden {
  display: none;
}

.pix-box-app img {
  background: #fff;
  border-radius: 12px;
  max-width: 210px;
  padding: 8px;
  width: 100%;
}

.pix-box-app textarea {
  background: #f3f4f6;
  border: 0;
  border-radius: 12px;
  color: #1f2937;
  font-family: inherit;
  font-size: 12px;
  font-weight: 800;
  min-height: 78px;
  padding: 10px;
  resize: none;
  width: 100%;
}

.pix-box-app p {
  color: #64748b;
  font-weight: 900;
}

.card-box-app {
  display: grid;
  gap: 8px;
  text-align: left;
  width: 100%;
}

.card-box-app.hidden {
  display: none;
}

.card-box-app label {
  color: #334155;
  font-size: 12px;
  font-weight: 900;
}

.card-box-app input {
  background: #d9d9d9;
  border: 0;
  border-radius: 10px;
  color: #1f2937;
  font-family: inherit;
  font-size: 14px;
  font-weight: 800;
  min-height: 42px;
  padding: 0 12px;
  width: 100%;
}

.card-grid-app {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(3, 1fr);
}

.card-grid-app.two {
  grid-template-columns: 2fr 1fr;
}

.btn-muted {
  margin-top: 16px;
  background: #e5e7eb;
  color: var(--text);
  border-radius: 12px;
  padding: 12px 22px;
  font-weight: 900;
}


.input {
  width: 100%;
  min-height: 46px;
  border: none;
  border-radius: 12px;
  background: var(--input);
  color: var(--text);
  font-family: inherit;
  font-size: 15px;
  font-weight: 800;
  margin: 8px 0;
  padding: 0 14px;
  text-align: center;
}

.submit-btn-app,
.password-btn-app {
  min-height: 46px;
  border-radius: 12px;
  color: #fff;
  font-weight: 900;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
}

.password-btn-app {
  background: #303030;
}

.secondary-action-app {
  background: var(--tertiary);
}

.upload-info-app {
  min-height: 20px;
  color: #334155;
  font-size: 13px;
  font-weight: 800;
  margin: 4px 0 10px;
}

.form-message {
  display: none;
  border-radius: 10px;
  padding: 9px 11px;
  font-weight: 800;
  font-size: 13px;
}

.form-message:not(:empty) {
  display: block;
}

.form-message.success {
  color: #166534;
  background: #dcfce7;
}

.form-message.error {
  color: #991b1b;
  background: #fee2e2;
}

.no-autolink,
*[class^="no-autolink"] {
  color: inherit !important;
  text-decoration: none !important;
  pointer-events: none;
}


/* ==== ./src/styles/patient/states.css ==== */
.state-page-app {
  min-height: 100vh;
  background: var(--state-bg);
  color: #111;
  font-family: Arial, sans-serif;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 70px 20px;
  text-align: center;
}

.state-bar-app {
  position: fixed;
  left: 0;
  width: 100%;
  height: 50px;
  background: var(--state-primary);
}

.state-bar-top-app {
  top: 0;
}

.state-bar-bottom-app {
  bottom: 0;
}

.state-content-app {
  max-width: 430px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}

.state-icon-app {
  width: 120px;
  height: auto;
}

.state-content-app h1 {
  margin: 0;
  font-size: 22px;
  font-weight: 700;
}

.state-content-app p,
.state-content-app span {
  margin: 0;
  font-size: 16px;
  line-height: 1.45;
}

.state-button-app {
  margin-top: 8px;
  border: 0;
  border-radius: 8px;
  padding: 12px 16px;
  background: var(--state-primary);
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}

.state-spinner-app {
  margin-top: 10px;
}

.state-page-app.waiting-state-app {
  background: var(--state-bg);
  color: #000;
}

.state-page-app.waiting-state-app .state-content-app {
  gap: 12px;
}

.state-page-app.waiting-state-app .state-content-app h1 {
  color: #000;
  font-size: 24px;
  font-weight: 400;
  line-height: 1.25;
  white-space: pre-line;
}

.state-page-app.waiting-state-app .state-content-app p,
.state-page-app.waiting-state-app .state-content-app span {
  color: #333;
  font-size: 14px;
  line-height: 1.35;
  white-space: pre-line;
}

.state-page-app.waiting-state-app .state-queue-app {
  color: #000;
  font-size: 20px;
  font-weight: 700;
}

.state-page-app.waiting-state-app .state-spinner-app {
  width: 34px;
  height: 34px;
  border: 4px solid rgba(0, 0, 0, .12);
  border-top-color: var(--state-primary);
  border-radius: 999px;
}


/* ==== ./src/styles/patient/assinatura.css ==== */
.assinatura-page-app {
  min-height: calc(100vh - 90px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 22px;
}

.assinatura-card-app {
  width: min(420px, 100%);
  background: #ffffff;
  border-radius: 18px;
  box-shadow: 0 16px 45px rgba(0, 0, 0, 0.10);
  padding: 26px;
  text-align: center;
}

.assinatura-logo-app {
  max-width: 160px;
  max-height: 78px;
  object-fit: contain;
  margin-bottom: 12px;
}

.assinatura-card-app h1 {
  color: var(--text);
  font-size: 1.55rem;
  margin: 0 0 10px;
}

.assinatura-card-app p {
  color: #4f5b6b;
  font-size: 0.95rem;
  line-height: 1.45;
  margin: 0 0 16px;
}

.assinatura-plan-app {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 112, 14, 0.12);
  border-radius: 999px;
  color: var(--primary);
  font-weight: 800;
  padding: 8px 14px;
  margin-bottom: 18px;
}

.assinatura-products-app {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin: 4px 0 14px;
  text-align: left;
}

.assinatura-product-app {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;
  border: 1px solid #d9dde5;
  border-radius: 14px;
  background: #f8fafc;
  padding: 12px;
  cursor: pointer;
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.assinatura-product-app.selected {
  border-color: var(--primary);
  box-shadow: 0 10px 24px rgba(255, 112, 14, 0.14);
  transform: translateY(-1px);
}

.assinatura-product-app input {
  accent-color: var(--primary);
}

.assinatura-product-app span {
  min-width: 0;
}

.assinatura-product-app strong {
  display: block;
  color: var(--text);
  font-size: 0.94rem;
  line-height: 1.2;
}

.assinatura-product-app small {
  display: block;
  color: #6b7280;
  font-size: 0.74rem;
  margin-top: 3px;
}

.assinatura-product-app b {
  color: var(--primary);
  font-size: 0.96rem;
  white-space: nowrap;
}

.assinatura-summary-app {
  text-align: left;
}

.assinatura-coupon-app {
  margin: 12px 0;
  text-align: left;
}

.assinatura-coupon-app label {
  color: #1f2937;
  display: block;
  font-size: 13px;
  font-weight: 900;
  margin-bottom: 6px;
}

.assinatura-coupon-row {
  display: flex;
  gap: 8px;
}

.assinatura-coupon-row input {
  background: #d9d9d9;
  border: 0;
  border-radius: 10px;
  color: #1f2937;
  font-weight: 800;
  min-height: 44px;
  min-width: 0;
  padding: 0 14px;
  flex: 1;
}

.assinatura-coupon-row .submit-btn-app {
  white-space: nowrap;
}

.assinatura-coupon-app small {
  color: #64748b;
  display: block;
  font-size: 12px;
  font-weight: 800;
  margin-top: 6px;
}

.assinatura-back-app {
  margin-top: 12px;
}

@media (max-width: 640px) {
}

/* Etapas (1. Cadastro → 2. Plano e Pagamento) — fluxo de assinatura do visitante */
.assinatura-steps-app {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin: 0 0 14px;
}

.step-pill {
  display: inline-flex;
  align-items: center;
  font-size: 0.8rem;
  font-weight: 700;
  color: #8a94a6;
  background: #eef1f6;
  border-radius: 999px;
  padding: 5px 12px;
}

.step-pill.active {
  color: #ffffff;
  background: var(--primary, #ff720d);
}

.assinatura-guest-login-app {
  text-align: center;
  margin: -6px 0 14px;
  font-size: 0.9rem;
  color: #4f5b6b;
}

.assinatura-guest-login-app a {
  color: var(--primary, #ff720d);
  font-weight: 700;
}

.assinatura-only-register-box-app {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.assinatura-only-register-box-app p {
  color: #4f5b6b;
  font-size: 0.9rem;
  line-height: 1.4;
  margin: 0;
}

/* ==== ./src/styles/patient/avaliacao.css ==== */
.avaliacao-page-app {
  width: 90%;
  max-width: 400px;
  min-height: calc(100vh - 150px);
  display: block;
  padding: 0 0 92px;
  margin: 80px auto 0;
  text-align: center;
}

.avaliacao-card-app {
  position: relative;
  width: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: visible;
}

.avaliacao-card-app::before,
.avaliacao-icon-app,
.avaliacao-heading-app p,
.avaliacao-comment-label,
.avaliacao-back-app {
  display: none;
}

.avaliacao-heading-app {
  display: block;
  margin-bottom: 10px;
  text-align: center;
}

.avaliacao-heading-app h1 {
  margin: 0 0 10px;
  color: var(--primary);
  font-size: 20px;
  font-weight: 800;
}

.avaliacao-form-app {
  display: grid;
  gap: 0;
}

.avaliacao-form-app textarea {
  width: 100%;
  height: 80px;
  min-height: 80px;
  margin-bottom: 6px;
  padding: 10px;
  border: 2px solid #ccc;
  border-radius: 5px;
  background: var(--input);
  color: var(--text);
  font-size: 14px;
  font-family: 'Nunito Sans', sans-serif;
  box-sizing: border-box;
  resize: none;
  outline: none;
  transition: border .3s ease;
}

.avaliacao-form-app textarea:focus {
  border-color: var(--primary);
}

.avaliacao-rating-group {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  text-align: center;
}

.avaliacao-rating-group legend {
  width: 100%;
  margin-bottom: 4px;
  color: var(--secondary);
  font-size: 16px;
  font-weight: 800;
  line-height: 1.2;
  text-align: center;
}

.avaliacao-stars {
  display: inline-flex;
  flex-direction: row;
  justify-content: center;
  gap: 0;
  margin-bottom: 10px;
  cursor: pointer;
}

.avaliacao-stars input {
  display: none;
}

.avaliacao-stars label {
  display: inline-block;
  margin: 0 2px;
  color: var(--secondary);
  cursor: pointer;
  font-size: 35px;
  line-height: 1;
  transition: color .2s ease;
}

.avaliacao-stars label.is-active {
  color: var(--primary);
}

.avaliacao-stars input:focus-visible + label {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.avaliacao-form-actions {
  display: grid;
  gap: 0;
  margin-top: 0;
}

.avaliacao-submit-app {
  width: 100%;
  min-height: auto;
  margin: 0;
  padding: 10px 20px;
  border: 0;
  border-radius: 5px;
  background: var(--primary);
  color: #fff;
  cursor: pointer;
  justify-content: center;
  font-size: 16px;
}

.avaliacao-success-popup[hidden] {
  display: none !important;
}

.avaliacao-success-popup {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: grid;
  place-items: center;
  padding: 24px;
  background: var(--bg);
  color: var(--secondary);
  text-align: center;
}

.avaliacao-success-content {
  display: grid;
  justify-items: center;
  gap: 0;
  animation: avaliacao-success-enter .28s ease both;
}

.avaliacao-success-icon {
  width: 80px;
  height: 80px;
  margin-bottom: 20px;
  object-fit: contain;
}

.avaliacao-success-content strong {
  font-size: 24px;
  line-height: 1.2;
}

@keyframes avaliacao-success-enter {
  from { opacity: 0; transform: scale(.94) translateY(8px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

@media (max-width: 480px) {
  .avaliacao-page-app {
    width: 90%;
    padding-inline: 0;
  }
}

/* ==== ./src/styles/patient/dependentes.css ==== */
.dependentes-list {
  display: grid;
  gap: 12px;
}

.dependentes-list.root-simple-list {
  display: block;
}

.dependentes-container-app {
  flex: 1;
  padding: 20px;
  box-sizing: border-box;
  margin-bottom: 70px;
}

.dependente-item-app {
  font-size: 14px;
  background: var(--input);
  border-radius: 8px;
  padding: 15px;
  margin-bottom: 10px;
  text-align: center;
  box-shadow: none;
  border: 0;
  display: block;
}

.dependente-item-app small {
  color: #64748b;
  font-size: 12px;
  font-weight: 800;
}

.add-dependente-button-app {
  font-size: 14px;
  background: var(--primary);
  color: #fff;
  border: none;
  padding: 15px;
  border-radius: 8px;
  text-decoration: none;
  display: block;
  text-align: center;
  font-weight: bold;
  margin-top: 14px;
}

/* ==== ./src/styles/patient/profile.css ==== */
.root-profile-edit {
  flex: 1;
  width: 100%;
  max-width: 400px;
  margin: auto;
  text-align: center;
  padding: 20px 0;
  box-sizing: border-box;
  margin-bottom: 70px;
}

.profile-picture-app {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  border: 4px solid var(--primary);
  overflow: hidden;
  cursor: pointer;
  margin: 0 auto 20px;
  background: var(--input);
}

.profile-picture-app img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.profile-edit {
  padding-bottom: 24px;
}

.profile-form {
  display: grid;
  gap: 0;
  padding: 0;
  margin-bottom: 16px;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.profile-form label {
  font-size: 14px;
  font-weight: bold;
  display: block;
  margin-bottom: 5px;
  text-align: left;
  padding-left: 35px;
  color: var(--secondary);
}

.profile-form input,
.profile-form select {
  width: calc(100% - 40px);
  min-height: 0;
  padding: 10px 15px;
  margin: 0 auto 10px;
  background: var(--input);
  border: 1px solid #ccc;
  border-radius: 5px;
  font-size: 14px;
  font-family: 'Nunito Sans', sans-serif;
  box-sizing: border-box;
  color: var(--text);
  outline: none;
  font-weight: 400;
}

.profile-form .readonly-input {
  background: #e9e9e9;
  cursor: not-allowed;
}

.profile-form input:focus,
.profile-form select:focus {
  border-color: var(--primary);
  box-shadow: none;
}

.profile-form .phone-field-app {
  width: calc(100% - 40px);
  margin: 0 auto 10px;
  min-height: 0;
  border-radius: 5px;
  border: 1px solid #ccc;
  padding-left: 40px;
}

.profile-form .phone-field-app select,
.profile-form .phone-field-app input {
  min-height: 38px;
  margin: 0;
  width: 100%;
  border: 0 !important;
}

.profile-form--password h2 {
  margin: 0 0 4px;
  font-size: 18px;
}

.profile-form > .submit-btn-app,
.profile-form > .password-btn-app {
  min-height: 0;
  border-radius: 5px;
  font-weight: 800;
  background: var(--primary);
  padding: 10px 20px;
  font-size: 16px;
  width: calc(100% - 40px);
  box-sizing: border-box;
  margin: 0 auto 10px;
}

.profile-form > .password-btn-app {
  background: var(--secondary);
  margin-top: 10px;
}

.profile-password-open {
  display: block;
  border: 0;
  color: #fff;
  cursor: pointer;
}

.profile-password-modal[hidden] {
  display: none !important;
}

.profile-password-modal {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(0, 0, 0, .6);
}

.profile-password-modal-content {
  position: relative;
  width: min(100%, 400px);
  padding: 22px 18px 18px;
  border-radius: 8px;
  background: #fff;
  text-align: center;
  box-shadow: 0 18px 50px rgba(0, 0, 0, .24);
}

.profile-password-modal-content h2 {
  margin: 0 0 8px;
  color: var(--secondary);
}

.profile-password-hint {
  margin: 0 0 12px;
  color: var(--secondary);
  font-size: 14px;
  line-height: 1.35;
}

.profile-password-modal-close {
  position: absolute;
  top: 7px;
  right: 12px;
  border: 0;
  background: transparent;
  color: var(--secondary);
  cursor: pointer;
  font-size: 28px;
  line-height: 1;
}

.profile-password-modal .profile-form {
  margin: 0;
}

.profile-password-modal .profile-form input,
.profile-password-modal .profile-form > .password-btn-app {
  width: 100%;
}

/* ==== ./src/styles/patient/agenda.css ==== */
.agenda-container-app {
  width: 100%;
  max-width: 1100px;
  margin: 0 auto 70px;
  padding: 18px;
  flex: 1;
}

.root-agenda-title {
  font-size: 22px;
  color: var(--primary);
  margin: 4px 0 14px;
}

.root-tabs-app {
  display: flex;
  gap: 8px;
  margin: 0 0 14px;
}

.tab-button-app {
  border: 1px solid #d1d5db;
  border-radius: 999px;
  background: #eef2f7;
  color: #1f2937;
  font-size: 13px;
  font-weight: 800;
  padding: 10px 16px;
}

.tab-button-app.active {
  border-color: transparent;
  background: linear-gradient(135deg, var(--primary), var(--tertiary));
  color: #fff;
  box-shadow: 0 8px 18px color-mix(in srgb, var(--primary) 22%, transparent);
}

.agenda-panel-app.hidden {
  display: none;
}

.agenda-search-app {
  background: #fff;
  border: 1px solid #e6e6e6;
  border-radius: 14px;
  display: grid;
  gap: 10px;
  grid-template-columns: minmax(190px, 1.2fr) minmax(180px, .9fr) minmax(150px, 210px) auto;
  margin-bottom: 14px;
  padding: 12px;
}

.agenda-search-app select,
.agenda-search-app input {
  background: #d9d9d9;
  border: 0;
  border-radius: 10px;
  color: #1f2937;
  font-weight: 800;
  min-height: 44px;
  padding: 0 14px;
}

.agenda-horarios-app {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
}

.agenda-month-app {
  background: #fff;
  border: 1px solid #e6e6e6;
  border-radius: 14px;
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
  padding: 12px;
}

.agenda-month-header {
  align-items: center;
  color: #1f2937;
  display: flex;
  gap: 10px;
  justify-content: space-between;
}

.agenda-month-header span {
  color: #64748b;
  font-size: 12px;
  font-weight: 800;
}

/* Navegacao entre meses, como no agenda.php antigo: sem isso quem tem a proxima
   vaga so no mes seguinte precisa adivinhar uma data no calendario. */
.agenda-month-nav {
  align-items: center;
  display: inline-flex;
  gap: 8px;
}

.agenda-month-nav button {
  background: #f1f5f9;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  color: #334155;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  min-height: 28px;
  min-width: 28px;
  padding: 0;
}

.agenda-month-nav button:hover {
  background: #e2e8f0;
}

.agenda-month-days {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.agenda-month-day {
  align-items: center;
  background: #dcfce7;
  border: 1px solid #86efac;
  border-radius: 10px;
  color: #166534;
  display: inline-flex;
  flex-direction: column;
  font-weight: 900;
  gap: 2px;
  min-height: 54px;
  min-width: 64px;
  padding: 7px 10px;
}

.agenda-month-day.active,
.agenda-month-day:hover {
  background: linear-gradient(135deg, var(--primary), var(--tertiary));
  border-color: transparent;
  color: #fff;
}

.agenda-month-day small {
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
}

.agenda-month-empty {
  color: #64748b;
  font-size: 13px;
  font-weight: 800;
}

.agenda-slot-app {
  align-items: flex-start;
  background: #fff;
  border: 1px solid #e6e6e6;
  border-radius: 14px;
  color: #1f2937;
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-height: 72px;
  padding: 12px;
  text-align: left;
}

.agenda-slot-app strong {
  color: var(--primary);
  font-size: 18px;
}

.agenda-slot-app span {
  color: #64748b;
  font-size: 12px;
  font-weight: 800;
}

.agenda-rqe-badge {
  align-self: flex-start;
  background: #dcfce7;
  border-radius: 999px;
  color: #15803d;
  font-size: 11px;
  font-weight: 900;
  padding: 3px 8px;
}

.agenda-slot-app:hover {
  border-color: var(--primary);
  box-shadow: 0 8px 18px rgba(0,0,0,.08);
}

.agenda-list {
  display: grid;
  gap: 12px;
}

.root-agenda-list {
  gap: 10px;
}

.agenda-item {
  border: 1px solid #e6e6e6;
  border-radius: 10px;
  padding: 12px;
  background: #fff;
  display: grid;
  gap: 6px;
  box-shadow: none;
}

.agenda-left,
.agenda-right {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.agenda-left strong {
  color: var(--text);
}

.agenda-left span {
  color: #64748b;
  font-weight: 800;
}

.agenda-prof {
  color: #374151;
  font-size: 13px;
  line-height: 1.2;
}

.agenda-item .line {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-size: 13px;
}

.agenda-item .line.line-top {
  align-items: flex-start;
}

.agenda-right {
  align-items: flex-end;
  justify-content: center;
  gap: 0;
}

.agenda-chips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.agenda-chips span {
  border-radius: 999px;
  padding: 5px 9px;
  background: color-mix(in srgb, var(--primary) 12%, white);
  color: var(--text);
  font-size: 12px;
}

.agenda-when {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}

.agenda-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border-radius: 999px;
  padding: 4px 9px;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.agenda-chip-date {
  background: #e0f2fe;
  color: #0c4a6e;
}

.agenda-chip-time {
  background: #ede9fe;
  color: #4c1d95;
}

.agenda-actions-app {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

.agenda-status {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 4px 10px;
  font-weight: 800;
  font-size: 12px;
  line-height: 1;
  white-space: nowrap;
  background: #e5e7eb;
  color: #374151;
}

.agenda-status.agendado {
  background: #dcfce7;
  color: #166534;
}

.agenda-status.cancelado,
.agenda-status.expirado {
  background: #f3f4f6;
  color: #374151;
}

.agenda-status.cancelado {
  background: #fee2e2;
  color: #991b1b;
}

.agenda-status.finalizado {
  background: #dbeafe;
  color: #1e3a8a;
}

.agenda-status.filadeespera {
  background: #fef3c7;
  color: #92400e;
}

.agenda-status.preatendimento {
  background: #cffafe;
  color: #0f766e;
}

.agenda-status.transferindo {
  background: #ede9fe;
  color: #5b21b6;
}

.agenda-status.ematendimentomedico {
  background: #ffedd5;
  color: #9a3412;
}

.small-dark {
  background: var(--secondary);
  color: #fff;
  border-radius: 8px;
  padding: 8px 10px;
  font-size: 12px;
  font-weight: 800;
}

.small-danger {
  background: #ef4444;
  color: #fff;
  border: 0;
  border-radius: 8px;
  padding: 8px 10px;
  font-size: 12px;
  font-weight: 800;
}

.agenda-docs-app {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

.agenda-docs-app .small-dark {
  border: 0;
  cursor: pointer;
}

.agenda-pagination-app {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 16px 0 4px;
}

.agenda-pagination-link {
  background: var(--primary);
  color: #fff;
  border: 0;
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.agenda-pagination-link:disabled {
  opacity: 0.6;
}

.agenda-pagination-info {
  font-size: 13px;
  font-weight: 800;
  color: #64748b;
}

@media (max-width: 720px) {
  .agenda-search-app {
    grid-template-columns: 1fr;
  }
}

/* ===== Histórico de atendimentos — paridade com o atendimentos.php legado ===== */
.historico-legado-app {
  margin: 0 auto;
  width: 100%;
  max-width: 590px;
  padding: 14px 0 12px;
}

.historico-legado-app #cards-container {
  position: relative;
}

.historico-legado-app .card {
  background: var(--primary, #e96f00);
  border-radius: 8px;
  margin: 10px 15px;
  width: calc(100% - 30px);
  overflow: hidden;
}

.historico-legado-app .date-line {
  display: flex;
  align-items: center;
  padding: 12px 16px 0;
}

.historico-legado-app .date-line .date-text {
  font-size: 14px;
  font-weight: bold;
  color: #fff;
  margin-left: 6px;
}

.historico-legado-app .sub-card {
  display: flex;
  align-items: center;
  background: var(--tertiary, var(--secondary, #eeeeee));
  border-radius: 6px;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 8px;
  padding-right: 16px;
  margin: 8px 16px;
}

.historico-legado-app .sub-card img {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  margin-right: 12px;
  object-fit: cover;
}

.historico-legado-app .sub-card .info-left,
.historico-legado-app .sub-card .info-right {
  flex: 1;
}

.historico-legado-app .sub-card .info-left {
  flex: 6;
}

.historico-legado-app .sub-card .info-right {
  flex: 4;
}

.historico-legado-app .sub-card .info-left h2 {
  margin: 0;
  font-size: 16px;
  font-weight: bold;
  color: #fff;
  text-align: left;
}

.historico-legado-app .sub-card .info-right h3 {
  margin: 0;
  font-size: 14px;
  font-weight: normal;
  color: #fff;
  text-align: right;
}

.historico-legado-app .status-label {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 12px;
  margin: 0 16px 12px;
  color: #fff;
}

.historico-legado-app .status-filaatendimento { background: #FFEB3B; color: #000; }
.historico-legado-app .status-preatendimento { background: #2196F3; }
.historico-legado-app .status-transferindo { background: #9C27B0; }
.historico-legado-app .status-ematendimento { background: #795548; }
.historico-legado-app .status-finalizado { background: #4CAF50; }
.historico-legado-app .status-cancelado { background: #F44336; }
.historico-legado-app .status-default { background: #9E9E9E; }

.historico-legado-app .doc-buttons {
  margin: 0 16px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.historico-legado-app .doc-buttons button {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--secondary, #eeeeee);
  border: none;
  border-radius: 4px;
  padding: 10px;
  width: 100%;
  max-width: 560px;
  margin: 4px 0;
  color: #fff;
  font-size: 14px;
  cursor: pointer;
  position: relative;
  font-family: inherit;
}

.historico-legado-app .doc-buttons .inner-spinner {
  position: absolute;
  right: 12px;
  display: none;
  width: 16px;
  height: 16px;
  border: 2px solid #fff;
  border-top-color: transparent;
  border-radius: 50%;
  animation: historico-spin .8s linear infinite;
}

@keyframes historico-spin {
  to { transform: rotate(360deg); }
}

.historico-legado-app .pagination {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin: 20px 0;
  flex-wrap: wrap;
}

.historico-legado-app .pagination span {
  padding: 6px 10px;
  color: #666;
  font-size: 14px;
}

.historico-legado-app .pagination-link {
  padding: 6px 10px;
  border-radius: 4px;
  background: var(--primary, #e96f00);
  color: #fff;
  border: none;
  cursor: pointer;
  font-size: 14px;
  font-family: inherit;
}

.historico-legado-app .pagination-link.active {
  opacity: 0.6;
}

.historico-legado-app .empty-card {
  margin: 20px 15px;
  text-align: center;
}

/* ==== ./src/styles/patient/atendimento.css ==== */
/* Paridade visual com o anamnese.php legado: sem quadro branco — conteúdo
   direto sobre o fundo da página, ícone grande, textos centralizados e
   botões largos com as cores primária/secundária/terciária do app. */
.patient-anamnese-page {
  min-height: calc(100vh - 170px);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 20px 20px 90px;
}

.patient-anamnese-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  width: 100%;
  max-width: 460px;
}

.patient-anamnese-section {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.patient-anamnese-section.hidden {
  display: none;
}

.patient-anamnese-body .banner-icon {
  width: 100px;
  margin-bottom: 15px;
}

.anamnese-title {
  font-size: 22px;
  font-weight: 800;
  color: #222;
  line-height: 1.2;
}

.anamnese-sub {
  font-size: 18px;
  font-weight: bold;
  color: #333;
  margin-top: 10px;
}

.anamnese-upload-copy {
  text-align: center;
  margin-top: 10px;
}

.anamnese-note {
  font-size: 14px;
  font-weight: normal;
  color: #222;
  line-height: 1.4;
  margin-top: 4px;
}

.anamnese-formats {
  font-size: 15px;
  font-weight: bold;
  color: #222;
  line-height: 1.1;
  margin-top: 10px;
}

.anamnese-cupom {
  width: 100%;
  max-width: 300px;
  margin-top: 12px;
  padding: 12px;
  border: none;
  border-radius: 6px;
  background: #eee;
  color: #222;
  font-size: 15px;
  font-weight: bold;
  font-family: 'Nunito Sans', sans-serif;
  text-align: center;
}

.anamnese-cupom:focus {
  outline: none;
}

.anamnese-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  max-width: 300px;
  padding: 12px;
  border: none;
  border-radius: 6px;
  font-size: 15px;
  font-weight: bold;
  color: #fff;
  margin-top: 12px;
  cursor: pointer;
  font-family: 'Nunito Sans', sans-serif;
}

.anamnese-btn:disabled {
  opacity: 0.7;
  cursor: default;
}

.anamnese-btn-primary {
  background: var(--primary, #e96f00);
}

.anamnese-btn-ter {
  background: var(--tertiary, var(--secondary, #aaa));
}

.anamnese-btn-secondary {
  background: var(--secondary, #ddd);
}

.anamnese-upload-btns {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-top: 20px;
  width: 100%;
}

.patient-upload-mobile {
  display: none;
}

.anamnese-files {
  min-height: 20px;
  font-size: 14px;
  color: #333;
  margin-top: 8px;
}

.anamnese-msg {
  min-height: 20px;
  font-size: 14px;
  font-weight: bold;
  margin-top: 8px;
}

.anamnese-msg.error {
  color: #a00;
}

.anamnese-msg.success {
  color: #2e7d32;
}

@media (max-width: 640px) {
  .patient-anamnese-page {
    min-height: calc(100vh - 150px);
    padding: 16px 16px 80px;
  }

  .patient-upload-desktop {
    display: none;
  }

  .patient-upload-mobile {
    display: inline-flex;
    justify-content: center;
  }
}

/* ==== ./src/styles/patient/preconsulta.css ==== */
.preconsulta-wrap {
  width: min(760px, calc(100% - 28px));
  margin: 0 auto;
  display: grid;
  place-items: center;
  min-height: calc(100vh - 190px);
}

.preconsulta-card {
  width: 100%;
  padding: 24px;
  text-align: center;
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(15,23,42,.08);
  border-radius: 22px;
  box-shadow: 0 18px 46px rgba(0,0,0,.08);
}

.preconsulta-icon {
  width: 52px;
  height: 52px;
  object-fit: contain;
  margin-bottom: 8px;
}

.preconsulta-card h1 {
  margin: 0 0 8px;
  color: var(--text);
  font-size: 24px;
}

.preconsulta-desc {
  margin: 0 auto 18px;
  max-width: 520px;
  color: var(--muted);
  font-weight: 800;
}

.preconsulta-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0;
}

.preconsulta-details div {
  background: color-mix(in srgb, var(--primary) 8%, white);
  border-radius: 14px;
  padding: 12px;
  display: grid;
  gap: 4px;
}

.preconsulta-details span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.preconsulta-details strong {
  color: var(--text);
  font-size: 15px;
}

.preconsulta-info {
  text-align: left;
  background: #f8fafc;
  border-radius: 16px;
  padding: 14px;
  color: #334155;
  font-weight: 700;
  line-height: 1.45;
}

.preconsulta-info p {
  margin: 0 0 8px;
}

.preconsulta-info p:last-child {
  margin-bottom: 0;
}

.preconsulta-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  margin: 14px 0;
}

.preconsulta-copy-link,
.preconsulta-back {
  width: 100%;
  min-height: 48px;
  justify-content: center;
  white-space: normal;
  line-height: 1.25;
}

.preconsulta-copy-link {
  box-shadow: 0 8px 18px color-mix(in srgb, var(--primary) 22%, transparent);
}

.preconsulta-copy-feedback {
  min-height: 18px;
  color: var(--primary);
  font-size: 13px;
  font-weight: 800;
  text-align: center;
}

@media (max-width: 720px) {
  .preconsulta-details {
    grid-template-columns: 1fr;
  }
}

/* ==== ./src/styles/patient/consulta-avulsa.css ==== */
.consulta-avulsa-card-app {
  gap: 12px;
}

/* ==== ./src/styles/usp.css ==== */
.usp-app{min-height:100vh;background:var(--bg);color:var(--text);padding:20px clamp(12px,4vw,56px) 48px;font-family:'Nunito Sans',sans-serif}.usp-header{max-width:1450px;margin:0 auto 22px;display:flex;align-items:center;justify-content:space-between;gap:20px}.usp-brand{display:flex;align-items:center;gap:14px}.usp-brand img{width:110px;height:54px;object-fit:contain}.usp-brand strong{display:block;color:var(--secondary);font-size:clamp(18px,2.4vw,28px);line-height:1.1}.usp-brand span{display:block;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;margin-top:5px}.usp-attendant{display:flex;align-items:center;gap:12px;font-weight:800}.usp-logout,.usp-secondary{border:1px solid color-mix(in srgb,var(--secondary) 24%,transparent);background:#fff;color:var(--secondary);border-radius:10px;padding:10px 14px;font-weight:800;cursor:pointer}.usp-card{max-width:1450px;margin:0 auto 20px;background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:18px;box-shadow:0 18px 48px rgba(15,23,42,.08);padding:clamp(18px,3vw,34px)}.usp-login-card{max-width:600px;margin-top:10vh}.usp-card-icon{text-align:center;font-size:44px}.usp-card h1{margin:8px 0;color:var(--secondary);font-size:clamp(22px,3vw,34px)}.usp-card p{color:var(--muted);font-weight:700}.usp-login-card form{display:flex;gap:12px;align-items:end}.usp-card label{display:flex;flex-direction:column;gap:7px;color:var(--secondary);font-weight:800;font-size:13px}.usp-card input,.usp-card select,.usp-card textarea{width:100%;border:1px solid rgba(100,116,139,.28);border-radius:10px;background:var(--input);color:var(--text);padding:11px 12px;font:700 15px 'Nunito Sans',sans-serif}.usp-card textarea{resize:vertical}.usp-card input:focus,.usp-card select:focus,.usp-card textarea:focus{outline:2px solid color-mix(in srgb,var(--primary) 38%,transparent);background:#fff}.usp-primary{border:0;border-radius:10px;background:var(--primary);color:#fff;padding:12px 18px;font-weight:900;cursor:pointer;white-space:nowrap}.usp-primary:disabled{opacity:.6;cursor:wait}.usp-main-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.usp-main-toolbar h1{margin:0}.usp-main-toolbar p{margin:5px 0 0}.usp-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}.usp-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}.usp-summary>div{border-radius:12px;background:color-mix(in srgb,var(--primary) 8%,#fff);border:1px solid color-mix(in srgb,var(--primary) 18%,transparent);padding:14px}.usp-summary b{display:block;color:var(--secondary);font-size:26px}.usp-summary span{color:var(--muted);font-size:12px;font-weight:900;text-transform:uppercase}.usp-table-wrap{overflow-x:auto}.usp-table-wrap table{width:100%;min-width:850px;border-collapse:collapse}.usp-table-wrap th,.usp-table-wrap td{text-align:left;padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.usp-table-wrap th{color:var(--muted);font-size:11px;text-transform:uppercase}.usp-table-wrap td{font-weight:700}.usp-priority-dot{display:inline-flex;border-radius:99px;padding:5px 9px;color:#fff;font-size:11px;text-transform:capitalize}.usp-priority-dot.verde{background:#16a34a}.usp-priority-dot.amarelo{background:#d97706}.usp-priority-dot.vermelho{background:#dc2626}.usp-priority-dot.roxo{background:#7c3aed}.usp-status{display:inline-flex;border-radius:99px;background:#eef2ff;color:#3730a3;padding:5px 9px;font-size:12px}.usp-enter{border:0;border-radius:8px;background:var(--primary);color:#fff;padding:8px 12px;font-weight:800;cursor:pointer}.usp-empty{text-align:center;padding:34px;color:var(--muted);font-weight:800}.usp-feedback{max-width:1450px;min-height:24px;margin:0 auto 10px;color:#166534;font-weight:800}.usp-feedback.error{color:#b42318}.usp-feedback.success{color:#166534}.usp-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:end}.usp-form-grid>label:first-child{grid-column:span 2}.usp-form-actions{display:flex;align-items:end;gap:10px}.usp-triage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}.usp-triage-grid+label{margin-top:0}.usp-patient-found{margin:12px 0;padding:12px;border-radius:10px;background:#f0fdf4;color:#166534;font-weight:800}.usp-switch{flex-direction:row!important;align-items:center;margin:14px 0}.usp-switch input{width:auto}.usp-card fieldset{border:1px solid var(--line);border-radius:10px;display:flex;gap:12px;flex-wrap:wrap;margin:14px 0;padding:12px}.usp-card legend{color:var(--secondary);font-weight:900}.usp-priority{flex-direction:row!important;align-items:center;cursor:pointer}.usp-priority input{width:auto}.usp-priority.verde{color:#15803d}.usp-priority.amarelo{color:#b45309}.usp-priority.vermelho{color:#b91c1c}.usp-priority.roxo{color:#6d28d9}.usp-form-grid [data-usp-register-form]{grid-column:1/-1}.usp-loading{position:fixed;inset:0;background:rgba(255,255,255,.58);z-index:20;display:flex;align-items:center;justify-content:center}.usp-loading span{width:48px;height:48px;border:6px solid #e5e7eb;border-top-color:var(--primary);border-radius:50%;animation:usp-spin .8s linear infinite}@keyframes usp-spin{to{transform:rotate(360deg)}}.hidden{display:none!important}@media(max-width:760px){.usp-header,.usp-main-toolbar{align-items:stretch;flex-direction:column}.usp-attendant{justify-content:space-between}.usp-login-card form{align-items:stretch;flex-direction:column}.usp-form-grid{grid-template-columns:1fr}.usp-form-grid>label:first-child{grid-column:auto}.usp-triage-grid{grid-template-columns:1fr}.usp-primary{width:100%}.usp-summary{grid-template-columns:1fr}.usp-card{border-radius:12px;padding:18px}.usp-brand img{width:86px}}

/* ==== ./src/styles/patient/profile-picker.css ==== */
.profile-picker-shell {
  background:
    radial-gradient(1000px 620px at 0% 0%, color-mix(in srgb, var(--primary) 10%, var(--bg)), transparent 60%),
    radial-gradient(900px 520px at 100% 10%, color-mix(in srgb, var(--secondary) 10%, var(--bg)), transparent 62%),
    linear-gradient(180deg, color-mix(in srgb, var(--bg) 94%, white 6%), var(--bg));
}

.profile-picker-shell-content {
  display: grid;
  place-items: center;
  min-height: 100vh;
  padding: 24px;
}

.profile-picker-page {
  width: min(980px, 100%);
}

.profile-picker-card {
  width: 100%;
  padding: 34px 28px;
  border: 1px solid rgba(17, 24, 39, .08);
  border-radius: 30px;
  background: rgba(255, 255, 255, .82);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .10);
  backdrop-filter: blur(10px);
}

.profile-picker-brand {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 18px;
}

.profile-picker-brand img {
  max-width: 190px;
  max-height: 78px;
  object-fit: contain;
}

.profile-picker-title {
  margin: 0;
  color: var(--text);
  font-size: clamp(30px, 4vw, 46px);
  font-weight: 900;
  line-height: 1.02;
  text-align: center;
}

.profile-picker-subtitle {
  max-width: 620px;
  margin: 10px auto 0;
  color: var(--muted);
  font-size: 16px;
  font-weight: 700;
  text-align: center;
}

.profile-picker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 18px;
  margin-top: 30px;
}

.profile-picker-option {
  width: 100%;
  padding: 18px 14px;
  border: 1px solid rgba(17, 24, 39, .08);
  border-radius: 24px;
  background: #fff;
  color: var(--text);
  cursor: pointer;
  font-family: inherit;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, opacity .18s ease;
}

.profile-picker-option:hover,
.profile-picker-option:focus-visible {
  border-color: color-mix(in srgb, var(--primary) 45%, rgba(17, 24, 39, .08));
  box-shadow: 0 22px 38px rgba(15, 23, 42, .12);
  outline: none;
  transform: translateY(-2px);
}

.profile-picker-option:disabled {
  cursor: wait;
  opacity: .68;
}

.profile-picker-option.is-loading .profile-picker-avatar::after {
  content: '';
  position: absolute;
  inset: 0;
  border: 3px solid rgba(255, 255, 255, .55);
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: profile-picker-spin .7s linear infinite;
}

.profile-picker-avatar {
  position: relative;
  display: grid;
  place-items: center;
  width: 104px;
  height: 104px;
  padding: 4px;
  margin: 0 auto 14px;
  overflow: hidden;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), var(--tertiary));
}

.profile-picker-avatar img {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: #fff;
  object-fit: cover;
}

.profile-picker-name {
  display: block;
  color: var(--text);
  font-size: 16px;
  font-weight: 900;
  text-align: center;
}

.profile-picker-type {
  display: block;
  margin-top: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-align: center;
  text-transform: uppercase;
}

.profile-picker-actions {
  display: flex;
  justify-content: center;
  margin-top: 28px;
}

.profile-picker-back {
  min-width: 220px;
  min-height: 48px;
  border: 0;
  border-radius: 14px;
  background: rgba(17, 24, 39, .08);
  color: var(--text);
  cursor: pointer;
  font: inherit;
  font-weight: 900;
  transition: background .18s ease, transform .18s ease;
}

.profile-picker-back:hover,
.profile-picker-back:focus-visible {
  background: color-mix(in srgb, var(--primary) 14%, white);
  outline: 2px solid color-mix(in srgb, var(--primary) 35%, transparent);
  outline-offset: 2px;
  transform: translateY(-1px);
}

@keyframes profile-picker-spin {
  to { transform: rotate(360deg); }
}

@media (max-width: 640px) {
  .profile-picker-shell-content {
    padding: 14px;
  }

  .profile-picker-card {
    padding: 24px 18px;
    border-radius: 24px;
  }

  .profile-picker-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }

  .profile-picker-avatar {
    width: 86px;
    height: 86px;
  }
}

/* ==== ./src/styles/call.css ==== */
:root,
.call-page-app,
.precall-stage,
.video-layer-app,
.livekit-stage-app {
  --call-app-background: var(--app-background-color, var(--app-bg-color, var(--app-background, var(--app-bg, var(--color-background, var(--background-color, var(--bg, #fff5ef)))))));
}

.precall-stage {
  position: fixed;
  inset: 0;
  background: var(--call-app-background);
  color: #fff;
  z-index: 10000;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: 0;
  min-height: 100dvh;
  overflow: hidden;
}

.precall-stage[hidden],
.call-page-app[hidden],
.livekit-stage-app[hidden] {
  display: none !important;
}

.video-layer-app {
  position: absolute;
  inset: 0;
  background: var(--call-app-background);
  overflow: hidden;
}

.video-layer-app video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: var(--call-app-background);
}

/* vumeter vertical (de baixo pra cima) — paridade com o legado */
.vu-vert {
  position: absolute;
  right: 12px;
  bottom: 16px;
  height: 46vh;
  width: 7px;
  background: rgba(255, 255, 255, .22);
  border-radius: 6px;
  overflow: hidden;
  z-index: 3;
}

.vu-vert b {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 0;
  background: var(--primary);
}

.precall-ask {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
}

.precall-ask[hidden] {
  display: none !important;
}

.precall-ask > div {
  background: rgba(0, 0, 0, .60);
  border-radius: 12px;
  padding: 18px 20px;
  display: grid;
  gap: 12px;
  text-align: center;
  min-width: min(280px, calc(100vw - 32px));
  box-shadow: 0 14px 40px rgba(0, 0, 0, .28);
}

.precall-controls {
  position: absolute;
  left: 50%;
  bottom: max(16px, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
  background: rgba(0, 0, 0, .42);
  border-radius: 12px;
  padding: 8px 10px;
  margin-bottom: 0;
  backdrop-filter: blur(2px);
}

.iconbtn-app {
  width: 44px;
  height: 44px;
  min-width: 44px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, .12);
  color: #fff;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.iconbtn-app svg {
  display: block;
  flex: 0 0 auto;
}

.iconbtn-app img {
  width: 22px;
  height: 22px;
  display: block;
  object-fit: contain;
  pointer-events: none;
  filter: brightness(0) invert(1);
}

.iconbtn-app:hover {
  background: rgba(255, 255, 255, .20);
}

.iconbtn-app.off,
.iconbtn-app.off:hover {
  background: #d12e2e;
}

.cta-app {
  min-height: 44px;
  border: 0;
  border-radius: 10px;
  padding: 12px 18px;
  background: var(--primary, #ff770c);
  color: #fff;
  font-size: 16px;
  font-weight: 800;
  cursor: pointer;
}

.call-page-app {
  position: fixed;
  inset: 0;
  width: 100vw;
  min-height: 100dvh;
  background: var(--call-app-background);
  color: #fff;
  z-index: 10050;
  overflow: hidden;
}

html.call-active-app,
body.call-active-app {
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  max-width: 100dvw !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: var(--call-app-background) !important;
}

body.call-active-app #app {
  width: 100dvw !important;
  max-width: 100dvw !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: var(--call-app-background) !important;
}

body.call-active-app .call-page-app {
  position: fixed !important;
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  width: 100dvw !important;
  max-width: 100dvw !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  transform: none !important;
}

body.call-active-app .livekit-stage-app {
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  width: 100dvw !important;
  max-width: 100dvw !important;
  height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
}

body.call-active-app .livekit-stage-app #lkMain,
body.call-active-app .livekit-stage-app .lk-bg-blur {
  left: 0 !important;
  right: auto !important;
  width: 100dvw !important;
  max-width: 100dvw !important;
}

body.call-active-app .call-actions-app {
  right: max(10px, env(safe-area-inset-right)) !important;
  max-width: calc(100dvw - 20px) !important;
}

.patient-call-page {
  position: fixed !important;
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  right: auto !important;
  bottom: auto !important;
  width: 100vw !important;
  width: 100dvw !important;
  max-width: 100vw !important;
  max-width: 100dvw !important;
  height: 100vh !important;
  height: 100dvh !important;
  min-height: 100vh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: var(--call-app-background) !important;
  transform: none !important;
  box-sizing: border-box !important;
}

.patient-call-page *,
.patient-call-page *::before,
.patient-call-page *::after {
  box-sizing: border-box;
}

.patient-call-page .livekit-stage-app {
  position: absolute !important;
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  right: auto !important;
  bottom: auto !important;
  width: 100vw !important;
  width: 100dvw !important;
  max-width: 100vw !important;
  max-width: 100dvw !important;
  height: 100vh !important;
  height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  background: var(--call-app-background) !important;
  transform: none !important;
}

.patient-call-page .livekit-stage-app #lkMain,
.patient-call-page .livekit-stage-app .lk-bg-blur {
  left: 0 !important;
  right: auto !important;
  width: 100vw !important;
  width: 100dvw !important;
  max-width: 100vw !important;
  max-width: 100dvw !important;
}

.patient-call-page .call-actions-app {
  right: max(10px, env(safe-area-inset-right)) !important;
  bottom: max(14px, env(safe-area-inset-bottom)) !important;
  max-width: calc(100vw - 20px) !important;
  max-width: calc(100dvw - 20px) !important;
}

.admin-precall-stage,
.admin-call-page {
  z-index: 10060;
}

.admin-main:has(.admin-call-page:not([hidden])),
.admin-main:has(.admin-precall-stage:not([hidden])) {
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
}

.admin-main:has(.admin-call-page:not([hidden])) {
  display: grid !important;
  grid-template-rows: auto minmax(0, 1fr);
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-topbar {
  min-height: 0;
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-hero {
  display: none !important;
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-footer {
  display: none;
}

.admin-call-page.call-page-app {
  --admin-call-sidebar-width: min(430px, 34vw);
  position: relative !important;
  inset: auto !important;
  width: 100% !important;
  max-width: none !important;
  height: 100% !important;
  max-height: 100% !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 0;
  background: #000 !important;
  overflow: hidden !important;
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--admin-call-sidebar-width);
  grid-template-rows: minmax(0, 1fr);
}

.admin-call-page .call-status-card.call-wait-screen-app {
  inset: 0;
  grid-column: 1;
  grid-row: 1;
  display: none !important;
}

.admin-call-page .livekit-stage-app {
  position: relative !important;
  inset: auto !important;
  grid-column: 1;
  grid-row: 1;
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  min-width: 0;
  min-height: 0;
}

.admin-call-page .call-wait-bar-app,
.admin-call-page.is-livekit-active .call-wait-bar-app,
.admin-call-page.is-livekit-active .call-status-card {
  display: none !important;
}

.admin-call-page .call-wait-content-app {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  height: 100%;
}

.admin-call-top-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
}

.admin-call-action-menu {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
}

.admin-call-top-actions .admin-action-btn {
  min-height: 34px;
  border: 0;
  border-radius: 8px;
  padding: 8px 12px;
  color: #fff;
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
}

.admin-call-top-actions .admin-action-btn.green {
  background: #408801;
}

.admin-call-top-actions .admin-action-btn.red {
  background: #ef3b3b;
}

.admin-call-top-actions .admin-action-btn.memed {
  background: #2563eb;
}

.precall-controls .submit-btn-app:disabled,
.precall-controls .cta-app:disabled {
  opacity: .58;
  cursor: not-allowed;
}

@media (max-width: 520px) {
  .precall-stage {
    padding: 0;
  }

  .precall-controls {
    width: calc(100vw - 24px);
    width: calc(100dvw - 24px);
  }

  .precall-controls .cta-app {
    flex: 1 1 100%;
    width: 100%;
  }
}

.call-status-card {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 24px;
  text-align: center;
  background: var(--call-app-background);
}

.call-status-card h1 {
  margin: 0;
  font-size: 28px;
  font-weight: 700;
}

.call-status-card p {
  margin: 0;
  color: rgba(255,255,255,.78);
  font-weight: 700;
}

.call-queue-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(90px, 1fr));
  gap: 10px;
  width: min(360px, calc(100vw - 48px));
  margin-top: 4px;
}

.call-queue-meta[hidden] {
  display: none !important;
}

.call-queue-meta div {
  border-radius: 14px;
  background: rgba(255, 255, 255, .10);
  padding: 10px 12px;
  display: grid;
  gap: 2px;
}

.call-queue-meta span,
.call-queue-meta small {
  color: rgba(255, 255, 255, .72);
  font-size: 12px;
  font-weight: 800;
}

.call-queue-meta strong {
  color: #fff;
  font-size: 24px;
  line-height: 1;
  font-weight: 900;
}

.call-queue-meta small {
  grid-column: 1 / -1;
}

.patient-call-page .call-status-card.call-wait-screen-app {
  background: var(--state-bg, #fff3ec);
  color: #000;
  gap: 0;
  padding: 70px 20px;
}

.patient-call-page .call-wait-bar-app {
  position: fixed;
  left: 0;
  width: 100%;
  height: 50px;
  background: var(--state-primary, var(--primary-color, #ff770c));
  z-index: 1;
}

.patient-call-page .call-wait-bar-top-app {
  top: 0;
}

.patient-call-page .call-wait-bar-bottom-app {
  bottom: 0;
}

.patient-call-page.is-livekit-active .call-wait-bar-app,
.patient-call-page.is-livekit-active .call-status-card {
  display: none !important;
}

.patient-call-page .call-wait-content-app {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: min(430px, 100%);
}

.patient-call-page .call-center-icon-app {
  width: 120px;
  height: auto;
  object-fit: contain;
}

.patient-call-page .call-status-card.call-wait-screen-app h1 {
  color: #000;
  font-size: 24px;
  font-weight: 400;
  line-height: 1.25;
  white-space: pre-line;
}

.patient-call-page .call-status-card.call-wait-screen-app p {
  color: #333;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.35;
  white-space: pre-line;
}

.patient-call-page .call-queue-position-app {
  color: #000 !important;
  font-size: 20px !important;
  font-weight: 700 !important;
}

.patient-call-page .call-wait-spinner-app {
  width: 34px;
  height: 34px;
  border: 4px solid rgba(0, 0, 0, .12);
  border-top-color: var(--state-primary, var(--primary-color, #ff770c));
  border-radius: 999px;
  animation: spin .8s linear infinite;
}

.livekit-stage-app {
  position: absolute;
  inset: 0;
  background: var(--call-app-background);
  overflow: hidden;
}

.livekit-stage-app video {
  background: var(--call-app-background);
}

.lk-bg-blur {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: blur(36px) brightness(.58);
  transform: scale(1.18);
  opacity: .72;
  z-index: 0;
  display: block;
}

#lkMain {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: transparent;
  z-index: 1;
}

#lkSelf {
  position: absolute;
  right: 18px;
  top: 18px;
  width: 160px;
  max-width: 28vw;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center;
  border-radius: 12px;
  border: 0;
  background: var(--call-app-background);
  box-shadow: 0 6px 20px rgba(0,0,0,.45);
  z-index: 5;
}

.lk-controls-app {
  position: absolute;
  left: 50%;
  bottom: 22px;
  transform: translateX(-50%);
  display: flex;
  gap: 12px;
  padding: 10px;
  border-radius: 999px;
  background: rgba(0,0,0,.48);
  backdrop-filter: blur(8px);
  z-index: 14;
}

.call-actions-app {
  position: absolute;
  right: 20px;
  bottom: 22px;
  display: grid;
  gap: 12px;
  z-index: 12;
}

.admin-call-info-panel {
  position: relative;
  grid-column: 2;
  grid-row: 1;
  z-index: 18;
  width: 100%;
  height: 100%;
  max-height: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow: auto;
  border-radius: 0;
  border-left: 1px solid rgba(15, 23, 42, .14);
  background: #fff7f3;
  color: #263244;
  padding: 20px;
  box-shadow: -18px 0 46px rgba(0, 0, 0, .18);
  backdrop-filter: blur(10px);
}

.admin-soap-editor {
  display: flex;
  flex: 1 1 auto;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
  padding: 2px 0 0;
  background: transparent;
}

.admin-soap-tabs {
  display: flex;
  gap: 8px;
  margin: 0 0 10px;
}

.admin-soap-tab {
  border: 0;
  border-radius: 10px;
  background: #e2e8f0;
  color: #334155;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 900;
  cursor: pointer;
}

.admin-soap-tab.active {
  background: var(--primary, var(--primary-color, #ff770c));
  color: #fff;
}

.admin-soap-pane {
  display: none;
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}

.admin-soap-pane.active {
  display: block;
}

.admin-call-info-panel .admin-soap-pane:not(.active) {
  display: none !important;
}

.soap-label {
  display: block;
  margin: 10px 0 5px;
  color: #2a3b4d;
  font-size: 13px;
  font-weight: 900;
}

.soap-input,
.soap-input-line {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #d5dbe5;
  border-radius: 8px;
  background: #f9fbfe;
  color: #1f2937;
  font: inherit;
  font-size: 15px;
  font-weight: 800;
}

.soap-input {
  min-height: 86px;
  padding: 9px 10px 36px;
  resize: none;
  overflow: auto;
}

.soap-input-line {
  padding: 9px 10px;
}

.soap-input::placeholder,
.soap-input-line::placeholder {
  color: #8b97ab;
}

.soap-input:focus,
.soap-input-line:focus {
  outline: none;
  border-color: #c7d0dc;
  box-shadow: none;
}

.soap-readonly {
  min-height: 360px;
  background: #f3f6fb;
  color: #374151;
}

.soap-field-wrap {
  position: relative;
}

.soap-expand-btn {
  position: absolute;
  right: 8px;
  bottom: 13px;
  width: 24px;
  height: 24px;
  border: 0;
  border-radius: 6px;
  color: #fff;
  font-size: 16px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.soap-label-subjetivo { color: #2f6a34; }
.soap-input-subjetivo { background: #eef9ef; border-color: #5ca769; }
.soap-expand-subjetivo { background: #4a9a59; }
.soap-label-objetivo { color: #1f4f8a; }
.soap-input-objetivo { background: #edf4ff; border-color: #4a80cd; }
.soap-expand-objetivo { background: #3f77c7; }
.soap-label-avaliacao { color: #8c2f2f; }
.soap-input-avaliacao { background: #fff0f0; border-color: #c85d5d; }
.soap-expand-avaliacao { background: #b94b4b; }
.soap-label-plano { color: #8a531f; }
.soap-input-plano { background: #fff6eb; border-color: #ca8c4b; }
.soap-expand-plano { background: #be7d3a; }
.soap-label-cid { color: #6b4a2f; }
.soap-input-cid { background: #fbf5ef; border-color: #9f7751; }

.soap-cid-dropdown {
  position: relative;
}

.soap-cid-menu {
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  margin-top: 4px;
  border: 1px solid #d8dee9;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .14);
  z-index: 80;
}

.soap-cid-results {
  max-height: 180px;
  overflow: auto;
  padding: 6px;
}

.soap-cid-item {
  display: flex;
  width: 100%;
  align-items: flex-start;
  gap: 8px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: #334155;
  padding: 7px 8px;
  text-align: left;
  cursor: pointer;
}

.soap-cid-item:hover {
  background: #edf2f7;
}

.soap-cid-code {
  min-width: 60px;
  color: #1f2937;
  font-weight: 900;
}

.soap-cid-empty {
  padding: 8px;
  color: #6b7280;
  font-size: 12px;
  font-weight: 800;
}

.soap-cid-selected {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 38px;
  margin-top: 8px;
  padding: 6px;
  border: 1px solid #9f7751;
  border-radius: 8px;
  background: #fbf5ef;
}

.soap-cid-selected.is-empty {
  display: none;
}

.soap-cid-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  border: 1px solid #b9936d;
  border-radius: 999px;
  background: #e8d8c6;
  color: #4f3a27;
  padding: 4px 9px;
  font-size: 13px;
  font-weight: 800;
}

.soap-cid-chip button {
  border: 0;
  background: transparent;
  color: #0f172a;
  cursor: pointer;
  font-weight: 900;
}

.soap-expand-textarea {
  width: 100%;
  min-height: min(58vh, 520px);
  box-sizing: border-box;
  border: 1px solid #cbd5e1;
  border-radius: 10px;
  background: #fff;
  color: #1f2937;
  padding: 12px;
  font: inherit;
  font-size: 17px;
  font-weight: 800;
  resize: vertical;
}

.admin-call-popup-fallback {
  display: grid;
  min-height: 160px;
  place-items: center;
  gap: 14px;
  text-align: center;
}

.livekit-stage-app:not(.grid):not(.portrait-remote) #lkMain {
  object-fit: contain !important;
}

.livekit-stage-app:not(.grid).portrait-remote #lkMain {
  object-fit: cover !important;
}

.livekit-stage-app:not(.grid) .lk-bg-blur,
.livekit-stage-app:not(.grid).portrait-remote .lk-bg-blur {
  display: block;
}

.livekit-stage-app.grid #lkMain {
  position: relative !important;
  inset: auto !important;
  grid-column: 1;
  grid-row: 1;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0;
  min-height: 0;
  border: 0;
  border-radius: 16px;
  object-fit: cover !important;
  object-position: center;
}

.livekit-stage-app.grid #lkSelf {
  position: relative !important;
  inset: auto !important;
  grid-column: 2;
  grid-row: 1;
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  min-width: 0;
  min-height: 0;
  aspect-ratio: auto !important;
  border: 0 !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  object-fit: cover !important;
  object-position: center;
}

.livekit-stage-app.grid .lk-bg-blur {
  display: none;
}

.livekit-stage-app.grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  gap: 12px !important;
  padding: 12px !important;
  align-items: stretch;
  justify-items: stretch;
}

.admin-call-info-panel h2 {
  margin: 0;
  font-size: 18px;
  line-height: 1.2;
  color: #263244;
}

.admin-call-info-panel p {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  color: #667085;
  font-weight: 800;
}

.admin-call-info-grid {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  gap: 8px 10px;
  padding: 12px;
  border-radius: 14px;
  background: #f8fafc;
}

.admin-call-side-toolbar {
  display: grid;
  gap: 10px;
}

.admin-topbar-call-actions {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 18px;
}

.admin-call-timer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-radius: 8px;
  background: #fff;
  padding: 8px 10px;
  box-shadow: 0 1px 0 rgba(15, 23, 42, .06);
}

.admin-call-timer span {
  color: #667085;
  font-size: 12px;
  font-weight: 900;
}

.admin-call-timer strong {
  border-radius: 6px;
  background: #ef3b3b;
  color: #fff;
  padding: 5px 8px;
  font-size: 13px;
  font-weight: 900;
  line-height: 1;
}

.admin-topbar-call-actions .admin-call-timer {
  min-width: 168px;
  border: 1px solid rgba(15, 23, 42, .08);
}

.admin-call-info-grid span {
  color: #7b8798;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.admin-call-info-grid strong {
  min-width: 0;
  color: #263244;
  font-size: 13px;
  font-weight: 900;
  word-break: break-word;
}

.admin-call-notes-label {
  display: flex;
  flex: 1 1 auto;
  min-height: 0;
  flex-direction: column;
  gap: 8px;
  color: #667085;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.admin-call-info-panel .admin-large-textarea {
  width: 100%;
  flex: 1 1 auto;
  min-height: 230px;
  resize: vertical;
  border: 0;
  border-radius: 14px;
  background: #eef2f7;
  color: #263244;
  padding: 12px;
  font: inherit;
  font-weight: 800;
}

.admin-call-buttons {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  position: sticky;
  bottom: 0;
  padding-top: 8px;
  background: linear-gradient(to bottom, rgba(245, 247, 250, 0), rgba(245, 247, 250, .98) 18%);
}

.admin-call-buttons .admin-action-btn {
  min-height: 42px;
  border: 0;
  border-radius: 8px;
  background: #263238;
  color: #fff;
  font-weight: 900;
  cursor: pointer;
}

.admin-call-buttons .admin-action-btn:disabled {
  opacity: .62;
  cursor: wait;
}

.admin-call-buttons .admin-action-btn.green {
  background: #22b35e;
}

.admin-call-buttons .admin-action-btn.amber {
  background: #c47f0f;
}

.admin-call-buttons .admin-action-btn.red {
  background: #ef3b3b;
}

.admin-call-info-panel .admin-feedback {
  min-height: 18px;
  color: #667085;
  font-size: 12px;
  font-weight: 800;
}

.admin-call-fabs {
  position: absolute;
  left: 20px;
  bottom: max(18px, env(safe-area-inset-bottom));
  right: calc(var(--admin-call-sidebar-width) + 20px);
  z-index: 16;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 14px;
  pointer-events: none;
}

.admin-call-fabs .fab-call-app {
  pointer-events: auto;
  text-decoration: none;
}

.admin-call-sidebar-menu {
  gap: 6px;
  align-items: stretch;
  justify-content: flex-start;
  padding: 4px 0;
}

.admin-call-sidebar-menu .admin-call-nav-action {
  width: 100%;
  min-height: 42px;
  height: 42px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: #263238;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  padding: 0 12px;
  font: inherit;
  font-size: 14px;
  font-weight: 800;
  line-height: 1;
  text-align: left;
  cursor: pointer;
}

.admin-call-sidebar-menu .admin-call-nav-action:hover,
.admin-call-sidebar-menu .admin-call-nav-action:focus-visible {
  background: #263238;
  color: #fff;
  outline: none;
}

.admin-call-sidebar-menu .admin-call-nav-action:hover .admin-icon-img,
.admin-call-sidebar-menu .admin-call-nav-action:focus-visible .admin-icon-img {
  filter: brightness(0) invert(1);
}

body.admin-sidebar-collapsed .admin-call-sidebar-menu .admin-call-nav-action {
  width: 48px;
  justify-content: center;
  padding: 0;
}

body.admin-sidebar-collapsed .admin-call-sidebar-menu .admin-call-nav-action .admin-nav-label {
  display: none;
}

.admin-call-popup-frame {
  width: 100%;
  height: 100%;
  border: 0;
  border-radius: 12px;
  background: #fff;
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-modal-backdrop[data-admin-clinical-modal]:not(.hidden) {
  position: fixed !important;
  inset: 0 !important;
  z-index: 40000 !important;
  display: grid !important;
  place-items: center !important;
  align-content: center !important;
  justify-content: center !important;
  padding: 24px !important;
  background: rgba(255, 247, 243, .42) !important;
  backdrop-filter: blur(7px) saturate(112%) !important;
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-modal-backdrop[data-admin-clinical-modal]:not(.hidden) .admin-clinical-modal {
  margin: 0 !important;
  width: min(1040px, calc(100vw - 96px));
  max-width: min(1040px, calc(100vw - 96px));
  max-height: min(88vh, 860px);
  overflow: auto;
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-modal-backdrop[data-admin-clinical-modal]:not(.hidden) .admin-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(100, 116, 139, .16);
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-modal-backdrop[data-admin-clinical-modal]:not(.hidden) .admin-modal-header h2 {
  margin: 0;
  color: #263244;
  font-size: 22px;
  font-weight: 900;
  line-height: 1.15;
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-modal-backdrop[data-admin-clinical-modal]:not(.hidden) .admin-modal-header-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.admin-main:has(.admin-call-page:not([hidden])) .admin-modal-backdrop[data-admin-clinical-modal]:not(.hidden) .admin-clinical-body {
  min-height: 0;
}

.admin-call-transfer-modal-card {
  width: min(780px, calc(100vw - 96px)) !important;
  max-width: min(780px, calc(100vw - 96px)) !important;
  overflow: hidden !important;
  box-shadow: 0 26px 80px rgba(15, 23, 42, .22) !important;
}

.admin-call-transfer-modal-card .admin-clinical-body {
  padding-top: 18px;
}

.admin-call-transfer-modal {
  display: grid;
  gap: 16px;
}

.admin-call-transfer-summary {
  display: grid;
  gap: 4px;
  padding: 14px 16px;
  border: 1px solid rgba(100, 116, 139, .14);
  border-radius: 12px;
  background: #f8fafc;
}

.admin-call-transfer-summary strong {
  color: #263244;
  font-size: 15px;
  font-weight: 900;
}

.admin-call-transfer-summary span {
  color: #64748b;
  font-size: 13px;
  font-weight: 800;
}

.admin-call-transfer-field {
  display: grid;
  gap: 8px;
}

.admin-call-transfer-field > span {
  color: #344054;
  font-size: 14px;
  font-weight: 900;
}

.admin-call-transfer-field select,
.admin-call-transfer-field textarea {
  width: 100%;
  border: 1px solid rgba(100, 116, 139, .18);
  border-radius: 12px;
  background: #fff;
  color: #263244;
  font: inherit;
  font-size: 14px;
  font-weight: 800;
  min-height: 46px;
  padding: 11px 14px;
  outline: none;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}

.admin-call-transfer-field textarea {
  min-height: 112px;
  resize: vertical;
}

.admin-call-transfer-field select:focus,
.admin-call-transfer-field textarea:focus {
  border-color: rgba(255, 119, 12, .72);
  box-shadow: 0 0 0 3px rgba(255, 119, 12, .14);
}

.admin-call-transfer-modal-card .button-primary.compact,
.admin-call-transfer-modal-card .button-secondary.compact,
.admin-call-iframe-modal-card .admin-danger-btn.compact {
  min-height: 42px;
  border-radius: 12px;
  padding: 0 18px;
  font-size: 14px;
  font-weight: 900;
  text-decoration: none;
}

.admin-call-transfer-modal-card .button-secondary.compact {
  border: 1px solid rgba(100, 116, 139, .18);
  background: #eef2f7;
  color: #263244;
}

.admin-call-iframe-modal-card {
  width: min(1220px, calc(100vw - 96px)) !important;
  max-width: min(1220px, calc(100vw - 96px)) !important;
  height: min(86vh, 880px);
  max-height: min(86vh, 880px) !important;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden !important;
  box-shadow: 0 26px 80px rgba(15, 23, 42, .24) !important;
}

.admin-call-iframe-modal-card .admin-modal-header {
  position: relative;
  z-index: 2;
  background: #fff;
}

.admin-call-iframe-modal-card .admin-clinical-body {
  min-height: 0;
  overflow: hidden;
  padding-top: 16px;
}

.admin-call-iframe-modal-card .admin-danger-btn.compact {
  border: 0;
  background: #ef4444;
  color: #fff;
}

.admin-call-priority-options {
  display: grid;
  gap: 10px;
}

.admin-call-priority-option {
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  background: #fff;
  color: #1f2937;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  font-weight: 800;
  cursor: pointer;
}

.admin-call-priority-option:hover {
  border-color: #cbd5e1;
  background: #f8fafc;
}

.admin-call-priority-option span {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  flex: 0 0 12px;
}

.admin-call-notes-close {
  border: 0;
  background: #eef2f7;
  color: #263244;
  width: 36px;
  height: 36px;
  border-radius: 12px;
  font-size: 22px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
  align-self: flex-end;
}

@media (min-width: 841px) {
  .admin-call-page .livekit-stage-app #lkMain,
  .admin-call-page .livekit-stage-app .lk-bg-blur {
    width: 100% !important;
    max-width: 100% !important;
  }

  .admin-call-page #lkSelf {
    right: 18px !important;
  }

  .admin-call-page .lk-controls-app {
    left: 50% !important;
    bottom: max(18px, env(safe-area-inset-bottom)) !important;
  }

  .admin-call-page .call-actions-app {
    right: calc(var(--admin-call-sidebar-width) + 20px) !important;
  }

  .admin-call-page .livekit-stage-app.admin-grid-mode {
    --admin-grid-gap: 12px;
    box-sizing: border-box !important;
    position: relative !important;
    inset: auto !important;
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: 100% !important;
    max-height: 100% !important;
    min-height: 0 !important;
    padding: 0 !important;
    gap: var(--admin-grid-gap) !important;
    overflow: hidden !important;
  }

  .admin-call-page .livekit-stage-app.admin-grid-mode .lk-bg-blur {
    display: none !important;
  }

  .admin-call-page .livekit-stage-app.admin-grid-mode #lkMain,
  .admin-call-page .livekit-stage-app.admin-grid-mode #lkSelf {
    box-sizing: border-box !important;
    position: absolute !important;
    top: 0 !important;
    bottom: auto !important;
    grid-column: auto !important;
    grid-row: auto !important;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    left: auto !important;
    right: auto !important;
    width: calc(50% - (var(--admin-grid-gap) / 2)) !important;
    max-width: 100% !important;
    height: 100% !important;
    max-height: 100% !important;
    min-height: 0 !important;
    aspect-ratio: auto !important;
    transform: none !important;
    border-radius: 16px !important;
    border: 0 !important;
    box-shadow: none !important;
    object-fit: cover !important;
    object-position: center !important;
    background: #000 !important;
  }

  .admin-call-page .livekit-stage-app.admin-grid-mode #lkMain {
    left: 0 !important;
  }

  .admin-call-page .livekit-stage-app.admin-grid-mode #lkSelf {
    left: calc(50% + (var(--admin-grid-gap) / 2)) !important;
  }
}

.admin-call-invite {
  display: grid;
  gap: 8px;
  padding: 18px 20px;
  border-radius: 14px;
  background: #f8fafc;
  border: 1px solid rgba(148, 163, 184, .2);
  color: #263244;
  font-size: 16px;
}

.admin-call-invite strong {
  color: #263244;
  font-weight: 900;
}

.admin-call-invite span {
  color: #667085;
  font-weight: 800;
}

.admin-call-invite-status {
  color: #ef4444 !important;
  margin-top: 4px;
}

.admin-call-invite-reason {
  display: grid;
  gap: 10px;
  color: #667085;
  font-weight: 900;
}

.admin-call-invite-reason textarea {
  width: 100%;
  min-height: 120px;
  border: 0;
  border-radius: 14px;
  background: #d4d4d4;
  color: #263244;
  padding: 14px 16px;
  font: inherit;
  font-weight: 800;
  resize: vertical;
}

.fab-call-app {
  width: 54px;
  height: 54px;
  border: 0;
  border-radius: 50%;
  display: grid;
  place-items: center;
  padding: 0;
  background: rgba(0,0,0,.54);
  box-shadow: 0 10px 24px rgba(0,0,0,.24);
  cursor: pointer;
}

.fab-call-app[hidden] {
  display: none !important;
}

.fab-call-app img {
  width: 26px;
  height: 26px;
  object-fit: contain;
  filter: brightness(0) invert(1);
}

.call-gallery-app {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 28px;
  background: color-mix(in srgb, var(--call-app-background) 84%, transparent);
}

.call-gallery-app[hidden] {
  display: none !important;
}

.call-gallery-close {
  position: absolute;
  right: 12px;
  top: 8px;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 999px;
  background: rgba(255,255,255,.92);
  color: #111827;
  display: grid;
  place-items: center;
  padding: 0;
  font-size: 30px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  z-index: 2;
}

.call-gallery-box {
  position: relative;
  width: min(92vw, 1680px);
  height: min(88vh, 900px);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}

#callGalleryItems {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: auto;
}

#callGalleryItems img,
#callGalleryItems iframe,
#callGalleryItems embed,
#callGalleryItems a {
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  border-radius: 0;
  border: 0;
}

#callGalleryItems a {
  color: #111827;
  padding: 18px 22px;
  font-weight: 700;
  display: grid;
  place-items: center;
  width: auto;
  height: auto;
  min-width: 220px;
  min-height: 90px;
}

.call-gallery-arrow {
  position: absolute;
  top: 50%;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, .82);
  color: #111827;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 0 4px;
  font-size: 36px;
  line-height: 1;
  font-weight: 700;
  cursor: pointer;
  user-select: none;
  transform: translateY(-50%);
  z-index: 2;
}

.call-gallery-arrow[hidden] {
  display: none !important;
}

.call-gallery-prev {
  left: 6px;
}

.call-gallery-next {
  right: 6px;
}

.call-gallery-counter {
  position: absolute;
  left: 50%;
  bottom: 10px;
  transform: translateX(-50%);
  z-index: 2;
  border-radius: 999px;
  background: rgba(0, 0, 0, .58);
  color: #fff;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 900;
}

.call-gallery-counter[hidden] {
  display: none !important;
}

.call-gallery-loader {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: #fff;
  color: #263244;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 12px;
  padding: 24px;
  text-align: center;
  font-weight: 900;
}

.call-gallery-loader span {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 4px solid #d8dee8;
  border-top-color: var(--primary-color, #ff770c);
  animation: spin .8s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 840px) {
  .admin-main:has(.admin-call-page:not([hidden])),
  .admin-main:has(.admin-precall-stage:not([hidden])) {
    height: 100dvh;
    overflow: hidden;
  }

  .admin-call-page.call-page-app {
    --admin-mobile-call-dock: 72px;
    position: fixed !important;
    inset: 0 !important;
    width: 100dvw !important;
    max-width: 100dvw !important;
    height: 100dvh !important;
    min-height: 100dvh !important;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    padding: 0 !important;
    z-index: 10050;
  }

  .admin-call-page .livekit-stage-app,
  .admin-call-page .call-status-card.call-wait-screen-app {
    grid-column: 1;
    grid-row: 1;
  }

  .admin-call-page .livekit-stage-app {
    position: fixed !important;
    inset: 0 !important;
    width: 100dvw !important;
    max-width: 100dvw !important;
    height: 100dvh !important;
    max-height: 100dvh !important;
  }

  .admin-call-page .livekit-stage-app #lkMain,
  .admin-call-page .livekit-stage-app .lk-bg-blur {
    width: 100dvw !important;
    max-width: 100dvw !important;
    height: 100dvh !important;
    max-height: 100dvh !important;
    object-fit: cover !important;
  }

  .admin-call-info-panel {
    position: fixed;
    left: 14px;
    right: 14px;
    bottom: calc(var(--admin-mobile-call-dock) + max(12px, env(safe-area-inset-bottom)));
    grid-column: auto;
    grid-row: auto;
    width: auto;
    height: min(64dvh, 620px);
    max-height: min(64dvh, 620px);
    border: 1px solid rgba(15, 23, 42, .12);
    border-radius: 16px;
    padding: 16px 16px 18px;
    box-shadow: 0 18px 46px rgba(15, 23, 42, .18);
    transform: translateY(calc(100% + 24px));
    opacity: 0;
    pointer-events: none;
    transition: transform 180ms ease, opacity 180ms ease;
    z-index: 10110;
  }

  .admin-call-notes-close {
    display: grid !important;
    place-items: center;
    position: absolute;
    top: 10px;
    right: 10px;
  }

  .admin-call-page.admin-call-notes-open .admin-call-info-panel {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }

  body.admin-call-notes-open .admin-call-page .admin-call-info-panel {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }

  .admin-call-info-panel h2,
  .admin-call-info-panel p {
    display: block;
  }

  .admin-call-info-panel h2 {
    margin: 0;
    padding-right: 42px;
    font-size: 16px;
    line-height: 1.25;
  }

  .admin-call-info-panel p {
    margin: 0 0 8px;
    font-size: 12px;
  }

  .admin-call-info-grid {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: 5px 10px;
    padding: 10px 0;
    border-top: 1px solid rgba(100, 116, 139, .14);
    border-bottom: 1px solid rgba(100, 116, 139, .14);
  }

  .admin-call-notes-label {
    min-height: 0;
    flex: 0 0 auto;
  }

  .admin-call-info-panel .admin-large-textarea {
    min-height: 150px;
    max-height: 32dvh;
    overflow: auto;
  }

  .admin-call-buttons {
    grid-template-columns: 1fr;
    position: static;
    bottom: auto;
    padding-top: 4px;
    background: transparent;
  }

  .admin-call-page .lk-controls-app {
    bottom: calc(var(--admin-mobile-call-dock) + max(18px, env(safe-area-inset-bottom))) !important;
  }

  .admin-call-fabs {
    right: 12px;
    bottom: calc(var(--admin-mobile-call-dock) + max(18px, env(safe-area-inset-bottom)));
    gap: 10px;
    flex-wrap: wrap;
  }

  .admin-call-page .call-actions-app {
    right: 12px;
    bottom: calc(var(--admin-mobile-call-dock) + max(18px, env(safe-area-inset-bottom)));
    grid-auto-flow: column;
  }

  .admin-shell:has(.admin-call-page) .admin-sidebar {
    display: none !important;
  }

  .admin-call-mobile-dock {
    position: fixed;
    inset: auto 10px max(8px, env(safe-area-inset-bottom)) 10px;
    z-index: 10120;
    display: flex !important;
    flex-direction: row;
    align-items: center;
    justify-content: space-around;
    width: auto;
    height: 64px;
    margin: 0;
    padding: 8px 10px;
    border-radius: 18px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 18px 46px rgba(15, 23, 42, .18);
    pointer-events: auto !important;
    touch-action: manipulation;
  }

  .admin-call-mobile-dock-btn {
    width: 48px;
    height: 48px;
    min-height: 48px;
    border: 0;
    background: transparent;
    color: #263238;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border-radius: 14px;
    cursor: pointer;
    pointer-events: auto !important;
    touch-action: manipulation;
  }

  .admin-call-mobile-dock-btn img {
    width: 24px;
    height: 24px;
    object-fit: contain;
    pointer-events: none;
  }

  .admin-call-mobile-dock-btn:active,
  .admin-call-mobile-dock-btn:focus-visible,
  .admin-call-mobile-dock-btn:hover,
  .admin-call-mobile-menu-btn {
    background: #263238;
    outline: none;
  }

  .admin-call-mobile-dock-btn:active img,
  .admin-call-mobile-dock-btn:focus-visible img,
  .admin-call-mobile-dock-btn:hover img,
  .admin-call-mobile-menu-btn img {
    filter: brightness(0) invert(1);
  }

  .admin-main:has(.admin-call-page) .admin-topbar-call-actions {
    position: static;
    z-index: 10112;
    width: 0;
    min-width: 0;
    padding: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    backdrop-filter: none;
  }

  .admin-main:has(.admin-call-page) .admin-call-action-menu {
    position: fixed;
    left: 10px;
    right: 10px;
    bottom: calc(80px + max(8px, env(safe-area-inset-bottom)));
    z-index: 10088;
    width: auto;
    padding: 8px;
    border-radius: 18px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 18px 46px rgba(15, 23, 42, .18);
    backdrop-filter: blur(12px);
    display: flex;
    flex-wrap: wrap;
    transform: translateY(calc(100% + 96px));
    opacity: 0;
    pointer-events: none;
    transition: transform 180ms ease, opacity 180ms ease;
  }

  .admin-main:has(.admin-call-page.admin-call-menu-open) .admin-call-action-menu {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }

  body.admin-call-menu-open .admin-main:has(.admin-call-page) .admin-call-action-menu,
  body.admin-call-menu-open .admin-call-action-menu {
    display: flex !important;
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }

  .admin-main:has(.admin-call-page) .admin-call-top-actions {
    width: 100%;
    justify-content: center;
    gap: 8px;
  }

  .admin-main:has(.admin-call-page) .admin-call-action-menu .admin-action-btn {
    min-height: 38px;
    border-radius: 10px;
    padding: 8px 10px;
    font-size: 12px;
  }

  .admin-main:has(.admin-call-page) .admin-call-timer {
    position: fixed;
    top: max(12px, env(safe-area-inset-top));
    left: max(12px, env(safe-area-inset-left));
    z-index: 10122;
    min-width: 0;
    min-height: 34px;
    padding: 6px 8px;
    border-radius: 12px;
    background: rgba(255, 255, 255, .92);
    box-shadow: 0 12px 32px rgba(15, 23, 42, .18);
  }

  .admin-main:has(.admin-call-page) .admin-call-timer span {
    display: none;
  }

  .admin-main:has(.admin-call-page) .admin-call-timer strong {
    min-width: 66px;
    text-align: center;
    font-size: 13px;
    color: #fff;
    background: #ef4444;
    text-shadow: none;
  }

  .admin-main:has(.admin-call-page) .admin-call-top-actions .admin-call-timer {
    display: flex;
  }

  .admin-main:has(.admin-call-page) .admin-call-action-menu .admin-action-btn {
    flex: 1 1 calc(50% - 6px);
  }

  .admin-call-mobile-only {
    display: flex !important;
  }
}

@media (min-width: 841px) {
  .admin-call-mobile-only {
    display: none !important;
  }
}

[data-toggle-flip],
[data-lk-flip] {
  display: none !important;
}

@media (pointer: coarse) {
  [data-toggle-flip],
  [data-lk-flip] {
    display: inline-flex !important;
  }
}

@media (max-width: 768px) {
  html:has(.call-page-app:not([hidden])),
  body:has(.call-page-app:not([hidden])) {
    width: 100dvw;
    max-width: 100dvw;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: var(--call-app-background);
  }

  .call-page-app {
    left: 0 !important;
    top: 0 !important;
    right: auto !important;
    bottom: auto !important;
    width: 100dvw !important;
    max-width: 100dvw !important;
    height: 100dvh !important;
    min-height: 100dvh !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
  }

  .patient-call-page {
    left: calc(-1 * max(16px, env(safe-area-inset-left))) !important;
    width: calc(100dvw + max(16px, env(safe-area-inset-left))) !important;
    max-width: none !important;
  }

  .livekit-stage-app {
    left: 0 !important;
    top: 0 !important;
    right: auto !important;
    bottom: auto !important;
    width: 100dvw !important;
    max-width: 100dvw !important;
    height: 100dvh !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  .patient-call-page .livekit-stage-app {
    left: 0 !important;
    width: calc(100dvw + max(16px, env(safe-area-inset-left))) !important;
    max-width: none !important;
  }

  .livekit-stage-app #lkMain,
  .livekit-stage-app .lk-bg-blur {
    left: 0 !important;
    right: auto !important;
    width: 100dvw !important;
    max-width: 100dvw !important;
  }

  .livekit-stage-app.grid {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 1fr;
    gap: 12px !important;
    padding: 10px !important;
    background: var(--call-app-background) !important;
  }

  .livekit-stage-app.grid #lkMain,
  .livekit-stage-app.grid #lkSelf {
    width: 100% !important;
    max-width: 100% !important;
    height: 100% !important;
    border-radius: 8px !important;
  }

  .livekit-stage-app.grid #lkMain {
    grid-column: 1;
    grid-row: 1;
  }

  .livekit-stage-app.grid #lkSelf {
    grid-column: 1;
    grid-row: 2;
  }

  .livekit-stage-app:not(.grid).portrait-remote .lk-bg-blur {
    display: block;
  }

  .livekit-stage-app:not(.grid).portrait-remote #lkMain {
    object-fit: contain !important;
  }

  #lkSelf {
    width: 128px;
    max-width: 34vw;
  }

  .patient-call-page .call-actions-app {
    right: max(18px, env(safe-area-inset-right));
    bottom: max(18px, env(safe-area-inset-bottom));
    gap: 10px;
    max-width: calc(100dvw - 36px);
  }

  .fab-call-app {
    width: 48px;
    height: 48px;
  }

  .call-gallery-app {
    width: 100dvw;
    height: 100dvh;
    padding: 0;
    align-items: stretch;
    justify-content: stretch;
  }

  .call-gallery-box {
    width: 100dvw;
    max-width: 100dvw;
    height: 100dvh;
    max-height: 100dvh;
    border-radius: 0;
    margin: 0;
  }

  .call-gallery-arrow {
    width: 36px;
    height: 36px;
    font-size: 30px;
  }

  .call-gallery-close {
    top: max(8px, env(safe-area-inset-top));
    right: 8px;
    color: #fff;
    background: rgba(17,24,39,.62);
    border-radius: 999px;
    z-index: 4;
  }
}

.patient-call-page .livekit-stage-app.grid {
  box-sizing: border-box !important;
  left: 0 !important;
  width: 100dvw !important;
  max-width: 100dvw !important;
  gap: 12px !important;
  padding: 12px !important;
}

.patient-call-page .livekit-stage-app.grid #lkMain,
.patient-call-page .livekit-stage-app.grid #lkSelf {
  position: relative !important;
  inset: auto !important;
  left: auto !important;
  right: auto !important;
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  border-radius: 8px !important;
}

@media (max-width: 768px) {
  .patient-call-page .livekit-stage-app.grid {
    gap: 10px !important;
    padding: 10px !important;
  }
}

.precall-stage[data-precall-stage] {
  position: fixed !important;
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  right: auto !important;
  bottom: auto !important;
  width: 100vw !important;
  width: 100dvw !important;
  max-width: none !important;
  height: 100vh !important;
  height: 100dvh !important;
  min-height: 100vh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: #000 !important;
  transform: none !important;
  box-sizing: border-box !important;
}

.precall-stage[data-precall-stage] .video-layer-app,
.precall-stage[data-precall-stage] .video-layer-app video {
  position: absolute !important;
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  width: 100dvw !important;
  height: 100dvh !important;
  max-width: none !important;
  max-height: none !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: #000 !important;
  box-sizing: border-box !important;
}

.precall-stage[data-precall-stage] .video-layer-app video {
  left: 0 !important;
  top: 0 !important;
  width: 100dvw !important;
  height: 100dvh !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: cover !important;
  opacity: 1 !important;
  transform: none !important;
  transform-origin: center center !important;
  pointer-events: none !important;
}

.precall-stage[data-precall-stage] .precall-controls {
  width: auto !important;
  max-width: calc(100dvw - 24px) !important;
  flex-wrap: nowrap !important;
  gap: 8px !important;
  padding: 8px !important;
  border-radius: 999px !important;
}

.precall-stage[data-precall-stage] .precall-controls .cta-app {
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 104px !important;
  min-height: 44px !important;
  padding: 0 18px !important;
  border-radius: 999px !important;
  white-space: nowrap !important;
}

@media (max-width: 520px) {
  .precall-stage[data-precall-stage] .precall-controls {
    bottom: max(14px, env(safe-area-inset-bottom)) !important;
  }

  .precall-stage[data-precall-stage] .precall-controls .cta-app {
    flex: 0 0 auto !important;
    width: auto !important;
  }
}

/* Aviso de camera/microfone na area administrativa. Substitui a tela de
   "Permissoes bloqueadas" do paciente, que apagava o atendimento inteiro. */
.admin-call-media-notice {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  margin: 0 0 10px;
  padding: 10px 14px;
  border: 1px solid rgba(234, 88, 12, 0.35);
  border-radius: 12px;
  background: #fff3ec;
  color: #7c2d12;
  font-size: 13px;
  line-height: 1.35;
}

.admin-call-media-notice-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 220px;
  flex: 1 1 260px;
}

.admin-call-media-notice-text strong {
  font-weight: 800;
}

.admin-call-media-notice-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.admin-call-media-notice-actions button {
  cursor: pointer;
  font: inherit;
  border-radius: 8px;
  padding: 6px 12px;
  border: 1px solid rgba(234, 88, 12, 0.45);
  background: #fff;
  color: #7c2d12;
}

.admin-call-media-notice-actions button:disabled {
  cursor: default;
  opacity: 0.6;
}

.admin-call-media-notice-actions [data-admin-media-dismiss] {
  border: 0;
  background: transparent;
  font-size: 18px;
  line-height: 1;
  padding: 4px 8px;
}

/* ==== ./src/styles/forms.css ==== */
.phone-field-app {
  display: grid;
  grid-template-columns: 104px 1fr;
  width: 100%;
  padding-left: 40px;
  background: var(--input);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  min-height: 46px;
}

.phone-field-app select,
.phone-field-app input {
  width: 100%;
  min-height: 44px;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.phone-field-app select {
  padding: 0 2px 0 0;
  font-size: 13px;
  border-right: 0 !important;
  font-weight: 700;
  color: var(--text);
}

.phone-field-app input {
  padding: 0 12px 0 6px !important;
}

.field-control:focus-within .phone-field-app {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 16%, transparent);
}

/* ==== ./src/styles/cadastro.css ==== */
.cadastro-container-app {
  grid-template-columns: minmax(320px, 620px) minmax(0, 1fr);
}

body.route-cadastro {
  background:
    radial-gradient(1200px 700px at 0% 0%, color-mix(in srgb, var(--primary) 10%, var(--bg)), transparent 60%),
    radial-gradient(900px 520px at 100% 8%, color-mix(in srgb, var(--secondary) 10%, var(--bg)), transparent 60%),
    var(--bg);
}

.cadastro-card-app {
  max-height: calc(100vh - 44px);
  overflow-y: auto;
  padding-right: 18px;
}

.cadastro-card-app .section-title {
  margin: 0;
  color: var(--text);
  font-size: 28px;
  font-weight: 900;
}

.cadastro-page-app {
  max-width: 1160px;
  margin: 0 auto;
  padding: 24px;
}

.cadastro-page-app .brand {
  text-align: center;
  margin-bottom: 8px;
  display: block;
  width: 100%;
  max-width: none;
  max-height: none;
  object-fit: initial;
}

.cadastro-page-app .brand img {
  max-width: 180px;
  max-height: 70px;
  display: inline-block;
}

.cadastro-page-app .panel {
  background: rgba(255, 255, 255, .72);
  backdrop-filter: blur(4px);
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: 0 20px 50px rgba(0, 0, 0, .08);
}

.cadastro-page-app .main {
  padding: 18px;
}

.cadastro-page-app ~ .popup-overlay {
  padding: 18px;
}

.cadastro-page-app ~ .popup-overlay .popup-content {
  width: 100%;
  max-width: 900px;
  max-height: calc(100dvh - 36px);
  overflow-y: auto;
  padding: 10px;
}

.cadastro-page-app ~ .popup-overlay iframe {
  height: min(70vh, calc(100dvh - 120px));
}

.cadastro-page-app ~ .popup-overlay .popup-close {
  background: var(--primary);
  color: #fff;
  padding: 10px 20px;
  border-radius: 10px;
  margin-top: 10px;
  font-weight: 800;
}

.cadastro-page-app .section-title {
  font-size: clamp(28px, 4vw, 42px);
  line-height: 1.05;
  margin: 8px 0 14px;
  font-weight: 900;
  color: #202733;
}

.cadastro-page-app .section-sub {
  margin: -4px 0 16px;
  color: var(--muted);
  font-weight: 600;
}

.cadastro-form-app {
  display: block;
}

.cadastro-form-app .form-group,
.cadastro-form-app .field-control,
.cadastro-form-app input,
.cadastro-form-app select {
  min-width: 0;
}

.cadastro-form-app .phone-field-app {
  grid-template-columns: 80px minmax(0, 1fr);
}

.form-shell {
  border: none;
  border-radius: 0;
  background: transparent;
  padding: 0;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.form-group {
  position: relative;
}

.form-group.full {
  grid-column: 1 / -1;
}

.form-group label {
  display: block;
  font-weight: 800;
  color: #2b3342;
  margin: 0 0 6px;
}

.field-control {
  position: relative;
}

.field-control .field-icon {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  color: color-mix(in srgb, var(--text) 62%, white);
  pointer-events: none;
  opacity: .9;
  display: grid;
  place-items: center;
  z-index: 2;
}

.field-control .field-icon svg {
  width: 18px;
  height: 18px;
  display: block;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.form-group .field-control > input,
.form-group .field-control > select {
  width: 100%;
  padding: 12px 42px 12px 40px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--input);
  font: inherit;
  color: var(--text);
  outline: none;
  transition: .18s ease;
  min-height: 46px;
}

.form-group input:-webkit-autofill,
.form-group input:-webkit-autofill:hover,
.form-group input:-webkit-autofill:focus,
.form-group select:-webkit-autofill {
  -webkit-text-fill-color: var(--text);
  box-shadow: 0 0 0 1000px var(--input) inset;
  transition: background-color 5000s ease-in-out 0s;
}

.form-group .field-control > input:focus,
.form-group .field-control > select:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 16%, transparent);
}

/* O campo de documento é composto por tipo + número. Sem esta regra,
   os controles internos escapam do estilo dos demais campos. */
.form-group .field-control > .documento-field-app {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: 0;
  width: 100%;
  margin-left: 0;
  padding-left: 36px;
  min-height: 46px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--input);
  transition: border-color 160ms ease, box-shadow 160ms ease;
}

.form-group .field-control > .documento-field-app select,
.form-group .field-control > .documento-field-app input {
  width: 100%;
  min-height: 44px;
  padding: 12px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  outline: none;
  transition: color 160ms ease;
}

.form-group .field-control > .documento-field-app select {
  max-width: 104px;
  padding: 0 24px 0 10px;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='m1 1 4 4 4-4' fill='none' stroke='%2364758b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  background-size: 10px 6px;
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.form-group .field-control > .documento-field-app input {
  padding: 0 36px 0 10px;
}

.form-group .field-control > .documento-field-app:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 16%, transparent);
}

.form-group .field-control > .documento-field-app select:focus,
.form-group .field-control > .documento-field-app input:focus {
  border: 0;
  background-color: transparent;
  box-shadow: none;
}

.form-group .field-control > .documento-field-app + input[type="hidden"] {
  display: none;
}

.terms-row {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  margin: 6px 0 14px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255, 255, 255, .45);
}

.terms-check {
  appearance: none;
  -webkit-appearance: none;
  width: 20px;
  height: 20px;
  min-height: 20px;
  margin: 2px 0 0;
  border: none;
  border-radius: 999px;
  background: #d3d3d3;
  cursor: pointer;
  position: relative;
  flex: 0 0 20px;
  transition: 150ms;
}

.terms-check:hover {
  background: #959595;
  filter: brightness(1.15);
}

.terms-check:checked {
  background: var(--primary);
}

.terms-check::after {
  content: "";
  position: absolute;
  display: none;
  left: 6px;
  top: 2px;
  width: 5px;
  height: 10px;
  border: solid #fff;
  border-width: 0 3px 3px 0;
  transform: rotate(45deg);
}

.terms-check:checked::after {
  display: block;
}

.terms-row label {
  margin: 0;
  color: #344054;
  line-height: 1.35;
}

.terms-row a {
  color: var(--primary);
  font-weight: 800;
  text-decoration: none;
}

.actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.submit-btn {
  flex: 1 1 220px;
  min-height: 52px;
  border: 0;
  border-radius: 14px;
  font-size: 16px;
  font-weight: 800;
  cursor: pointer;
  transition: .18s ease;
  background: var(--primary);
  color: #fff;
}

.submit-btn.secondary {
  background: rgba(17, 24, 39, .09);
  color: #202733;
}

.submit-btn[disabled] {
  background: #9aa3b2 !important;
  color: #fff;
  cursor: not-allowed;
}

.submit-btn:not([disabled]):hover {
  transform: translateY(-1px);
}

.cadastro-form-app .loading-icon {
  display: none;
  color: var(--primary);
  animation: spinInline 1s linear infinite;
}

.cadastro-form-app .check-icon {
  display: none;
  color: #0f9f3f;
}

.field-control .toggle-password,
.field-control .loading-icon,
.field-control .check-icon {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 16px;
}

.toggle-password {
  cursor: pointer;
  color: #58657a;
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  z-index: 3;
  transition: background-color .18s ease, color .18s ease;
}

.toggle-password:hover,
.toggle-password:focus-visible {
  color: var(--primary);
  background: color-mix(in srgb, var(--primary) 12%, transparent);
  outline: none;
}

.error-message-inline {
  margin-top: 6px;
  color: #b42318;
  font-size: 13px;
  font-weight: 700;
}

.field-invalid {
  border-color: red !important;
  background: #ffd0d0 !important;
}

/* Mesmos espaçamentos e empilhamento do cadastro.php no mobile. */
@media (max-width: 760px) {
  .cadastro-page-app {
    padding: 14px;
  }

  .cadastro-page-app .main {
    padding: 14px;
  }

  .cadastro-form-app .form-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .cadastro-form-app .submit-btn {
    flex: 1 1 100%;
  }

  .cadastro-form-app .field-control input,
  .cadastro-form-app .field-control > select {
    font-size: 16px;
  }

  .cadastro-form-app .field-control > .documento-field-app {
    grid-template-columns: 76px minmax(0, 1fr);
  }
}

@media (max-width: 359px) {
  .cadastro-form-app .phone-field-app {
    grid-template-columns: 72px minmax(0, 1fr);
  }

  .cadastro-form-app .field-control > .documento-field-app {
    grid-template-columns: 64px minmax(0, 1fr);
  }
}

/* ==== ./src/styles/vet.css ==== */
.vet-shell,
.vet-home {
  min-height: 100vh;
  padding-bottom: 96px;
  background: var(--bg);
  color: var(--text);
}

.vet-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 18px;
}

.vet-header-actions {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.vet-back-btn {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid #eee;
  background: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--primary);
  box-shadow: 0 6px 14px rgba(0, 0, 0, .12);
}

.vet-back-btn svg {
  width: 18px;
  height: 18px;
}

.vet-header-greet {
  display: flex;
  flex-direction: column;
  line-height: 1.1;
}

.vet-header-greet span {
  font-size: 10px;
  color: #777;
  font-weight: 600;
}

.vet-header-greet strong {
  font-size: 12px;
  color: #555;
  font-weight: 700;
}

.vet-logo-header {
  height: 36px;
  width: auto;
}

.vet-content {
  width: 100%;
}

.vet-page-title {
  font-size: 18px;
  color: var(--primary);
  text-align: center;
  margin: 15px 0 0;
}

.vet-page-sub {
  font-size: 14px;
  color: var(--secondary);
  text-align: center;
  margin: 4px 0 20px;
}

.vet-pet-list {
  display: grid;
  gap: 10px;
}

.vet-pet-card {
  background: var(--primary);
  color: #fff;
  border-radius: 12px;
  padding: 15px;
  margin: 10px auto;
  max-width: 400px;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  cursor: pointer;
  box-shadow: 0 14px 26px rgba(0, 0, 0, .12);
}

.vet-pet-photo {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  object-fit: cover;
  border: 3px solid #fff;
  margin-right: 12px;
  background: rgba(255, 255, 255, .25);
}

.vet-pet-details h3 {
  margin: 3px 0;
  font-size: 15px;
  line-height: 1.25;
}

.vet-type-row {
  display: flex;
  align-items: center;
}

.vet-type-row img {
  width: 16px;
  height: 16px;
  filter: invert(1);
  margin-right: 4px;
}

.vet-pet-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  margin-left: auto;
}

.vet-btn-edit,
.vet-btn-new {
  width: 140px;
  padding: 10px 0;
  font-size: 15px;
  border-radius: 6px;
  color: #fff;
  text-align: center;
  margin-top: 6px;
}

.vet-btn-edit {
  background: var(--tertiary);
}

.vet-btn-new,
.vet-btn-add,
.vet-submit-btn {
  background: var(--secondary);
}

.vet-btn-add {
  display: block;
  width: calc(100% - 40px);
  max-width: 400px;
  margin: 20px auto 30px;
  padding: 10px 20px;
  color: #fff;
  border-radius: 6px;
  font-size: 15px;
  text-align: center;
}

.vet-empty-card {
  width: calc(100% - 40px);
  max-width: 400px;
  margin: 20px auto;
  background: rgba(255, 255, 255, .78);
  border-radius: 12px;
  padding: 20px;
  text-align: center;
}

.vet-animals-page {
  width: 100%;
  padding-bottom: 28px;
}

.vet-animal-card {
  cursor: default;
  margin-top: 10px;
  margin-bottom: 10px;
}

.vet-animal-actions {
  gap: 4px;
}

.vet-animal-actions .vet-btn-edit,
.vet-animal-actions .vet-btn-delete {
  margin-top: 4px;
}

.vet-btn-delete {
  width: 140px;
  min-width: 140px;
  padding: 10px 0;
  border: 0;
  background: #d9534f;
  color: #fff;
  border-radius: 6px;
  font-size: 15px;
  text-align: center;
  cursor: pointer;
}

.vet-att-card {
  align-items: flex-start;
}

.vet-att-info {
  background: var(--tertiary);
  border-radius: 8px;
  padding: 12px;
  width: 100%;
  margin-top: 10px;
  font-weight: 800;
  font-size: 14px;
  line-height: 1.55;
}

.vet-btn-eval {
  background: #444;
  color: #fff;
  border-radius: 6px;
  padding: 10px 0;
  font-size: 14px;
  text-align: center;
  width: 100%;
  margin-top: 8px;
}

.vet-dock {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  display: flex;
  justify-content: space-around;
  background: var(--primary);
  padding: 10px 0;
  box-shadow: 0 -1px 5px rgba(0, 0, 0, .2);
  z-index: 40;
}

.vet-dock-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #fff;
  background: transparent;
}

.vet-dock-item img {
  width: 18px;
  height: 18px;
  filter: invert(1);
  margin-bottom: 3px;
}

.vet-dock-item span {
  font-size: 12px;
  text-align: center;
}

.vet-home {
  min-height: 100vh;
  padding: 0 0 110px;
  position: relative;
}

.vet-patient-home .icon-only-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  margin-right: 2px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: #636363;
  color: #fff;
  cursor: pointer;
  box-shadow: 0 6px 16px rgba(0, 0, 0, .12);
  text-decoration: none;
}

.vet-patient-home .icon-only-action:hover,
.vet-patient-home .icon-only-action:focus-visible {
  background: transparent;
  border-color: #636363;
}

.vet-patient-home .icon-only-action img {
  filter: brightness(0) invert(1);
}

.vet-patient-home .patient-card {
  background: linear-gradient(135deg, var(--primary) 0%, color-mix(in srgb, var(--primary) 72%, #000 28%) 100%);
}

.vet-patient-home .policy-links button {
  appearance: none;
  border: 0;
  padding: 0;
  font: inherit;
}


.vet-home-header {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-sizing: border-box;
  padding: 10px 20px;
}

.vet-home-logo {
  width: 90px;
  max-height: 60px;
  max-width: 180px;
  object-fit: contain;
}

.vet-logout {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  position: static;
  background: var(--primary);
  color: #fff;
  border-radius: 10px;
  padding: 10px 15px;
  font-size: 16px;
  font-weight: 700;
}

.vet-logout img {
  width: 18px;
  filter: brightness(0) invert(1);
}

.vet-home h1 {
  color: var(--primary);
  font-size: 22px;
  margin: 0 0 -10px;
  text-align: center;
}

.vet-home-container {
  width: min(600px, calc(100% - 40px));
  min-height: 0;
  margin: 0 auto;
  padding: 20px;
  box-sizing: border-box;
}

.vet-patient-home .vet-button-item {
  box-shadow: 0 10px 20px rgba(0, 0, 0, .08);
}


.vet-home-card {
  width: 100%;
  box-sizing: border-box;
  padding: 20px;
  margin-bottom: 10px;
  border-radius: 15px;
  background: var(--vet-primary, var(--primary));
  color: #fff;
}

.vet-welcome-card {
  display: flex;
  align-items: center;
  gap: 0;
  padding: 15px;
  margin-bottom: 15px;
  border-radius: 10px;
  background: var(--vet-tertiary, var(--tertiary));
  color: #fff;
}

.vet-welcome-text {
  flex: 1;
}

.vet-user-photo {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  object-fit: cover;
}

.vet-welcome-card span,
.vet-welcome-card p {
  margin: 0;
}

.vet-welcome-card strong {
  display: block;
  font-size: 19px;
  font-weight: 800;
}

.vet-welcome-card p {
  font-size: 14px;
  margin: 0;
  font-weight: 400;
}

.vet-status-plan {
  display: flex;
  gap: 15px;
  margin-bottom: 5px;
}

.vet-status-cell,
.vet-plan-cell {
  display: flex;
  align-items: center;
  flex: 1;
  min-height: 40px;
  padding: 10px;
  border-radius: 10px;
  background: rgba(255, 255, 255, .15);
  color: #fff;
  font-size: 14px;
}

.vet-status-cell i {
  width: 10px;
  height: 10px;
  flex: 0 0 10px;
  margin-right: 5px;
  border-radius: 50%;
  background: #ff0000;
}

.vet-status-cell i.active {
  background: #00ff00;
}

.vet-home-card .vet-welcome-card small {
  display: none;
}

.vet-welcome-card small {
  display: inline-block;
  margin-top: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .18);
  font-weight: 800;
}

.vet-welcome-card em {
  display: none;
  position: absolute;
  top: 16px;
  right: 16px;
  border-radius: 999px;
  padding: 6px 12px;
  font-style: normal;
  font-weight: 800;
  background: rgba(255, 255, 255, .18);
}

.vet-welcome-card em.active::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #00c853;
  margin-right: 6px;
}

.vet-home-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  width: 100%;
  box-sizing: border-box;
  margin-top: 0;
}

.vet-home-button {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 48%;
  height: 120px;
  margin: 10px 0 5px;
  border: 0;
  border-radius: 15px;
  background: var(--vet-secondary, var(--secondary));
  color: #fff;
  gap: 10px;
  font-weight: 900;
  box-shadow: none;
  cursor: pointer;
}

.vet-home-button img {
  width: 42px;
  height: 42px;
  filter: brightness(0) invert(1);
}

.vet-chat-btn {
  position: fixed;
  right: 18px;
  bottom: 38px;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: var(--vet-primary, var(--primary));
  display: flex;
  align-items: center;
  justify-content: center;
}

.vet-chat-btn img {
  width: 28px;
  filter: brightness(0) invert(1);
}

.vet-legal {
  position: fixed;
  left: 50%;
  bottom: 6px;
  transform: translateX(-50%);
  background: var(--bg);
  border-radius: 12px;
  padding: 4px 10px;
  color: var(--primary);
  display: inline-flex;
  gap: 9px;
  align-items: center;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.vet-legal button {
  background: transparent;
  color: inherit;
  font-weight: inherit;
}

.vet-animal-form-wrap {
  width: 100%;
  max-width: 400px;
  margin: auto;
  text-align: center;
  padding: 20px 0 80px;
}

.vet-profile-picture {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  border: 4px solid var(--primary);
  overflow: hidden;
  cursor: pointer;
  margin: 0 auto 20px;
  padding: 0;
  background: #fff;
}

.vet-profile-picture img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.vet-animal-form label {
  font-size: 14px;
  font-weight: 800;
  display: block;
  margin-bottom: 5px;
  text-align: left;
  padding-left: 35px;
  color: var(--secondary);
}

.vet-animal-form input,
.vet-animal-form select {
  width: calc(100% - 40px);
  padding: 10px 15px;
  margin-bottom: 10px;
  background: var(--input);
  border: 1px solid #ccc;
  border-radius: 5px;
  font-size: 14px;
  box-sizing: border-box;
}

.vet-animal-form input:focus,
.vet-animal-form select:focus {
  border-color: var(--primary);
  outline: none;
}

.vet-submit-btn,
.vet-delete-btn {
  color: #fff;
  padding: 10px 20px;
  font-size: 16px;
  border-radius: 5px;
  width: calc(100% - 40px);
}

.vet-delete-btn {
  background: #d9534f;
  margin-top: 5px;
}

@media (max-width: 640px) {
  .vet-pet-card,
  .vet-btn-add,
  .vet-empty-card {
    margin-left: 20px;
    margin-right: 20px;
    width: auto;
    max-width: none;
  }

  .vet-home {
    padding-top: 0;
  }

  .vet-home-container {
    width: calc(100% - 24px);
    padding: 12px;
  }

  .vet-home-grid {
    width: 100%;
  }
}

/* ==== ./src/styles/responsive.css ==== */
@media (max-width: 960px) {
  .desktop-container {
    grid-template-columns: 1fr;
    max-width: 560px;
  }

  .desktop-banner {
    min-height: 260px;
    order: -1;
  }

  .container {
    padding: 18px;
  }
}

@media (max-width: 720px) {
  .grid {
    grid-template-columns: 1fr;
  }

  .profile span {
    display: none;
  }

  .shell {
    padding-inline: 14px;
  }

  .hero {
    border-radius: 28px;
    padding: 26px;
  }

}

@media (max-width: 560px) {
  .page-shell {
    padding: 12px;
  }

  .desktop-banner {
    display: none;
  }

  .container {
    border-radius: 18px;
    padding: 16px;
  }

  .input-container {
    min-height: 50px;
  }
}

@keyframes spinInline {
  from { transform: translateY(-50%) rotate(0); }
  to { transform: translateY(-50%) rotate(360deg); }
}

@keyframes spin {
  from { transform: rotate(0); }
  to { transform: rotate(360deg); }
}

@keyframes cardIn {
  from { opacity: 0; transform: translateY(16px) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes bannerIn {
  from { opacity: 0; transform: translateY(16px) scale(.97); }
  to { opacity: var(--banner-opacity); transform: translateY(0) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }
}

/* ==== ./src/styles/fa-solid.css ==== */
/* Font Awesome 6 Free (solid) — self-hosted, subconjunto dos ícones usados pelo app */
@font-face {
  font-family: 'Font Awesome 6 Free'; font-style: normal; font-weight: 900; font-display: swap;
  src: url('../webfonts/fa-solid-900.woff2') format('woff2');
}
.fas, .fa-solid {
  font-family: 'Font Awesome 6 Free'; font-weight: 900;
  font-style: normal; font-variant: normal; text-rendering: auto;
  line-height: 1; display: inline-block; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased;
}
.fa-spin { animation: fa-spin 2s linear infinite; }
@keyframes fa-spin { 0% { transform: rotate(0); } 100% { transform: rotate(360deg); } }
.fa-arrow-down:before { content: "\f063"; }
.fa-arrow-up:before { content: "\f062"; }
.fa-ban:before { content: "\f05e"; }
.fa-barcode:before { content: "\f02a"; }
.fa-bold:before { content: "\f032"; }
.fa-box:before { content: "\f466"; }
.fa-building:before { content: "\f1ad"; }
.fa-calculator:before { content: "\f1ec"; }
.fa-calendar-check:before { content: "\f274"; }
.fa-calendar-day:before { content: "\f783"; }
.fa-check:before { content: "\f00c"; }
.fa-check-circle:before { content: "\f058"; }
.fa-check-double:before { content: "\f560"; }
.fa-chevron-down:before { content: "\f078"; }
.fa-chevron-left:before { content: "\f053"; }
.fa-chevron-right:before { content: "\f054"; }
.fa-clock:before { content: "\f017"; }
.fa-code:before { content: "\f121"; }
.fa-copy:before { content: "\f0c5"; }
.fa-dollar-sign:before { content: "\24"; }
.fa-door-open:before { content: "\f52b"; }
.fa-envelope:before { content: "\f0e0"; }
.fa-eraser:before { content: "\f12d"; }
.fa-eye:before { content: "\f06e"; }
.fa-eye-slash:before { content: "\f070"; }
.fa-file-code:before { content: "\f1c9"; }
.fa-file-invoice:before { content: "\f570"; }
.fa-file-invoice-dollar:before { content: "\f571"; }
.fa-file-medical:before { content: "\f477"; }
.fa-file-pdf:before { content: "\f1c1"; }
.fa-hand-holding-usd:before { content: "\f4c0"; }
.fa-headset:before { content: "\f590"; }
.fa-heart:before { content: "\f004"; }
.fa-hourglass-half:before { content: "\f254"; }
.fa-id-card:before { content: "\f2c2"; }
.fa-image:before { content: "\f03e"; }
.fa-italic:before { content: "\f033"; }
.fa-key:before { content: "\f084"; }
.fa-layer-group:before { content: "\f5fd"; }
.fa-link:before { content: "\f0c1"; }
.fa-list-ul:before { content: "\f0ca"; }
.fa-lock:before { content: "\f023"; }
.fa-minus-circle:before { content: "\f056"; }
.fa-mobile-alt:before { content: "\f3cd"; }
.fa-paper-plane:before { content: "\f1d8"; }
.fa-paw:before { content: "\f1b0"; }
.fa-pen:before { content: "\f304"; }
.fa-phone:before { content: "\f095"; }
.fa-phone-slash:before { content: "\f3dd"; }
.fa-phone-volume:before { content: "\f2a0"; }
.fa-plus:before { content: "\2b"; }
.fa-rotate-left:before { content: "\f2ea"; }
.fa-satellite-dish:before { content: "\f7c0"; }
.fa-save:before { content: "\f0c7"; }
.fa-shield-alt:before { content: "\f3ed"; }
.fa-sign-out-alt:before { content: "\f2f5"; }
.fa-sitemap:before { content: "\f0e8"; }
.fa-sliders-h:before { content: "\f1de"; }
.fa-smile:before { content: "\f118"; }
.fa-spinner:before { content: "\f110"; }
.fa-stethoscope:before { content: "\f0f1"; }
.fa-trash:before { content: "\f1f8"; }
.fa-user-clock:before { content: "\f4fd"; }
.fa-users:before { content: "\f0c0"; }
.fa-video:before { content: "\f03d"; }
.fa-user-md:before { content: "\f0f0"; }
.fa-search:before { content: "\f002"; }
.fa-times:before { content: "\f00d"; }
.fa-edit:before { content: "\f044"; }
.fa-download:before { content: "\f019"; }
.fa-upload:before { content: "\f093"; }
.fa-calendar:before { content: "\f133"; }
.fa-comment:before { content: "\f075"; }
.fa-tint:before { content: "\f043"; }
.fa-pills:before { content: "\f484"; }
.fa-syringe:before { content: "\f48e"; }

