/*
  Espaço público de apoio — camada visual do site estático.

  Este arquivo reaproveita as variáveis e tipografias de styles.css.
  Não contém dados de pacientes nem mecanismos de autenticação.
*/

.portal-body {
  min-height: 100vh;
}

.portal-intro {
  display: none;
}

html.portal-intro-enabled,
html.portal-intro-enabled body {
  overflow: hidden;
}

html.portal-intro-enabled .portal-intro {
  align-items: center;
  background:
    radial-gradient(circle at 50% 44%, rgba(184, 148, 93, 0.14), transparent 13rem),
    radial-gradient(circle at 50% 50%, rgba(244, 241, 234, 0.025), transparent 30rem),
    linear-gradient(145deg, #020202, #101010 54%, #050505);
  display: flex;
  inset: 0;
  isolation: isolate;
  justify-content: center;
  min-height: 100svh;
  overflow: hidden;
  padding: max(1.5rem, env(safe-area-inset-top)) 1.25rem max(1.5rem, env(safe-area-inset-bottom));
  position: fixed;
  transition:
    opacity 0.28s ease,
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0.28s ease;
  z-index: 10000;
}

.portal-intro::before,
.portal-intro::after {
  content: '';
  pointer-events: none;
  position: absolute;
}

.portal-intro::before {
  background:
    radial-gradient(ellipse at center, transparent 43%, rgba(184, 148, 93, 0.18) 43.3%, transparent 43.8%),
    radial-gradient(ellipse at center, transparent 59%, rgba(244, 241, 234, 0.055) 59.2%, transparent 59.7%);
  height: min(122vw, 720px);
  left: 50%;
  top: 48%;
  transform: translate(-50%, -50%) rotate(-9deg);
  width: min(122vw, 720px);
}

.portal-intro::after {
  background:
    radial-gradient(circle at 20% 24%, rgba(184, 148, 93, 0.34) 0 1px, transparent 1.6px),
    radial-gradient(circle at 74% 69%, rgba(244, 241, 234, 0.14) 0 1px, transparent 1.6px);
  background-size: 64px 64px, 96px 96px;
  inset: 0;
  opacity: 0.45;
}

.portal-intro.is-exiting {
  opacity: 0;
  pointer-events: none;
  transform: scale(1.025);
  visibility: hidden;
}

.portal-intro-brand {
  align-items: center;
  display: flex;
  flex-direction: column;
  position: relative;
  text-align: center;
  transition:
    opacity 0.26s ease,
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
  width: min(100%, 430px);
  z-index: 1;
}

.portal-intro.is-exiting .portal-intro-brand {
  opacity: 0;
  transform: translateY(-5px) scale(1.035);
}

.portal-intro-mark {
  align-items: center;
  aspect-ratio: 1;
  display: flex;
  justify-content: center;
  margin-bottom: 1rem;
  position: relative;
  width: clamp(158px, 46vw, 218px);
}

.portal-intro-mark::before,
.portal-intro-mark::after {
  border-radius: 50%;
  content: '';
  pointer-events: none;
  position: absolute;
}

.portal-intro-mark::before {
  border: 1px solid rgba(184, 148, 93, 0.28);
  border-bottom-color: rgba(184, 148, 93, 0.04);
  inset: 0;
  transform: rotate(-17deg);
}

.portal-intro-mark::after {
  background: radial-gradient(circle, rgba(184, 148, 93, 0.12), transparent 64%);
  border: 1px solid rgba(244, 241, 234, 0.07);
  inset: 14%;
}

.portal-intro-mark img {
  filter:
    drop-shadow(0 0 12px rgba(244, 241, 234, 0.08))
    drop-shadow(0 0 26px rgba(184, 148, 93, 0.2));
  height: clamp(106px, 30vw, 150px);
  object-fit: contain;
  position: relative;
  width: clamp(106px, 30vw, 150px);
  z-index: 1;
}

.portal-intro-name {
  color: var(--color-light);
  font-family: 'Great Vibes', cursive;
  font-size: clamp(2.3rem, 10vw, 3.5rem);
  line-height: 1;
  margin-bottom: 0.65rem;
}

.portal-intro-role {
  color: rgba(244, 241, 234, 0.75);
  font-size: clamp(0.62rem, 2.7vw, 0.8rem);
  letter-spacing: 0.17em;
  margin: 0;
  text-transform: uppercase;
}

.portal-intro-line {
  background: linear-gradient(90deg, transparent, var(--color-gold), transparent);
  height: 1px;
  margin-top: 1.15rem;
  width: min(230px, 62vw);
}

.portal-route-transition {
  align-items: center;
  background: rgba(4, 4, 4, 0.96);
  display: flex;
  inset: 0;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  position: fixed;
  transition: opacity 0.18s ease;
  visibility: hidden;
  z-index: 9998;
}

.portal-route-transition img {
  filter: drop-shadow(0 0 24px rgba(184, 148, 93, 0.22));
  height: 76px;
  object-fit: contain;
  width: 76px;
}

.portal-navigating .portal-route-transition {
  opacity: 1;
  visibility: visible;
}

.portal-body::before {
  background-position: center -5rem;
  opacity: 0.18;
}

.portal-body::after {
  opacity: 0.18;
}

.portal-header {
  backdrop-filter: blur(14px);
  background: rgba(5, 5, 5, 0.9);
  border-bottom: 1px solid rgba(184, 148, 93, 0.2);
  position: sticky;
  top: 0;
  z-index: 50;
}

.portal-header-inner {
  align-items: center;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  min-height: 76px;
  padding: 0.55rem 0;
}

.portal-brand {
  align-items: center;
  color: var(--color-light);
  display: inline-flex;
  gap: 0.72rem;
  min-width: 0;
  text-decoration: none;
}

.portal-brand picture {
  flex: 0 0 48px;
}

.portal-brand img {
  filter: drop-shadow(0 0 10px rgba(184, 148, 93, 0.18));
  height: 48px;
  object-fit: contain;
  width: 48px;
}

.portal-brand-copy {
  display: grid;
  min-width: 0;
}

.portal-brand-copy strong {
  font-family: 'Great Vibes', cursive;
  font-size: 1.6rem;
  font-weight: 400;
  line-height: 1;
  white-space: nowrap;
}

.portal-brand-copy small {
  color: var(--color-grey);
  font-size: 0.65rem;
  letter-spacing: 0.05em;
}

.portal-header-actions {
  align-items: center;
  display: flex;
  flex: 0 0 auto;
  gap: 0.65rem;
}

.portal-header-link {
  align-items: center;
  background: transparent;
  border: 1px solid rgba(184, 148, 93, 0.35);
  border-radius: 999px;
  color: var(--color-gold);
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  font-size: 0.82rem;
  min-height: 44px;
  padding: 0.52rem 0.78rem;
  text-decoration: none;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    color var(--transition-fast);
}

.portal-header-link:hover,
.portal-header-link:focus-visible {
  background: rgba(184, 148, 93, 0.09);
  border-color: var(--color-gold);
  color: var(--color-light);
}

.portal-main {
  min-height: calc(100vh - 152px);
  position: relative;
  z-index: 1;
}

.portal-entry {
  align-items: center;
  display: grid;
  min-height: calc(100vh - 152px);
  padding: clamp(3rem, 8vw, 6.5rem) 0;
}

.portal-entry-grid {
  align-items: center;
  display: grid;
  gap: clamp(2rem, 6vw, 5rem);
  grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);
}

.portal-kicker {
  color: var(--color-gold);
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  margin-bottom: 0.85rem;
  text-transform: uppercase;
}

.portal-entry h1,
.portal-page-title h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.15rem, 5vw, 4.1rem);
  line-height: 1.1;
  margin-bottom: 1rem;
  max-width: 900px;
  overflow-wrap: normal;
}

.portal-lead {
  color: var(--color-grey);
  font-size: clamp(1rem, 2vw, 1.13rem);
  line-height: 1.75;
  max-width: 700px;
}

.portal-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem;
  margin-top: 1.6rem;
}

.portal-note {
  align-items: flex-start;
  background: rgba(184, 148, 93, 0.055);
  border: 1px solid rgba(184, 148, 93, 0.18);
  border-left: 2px solid rgba(184, 148, 93, 0.65);
  border-radius: 8px;
  color: var(--color-grey);
  display: flex;
  font-size: 0.84rem;
  gap: 0.7rem;
  line-height: 1.6;
  margin-top: 1.5rem;
  padding: 0.9rem 1rem;
}

.portal-note svg {
  color: var(--color-gold);
  flex: 0 0 20px;
  height: 20px;
  margin-top: 0.08rem;
  stroke: currentColor;
  width: 20px;
}

.portal-emblem {
  align-items: center;
  aspect-ratio: 1;
  display: flex;
  justify-content: center;
  margin: 0 auto;
  max-width: 390px;
  position: relative;
  width: min(78vw, 390px);
}

.portal-emblem::before,
.portal-emblem::after {
  border-radius: 50%;
  content: '';
  pointer-events: none;
  position: absolute;
}

.portal-emblem::before {
  border: 1px solid rgba(184, 148, 93, 0.27);
  border-bottom-color: transparent;
  inset: 0;
  transform: rotate(-17deg);
}

.portal-emblem::after {
  background: radial-gradient(circle, rgba(184, 148, 93, 0.1), transparent 67%);
  border: 1px solid rgba(244, 241, 234, 0.06);
  inset: 12%;
}

.portal-emblem img {
  filter:
    drop-shadow(0 0 18px rgba(244, 241, 234, 0.08))
    drop-shadow(0 0 30px rgba(184, 148, 93, 0.16));
  position: relative;
  /* Aumentar levemente o tamanho e ajustar posição horizontal para centralizar a logo dentro do círculo */
  width: 65%;
  transform: translateX(-3%);
  z-index: 1;
}

.portal-feature-section {
  padding: 0 0 clamp(3.5rem, 8vw, 6rem);
}

.portal-section-heading {
  margin-bottom: 1.5rem;
  max-width: 700px;
}

.portal-section-heading h2 {
  font-size: clamp(1.65rem, 4vw, 2.35rem);
  margin-bottom: 0.65rem;
}

.portal-section-heading p {
  color: var(--color-grey);
}

.portal-feature-grid,
.portal-dashboard-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.portal-feature-card,
.portal-dashboard-card,
.portal-content-card {
  background:
    radial-gradient(circle at 92% 8%, rgba(184, 148, 93, 0.08), transparent 10rem),
    linear-gradient(145deg, rgba(28, 28, 28, 0.9), rgba(9, 9, 9, 0.9));
  border: 1px solid rgba(184, 148, 93, 0.18);
  border-radius: 12px;
  box-shadow: 0 18px 45px rgba(0, 0, 0, 0.22);
  overflow: hidden;
  position: relative;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    transform var(--transition-fast);
}

.portal-feature-card {
  padding: 1.35rem;
}

.portal-feature-card:hover,
.portal-feature-card:focus-within,
.portal-content-card:hover,
.portal-content-card:focus-within {
  border-color: rgba(184, 148, 93, 0.38);
  box-shadow: 0 22px 48px rgba(0, 0, 0, 0.28);
  transform: translateY(-2px);
}

.portal-feature-card::after,
.portal-dashboard-card::after,
.portal-content-card::after {
  background: linear-gradient(90deg, transparent, rgba(184, 148, 93, 0.62), transparent);
  content: '';
  height: 1px;
  left: 12%;
  opacity: 0.55;
  position: absolute;
  right: 12%;
  top: 0;
}

.portal-card-icon {
  align-items: center;
  background: rgba(184, 148, 93, 0.07);
  border: 1px solid rgba(184, 148, 93, 0.25);
  border-radius: 50%;
  color: var(--color-gold);
  display: inline-flex;
  height: 44px;
  justify-content: center;
  margin-bottom: 1rem;
  width: 44px;
}

.portal-card-icon svg {
  fill: none;
  height: 23px;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.6;
  width: 23px;
}

.portal-feature-card h3,
.portal-dashboard-card h2,
.portal-content-card h2 {
  color: var(--color-light);
  font-size: 1.12rem;
  margin-bottom: 0.55rem;
}

.portal-feature-card p,
.portal-dashboard-card p,
.portal-content-card p,
.portal-content-card li {
  color: var(--color-grey);
  font-size: 0.92rem;
  line-height: 1.65;
}

.portal-app {
  padding: clamp(1.5rem, 4vw, 3.25rem) 0 clamp(3rem, 7vw, 5rem);
}

.portal-layout {
  align-items: start;
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 238px minmax(0, 1fr);
}

.portal-sidebar {
  background: rgba(10, 10, 10, 0.72);
  border: 1px solid rgba(184, 148, 93, 0.17);
  border-radius: 12px;
  padding: 0.75rem;
  position: sticky;
  top: 96px;
}

.portal-nav {
  display: grid;
  gap: 0.32rem;
}

.portal-nav a {
  align-items: center;
  border: 1px solid transparent;
  border-radius: 8px;
  color: var(--color-grey);
  display: flex;
  font-size: 0.88rem;
  gap: 0.72rem;
  min-height: 44px;
  padding: 0.68rem 0.72rem;
  text-decoration: none;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    color var(--transition-fast);
}

.portal-nav a svg {
  fill: none;
  flex: 0 0 19px;
  height: 19px;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.6;
  width: 19px;
}

.portal-nav a:hover,
.portal-nav a:focus-visible,
.portal-nav a[aria-current='page'] {
  background: rgba(184, 148, 93, 0.08);
  border-color: rgba(184, 148, 93, 0.24);
  color: var(--color-light);
}

.portal-nav a[aria-current='page'] {
  color: var(--color-gold);
}

.portal-app-content {
  min-width: 0;
}

.portal-page-title {
  display: grid;
  gap: 0.25rem;
  border-bottom: 1px solid rgba(184, 148, 93, 0.18);
  margin-bottom: clamp(1.5rem, 3vw, 2rem);
  padding: 0.35rem 0 clamp(1.25rem, 3vw, 1.7rem);
}

.portal-page-title h1 {
  font-size: clamp(2rem, 4.2vw, 3.15rem);
  line-height: 1.12;
  margin: 0;
}

.portal-page-title p {
  color: var(--color-grey);
  line-height: 1.7;
  margin-top: 0.55rem;
  margin-bottom: 0;
  max-width: 720px;
}

.portal-welcome {
  background:
    radial-gradient(circle at 88% 15%, rgba(184, 148, 93, 0.12), transparent 18rem),
    linear-gradient(145deg, rgba(28, 28, 28, 0.92), rgba(8, 8, 8, 0.92));
  border: 1px solid rgba(184, 148, 93, 0.24);
  border-radius: 14px;
  margin-bottom: 1rem;
  padding: clamp(1.4rem, 4vw, 2.3rem);
  position: relative;
}

.portal-welcome h1 {
  font-size: clamp(1.9rem, 4.5vw, 3.15rem);
  line-height: 1.14;
  margin-bottom: 0.7rem;
}

.portal-welcome p {
  color: var(--color-grey);
  margin-bottom: 0;
  max-width: 680px;
}

.portal-dashboard-card {
  display: flex;
  flex-direction: column;
  min-height: 245px;
  padding: 1.35rem;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    transform var(--transition-fast);
}

.portal-dashboard-card:hover,
.portal-dashboard-card:focus-within {
  border-color: rgba(184, 148, 93, 0.42);
  box-shadow: 0 22px 48px rgba(0, 0, 0, 0.3);
  transform: translateY(-3px);
}

.portal-card-link {
  color: var(--color-gold);
  display: inline-flex;
  font-size: 0.86rem;
  font-weight: 600;
  gap: 0.4rem;
  margin-top: auto;
  padding-top: 1rem;
  text-decoration: none;
}

.portal-card-link::after {
  content: '→';
}

.portal-content-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.portal-content-card {
  padding: clamp(1.25rem, 3vw, 1.75rem);
}

.portal-legacy-message {
  margin: clamp(2.5rem, 8vw, 6rem) auto;
  max-width: 760px;
}

.portal-legacy-message h1 {
  font-size: clamp(2rem, 6vw, 3.25rem);
  line-height: 1.15;
  margin-bottom: 1rem;
}

.portal-content-card h2 {
  line-height: 1.28;
  margin-bottom: 0.7rem;
}

.portal-wide-card {
  grid-column: 1 / -1;
}

.portal-category-grid {
  display: grid;
  gap: 0.8rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 1rem;
}

.portal-category-card {
  background: rgba(6, 6, 6, 0.46);
  border: 1px solid rgba(184, 148, 93, 0.16);
  border-radius: 9px;
  min-height: 150px;
  padding: 1rem;
  position: relative;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    transform var(--transition-fast);
}

.portal-category-card:hover,
.portal-category-card:focus-within {
  background: rgba(184, 148, 93, 0.055);
  border-color: rgba(184, 148, 93, 0.34);
  transform: translateY(-2px);
}

.portal-category-card h3 {
  font-size: 1rem;
  line-height: 1.35;
  margin-bottom: 0.45rem;
}

.portal-category-card p {
  font-size: 0.84rem;
  line-height: 1.55;
  margin-bottom: 0.75rem;
}

.portal-resource-status {
  color: var(--color-gold);
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.portal-draft-form {
  display: grid;
  gap: 1rem;
}

.portal-draft-field {
  display: grid;
  gap: 0.45rem;
}

.portal-draft-field label {
  color: var(--color-light);
  font-family: 'Playfair Display', serif;
  font-size: 1rem;
  font-weight: 600;
}

.portal-draft-field textarea {
  background: rgba(6, 6, 6, 0.62);
  border: 1px solid rgba(184, 148, 93, 0.19);
  border-radius: 8px;
  color: var(--color-light);
  font: inherit;
  line-height: 1.6;
  min-height: 112px;
  padding: 0.85rem;
  resize: vertical;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
  width: 100%;
}

.portal-draft-field textarea:focus {
  background: rgba(12, 12, 12, 0.8);
  border-color: var(--color-gold);
  box-shadow: 0 0 0 3px rgba(184, 148, 93, 0.1);
  outline: 3px solid #d5b77f;
  outline-offset: 3px;
}

.portal-draft-actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
}

.portal-draft-status {
  color: #d7c39e;
  flex: 1 1 240px;
  font-size: 0.8rem;
  margin: 0;
}

.reminder-widget {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1rem;
}

.reminder-widget label {
  color: var(--color-light);
  font-weight: 600;
}

.reminder-widget select {
  background: rgba(6, 6, 6, 0.72);
  border: 1px solid rgba(184, 148, 93, 0.32);
  border-radius: 8px;
  color: var(--color-light);
  font: inherit;
  min-height: 44px;
  padding: 0.55rem 2rem 0.55rem 0.75rem;
}

.reminder-widget select:focus-visible {
  border-color: var(--color-gold);
  outline: 3px solid #d5b77f;
}

.reminder-widget p {
  flex-basis: 100%;
  margin: 0;
}

.portal-combined-grid {
  display: grid;
  gap: 0.85rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.portal-guidance-item {
  background: rgba(6, 6, 6, 0.42);
  border: 1px solid rgba(184, 148, 93, 0.15);
  border-radius: 9px;
  padding: 1rem;
}

.portal-guidance-item h2 {
  font-size: 1rem;
}

.portal-guidance-item p {
  font-size: 0.85rem;
  margin: 0;
}

.portal-ethical-notice {
  background:
    linear-gradient(145deg, rgba(184, 148, 93, 0.065), rgba(9, 9, 9, 0.7));
  border: 1px solid rgba(184, 148, 93, 0.22);
  border-left: 2px solid rgba(184, 148, 93, 0.72);
  border-radius: 10px;
  color: var(--color-grey);
  font-size: 0.84rem;
  line-height: 1.65;
  margin-top: 1rem;
  padding: 1rem;
}

.portal-content-card ul {
  display: grid;
  gap: 0.7rem;
  list-style: none;
  margin-top: 1rem;
}

.portal-content-card li {
  padding-left: 1.15rem;
  position: relative;
}

.portal-content-card li::before {
  color: var(--color-gold);
  content: '•';
  left: 0;
  position: absolute;
}

.portal-checklist li {
  align-items: flex-start;
  display: flex;
  gap: 0.75rem;
  padding-left: 0;
}

.portal-checklist li::before {
  content: none;
}

.portal-checklist input[type='checkbox'] {
  accent-color: var(--color-gold);
  flex: 0 0 22px;
  height: 22px;
  margin-top: 0.08rem;
  width: 22px;
}

.portal-checklist label {
  cursor: pointer;
  flex: 1;
}

.portal-empty-state {
  align-items: center;
  border: 1px dashed rgba(184, 148, 93, 0.25);
  border-radius: 10px;
  display: grid;
  justify-items: center;
  margin-top: 1rem;
  min-height: 190px;
  padding: 1.5rem;
  text-align: center;
}

.portal-empty-state .portal-card-icon {
  margin-bottom: 0.5rem;
}

.portal-empty-state p {
  margin-bottom: 0;
  max-width: 480px;
}

.portal-security-strip {
  background: rgba(184, 148, 93, 0.045);
  border: 1px solid rgba(184, 148, 93, 0.16);
  border-radius: 10px;
  color: var(--color-grey);
  font-size: 0.8rem;
  line-height: 1.55;
  margin-top: 1rem;
  padding: 0.9rem 1rem;
}

.portal-public-notice {
  background: rgba(184, 148, 93, 0.07);
  border: 1px solid rgba(184, 148, 93, 0.28);
  border-left: 3px solid var(--color-gold);
  border-radius: 10px;
  color: var(--color-grey);
  font-size: 0.86rem;
  line-height: 1.65;
  margin-bottom: 1rem;
  padding: 0.95rem 1rem;
}

.portal-public-notice strong {
  color: var(--color-light);
}

.portal-noscript-notice {
  background: rgba(138, 75, 45, 0.16);
  border: 1px solid rgba(213, 183, 127, 0.4);
  border-radius: 10px;
  color: var(--color-light);
  font-size: 0.86rem;
  line-height: 1.6;
  margin-bottom: 1rem;
  padding: 0.9rem 1rem;
}

.portal-footer {
  background: rgba(2, 2, 2, 0.94);
  border-top: 1px solid rgba(184, 148, 93, 0.18);
  padding: 1.25rem 0;
  position: relative;
  z-index: 1;
}

.portal-footer-inner {
  align-items: center;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
}

.portal-footer p,
.portal-footer a {
  color: var(--color-grey);
  font-size: 0.78rem;
  margin: 0;
}

.portal-footer a:hover,
.portal-footer a:focus-visible {
  color: var(--color-gold);
}

.portal-sr-status {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

@media (prefers-reduced-motion: no-preference) {
  .portal-enhanced .portal-reveal {
    opacity: 0;
    transform: translateY(12px);
    transition:
      opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1),
      transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
  }

  .portal-enhanced .portal-reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 1100px) {
  .portal-feature-grid,
  .portal-dashboard-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .portal-entry-grid {
    gap: 2rem;
    grid-template-columns: minmax(0, 1fr) minmax(250px, 0.65fr);
  }

  .portal-page-title h1 {
    font-size: clamp(2rem, 5vw, 2.75rem);
  }
}

@media (max-width: 860px) {
  /*
    Ajustes de navegação em telas menores.
    Ao invés de exigir rolagem horizontal, a navegação torna-se uma grade fluida
    onde os itens se distribuem automaticamente em colunas.
  */
  .portal-layout {
    grid-template-columns: 1fr;
  }

  .portal-sidebar {
    background: rgba(5, 5, 5, 0.82);
    /* Remover rolagem horizontal para evitar overflow indesejado */
    overflow-x: hidden;
    padding: 0.45rem;
    position: static;
    top: auto;
    z-index: 20;
  }

  .portal-nav {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 0.32rem;
    min-width: 0;
    width: 100%;
  }

  .portal-nav a {
    /* Permitir quebra de linha para títulos longos */
    white-space: normal;
  }
}

@media (max-width: 680px) {
  .portal-header-inner {
    min-height: 68px;
  }

  .portal-brand picture {
    flex-basis: 42px;
  }

  .portal-brand img {
    height: 42px;
    width: 42px;
  }

  .portal-brand-copy strong {
    font-size: 1.32rem;
    /* Permitir que o nome ocupe mais espaço sem ser truncado */
    max-width: none;
    overflow: visible;
    text-overflow: initial;
    white-space: normal;
  }

  .portal-brand-copy small {
    font-size: 0.68rem;
  }

  .portal-header-link {
    font-size: 0.74rem;
    padding: 0.48rem 0.65rem;
  }

  .portal-entry {
    padding: 2.5rem 0 3.5rem;
  }

  .portal-entry-grid {
    grid-template-columns: 1fr;
    text-align: center;
  }

  .portal-entry-copy {
    order: 1;
  }

  .portal-emblem {
    max-width: 235px;
    order: 0;
    width: min(64vw, 235px);
  }

  .portal-actions {
    justify-content: center;
  }

  .portal-note {
    text-align: left;
  }

  .portal-feature-grid,
  .portal-dashboard-grid,
  .portal-content-grid,
  .portal-category-grid,
  .portal-combined-grid {
    grid-template-columns: 1fr;
  }

  .portal-nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .portal-nav a {
    font-size: 0.8rem;
    gap: 0.5rem;
    padding: 0.62rem;
  }

  .portal-dashboard-card {
    min-height: 220px;
  }

  .portal-page-title {
    gap: 0.15rem;
    padding-top: 0.2rem;
  }

  .portal-page-title .portal-kicker {
    margin-bottom: 0.55rem;
  }

  .portal-page-title h1 {
    font-size: clamp(1.9rem, 9vw, 2.55rem);
    line-height: 1.13;
  }

  .portal-page-title p {
    font-size: 0.94rem;
    line-height: 1.65;
    margin-top: 0.45rem;
  }

  .portal-welcome h1 {
    font-size: clamp(1.9rem, 9vw, 2.55rem);
  }

  .portal-draft-actions .btn {
    width: 100%;
  }

  .portal-footer-inner {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media (max-width: 430px) {
  .portal-header-actions .portal-header-link {
    max-width: 94px;
    text-align: center;
  }

  .portal-actions .btn {
    width: 100%;
  }

  .portal-header-inner {
    gap: 0.55rem;
  }

  .portal-brand {
    gap: 0.5rem;
  }

  .portal-brand-copy strong {
    font-size: 1.2rem;
    /* Permitir que o nome ocupe todo o espaço necessário sem truncar */
    max-width: none;
    overflow: visible;
    text-overflow: initial;
    white-space: normal;
  }

  .portal-brand-copy small {
    font-size: 0.68rem;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .portal-intro-mark {
    animation: portal-intro-mark-in 0.72s 0.05s cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  .portal-intro-mark::before {
    animation: portal-orbit 8s 0.7s linear infinite;
  }

  .portal-intro-name {
    animation: portal-copy-in 0.52s 0.08s cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  .portal-intro-role,
  .portal-intro-line {
    animation: portal-copy-in 0.52s 0.14s cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  .portal-route-transition img {
    animation: portal-route-pulse 0.8s ease-in-out infinite alternate;
  }

  .portal-emblem::before {
    animation: portal-orbit 18s linear infinite;
  }

  .portal-emblem img {
    animation: portal-breathe 3.2s ease-in-out infinite alternate;
  }
}

@keyframes portal-intro-mark-in {
  from {
    opacity: 0;
    transform: scale(0.84);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes portal-copy-in {
  from {
    opacity: 0;
    transform: translateY(7px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes portal-route-pulse {
  from {
    filter: drop-shadow(0 0 14px rgba(184, 148, 93, 0.12));
    transform: scale(0.98);
  }
  to {
    filter: drop-shadow(0 0 28px rgba(184, 148, 93, 0.3));
    transform: scale(1.025);
  }
}

@keyframes portal-orbit {
  from {
    transform: rotate(-17deg);
  }
  to {
    transform: rotate(343deg);
  }
}

@keyframes portal-breathe {
  from {
    filter:
      drop-shadow(0 0 14px rgba(244, 241, 234, 0.06))
      drop-shadow(0 0 24px rgba(184, 148, 93, 0.12));
    transform: scale(0.995);
  }
  to {
    filter:
      drop-shadow(0 0 18px rgba(244, 241, 234, 0.1))
      drop-shadow(0 0 34px rgba(184, 148, 93, 0.22));
    transform: scale(1.012);
  }
}

@media (max-height: 480px) and (orientation: landscape) {
  html.portal-intro-enabled .portal-intro {
    align-items: flex-start;
    overflow-y: auto;
    padding-bottom: 1rem;
    padding-top: 1rem;
  }

  .portal-intro-brand {
    margin: auto;
  }

  .portal-intro-mark {
    margin-bottom: 0.35rem;
    width: clamp(92px, 28vh, 130px);
  }

  .portal-intro-mark img {
    height: clamp(68px, 20vh, 92px);
    width: clamp(68px, 20vh, 92px);
  }

  .portal-intro-name {
    font-size: clamp(1.8rem, 10vh, 2.45rem);
  }

  .portal-intro-line {
    margin-top: 0.55rem;
  }
}
