simplifica buscador unificando clasificadores
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Showing
1 changed file
with
298 additions
and
254 deletions
| ... | @@ -97,73 +97,56 @@ | ... | @@ -97,73 +97,56 @@ |
| 97 | $: hasMoreResults = results && allHits.length < results.found; | 97 | $: hasMoreResults = results && allHits.length < results.found; |
| 98 | 98 | ||
| 99 | // Modo de búsqueda | 99 | // Modo de búsqueda |
| 100 | - let searchMode = 'gastos'; // 'gastos' | 'ingresos' | 100 | + // Modo de búsqueda simplificado: 'programas' | 'clasificadores' |
| 101 | - let searchSubmode = 'programas'; // 'programas' | 'clasificadores' | 101 | + let searchMode = 'programas'; |
| 102 | let selectedClassifiers = []; | 102 | let selectedClassifiers = []; |
| 103 | 103 | ||
| 104 | - const CLASIFICADORES_GASTOS = [ | 104 | + // Clasificadores unificados (transversales) |
| 105 | - { id: 'finfun', label: 'Finalidad y función' }, | 105 | + const CLASIFICADORES = [ |
| 106 | - { id: 'objeto', label: 'Objetos de gasto' }, | 106 | + { id: 'entidad', label: 'Entidades', icon: '🏛️' }, |
| 107 | - { id: 'acteco', label: 'Actividad económica' }, | 107 | + { id: 'objeto', label: 'Objetos de gasto', icon: '📦' }, |
| 108 | - { id: 'entidad', label: 'Entidades' }, | 108 | + { id: 'finfun', label: 'Finalidad y función', icon: '🎯' }, |
| 109 | - { id: 'geografico', label: 'Geográfico', disabled: true }, | 109 | + { id: 'geografico', label: 'Geográfico', icon: '📍', disabled: true }, |
| 110 | + { id: 'rubro', label: 'Rubro', icon: '💰', disabled: true }, | ||
| 111 | + { id: 'organismo', label: 'Organismo', icon: '🏦', disabled: true }, | ||
| 112 | + { id: 'fuente', label: 'Fuente', icon: '💵', disabled: true }, | ||
| 110 | ]; | 113 | ]; |
| 111 | 114 | ||
| 112 | - const CLASIFICADORES_INGRESOS = [ | ||
| 113 | - { id: 'rubro', label: 'Rubro', disabled: true }, | ||
| 114 | - { id: 'organismo', label: 'Organismo', disabled: true }, | ||
| 115 | - { id: 'fuente', label: 'Fuente', disabled: true }, | ||
| 116 | - { id: 'entidad', label: 'Entidades' }, | ||
| 117 | - { id: 'geografico',label: 'Geográfico', disabled: true }, | ||
| 118 | - ]; | ||
| 119 | - | ||
| 120 | - $: activeClasificadores = searchMode === 'gastos' ? CLASIFICADORES_GASTOS : CLASIFICADORES_INGRESOS; | ||
| 121 | - | ||
| 122 | function toggleClassifier(id) { | 115 | function toggleClassifier(id) { |
| 123 | if (selectedClassifiers.includes(id)) { | 116 | if (selectedClassifiers.includes(id)) { |
| 124 | selectedClassifiers = selectedClassifiers.filter(c => c !== id); | 117 | selectedClassifiers = selectedClassifiers.filter(c => c !== id); |
| 125 | } else { | 118 | } else { |
| 126 | selectedClassifiers = [...selectedClassifiers, id]; | 119 | selectedClassifiers = [...selectedClassifiers, id]; |
| 127 | } | 120 | } |
| 128 | - // Mantener foco en el buscador | 121 | + // Cambiar a modo clasificadores si no estaba |
| 122 | + if (searchMode !== 'clasificadores') { | ||
| 123 | + searchMode = 'clasificadores'; | ||
| 124 | + } | ||
| 129 | setTimeout(() => searchInput?.focus(), 10); | 125 | setTimeout(() => searchInput?.focus(), 10); |
| 130 | } | 126 | } |
| 131 | 127 | ||
| 132 | function setMode(mode) { | 128 | function setMode(mode) { |
| 133 | searchMode = mode; | 129 | searchMode = mode; |
| 134 | - selectedClassifiers = []; | 130 | + if (mode === 'programas') { |
| 135 | - if (mode === 'gastos') { | 131 | + selectedClassifiers = []; |
| 136 | - searchSubmode = 'programas'; | ||
| 137 | - } else { | ||
| 138 | - searchSubmode = 'clasificadores'; | ||
| 139 | } | 132 | } |
| 140 | } | 133 | } |
| 141 | 134 | ||
| 142 | - function setSubmode(sub) { | ||
| 143 | - searchSubmode = sub; | ||
| 144 | - selectedClassifiers = []; | ||
| 145 | - } | ||
| 146 | - | ||
| 147 | // Placeholder dinámico | 135 | // Placeholder dinámico |
| 148 | - $: placeholderText = getPlaceholderText(searchMode, searchSubmode, selectedClassifiers); | 136 | + $: placeholderText = getPlaceholderText(searchMode, selectedClassifiers); |
| 149 | - | 137 | + |
| 150 | - function getPlaceholderText(mode, submode, classifiers) { | 138 | + function getPlaceholderText(mode, classifiers) { |
| 151 | - if (mode === 'gastos') { | 139 | + if (mode === 'programas') { |
| 152 | - if (submode === 'programas') return 'Buscar gastos en programas y proyectos...'; | 140 | + return 'Buscar en programas y proyectos...'; |
| 153 | - if (classifiers.length === 0) return 'Selecciona al menos un clasificador...'; | 141 | + } |
| 154 | - const nombres = classifiers.map(id => { | 142 | + if (classifiers.length === 0) { |
| 155 | - const clf = CLASIFICADORES_GASTOS.find(c => c.id === id); | 143 | + return 'Selecciona al menos un clasificador...'; |
| 156 | - return clf?.label?.toLowerCase() || id; | ||
| 157 | - }).join(', '); | ||
| 158 | - return `Buscar gastos en ${nombres}...`; | ||
| 159 | - } else { | ||
| 160 | - if (classifiers.length === 0) return 'Selecciona al menos un clasificador...'; | ||
| 161 | - const nombres = classifiers.map(id => { | ||
| 162 | - const clf = CLASIFICADORES_INGRESOS.find(c => c.id === id); | ||
| 163 | - return clf?.label?.toLowerCase() || id; | ||
| 164 | - }).join(', '); | ||
| 165 | - return `Buscar ingresos en ${nombres}...`; | ||
| 166 | } | 144 | } |
| 145 | + const nombres = classifiers.map(id => { | ||
| 146 | + const clf = CLASIFICADORES.find(c => c.id === id); | ||
| 147 | + return clf?.label?.toLowerCase() || id; | ||
| 148 | + }).join(', '); | ||
| 149 | + return `Buscar en ${nombres}...`; | ||
| 167 | } | 150 | } |
| 168 | 151 | ||
| 169 | // Debounce | 152 | // Debounce |
| ... | @@ -191,21 +174,32 @@ | ... | @@ -191,21 +174,32 @@ |
| 191 | } | 174 | } |
| 192 | } | 175 | } |
| 193 | 176 | ||
| 194 | - // Ejemplos | 177 | + // Ejemplos para cada card |
| 195 | const EXAMPLES_PROGRAMAS = [ | 178 | const EXAMPLES_PROGRAMAS = [ |
| 196 | - { label: 'Vía férrea Bulo Bulo', color: 'rgba(232,146,124,0.22)', textColor: '#E8927C' }, | 179 | + { label: 'Planta siderúrgica del Mutún' }, |
| 197 | - { label: 'Siderúrgica del Mutún', color: 'rgba(160,165,185,0.18)', textColor: '#B8BDCC' }, | 180 | + { label: 'Aeropuerto internacional de Potosí' }, |
| 198 | ]; | 181 | ]; |
| 199 | 182 | ||
| 200 | - const EXAMPLES_ENTIDADES = [ | 183 | + const EXAMPLES_CLASIFICADORES = [ |
| 201 | - { label: 'Fondo Indígena', color: 'rgba(126,184,216,0.22)', textColor: '#8EC8E8' }, | 184 | + { label: 'YPFB', classifier: 'entidad' }, |
| 202 | - { label: 'YPFB', color: 'rgba(168,196,160,0.22)', textColor: '#B8D4B0' }, | 185 | + { label: 'viáticos', classifier: 'objeto' }, |
| 186 | + { label: 'Ministerio de Salud', classifier: 'entidad' }, | ||
| 203 | ]; | 187 | ]; |
| 204 | 188 | ||
| 205 | - // Ejemplos dinámicos según selección | 189 | + // Función para buscar desde pills |
| 206 | - $: currentExamples = (selectedClassifiers.includes('entidad') && selectedClassifiers.length === 1) | 190 | + function searchFromPill(label, classifier = null) { |
| 207 | - ? EXAMPLES_ENTIDADES | 191 | + if (classifier) { |
| 208 | - : EXAMPLES_PROGRAMAS; | 192 | + searchMode = 'clasificadores'; |
| 193 | + if (!selectedClassifiers.includes(classifier)) { | ||
| 194 | + selectedClassifiers = [classifier]; | ||
| 195 | + } | ||
| 196 | + } else { | ||
| 197 | + searchMode = 'programas'; | ||
| 198 | + } | ||
| 199 | + searchVal = label; | ||
| 200 | + performSearch(label); | ||
| 201 | + searchInput?.focus(); | ||
| 202 | + } | ||
| 209 | 203 | ||
| 210 | // Datos para secciones | 204 | // Datos para secciones |
| 211 | const WIDGETS_INGRESOS = [ | 205 | const WIDGETS_INGRESOS = [ |
| ... | @@ -294,12 +288,6 @@ | ... | @@ -294,12 +288,6 @@ |
| 294 | return () => sectionObserver?.disconnect(); | 288 | return () => sectionObserver?.disconnect(); |
| 295 | }); | 289 | }); |
| 296 | 290 | ||
| 297 | - function searchExample(label) { | ||
| 298 | - searchVal = label; | ||
| 299 | - performSearch(label); | ||
| 300 | - searchInput?.focus(); | ||
| 301 | - } | ||
| 302 | - | ||
| 303 | async function handleInput(e) { | 291 | async function handleInput(e) { |
| 304 | searchVal = e.target.value; | 292 | searchVal = e.target.value; |
| 305 | clearTimeout(debounceTimer); | 293 | clearTimeout(debounceTimer); |
| ... | @@ -317,8 +305,7 @@ | ... | @@ -317,8 +305,7 @@ |
| 317 | return; | 305 | return; |
| 318 | } | 306 | } |
| 319 | 307 | ||
| 320 | - const needsClassifiers = searchMode === 'ingresos' || | 308 | + const needsClassifiers = searchMode === 'clasificadores'; |
| 321 | - (searchMode === 'gastos' && searchSubmode === 'clasificadores'); | ||
| 322 | if (needsClassifiers && selectedClassifiers.length === 0) { | 309 | if (needsClassifiers && selectedClassifiers.length === 0) { |
| 323 | results = null; | 310 | results = null; |
| 324 | error = null; | 311 | error = null; |
| ... | @@ -342,12 +329,11 @@ | ... | @@ -342,12 +329,11 @@ |
| 342 | currentPage = page; | 329 | currentPage = page; |
| 343 | 330 | ||
| 344 | try { | 331 | try { |
| 345 | - const isClassSearch = searchMode === 'ingresos' || | 332 | + const isClassSearch = searchMode === 'clasificadores'; |
| 346 | - (searchMode === 'gastos' && searchSubmode === 'clasificadores'); | ||
| 347 | const params = new URLSearchParams({ | 333 | const params = new URLSearchParams({ |
| 348 | q: query, | 334 | q: query, |
| 349 | is_class: isClassSearch ? 'true' : 'false', | 335 | is_class: isClassSearch ? 'true' : 'false', |
| 350 | - mode: searchMode, | 336 | + mode: 'gastos', |
| 351 | page: page.toString() | 337 | page: page.toString() |
| 352 | }); | 338 | }); |
| 353 | // Para clasificadores, pedir más resultados para tener conteos precisos | 339 | // Para clasificadores, pedir más resultados para tener conteos precisos |
| ... | @@ -544,11 +530,10 @@ | ... | @@ -544,11 +530,10 @@ |
| 544 | 530 | ||
| 545 | $: { | 531 | $: { |
| 546 | const _mode = searchMode; | 532 | const _mode = searchMode; |
| 547 | - const _submode = searchSubmode; | ||
| 548 | const _classifiers = selectedClassifiers; | 533 | const _classifiers = selectedClassifiers; |
| 549 | if (searchVal.length >= 3 && mounted) { | 534 | if (searchVal.length >= 3 && mounted) { |
| 550 | clearTimeout(debounceTimer); | 535 | clearTimeout(debounceTimer); |
| 551 | - const needsClassifiers = _mode === 'ingresos' || (_mode === 'gastos' && _submode === 'clasificadores'); | 536 | + const needsClassifiers = _mode === 'clasificadores'; |
| 552 | if (!needsClassifiers || _classifiers.length > 0) { | 537 | if (!needsClassifiers || _classifiers.length > 0) { |
| 553 | debounceTimer = setTimeout(() => performSearch(searchVal), DEBOUNCE_MS); | 538 | debounceTimer = setTimeout(() => performSearch(searchVal), DEBOUNCE_MS); |
| 554 | } else { | 539 | } else { |
| ... | @@ -559,10 +544,6 @@ | ... | @@ -559,10 +544,6 @@ |
| 559 | } | 544 | } |
| 560 | } | 545 | } |
| 561 | 546 | ||
| 562 | - // ¿Mostrar chips de clasificadores? | ||
| 563 | - $: showClassifierChips = searchMode === 'ingresos' || | ||
| 564 | - (searchMode === 'gastos' && searchSubmode === 'clasificadores'); | ||
| 565 | - | ||
| 566 | // ¿Hay búsqueda activa? | 547 | // ¿Hay búsqueda activa? |
| 567 | $: isSearching = searchVal.length >= 3; | 548 | $: isSearching = searchVal.length >= 3; |
| 568 | </script> | 549 | </script> |
| ... | @@ -574,7 +555,7 @@ | ... | @@ -574,7 +555,7 @@ |
| 574 | <div class="page" class:mounted> | 555 | <div class="page" class:mounted> |
| 575 | 556 | ||
| 576 | <!-- Dots de navegación --> | 557 | <!-- Dots de navegación --> |
| 577 | - <nav class="section-dots"> | 558 | + <nav class="section-dots" class:section-dots-hidden={currentSection === 'hero'}> |
| 578 | {#each SECTIONS_NAV as s} | 559 | {#each SECTIONS_NAV as s} |
| 579 | <button | 560 | <button |
| 580 | class="section-dot" | 561 | class="section-dot" |
| ... | @@ -590,7 +571,7 @@ | ... | @@ -590,7 +571,7 @@ |
| 590 | <!-- Hero --> | 571 | <!-- Hero --> |
| 591 | <main data-section="hero"> | 572 | <main data-section="hero"> |
| 592 | 573 | ||
| 593 | - <div class="nav-logo"> | 574 | + <div class="nav-logo" class:nav-hidden={currentSection !== 'hero'}> |
| 594 | <img src="/logos_oscuro/05_Imago MEFP horizontal espacio negativo.png" alt="MEFP" /> | 575 | <img src="/logos_oscuro/05_Imago MEFP horizontal espacio negativo.png" alt="MEFP" /> |
| 595 | </div> | 576 | </div> |
| 596 | 577 | ||
| ... | @@ -604,6 +585,9 @@ | ... | @@ -604,6 +585,9 @@ |
| 604 | 585 | ||
| 605 | <div class="search-container anim" style="--d:200ms"> | 586 | <div class="search-container anim" style="--d:200ms"> |
| 606 | 587 | ||
| 588 | + <!-- Ambient glow --> | ||
| 589 | + <div class="ambient-glow"></div> | ||
| 590 | + | ||
| 607 | <!-- Título --> | 591 | <!-- Título --> |
| 608 | <h1 class="hero-title" class:hero-collapsed={allHits.length > 0}> | 592 | <h1 class="hero-title" class:hero-collapsed={allHits.length > 0}> |
| 609 | Presupuesto <span class="gold">Abierto</span> | 593 | Presupuesto <span class="gold">Abierto</span> |
| ... | @@ -630,10 +614,11 @@ | ... | @@ -630,10 +614,11 @@ |
| 630 | on:focus={() => searchFocused = true} | 614 | on:focus={() => searchFocused = true} |
| 631 | on:blur={() => searchFocused = false} | 615 | on:blur={() => searchFocused = false} |
| 632 | placeholder="" | 616 | placeholder="" |
| 617 | + class:has-text={searchVal.length > 0} | ||
| 633 | /> | 618 | /> |
| 634 | {#if !searchVal} | 619 | {#if !searchVal} |
| 635 | <div class="search-placeholder"> | 620 | <div class="search-placeholder"> |
| 636 | - <span class="blink-cursor" class:cursor-hidden={searchFocused}></span> | 621 | + <span class="blink-cursor"></span> |
| 637 | <span class="placeholder-text">{placeholderText}</span> | 622 | <span class="placeholder-text">{placeholderText}</span> |
| 638 | </div> | 623 | </div> |
| 639 | {/if} | 624 | {/if} |
| ... | @@ -650,114 +635,138 @@ | ... | @@ -650,114 +635,138 @@ |
| 650 | </div> | 635 | </div> |
| 651 | </div> | 636 | </div> |
| 652 | 637 | ||
| 653 | - <!-- ─── FILTROS INLINE ─── --> | 638 | + <!-- ─── ÁREA DE RESULTADOS ─── --> |
| 654 | - <div class="filters-row" class:filters-hidden={isSearching}> | 639 | + <div class="results-area"> |
| 655 | - | 640 | + |
| 656 | - <!-- Nivel 1: Segmented control Gastos / Ingresos --> | 641 | + <!-- ─── CARDS DE MODO (se tapan con resultados) ─── --> |
| 657 | - <div class="filter-level filter-level-1"> | 642 | + <div class="section-group" class:section-group-hidden={allHits.length > 0}> |
| 658 | - <div class="segmented-control"> | 643 | + <span class="section-label">Configura tu búsqueda</span> |
| 659 | - <button | 644 | + <div class="mode-cards"> |
| 660 | - class="segment" | 645 | + |
| 661 | - class:segment-active={searchMode === 'gastos'} | 646 | + <!-- Card: Programas y Proyectos --> |
| 662 | - on:click={() => setMode('gastos')} | 647 | + <div |
| 663 | - > | 648 | + class="mode-card" |
| 664 | - Gastos | 649 | + class:mode-card-active={searchMode === 'programas'} |
| 665 | - </button> | 650 | + on:click={() => setMode('programas')} |
| 666 | - <button | 651 | + on:keydown={(e) => (e.key === 'Enter' || e.key === ' ') && setMode('programas')} |
| 667 | - class="segment" | 652 | + role="button" |
| 668 | - class:segment-active={searchMode === 'ingresos'} | 653 | + tabindex="0" |
| 669 | - on:click={() => setMode('ingresos')} | 654 | + > |
| 670 | - > | 655 | + <div class="mode-card-header"> |
| 671 | - Ingresos | 656 | + <span class="mode-card-icon"> |
| 672 | - </button> | 657 | + <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> |
| 658 | + <rect x="3" y="3" width="7" height="7" rx="1"/> | ||
| 659 | + <rect x="14" y="3" width="7" height="7" rx="1"/> | ||
| 660 | + <rect x="3" y="14" width="7" height="7" rx="1"/> | ||
| 661 | + <rect x="14" y="14" width="7" height="7" rx="1"/> | ||
| 662 | + </svg> | ||
| 663 | + </span> | ||
| 664 | + <span class="mode-card-title">Programas y Proyectos</span> | ||
| 673 | </div> | 665 | </div> |
| 666 | + <p class="mode-card-desc"> | ||
| 667 | + <strong>735k+</strong> proyectos y programas (2016-2025). Para encontrar iniciativas específicas. | ||
| 668 | + </p> | ||
| 669 | + <div class="mode-card-pills"> | ||
| 670 | + <span class="pills-hint"><span class="hint-desktop">Ej:</span><span class="hint-mobile">Ej:</span></span> | ||
| 671 | + {#each EXAMPLES_PROGRAMAS as ex} | ||
| 672 | + <span | ||
| 673 | + class="mode-pill" | ||
| 674 | + on:click|stopPropagation={() => searchFromPill(ex.label)} | ||
| 675 | + on:keydown={(e) => e.key === 'Enter' && searchFromPill(ex.label)} | ||
| 676 | + role="button" | ||
| 677 | + tabindex="0" | ||
| 678 | + > | ||
| 679 | + {ex.label} | ||
| 680 | + </span> | ||
| 681 | + {/each} | ||
| 682 | + </div> | ||
| 683 | + <div class="mode-card-radio"> | ||
| 684 | + <span class="radio-dot" class:radio-dot-active={searchMode === 'programas'}></span> | ||
| 685 | + </div> | ||
| 686 | + </div> | ||
| 674 | 687 | ||
| 675 | - <!-- Nivel 2: Segmented control Programas / Clasificadores (solo Gastos) --> | 688 | + <!-- Card: Clasificadores --> |
| 676 | - {#if searchMode === 'gastos'} | 689 | + <div |
| 677 | - <div class="segmented-control segmented-control-secondary"> | 690 | + class="mode-card" |
| 691 | + class:mode-card-active={searchMode === 'clasificadores'} | ||
| 692 | + on:click={() => setMode('clasificadores')} | ||
| 693 | + on:keydown={(e) => (e.key === 'Enter' || e.key === ' ') && setMode('clasificadores')} | ||
| 694 | + role="button" | ||
| 695 | + tabindex="0" | ||
| 696 | + > | ||
| 697 | + <div class="mode-card-header"> | ||
| 698 | + <span class="mode-card-icon"> | ||
| 699 | + <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> | ||
| 700 | + <path d="M4 4h6l2 2h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z"/> | ||
| 701 | + <path d="M9 13h6"/> | ||
| 702 | + <path d="M9 17h4"/> | ||
| 703 | + </svg> | ||
| 704 | + </span> | ||
| 705 | + <span class="mode-card-title">Clasificadores</span> | ||
| 706 | + </div> | ||
| 707 | + <p class="mode-card-desc"> | ||
| 708 | + <strong>2500+</strong> categorías de gasto e ingreso (2006-2025). Para comparar y analizar tendencias. | ||
| 709 | + </p> | ||
| 710 | + <div class="mode-card-classifiers"> | ||
| 711 | + {#each CLASIFICADORES as clf} | ||
| 678 | <button | 712 | <button |
| 679 | - class="segment segment-secondary" | 713 | + class="clf-chip" |
| 680 | - class:segment-active={searchSubmode === 'programas'} | 714 | + class:clf-chip-active={selectedClassifiers.includes(clf.id)} |
| 681 | - on:click={() => setSubmode('programas')} | 715 | + class:clf-chip-disabled={clf.disabled} |
| 716 | + on:click|stopPropagation={() => { if (!clf.disabled) toggleClassifier(clf.id); }} | ||
| 717 | + disabled={clf.disabled} | ||
| 682 | > | 718 | > |
| 683 | - Programas y proyectos | 719 | + <span class="clf-check"> |
| 720 | + {#if selectedClassifiers.includes(clf.id)} | ||
| 721 | + <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"> | ||
| 722 | + <polyline points="20 6 9 17 4 12"/> | ||
| 723 | + </svg> | ||
| 724 | + {/if} | ||
| 725 | + </span> | ||
| 726 | + <span class="clf-label">{clf.label}</span> | ||
| 684 | </button> | 727 | </button> |
| 685 | - <button | 728 | + {/each} |
| 686 | - class="segment segment-secondary" | 729 | + </div> |
| 687 | - class:segment-active={searchSubmode === 'clasificadores'} | 730 | + <div class="mode-card-pills"> |
| 688 | - on:click={() => setSubmode('clasificadores')} | 731 | + {#each EXAMPLES_CLASIFICADORES as ex} |
| 732 | + <span | ||
| 733 | + class="mode-pill" | ||
| 734 | + on:click|stopPropagation={() => searchFromPill(ex.label, ex.classifier)} | ||
| 735 | + on:keydown={(e) => e.key === 'Enter' && searchFromPill(ex.label, ex.classifier)} | ||
| 736 | + role="button" | ||
| 737 | + tabindex="0" | ||
| 689 | > | 738 | > |
| 690 | - Clasificadores | 739 | + {ex.label} |
| 691 | - </button> | 740 | + </span> |
| 692 | - </div> | 741 | + {/each} |
| 693 | - {/if} | ||
| 694 | - </div> | ||
| 695 | - | ||
| 696 | - <!-- Nivel 3: Clasificadores con checkboxes (cuando aplica) --> | ||
| 697 | - {#if showClassifierChips} | ||
| 698 | - <div class="filter-level filter-level-2"> | ||
| 699 | - <span class="filter-level-label">Selecciona clasificadores:</span> | ||
| 700 | - <div class="checkbox-group"> | ||
| 701 | - {#each activeClasificadores as clf} | ||
| 702 | - <button | ||
| 703 | - class="checkbox-chip" | ||
| 704 | - class:checkbox-chip-active={selectedClassifiers.includes(clf.id)} | ||
| 705 | - class:checkbox-chip-disabled={clf.disabled} | ||
| 706 | - on:click={() => { if (!clf.disabled) toggleClassifier(clf.id); }} | ||
| 707 | - disabled={clf.disabled} | ||
| 708 | - > | ||
| 709 | - <span class="checkbox-box"> | ||
| 710 | - {#if selectedClassifiers.includes(clf.id)} | ||
| 711 | - <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"> | ||
| 712 | - <polyline points="20 6 9 17 4 12"/> | ||
| 713 | - </svg> | ||
| 714 | - {/if} | ||
| 715 | - </span> | ||
| 716 | - <span class="checkbox-label">{clf.label}</span> | ||
| 717 | - </button> | ||
| 718 | - {/each} | ||
| 719 | - </div> | ||
| 720 | </div> | 742 | </div> |
| 721 | - {/if} | 743 | + <div class="mode-card-radio"> |
| 722 | - </div> | 744 | + <span class="radio-dot" class:radio-dot-active={searchMode === 'clasificadores'}></span> |
| 723 | - | 745 | + </div> |
| 724 | - <!-- ─── ÁREA DE RESULTADOS / EJEMPLOS / HINT ─── --> | 746 | + </div> |
| 725 | - <div class="results-area"> | ||
| 726 | - | ||
| 727 | - <!-- Ejemplos --> | ||
| 728 | - <div class="examples" class:examples-hidden={isSearching}> | ||
| 729 | - <span class="examples-label">Ej.:</span> | ||
| 730 | - {#each currentExamples as ex} | ||
| 731 | - <button | ||
| 732 | - class="example-chip" | ||
| 733 | - style="background:{ex.color}; color:{ex.textColor}" | ||
| 734 | - on:click={() => searchExample(ex.label)} | ||
| 735 | - > | ||
| 736 | - {ex.label} | ||
| 737 | - </button> | ||
| 738 | - {/each} | ||
| 739 | </div> | 747 | </div> |
| 740 | 748 | ||
| 741 | - <!-- Hint diario --> | 749 | + <!-- Sección: Ir a --> |
| 742 | - {#if !isSearching && !dailyLoading} | 750 | + <span class="section-label section-label-goto">Ir a</span> |
| 743 | - <a | 751 | + <a href="/vista-diaria" class="daily-card"> |
| 744 | - href="/vista-diaria" | 752 | + <div class="daily-card-left"> |
| 745 | - class="daily-hint" | ||
| 746 | - class:daily-hint-visible={!isSearching} | ||
| 747 | - > | ||
| 748 | <span class="daily-dot"></span> | 753 | <span class="daily-dot"></span> |
| 749 | - <span class="daily-text"> | 754 | + <span class="daily-card-title">Vista diaria</span> |
| 750 | - {#if dailyData} | 755 | + </div> |
| 751 | - Ayer el Estado ejecutó <strong>{formatMonto(dailyData.monto)}</strong> | 756 | + <div class="daily-card-content"> |
| 752 | - {:else} | 757 | + {#if !dailyLoading && dailyData} |
| 753 | - Ver el resumen de ejecución de ayer | 758 | + <span class="daily-card-text">Ayer el Estado ejecutó <strong>{formatMonto(dailyData.monto)}</strong></span> |
| 754 | - {/if} | 759 | + {:else if !dailyLoading} |
| 755 | - </span> | 760 | + <span class="daily-card-text">Ver el resumen de ejecución de ayer</span> |
| 756 | - <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> | 761 | + {:else} |
| 757 | - <path d="M5 12h14M12 5l7 7-7 7"/> | 762 | + <span class="daily-card-text">Cargando datos...</span> |
| 758 | - </svg> | 763 | + {/if} |
| 759 | - </a> | 764 | + </div> |
| 760 | - {/if} | 765 | + <svg class="daily-card-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> |
| 766 | + <path d="M5 12h14M12 5l7 7-7 7"/> | ||
| 767 | + </svg> | ||
| 768 | + </a> | ||
| 769 | + </div> | ||
| 761 | 770 | ||
| 762 | <!-- Estados de búsqueda (mensajes) --> | 771 | <!-- Estados de búsqueda (mensajes) --> |
| 763 | {#if showMinLengthHint && searchVal.length > 0 && searchVal.length < 3} | 772 | {#if showMinLengthHint && searchVal.length > 0 && searchVal.length < 3} |
| ... | @@ -1341,7 +1350,8 @@ | ... | @@ -1341,7 +1350,8 @@ |
| 1341 | .page{--serif:'Qanelas',system-ui,sans-serif;--sans:'Qanelas',system-ui,sans-serif;--mono:'JetBrains Mono',monospace;font-family:var(--serif);color:#1C1C1A;width:100%;min-width:100%;overflow-x:hidden;scroll-snap-type:y mandatory;overflow-y:scroll;height:100vh} | 1350 | .page{--serif:'Qanelas',system-ui,sans-serif;--sans:'Qanelas',system-ui,sans-serif;--mono:'JetBrains Mono',monospace;font-family:var(--serif);color:#1C1C1A;width:100%;min-width:100%;overflow-x:hidden;scroll-snap-type:y mandatory;overflow-y:scroll;height:100vh} |
| 1342 | 1351 | ||
| 1343 | /* Section Navigation Dots */ | 1352 | /* Section Navigation Dots */ |
| 1344 | - .section-dots{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:100;display:flex;flex-direction:column;gap:12px;background:rgba(255,255,255,0.1);backdrop-filter:blur(8px);padding:12px 8px;border-radius:20px} | 1353 | + .section-dots{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:100;display:flex;flex-direction:column;gap:12px;background:rgba(255,255,255,0.1);backdrop-filter:blur(8px);padding:12px 8px;border-radius:20px;transition:opacity 0.4s ease,transform 0.4s ease} |
| 1354 | + .section-dots-hidden{opacity:0;pointer-events:none;transform:translateY(-50%) translateX(20px)} | ||
| 1345 | .section-dot{width:10px;height:10px;border-radius:50%;border:1.5px solid rgba(100,100,100,0.4);background:rgba(150,150,150,0.2);cursor:pointer;transition:all 0.3s;padding:0;position:relative} | 1355 | .section-dot{width:10px;height:10px;border-radius:50%;border:1.5px solid rgba(100,100,100,0.4);background:rgba(150,150,150,0.2);cursor:pointer;transition:all 0.3s;padding:0;position:relative} |
| 1346 | .section-dot:hover{border-color:rgba(100,100,100,0.6);background:rgba(150,150,150,0.4);transform:scale(1.2)} | 1356 | .section-dot:hover{border-color:rgba(100,100,100,0.6);background:rgba(150,150,150,0.4);transform:scale(1.2)} |
| 1347 | .section-dot-active{background:#C9A751;border-color:#C9A751} | 1357 | .section-dot-active{background:#C9A751;border-color:#C9A751} |
| ... | @@ -1411,7 +1421,8 @@ | ... | @@ -1411,7 +1421,8 @@ |
| 1411 | .search-divider{width:1px;height:32px;background:rgba(255,255,255,0.08);margin:0 16px;flex-shrink:0} | 1421 | .search-divider{width:1px;height:32px;background:rgba(255,255,255,0.08);margin:0 16px;flex-shrink:0} |
| 1412 | .search-icon{flex-shrink:0;transition:stroke 0.3s;margin-left:4px} | 1422 | .search-icon{flex-shrink:0;transition:stroke 0.3s;margin-left:4px} |
| 1413 | .search-input-wrap{flex:1;position:relative;display:flex;align-items:center} | 1423 | .search-input-wrap{flex:1;position:relative;display:flex;align-items:center} |
| 1414 | - .search-input-wrap input{width:100%;background:transparent;border:none;outline:none;color:#FFFFFF;font-size:22px;font-weight:500;font-family:var(--sans);padding:14px 12px 14px 10px;caret-color:#F0C14D;letter-spacing:-0.01em} | 1424 | + .search-input-wrap input{width:100%;background:transparent;border:none;outline:none;color:#FFFFFF;font-size:22px;font-weight:500;font-family:var(--sans);padding:14px 12px 14px 10px;caret-color:transparent;letter-spacing:-0.01em} |
| 1425 | + .search-input-wrap input.has-text{caret-color:#FFFFFF} | ||
| 1415 | .search-placeholder{position:absolute;left:10px;top:50%;transform:translateY(-50%);display:flex;align-items:center;pointer-events:none} | 1426 | .search-placeholder{position:absolute;left:10px;top:50%;transform:translateY(-50%);display:flex;align-items:center;pointer-events:none} |
| 1416 | .blink-cursor{width:2px;height:20px;margin-right:2px;animation:blink 1s step-end infinite;border-radius:1px;flex-shrink:0;background:#F0C14D} | 1427 | .blink-cursor{width:2px;height:20px;margin-right:2px;animation:blink 1s step-end infinite;border-radius:1px;flex-shrink:0;background:#F0C14D} |
| 1417 | .cursor-hidden{opacity:0} | 1428 | .cursor-hidden{opacity:0} |
| ... | @@ -1495,61 +1506,77 @@ | ... | @@ -1495,61 +1506,77 @@ |
| 1495 | .scroll-icon-touch{display:none} | 1506 | .scroll-icon-touch{display:none} |
| 1496 | 1507 | ||
| 1497 | /* ── NEW SEARCH STYLES ── */ | 1508 | /* ── NEW SEARCH STYLES ── */ |
| 1498 | - .search-container{width:100%;max-width:900px;margin:0 auto;padding:0 24px;display:flex;flex-direction:column;align-items:center;flex:1;justify-content:center} | 1509 | + .search-container{width:100%;max-width:900px;margin:0 auto;padding:0 24px;display:flex;flex-direction:column;align-items:center;flex:1;justify-content:center;position:relative} |
| 1499 | - .hero-title{font-size:clamp(44px,5.5vw,72px);font-weight:900;line-height:1.02;letter-spacing:-0.035em;color:#F5F0E8;text-align:center;transition:all 0.4s cubic-bezier(0.16,1,0.3,1);margin-bottom:4px} | 1510 | + |
| 1500 | - .hero-sub{font-family:var(--sans);font-size:clamp(16px,1.6vw,18px);color:#D0CCC4;text-align:center;line-height:1.6;transition:all 0.4s cubic-bezier(0.16,1,0.3,1);margin-bottom:32px;margin-top:0} | 1511 | + /* Ambient glow - subtle premium lighting */ |
| 1512 | + .ambient-glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);width:140%;max-width:1200px;aspect-ratio:1.5;background:radial-gradient(ellipse at center,rgba(240,193,77,0.06) 0%,rgba(240,193,77,0.02) 35%,transparent 70%);pointer-events:none;z-index:0} | ||
| 1513 | + | ||
| 1514 | + .hero-title{font-family:var(--sans);font-size:clamp(44px,5.5vw,72px);font-weight:900;line-height:1.02;letter-spacing:-0.035em;color:#F5F0E8;text-align:center;transition:all 0.4s cubic-bezier(0.16,1,0.3,1);margin-bottom:4px;position:relative;z-index:1} | ||
| 1515 | + .hero-sub{font-family:var(--sans);font-size:clamp(16px,1.6vw,18px);color:#D0CCC4;text-align:center;line-height:1.6;transition:all 0.4s cubic-bezier(0.16,1,0.3,1);margin-bottom:32px;margin-top:0;position:relative;z-index:1} | ||
| 1501 | .hero-collapsed{opacity:0;height:0;margin:0;overflow:hidden;pointer-events:none} | 1516 | .hero-collapsed{opacity:0;height:0;margin:0;overflow:hidden;pointer-events:none} |
| 1502 | .cursor-hidden{opacity:0} | 1517 | .cursor-hidden{opacity:0} |
| 1503 | 1518 | ||
| 1504 | - /* Filters */ | 1519 | + /* Section Group */ |
| 1505 | - .filters-row{display:flex;flex-direction:column;gap:16px;margin-top:20px;transition:all 0.3s cubic-bezier(0.16,1,0.3,1)} | 1520 | + .section-group{margin-top:16px;transition:all 0.4s cubic-bezier(0.16,1,0.3,1)} |
| 1506 | - .filters-hidden{opacity:0;height:0;margin:0;overflow:hidden;pointer-events:none} | 1521 | + .section-group-hidden{opacity:0;pointer-events:none;position:absolute;z-index:-1} |
| 1507 | - .filter-level{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center} | 1522 | + .section-label{display:block;font-family:var(--sans);font-size:10px;font-weight:500;color:#6B6860;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:8px;padding-left:4px} |
| 1508 | - .filter-level-1{justify-content:center} | 1523 | + .section-label-goto{margin-top:12px} |
| 1509 | - .filter-level-2{flex-direction:column;gap:8px} | 1524 | + |
| 1510 | - .filter-level-label{font-family:var(--mono);font-size:11px;letter-spacing:0.08em;color:#9B9890} | 1525 | + /* Mode Cards */ |
| 1511 | - | 1526 | + .mode-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px} |
| 1512 | - /* Segmented Control */ | 1527 | + |
| 1513 | - .segmented-control{display:inline-flex;background:rgba(255,255,255,0.06);border-radius:10px;padding:4px;gap:2px} | 1528 | + .mode-card{background:rgba(255,255,255,0.03);border:1px solid rgba(255,255,255,0.08);border-radius:16px;padding:16px 18px;text-align:left;cursor:pointer;transition:all 0.3s cubic-bezier(0.16,1,0.3,1);position:relative;display:flex;flex-direction:column;gap:8px} |
| 1514 | - .segmented-control-secondary{background:rgba(255,255,255,0.04)} | 1529 | + .mode-card:hover{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.12);transform:translateY(-2px)} |
| 1515 | - .segment{font-family:var(--sans);font-size:14px;font-weight:500;color:#8B8880;padding:10px 20px;border:none;background:transparent;border-radius:8px;cursor:pointer;transition:all 0.2s} | 1530 | + .mode-card-active{background:rgba(240,193,77,0.06);border-color:rgba(240,193,77,0.25);box-shadow:0 8px 32px rgba(0,0,0,0.2),0 0 0 1px rgba(240,193,77,0.1)} |
| 1516 | - .segment:hover{color:#B8B5AD} | 1531 | + .mode-card-active:hover{background:rgba(240,193,77,0.08);border-color:rgba(240,193,77,0.35)} |
| 1517 | - .segment-active{background:rgba(255,255,255,0.12);color:#F5F0E8} | 1532 | + |
| 1518 | - .segment-secondary{font-size:13px;padding:8px 16px} | 1533 | + .mode-card-header{display:flex;align-items:center;gap:10px} |
| 1519 | - | 1534 | + .mode-card-icon{display:flex;align-items:center;justify-content:center;color:#9B9890;transition:color 0.3s} |
| 1520 | - /* Checkbox Chips */ | 1535 | + .mode-card:hover .mode-card-icon{color:#D0CCC4} |
| 1521 | - .checkbox-group{display:flex;flex-wrap:wrap;gap:8px;justify-content:center} | 1536 | + .mode-card-active .mode-card-icon{color:#F0C14D} |
| 1522 | - .checkbox-chip{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:20px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);cursor:pointer;transition:all 0.2s;font-family:var(--sans);font-size:13px;color:#8B8880} | 1537 | + .mode-card-title{font-family:var(--sans);font-size:16px;font-weight:600;color:#F5F0E8;letter-spacing:-0.01em} |
| 1523 | - .checkbox-chip:hover{background:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.12)} | 1538 | + |
| 1524 | - .checkbox-chip-active{background:rgba(74,139,110,0.15);border-color:rgba(74,139,110,0.4);color:#5AAF8A} | 1539 | + .mode-card-desc{font-family:var(--sans);font-size:13px;color:#9B9890;line-height:1.5;margin:0} |
| 1525 | - .checkbox-chip-disabled{opacity:0.4;cursor:not-allowed} | 1540 | + .mode-card-desc strong{color:#D0CCC4;font-weight:600} |
| 1526 | - .checkbox-chip-disabled:hover{background:rgba(255,255,255,0.04);border-color:rgba(255,255,255,0.08)} | 1541 | + |
| 1527 | - .checkbox-box{width:16px;height:16px;border-radius:4px;border:1.5px solid rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;transition:all 0.2s;flex-shrink:0} | 1542 | + .mode-card-classifiers{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px} |
| 1528 | - .checkbox-chip-active .checkbox-box{background:#4A8B6E;border-color:#4A8B6E} | 1543 | + |
| 1529 | - .checkbox-label{line-height:1} | 1544 | + .clf-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);cursor:pointer;transition:all 0.2s;font-family:var(--sans);font-size:12px;color:#8B8880} |
| 1530 | - .chip-soon{font-family:var(--mono);font-size:9px;letter-spacing:0.05em;color:#6B6860;background:rgba(255,255,255,0.06);padding:2px 6px;border-radius:4px;margin-left:4px} | 1545 | + .clf-chip:hover{background:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.15)} |
| 1546 | + .clf-chip-active{background:rgba(90,175,138,0.15);border-color:rgba(90,175,138,0.4);color:#5AAF8A} | ||
| 1547 | + .clf-chip-disabled{opacity:0.35;cursor:not-allowed} | ||
| 1548 | + .clf-chip-disabled:hover{background:rgba(255,255,255,0.04);border-color:rgba(255,255,255,0.08)} | ||
| 1549 | + .clf-check{width:14px;height:14px;border-radius:4px;border:1.5px solid rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;transition:all 0.2s;flex-shrink:0} | ||
| 1550 | + .clf-chip-active .clf-check{background:#4A8B6E;border-color:#4A8B6E} | ||
| 1551 | + .clf-label{line-height:1} | ||
| 1552 | + | ||
| 1553 | + .mode-card-pills{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px;align-items:center} | ||
| 1554 | + .pills-hint{font-family:var(--sans);font-size:10px;color:#7B7870;font-weight:500} | ||
| 1555 | + .hint-desktop{display:inline} | ||
| 1556 | + .hint-mobile{display:none} | ||
| 1557 | + .mode-pill{font-family:var(--sans);font-size:11px;font-weight:500;padding:5px 10px;border-radius:8px;cursor:pointer;transition:all 0.2s;border:1px solid rgba(255,255,255,0.15);background:rgba(255,255,255,0.06);color:#D0CCC4} | ||
| 1558 | + .mode-pill:hover{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.25);color:#F5F0E8} | ||
| 1559 | + | ||
| 1560 | + .mode-card-radio{position:absolute;top:16px;right:16px} | ||
| 1561 | + .radio-dot{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,0.2);display:block;transition:all 0.2s;position:relative} | ||
| 1562 | + .radio-dot::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:#F0C14D;opacity:0;transition:all 0.2s} | ||
| 1563 | + .radio-dot-active{border-color:#F0C14D} | ||
| 1564 | + .radio-dot-active::after{opacity:1} | ||
| 1531 | 1565 | ||
| 1532 | /* Results Area */ | 1566 | /* Results Area */ |
| 1533 | - .results-area{width:100%;margin-top:24px;position:relative;min-height:60px;text-align:center} | 1567 | + .results-area{width:100%;position:relative;min-height:60px;text-align:center} |
| 1534 | - .area-spacer{height:100px;transition:height 0.3s} | 1568 | + |
| 1535 | - .area-spacer-hidden{height:0} | 1569 | + /* Daily Card */ |
| 1536 | - | 1570 | + .daily-card{display:flex;align-items:center;gap:12px;padding:14px 18px;background:rgba(232,168,76,0.04);border:1px solid rgba(232,168,76,0.15);border-radius:12px;text-decoration:none;transition:all 0.3s cubic-bezier(0.16,1,0.3,1)} |
| 1537 | - /* Examples */ | 1571 | + .daily-card:hover{background:rgba(232,168,76,0.08);border-color:rgba(232,168,76,0.3);transform:translateY(-2px)} |
| 1538 | - .examples{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;transition:all 0.3s} | 1572 | + .daily-card-left{display:flex;align-items:center;gap:10px;flex-shrink:0} |
| 1539 | - .examples-hidden{opacity:0;height:0;overflow:hidden;pointer-events:none} | 1573 | + .daily-dot{width:8px;height:8px;border-radius:50%;background:#E8A84C;animation:pulse 2s ease-in-out infinite;flex-shrink:0;box-shadow:0 0 10px rgba(232,168,76,0.5)} |
| 1540 | - .examples-label{font-family:var(--mono);font-size:11px;letter-spacing:0.08em;color:#9B9890} | 1574 | + .daily-card-title{font-family:var(--sans);font-size:15px;font-weight:600;color:#E8A84C;letter-spacing:-0.01em} |
| 1541 | - .example-chip{font-family:var(--sans);font-size:13px;font-weight:500;padding:8px 14px;border-radius:20px;border:1px solid rgba(255,255,255,0.1);cursor:pointer;transition:all 0.2s} | 1575 | + .daily-card-content{flex:1;text-align:left} |
| 1542 | - .example-chip:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,0.3)} | 1576 | + .daily-card-text{font-family:var(--sans);font-size:13px;color:#9B9890} |
| 1543 | - | 1577 | + .daily-card-text strong{color:#D4A84C;font-weight:600} |
| 1544 | - /* Daily Hint */ | 1578 | + .daily-card-arrow{color:#E8A84C;opacity:0.5;transition:all 0.2s;flex-shrink:0} |
| 1545 | - .daily-hint{display:inline-flex;align-items:center;gap:8px;margin-top:28px;padding:8px 14px;background:transparent;border:1px solid rgba(74,139,110,0.25);border-radius:20px;transition:all 0.3s;opacity:0;transform:translateY(10px);text-decoration:none;font-size:13px} | 1579 | + .daily-card:hover .daily-card-arrow{opacity:1;transform:translateX(4px)} |
| 1546 | - .daily-hint-visible{opacity:1;transform:translateY(0)} | ||
| 1547 | - .daily-hint:hover{background:rgba(74,139,110,0.08);border-color:rgba(74,139,110,0.4)} | ||
| 1548 | - .daily-dot{width:6px;height:6px;border-radius:50%;background:#E8A84C;animation:pulse 2s ease-in-out infinite;flex-shrink:0;box-shadow:0 0 8px rgba(232,168,76,0.4)} | ||
| 1549 | - .daily-text{font-family:var(--sans);font-size:12px;color:#9B9890} | ||
| 1550 | - .daily-text strong{color:#4A8B6E} | ||
| 1551 | - .daily-hint svg{color:#4A8B6E;opacity:0.6;transition:all 0.2s} | ||
| 1552 | - .daily-hint:hover svg{opacity:1;transform:translateX(3px)} | ||
| 1553 | 1580 | ||
| 1554 | /* Results Messages */ | 1581 | /* Results Messages */ |
| 1555 | .results-message{text-align:center;padding:20px} | 1582 | .results-message{text-align:center;padding:20px} |
| ... | @@ -1559,7 +1586,7 @@ | ... | @@ -1559,7 +1586,7 @@ |
| 1559 | 1586 | ||
| 1560 | /* Results Content */ | 1587 | /* Results Content */ |
| 1561 | .results-content{max-height:0;overflow:hidden;opacity:0;transition:all 0.4s cubic-bezier(0.16,1,0.3,1)} | 1588 | .results-content{max-height:0;overflow:hidden;opacity:0;transition:all 0.4s cubic-bezier(0.16,1,0.3,1)} |
| 1562 | - .results-content-visible{max-height:60vh;overflow-y:auto;opacity:1;background:transparent;border-radius:0;border:none;padding:14px 10px;text-align:left} | 1589 | + .results-content-visible{max-height:60vh;overflow-y:auto;opacity:1;background:#1C1C1A;border-radius:16px;border:none;padding:14px 10px;text-align:left;position:relative;z-index:10} |
| 1563 | 1590 | ||
| 1564 | /* Results Summary */ | 1591 | /* Results Summary */ |
| 1565 | .results-summary{background:transparent;border-radius:0;padding:0 0 12px 0;margin-bottom:12px;border-bottom:1px solid rgba(255,255,255,0.08)} | 1592 | .results-summary{background:transparent;border-radius:0;padding:0 0 12px 0;margin-bottom:12px;border-bottom:1px solid rgba(255,255,255,0.08)} |
| ... | @@ -1620,9 +1647,10 @@ | ... | @@ -1620,9 +1647,10 @@ |
| 1620 | .search-loading{display:flex;align-items:center;justify-content:center} | 1647 | .search-loading{display:flex;align-items:center;justify-content:center} |
| 1621 | 1648 | ||
| 1622 | /* Nav elements in hero */ | 1649 | /* Nav elements in hero */ |
| 1623 | - main[data-section="hero"] .nav-logo{position:absolute;top:24px;left:24px} | 1650 | + main[data-section="hero"] .nav-logo{position:fixed;top:24px;left:24px;z-index:100;transition:opacity 0.4s ease,transform 0.4s ease} |
| 1624 | - .nav-menu-btn{position:absolute;top:24px;right:24px;background:rgba(255,255,255,0.06);border:none;border-radius:10px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#B8B5AD;transition:all 0.2s} | 1651 | + .nav-menu-btn{position:fixed;top:24px;right:24px;z-index:100;background:rgba(255,255,255,0.06);border:none;border-radius:10px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#B8B5AD;transition:all 0.3s ease} |
| 1625 | .nav-menu-btn:hover{background:rgba(255,255,255,0.1);color:#F5F0E8} | 1652 | .nav-menu-btn:hover{background:rgba(255,255,255,0.1);color:#F5F0E8} |
| 1653 | + .nav-hidden{opacity:0;pointer-events:none;transform:translateY(-10px)} | ||
| 1626 | 1654 | ||
| 1627 | /* ── DIRECTORY ── */ | 1655 | /* ── DIRECTORY ── */ |
| 1628 | .directory{background:#f5f5f7;min-height:100vh;display:flex;align-items:center;scroll-snap-align:start;scroll-snap-stop:always;padding:48px} | 1656 | .directory{background:#f5f5f7;min-height:100vh;display:flex;align-items:center;scroll-snap-align:start;scroll-snap-stop:always;padding:48px} |
| ... | @@ -1805,6 +1833,7 @@ | ... | @@ -1805,6 +1833,7 @@ |
| 1805 | 1833 | ||
| 1806 | /* Section dots - bottom horizontal bar */ | 1834 | /* Section dots - bottom horizontal bar */ |
| 1807 | .section-dots{position:fixed;right:auto;left:50%;top:auto;bottom:20px;transform:translateX(-50%);flex-direction:row;gap:10px;padding:12px 20px;border-radius:24px;background:rgba(28,28,26,0.7);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,0.1);z-index:1000} | 1835 | .section-dots{position:fixed;right:auto;left:50%;top:auto;bottom:20px;transform:translateX(-50%);flex-direction:row;gap:10px;padding:12px 20px;border-radius:24px;background:rgba(28,28,26,0.7);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,0.1);z-index:1000} |
| 1836 | + .section-dots-hidden{transform:translateX(-50%) translateY(30px)} | ||
| 1808 | .section-dot{width:8px;height:8px} | 1837 | .section-dot{width:8px;height:8px} |
| 1809 | .section-dot-label{display:none} | 1838 | .section-dot-label{display:none} |
| 1810 | 1839 | ||
| ... | @@ -1850,20 +1879,28 @@ | ... | @@ -1850,20 +1879,28 @@ |
| 1850 | .search-container{padding:0 16px;justify-content:flex-start;padding-top:100px} | 1879 | .search-container{padding:0 16px;justify-content:flex-start;padding-top:100px} |
| 1851 | .hero-title{font-size:clamp(38px,9vw,52px);margin-bottom:4px} | 1880 | .hero-title{font-size:clamp(38px,9vw,52px);margin-bottom:4px} |
| 1852 | .hero-sub{font-size:14px;margin-bottom:20px} | 1881 | .hero-sub{font-size:14px;margin-bottom:20px} |
| 1853 | - .filters-row{gap:12px;margin-top:16px} | 1882 | + .section-group{margin-top:16px} |
| 1854 | - .filter-level{flex-direction:column;gap:8px} | 1883 | + .section-label{font-size:10px;margin-bottom:10px} |
| 1855 | - .segmented-control{width:auto;justify-content:center} | 1884 | + .section-label-goto{margin-top:16px} |
| 1856 | - .segment{text-align:center;padding:10px 16px;font-size:13px} | 1885 | + .mode-cards{grid-template-columns:1fr;gap:12px} |
| 1857 | - .checkbox-group{justify-content:flex-start} | 1886 | + .mode-card{padding:18px;gap:10px;border-radius:16px} |
| 1858 | - .checkbox-chip{font-size:12px;padding:6px 12px} | 1887 | + .mode-card-title{font-size:15px} |
| 1859 | - .examples{flex-direction:row;gap:8px;margin-top:16px} | 1888 | + .mode-card-desc{font-size:12px} |
| 1860 | - .examples-label{display:inline;font-size:10px} | 1889 | + .clf-chip{padding:5px 10px;font-size:11px} |
| 1861 | - .example-chip{font-size:12px;padding:6px 12px} | 1890 | + .clf-check{width:12px;height:12px} |
| 1891 | + .mode-pill{font-size:12px;padding:7px 12px} | ||
| 1892 | + .hint-desktop{display:none} | ||
| 1893 | + .hint-mobile{display:inline} | ||
| 1894 | + .pills-hint{font-size:11px} | ||
| 1895 | + .pills-list{gap:5px} | ||
| 1896 | + .mode-card-radio{top:14px;right:14px} | ||
| 1897 | + .radio-dot{width:16px;height:16px} | ||
| 1862 | .results-area{margin-top:4px;min-height:40px} | 1898 | .results-area{margin-top:4px;min-height:40px} |
| 1863 | .results-content-visible{padding:2px 4px} | 1899 | .results-content-visible{padding:2px 4px} |
| 1864 | .search-wrap-with-results{padding:2px} | 1900 | .search-wrap-with-results{padding:2px} |
| 1865 | - .daily-hint{padding:10px 14px;gap:8px} | 1901 | + .daily-card{padding:16px 18px;gap:12px;border-radius:14px} |
| 1866 | - .daily-text{font-size:13px} | 1902 | + .daily-card-title{font-size:14px} |
| 1903 | + .daily-card-text{font-size:12px} | ||
| 1867 | .results-summary{padding:4px 0} | 1904 | .results-summary{padding:4px 0} |
| 1868 | .summary-row{flex-direction:row;gap:6px;flex-wrap:nowrap} | 1905 | .summary-row{flex-direction:row;gap:6px;flex-wrap:nowrap} |
| 1869 | .summary-stats{gap:2px;flex:1} | 1906 | .summary-stats{gap:2px;flex:1} |
| ... | @@ -1975,23 +2012,30 @@ | ... | @@ -1975,23 +2012,30 @@ |
| 1975 | .placeholder-text{font-size:12px} | 2012 | .placeholder-text{font-size:12px} |
| 1976 | .hero-title{font-size:clamp(34px,10vw,44px)} | 2013 | .hero-title{font-size:clamp(34px,10vw,44px)} |
| 1977 | .hero-sub{font-size:13px;margin-bottom:16px} | 2014 | .hero-sub{font-size:13px;margin-bottom:16px} |
| 1978 | - .examples-label{font-size:9px} | 2015 | + main[data-section="hero"] .nav-logo{top:16px;left:16px;height:56px} |
| 1979 | - main[data-section="hero"] .nav-logo{top:16px;left:16px;height:60px} | 2016 | + .nav-menu-btn{top:16px;right:16px;width:38px;height:38px} |
| 1980 | - .nav-menu-btn{top:16px;right:16px;width:40px;height:40px} | 2017 | + .mode-cards{gap:10px;margin-top:12px} |
| 1981 | - .segmented-control{padding:3px} | 2018 | + .mode-card{padding:14px;gap:8px;border-radius:14px} |
| 1982 | - .segment{padding:8px 10px;font-size:12px} | 2019 | + .mode-card-icon svg{width:18px;height:18px} |
| 1983 | - .segment-secondary{font-size:11px;padding:6px 8px} | 2020 | + .mode-card-title{font-size:14px} |
| 1984 | - .filter-level-label{font-size:10px} | 2021 | + .mode-card-desc{font-size:11px} |
| 1985 | - .checkbox-chip{font-size:11px;padding:5px 10px;gap:6px} | 2022 | + .mode-card-classifiers{gap:4px} |
| 1986 | - .checkbox-box{width:14px;height:14px} | 2023 | + .clf-chip{padding:4px 8px;font-size:10px;gap:4px} |
| 1987 | - .examples{margin-top:14px} | 2024 | + .clf-check{width:10px;height:10px} |
| 1988 | - .example-chip{font-size:11px;padding:5px 10px} | 2025 | + .mode-pill{font-size:11px;padding:6px 10px;border-radius:8px} |
| 2026 | + .mode-card-radio{top:12px;right:12px} | ||
| 2027 | + .radio-dot{width:14px;height:14px} | ||
| 2028 | + .radio-dot::after{width:6px;height:6px} | ||
| 1989 | .results-area{margin-top:2px;min-height:28px} | 2029 | .results-area{margin-top:2px;min-height:28px} |
| 1990 | .results-content-visible{padding:0 2px} | 2030 | .results-content-visible{padding:0 2px} |
| 1991 | .search-wrap-with-results{padding:2px} | 2031 | .search-wrap-with-results{padding:2px} |
| 1992 | - .daily-hint{padding:8px 12px;border-radius:10px} | 2032 | + .section-group{margin-top:12px} |
| 2033 | + .section-label{font-size:9px;margin-bottom:8px} | ||
| 2034 | + .section-label-goto{margin-top:12px} | ||
| 2035 | + .daily-card{padding:14px 16px;gap:10px;border-radius:12px} | ||
| 1993 | .daily-dot{width:6px;height:6px} | 2036 | .daily-dot{width:6px;height:6px} |
| 1994 | - .daily-text{font-size:12px} | 2037 | + .daily-card-title{font-size:13px} |
| 2038 | + .daily-card-text{font-size:11px} | ||
| 1995 | .results-summary{padding:2px 0} | 2039 | .results-summary{padding:2px 0} |
| 1996 | .summary-count{font-size:11px} | 2040 | .summary-count{font-size:11px} |
| 1997 | .summary-tag-gold{font-size:13px} | 2041 | .summary-tag-gold{font-size:13px} | ... | ... |
-
Please register or login to post a comment