@@ -583,85 +583,205 @@ body {
583583 color : var (--color-text-light );
584584}
585585
586+ /* Menú móvil hamburguesa */
587+ .mobile-menu-toggle {
588+ display : none;
589+ flex-direction : column;
590+ justify-content : space-around;
591+ width : 28px ;
592+ height : 28px ;
593+ background : transparent;
594+ border : none;
595+ cursor : pointer;
596+ padding : 4px ;
597+ z-index : 1001 ;
598+ transition : all 0.3s ease;
599+ }
600+
601+ .hamburger-line {
602+ width : 100% ;
603+ height : 2px ;
604+ background : var (--color-primary );
605+ transition : all 0.3s cubic-bezier (0.4 , 0 , 0.2 , 1 );
606+ border-radius : 2px ;
607+ transform-origin : center;
608+ }
609+
610+ .mobile-menu-toggle .active .hamburger-line : nth-child (1 ) {
611+ transform : rotate (45deg ) translateY (8px );
612+ }
613+
614+ .mobile-menu-toggle .active .hamburger-line : nth-child (2 ) {
615+ opacity : 0 ;
616+ transform : scaleX (0 );
617+ }
618+
619+ .mobile-menu-toggle .active .hamburger-line : nth-child (3 ) {
620+ transform : rotate (-45deg ) translateY (-8px );
621+ }
622+
623+ /* Overlay para móvil */
624+ .mobile-menu-overlay {
625+ position : fixed;
626+ top : 0 ;
627+ left : 0 ;
628+ right : 0 ;
629+ bottom : 0 ;
630+ background : rgba (0 , 0 , 0 , 0.5 );
631+ z-index : 999 ;
632+ opacity : 0 ;
633+ visibility : hidden;
634+ transition : all 0.3s ease;
635+ backdrop-filter : blur (4px );
636+ }
637+
638+ .mobile-menu-overlay .active {
639+ opacity : 1 ;
640+ visibility : visible;
641+ }
642+
586643/* Responsive refinado */
587644@media (max-width : 768px ) {
588645 /* Header responsive */
589646 .header {
590647 padding : var (--space-sm ) 0 ;
591- max-height : 90px ;
648+ max-height : none;
649+ min-height : 80px ;
592650 }
593651
594652 .header .scrolled {
595653 padding : var (--space-xs ) 0 ;
596- max -height: 70px ;
654+ min -height: 70px ;
597655 }
598656
599657 body {
600- padding-top : 90 px ;
658+ padding-top : 80 px ;
601659 }
602660
603661 .header-content {
604662 padding : 0 var (--space-md );
605663 }
606664
607665 .main {
608- padding : var (--space-lg ) var (--space-lg );
666+ padding : var (--space-md ) var (--space-md );
609667 }
610668
611669 .header-main {
612- flex-direction : column;
613- align-items : stretch;
614- gap : var (--space-sm );
670+ flex-direction : row;
671+ align-items : center;
672+ justify-content : space-between;
673+ gap : var (--space-md );
674+ }
675+
676+ .header-brand {
677+ flex : 1 ;
615678 }
616679
617680 .header-nav {
618- justify-content : space-between;
681+ position : relative;
682+ flex-shrink : 0 ;
619683 }
620684
621- .nav-filters {
622- flex-wrap : wrap;
623- gap : var (--space-xs );
685+ .mobile-menu-toggle {
686+ display : flex;
624687 }
625688
626- .favorites-count {
627- margin-left : 0 ;
628- margin-top : var (--space-xs );
689+ .nav-filters {
690+ position : fixed;
691+ top : 80px ;
692+ left : 0 ;
693+ right : 0 ;
694+ background : rgba (255 , 255 , 255 , 0.98 );
695+ backdrop-filter : blur (20px );
696+ border-bottom : 1px solid var (--color-border );
697+ padding : var (--space-lg );
698+ flex-direction : column;
699+ gap : var (--space-md );
700+ transform : translateY (-100% );
701+ opacity : 0 ;
702+ visibility : hidden;
703+ transition : all 0.4s cubic-bezier (0.4 , 0 , 0.2 , 1 );
704+ z-index : 1000 ;
705+ box-shadow : 0 8px 32px rgba (0 , 0 , 0 , 0.1 );
706+ max-height : calc (100vh - 80px );
707+ overflow-y : auto;
629708 }
630709
631- .header-title {
632- font-size : var (--font-size-lg );
710+ .nav-filters .active {
711+ transform : translateY (0 );
712+ opacity : 1 ;
713+ visibility : visible;
633714 }
634715
635- .header .scrolled .header-title {
716+ .nav-filter {
717+ padding : var (--space-sm ) var (--space-md );
718+ border-radius : var (--border-radius-lg );
636719 font-size : var (--font-size-base );
720+ font-weight : 500 ;
721+ text-align : center;
722+ background : var (--color-surface-alt );
723+ transition : all 0.4s cubic-bezier (0.4 , 0 , 0.2 , 1 );
724+ transform : translateY (20px );
725+ opacity : 0 ;
726+ visibility : hidden;
637727 }
638728
639- .header-subtitle {
640- font-size : var (--font-size-xs );
729+ .nav-filters .active .nav-filter {
730+ transform : translateY (0 );
731+ opacity : 1 ;
732+ visibility : visible;
641733 }
642734
643- .nav {
644- margin-top : var (--space-xs );
735+ .nav-filter : nth-child (1 ) { transition-delay : 0.1s ; }
736+ .nav-filter : nth-child (2 ) { transition-delay : 0.15s ; }
737+ .nav-filter : nth-child (3 ) { transition-delay : 0.2s ; }
738+ .nav-filter : nth-child (4 ) { transition-delay : 0.25s ; }
739+ .nav-filter : nth-child (5 ) { transition-delay : 0.3s ; }
740+ .nav-filter : nth-child (6 ) { transition-delay : 0.35s ; }
741+
742+ .nav-filter .active {
743+ background : var (--color-primary );
744+ color : white;
745+ transform : scale (1.02 );
645746 }
646747
647- .nav-filters {
648- gap : var (--space-xs );
649- justify-content : flex-start;
650- overflow-x : auto;
651- padding-bottom : var (--space-xs );
652- scrollbar-width : none;
653- -ms-overflow-style : none;
748+ .favorites-count {
749+ margin : var (--space-lg ) 0 0 0 ;
750+ padding : var (--space-md );
751+ text-align : center;
752+ background : linear-gradient (135deg , var (--color-accent-light ), var (--color-surface-alt ));
753+ border-radius : var (--border-radius-lg );
754+ border : 1px solid var (--color-accent-medium );
755+ font-weight : 600 ;
756+ transform : translateY (20px );
757+ opacity : 0 ;
758+ visibility : hidden;
759+ transition : all 0.4s cubic-bezier (0.4 , 0 , 0.2 , 1 );
760+ transition-delay : 0.4s ;
761+ }
762+
763+ .nav-filters .active .favorites-count {
764+ transform : translateY (0 );
765+ opacity : 1 ;
766+ visibility : visible;
654767 }
655768
656- .nav-filters ::-webkit-scrollbar {
769+ .header-title {
770+ font-size : var (--font-size-xl );
771+ line-height : 1.2 ;
772+ }
773+
774+ .header .scrolled .header-title {
775+ font-size : var (--font-size-lg );
776+ }
777+
778+ .header-subtitle {
779+ font-size : var (--font-size-sm );
657780 display : none;
658781 }
659782
660- .nav-filter {
661- flex-shrink : 0 ;
662- font-size : 11px ;
663- padding : 4px 8px ;
664- border-radius : 12px ;
783+ .header .scrolled .header-subtitle {
784+ display : none;
665785 }
666786
667787 .references-grid {
@@ -726,6 +846,82 @@ body {
726846 }
727847}
728848
849+ /* Responsive intermedio para tablets */
850+ @media (min-width : 769px ) and (max-width : 1024px ) {
851+ .header-content {
852+ padding : 0 var (--space-lg );
853+ }
854+
855+ .main {
856+ padding : var (--space-lg ) var (--space-lg );
857+ }
858+
859+ .nav-filters {
860+ gap : var (--space-sm );
861+ flex-wrap : wrap;
862+ justify-content : center;
863+ }
864+
865+ .nav-filter {
866+ font-size : var (--font-size-sm );
867+ padding : var (--space-xs ) var (--space-sm );
868+ }
869+
870+ .references-grid {
871+ grid-template-columns : repeat (auto-fit, minmax (320px , 1fr ));
872+ gap : var (--space-lg );
873+ }
874+ }
875+
876+ /* Mejoras para pantallas muy pequeñas */
877+ @media (max-width : 320px ) {
878+ .header-content {
879+ padding : 0 var (--space-sm );
880+ }
881+
882+ .main {
883+ padding : var (--space-sm ) var (--space-sm );
884+ }
885+
886+ .header-title {
887+ font-size : var (--font-size-lg );
888+ }
889+
890+ .mobile-menu-toggle {
891+ width : 24px ;
892+ height : 24px ;
893+ }
894+
895+ .nav-filters {
896+ padding : var (--space-md );
897+ }
898+
899+ .nav-filter {
900+ padding : var (--space-sm );
901+ font-size : var (--font-size-sm );
902+ }
903+ }
904+
905+ /* Mejoras para landscape en móviles */
906+ @media (max-width : 768px ) and (orientation : landscape) {
907+ .header {
908+ min-height : 60px ;
909+ }
910+
911+ body {
912+ padding-top : 60px ;
913+ }
914+
915+ .nav-filters {
916+ top : 60px ;
917+ padding : var (--space-md );
918+ }
919+
920+ .nav-filter {
921+ padding : var (--space-xs ) var (--space-md );
922+ }
923+ }
924+
729925/* Estados de loading elegantes */
730926.loading {
731927 text-align : center;
0 commit comments