/* ═══════════════════════════════════════════════════════════
   nav.css  —  Header & Mobile Menu
   Psicologa.co · Reemplaza Tailwind CDN
   ═══════════════════════════════════════════════════════════ */

/* ── 1. Utilities globales usadas en el nav ── */
.hidden          { display: none !important; }
.block           { display: block; }
.flex            { display: flex; }
.inline-flex     { display: inline-flex; }
.relative        { position: relative; }
.absolute        { position: absolute; }
.sticky          { position: sticky; }
.top-0           { top: 0; }
.left-0          { left: 0; }
.z-50            { z-index: 50; }
.flex-1          { flex: 1 1 0%; }
.flex-shrink-0   { flex-shrink: 0; }
.items-center    { align-items: center; }
.justify-between { justify-content: space-between; }
.justify-center  { justify-content: center; }
.w-full          { width: 100%; }
.w-auto          { width: auto; }
.w-4             { width: 1rem; }
.w-5             { width: 1.25rem; }
.w-60            { width: 15rem; }
.h-4             { height: 1rem; }
.h-5             { height: 1.25rem; }
.h-\[72px\]      { height: 72px; }
.object-contain  { object-fit: contain; }
.overflow-y-auto { overflow-y: auto; }

/* Colores de fondo */
.bg-white           { background-color: #ffffff; }
.bg-\[\#fffbf1\]    { background-color: #fffbf1; }

/* Bordes */
.border-b           { border-bottom: 1px solid transparent; }
.border-t           { border-top: 1px solid transparent; }
.border             { border: 1px solid transparent; }
.border-2           { border: 2px solid transparent; }
.border-l-2         { border-left: 2px solid transparent; }
.border-gray-100    { border-color: #f3f4f6; }
.border-blue-100    { border-color: #dbeafe; }
.border-brand-blue  { border-color: #1e385b; }
.border-\[\#fdf0cd\] { border-color: #fdf0cd; }

/* Radios */
.rounded-md         { border-radius: 0.375rem; }
.rounded-lg         { border-radius: 0.5rem; }
.rounded-xl         { border-radius: 0.75rem; }
.rounded-\[10px\]   { border-radius: 10px; }

/* Sombras */
.shadow-sm  { box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05); }
.shadow-lg  { box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05); }
.shadow-xl  { box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 10px 10px -5px rgba(0,0,0,0.04); }
.ring-1     { box-shadow: 0 0 0 1px rgba(0,0,0,0.05); }

/* Padding / Margin */
.p-2  { padding: 0.5rem; }
.px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
.px-4 { padding-left: 1rem;    padding-right: 1rem; }
.px-5 { padding-left: 1.25rem; padding-right: 1.25rem; }
.py-2 { padding-top: 0.5rem;   padding-bottom: 0.5rem; }
.py-3 { padding-top: 0.75rem;  padding-bottom: 0.75rem; }
.py-4 { padding-top: 1rem;     padding-bottom: 1rem; }
.pt-4 { padding-top: 1rem; }
.pb-2 { padding-bottom: 0.5rem; }
.pl-3 { padding-left: 0.75rem; }
.ml-1 { margin-left: 0.25rem; }
.mt-3 { margin-top: 0.75rem; }

/* Gap / spacing */
.gap-3        { gap: 0.75rem; }
.gap-1\.5     { gap: 0.375rem; }
.space-x-1 > * + *   { margin-left: 0.25rem; }
.space-y-0\.5 > * + * { margin-top: 0.125rem; }

/* Tipografía */
.font-medium   { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold     { font-weight: 700; }
.text-sm       { font-size: 0.875rem; }
.text-base     { font-size: 1rem; }
.text-\[15px\] { font-size: 15px; }
.text-\[14px\] { font-size: 14px; }

/* Colores de texto */
.text-brand-blue { color: #1e385b; }
.text-gray-400   { color: #9ca3af; }
.text-gray-600   { color: #4b5563; }
.text-gray-700   { color: #374151; }
.text-white      { color: #ffffff; }

/* Layout */
.max-w-7xl { max-width: 80rem; }
.mx-auto   { margin-left: auto; margin-right: auto; }

/* Transiciones */
.transition-colors    { transition: color 0.15s, background-color 0.15s, border-color 0.15s; }
.transition-transform { transition: transform 0.15s; }
.transition-all       { transition: all 0.15s; }
.duration-200         { transition-duration: 200ms; }

/* ── 2. Hover / Active ── */
.hover\:text-blue-600:hover    { color: #2563eb; }
.hover\:bg-gray-50:hover       { background-color: #f9fafb; }
.hover\:bg-blue-50:hover       { background-color: #eff6ff; }
.hover\:bg-\[\#fcf5e3\]:hover  { background-color: #fcf5e3; }
.hover\:bg-brand-blue:hover    { background-color: #1e385b; }
.hover\:text-white:hover       { color: #ffffff; }
.hover\:text-brand-blue:hover  { color: #1e385b; }
.hover\:text-blue-600:hover    { color: #2563eb; }
.active\:scale-95:active       { transform: scale(0.95); }

/* Group hover (logo) */
.group:hover .group-hover\:scale-105 { transform: scale(1.05); }

/* ── 3. Reset de links nativos del nav ── */
#site-header a,
#mobile-menu  a {
  text-decoration: none;
  color: inherit;
}

/* ── 3b. Botones — reset de estilos nativos ── */
#site-header button,
#mobile-menu  button {
  background: none;
  border-color: transparent;
  cursor: pointer;
  font-family: inherit;
  line-height: 1;
}

/* ── 4. Dropdown — oculto por defecto, visible con .active ── */
.dropdown-menu {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  list-style: none;
  margin: 0;
  transition: opacity 0.15s ease, visibility 0s linear 0.15s;
  /* Combined: shadow-lg + ring-1 */
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1),
              0 4px 6px -2px rgba(0,0,0,0.05),
              0 0 0 1px rgba(0,0,0,0.05);
}
.dropdown-menu.active {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
  transition: opacity 0.15s ease;
}

/* ── 5. Flecha rotada cuando dropdown abierto ── */
.arrow-icon.rotate-180 { transform: rotate(180deg); }

/* ── 6. Submenú mobile — oculto por defecto ── */
.mobile-sub {
  display: none;
  list-style: none;
  padding: 0;
  margin: 0;
}
.mobile-sub.open { display: block; }

/* ── 7. Scroll lock cuando menú mobile abierto ── */
body.menu-open { overflow: hidden; }

/* ── 8. Fondo hero (solo homepage) ── */
.bg-hero-grad {
  background: radial-gradient(ellipse 80% 60% at 70% 50%, #e8f0fe 0%, #fdfbf7 70%);
  min-height: 100vh;
}

/* ── 9. Responsive breakpoints ── */
@media (min-width: 640px) {
  .sm\:px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
}

@media (min-width: 768px) {
  .md\:flex    { display: flex !important; }
  .md\:hidden  { display: none !important; }
}

@media (min-width: 1024px) {
  .lg\:px-8           { padding-left: 2rem; padding-right: 2rem; }
  .lg\:block           { display: block !important; }
  .lg\:hidden          { display: none !important; }
  .lg\:text-\[15px\]   { font-size: 15px; }
  .lg\:space-x-6 > * + * { margin-left: 1.5rem; }
}
