×

注意!页面内容来自https://intornoame.it/,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页

<> /* Enhanced Hero Section */ .hero { min-height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: var(--space-xl) var(--space-lg); text-align: center; position: relative; background: radial-gradient(circle at 50% 50% rgba(var(--primary-green-rgb)0.05) transparent 50%); } .hero-content { max-width: min(90%1000px); margin: 0 auto; animation: heroFadeIn 1.2s cubic-bezier(0.400.21); } @keyframes heroFadeIn { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } } .hero h1 { font-size: var(--text-5xl); font-weight: 900; margin-bottom: var(--space-md); line-height: 1.1; letter-spacing: -0.02em; background: linear-gradient(135deg var(--text-primary) 0% var(--primary-green) 50% var(--text-primary) 100%); background-size: 200% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: gradientShift 4s ease infinite; } @keyframes gradientShift { 0% { background-position: 0% center; } 50% { background-position: 100% center; } 100% { background-position: 0% center; } } .hero p { font-size: var(--text-lg); color: var(--text-secondary); margin: 0 auto var(--space-xl) auto; max-width: min(90%700px); line-height: 1.7; opacity: 0.9; text-align: center; } /* Enhanced Search Container */ .search-container { width: 100%; max-width: min(90%750px); margin: 0 auto var(--space-lg); animation: fadeInUp 1s ease-out 0.2s both; } .search-box { position: relative; width: 100%; margin-bottom: var(--space-md); } .search-input { width: 100%; padding: var(--space-md) var(--space-lg); padding-left: calc(var(--space-xl) + 20px); background: var(--card-bg); border: 2px solid var(--card-border); border-radius: 24px; font-size: var(--text-base); color: var(--text-primary); transition: all 0.3s ease; outline: none; box-shadow: 0 4px 20px rgba(0000.1); } .search-input::placeholder { color: var(--text-secondary); opacity: 0.7; } .search-input:focus { background: var(--card-hover); border-color: var(--primary-green); box-shadow: 0 0 0 4px rgba(var(--primary-green-rgb)0.1), 0 10px 40px rgba(0000.1); transform: translateY(-2px); } .search-icon { position: absolute; left: var(--space-md); top: 50%; transform: translateY(-50%); width: 24px; height: 24px; fill: var(--text-secondary); transition: all 0.3s ease; } .search-input:focus ~ .search-icon { fill: var(--primary-green); transform: translateY(-50%) scale(1.1); } /* Enhanced Buttons */ .search-buttons { display: flex; flex-wrap: wrap; gap: var(--space-sm); justify-content: center; margin-bottom: var(--space-lg); } .location-btn { display: inline-flex; align-items: center; gap: var(--space-sm); padding: var(--space-md) var(--space-xl); background: linear-gradient(135degvar(--primary-green)var(--dark-green)); border: none; border-radius: 100px; color: var(--bg-dark); font-size: var(--text-base); font-weight: 600; cursor: pointer; transition: all 0.3s cubic-bezier(0.400.21); box-shadow: 0 10px 30px rgba(var(--primary-green-rgb)0.3), inset 0 1px 0 rgba(2552552550.2); position: relative; overflow: hidden; } .location-btn::before { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; background: rgba(2552552550.3); border-radius: 50%; transform: translate(-50%-50%); transition: width 0.6sheight 0.6s; } .location-btn:hover::before { width: 400px; height: 400px; } .location-btn:hover:not(:disabled) { transform: translateY(-3px) scale(1.02); box-shadow: 0 20px 40px rgba(var(--primary-green-rgb)0.4), inset 0 1px 0 rgba(2552552550.3); } .location-btn:active:not(:disabled) { transform: translateY(-1px) scale(1); } .location-btn:disabled { opacity: 0.7; cursor: not-allowed; transform: none !important; } .location-btn.secondary { background: transparent; border: 2px solid var(--primary-green); color: var(--primary-green); box-shadow: 0 4px 15px rgba(var(--primary-green-rgb)0.2); } .location-btn.secondary:hover:not(:disabled) { background: rgba(var(--primary-green-rgb)0.1); box-shadow: 0 10px 30px rgba(var(--primary-green-rgb)0.3); border-color: var(--dark-green); } /* Enhanced Categories */ .quick-categories { display: flex; flex-wrap: wrap; gap: var(--space-sm); justify-content: center; margin-top: var(--space-lg); animation: fadeInUp 1s ease-out 0.3s both; max-width: min(95%1000px); margin-left: auto; margin-right: auto; } .category-pill { padding: var(--space-sm) var(--space-md); background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 50px; font-size: var(--text-sm); cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: var(--space-xs); position: relative; overflow: hidden; min-width: max-content; backdrop-filter: blur(10px); } .category-pill::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg transparent rgba(var(--primary-green-rgb)0.2) transparent); transition: left 0.5s; } .category-pill:hover { background: rgba(var(--primary-green-rgb)0.1); border-color: var(--primary-green); transform: translateY(-2px) scale(1.05); box-shadow: 0 5px 15px rgba(var(--primary-green-rgb)0.2); } .category-pill:hover::before { left: 100%; } .category-pill.active { background: var(--primary-green); color: var(--bg-dark); border-color: var(--primary-green); box-shadow: 0 5px 20px rgba(var(--primary-green-rgb)0.4); } /* Enhanced Status Messages */ .status-message { margin: var(--space-lg) auto; padding: var(--space-md) var(--space-lg); border-radius: 20px; font-size: var(--text-base); max-width: min(90%650px); animation: statusSlideIn 0.4s ease; display: flex; align-items: center; gap: var(--space-md); backdrop-filter: blur(12px); box-shadow: 0 8px 32px rgba(0000.1); } @keyframes statusSlideIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } .status-message.info { background: rgba(591302460.1); border: 1px solid rgba(591302460.3); color: #60a5fa; } .status-message.error { background: rgba(23968680.1); border: 1px solid rgba(23968680.3); color: #f87171; } .status-message.success { background: rgba(161851290.1); border: 1px solid rgba(161851290.3); color: #34d399; } .status-message.warning { background: rgba(245158110.1); border: 1px solid rgba(245158110.3); color: #fbbf24; } /* Enhanced Loading Spinner */ .spinner { display: inline-block; width: 20px; height: 20px; border: 2px solid transparent; border-top-color: currentColor; border-right-color: currentColor; border-radius: 50%; animation: spin 0.8s cubic-bezier(0.68-0.550.2651.55) infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Enhanced Results Section */ .results-section { display: none; width: 100%; max-width: var(--container-2xl); margin: 0 auto; padding: var(--space-lg); animation: fadeIn 0.5s ease; } .results-section.active { display: block; } .results-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-lg); flex-wrap: wrap; gap: var(--space-md); } .results-count { font-size: var(--text-xl); font-weight: 700; display: flex; align-items: center; gap: var(--space-xs); } .results-count .count-number { font-size: var(--text-2xl); background: linear-gradient(135degvar(--primary-green)var(--dark-green)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Enhanced Filter Buttons */ .filter-buttons { display: flex; gap: var(--space-xs); flex-wrap: wrap; } .filter-btn { padding: var(--space-xs) var(--space-md); background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 12px; color: var(--text-secondary); font-size: var(--text-sm); cursor: pointer; transition: all 0.3s ease; font-weight: 500; backdrop-filter: blur(10px); } .filter-btn:hover { background: rgba(var(--primary-green-rgb)0.1); border-color: var(--primary-green); color: var(--primary-green); transform: translateY(-1px); } .filter-btn.active { background: var(--primary-green); color: var(--bg-dark); border-color: var(--primary-green); box-shadow: 0 4px 12px rgba(var(--primary-green-rgb)0.3); } /* Enhanced Places Grid */ .places-grid { display: grid; grid-template-columns: repeat(auto-fillminmax(min(100%380px)1fr)); gap: var(--space-md); margin-bottom: var(--space-xl); } /* Enhanced Place Card */ .place-card { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 24px; overflow: hidden; transition: all 0.4s cubic-bezier(0.400.21); cursor: pointer; position: relative; backdrop-filter: blur(20px); will-change: transform; } .place-card:hover { transform: translateY(-8px) scale(1.02); box-shadow: 0 20px 40px rgba(0000.2), 0 0 0 1px rgba(var(--primary-green-rgb)0.5); border-color: var(--primary-green); background: var(--card-hover); } .place-image { width: 100%; height: 220px; position: relative; overflow: hidden; background: linear-gradient(135degvar(--bg-darker)var(--card-bg)); } .place-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s cubic-bezier(0.400.21); } .place-card:hover .place-image img { transform: scale(1.1) rotate(1deg); } .place-image::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 60%; background: linear-gradient(to top rgba(0,0,0,0.8) transparent); opacity: 0; transition: opacity 0.3s; } .place-card:hover .place-image::after { opacity: 1; } .place-status { position: absolute; top: var(--space-sm); right: var(--space-sm); padding: var(--space-xs) var(--space-sm); background: rgba(0000.8); backdrop-filter: blur(12px); border-radius: 50px; font-size: var(--text-xs); font-weight: 600; display: flex; align-items: center; gap: var(--space-xs); z-index: 2; border: 1px solid rgba(2552552550.1); color: white; } .status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--success); animation: statusPulse 2s infinite; } @keyframes statusPulse { 0%100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.6; transform: scale(0.8); } } .status-dot.closed { background: var(--danger); animation: none; } .place-info { padding: var(--space-md); } .place-header { display: flex; justify-content: space-between; align-items: start; margin-bottom: var(--space-sm); gap: var(--space-sm); } .place-title { flex: 1; min-width: 0; } .place-name { font-size: var(--text-lg); font-weight: 700; margin-bottom: calc(var(--space-xs) / 2); color: var(--text-primary); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .place-category { font-size: var(--text-sm); color: var(--text-secondary); display: flex; align-items: center; gap: var(--space-xs); opacity: 0.9; } .place-rating { display: flex; align-items: center; gap: calc(var(--space-xs) / 2); background: rgba(25520400.1); padding: calc(var(--space-xs) / 2) var(--space-sm); border-radius: 10px; font-weight: 600; white-space: nowrap; border: 1px solid rgba(25520400.2); } .star { color: #ffcc00; font-size: var(--text-base); } .place-details { display: flex; flex-direction: column; gap: var(--space-xs); margin-top: var(--space-sm); } .detail-row { display: flex; align-items: center; gap: var(--space-xs); font-size: var(--text-sm); color: var(--text-secondary); opacity: 0.9; } .detail-icon { width: 18px; height: 18px; fill: var(--primary-green); flex-shrink: 0; opacity: 0.8; } .place-distance { display: inline-flex; align-items: center; gap: var(--space-xs); background: rgba(var(--primary-green-rgb)0.1); color: var(--primary-green); padding: var(--space-xs) var(--space-sm); border-radius: 12px; font-weight: 600; font-size: var(--text-sm); margin-top: var(--space-sm); width: fit-content; border: 1px solid rgba(var(--primary-green-rgb)0.2); } .place-actions { display: flex; gap: var(--space-xs); margin-top: var(--space-md); } .action-btn { flex: 1; padding: var(--space-sm); background: transparent; border: 1px solid var(--card-border); border-radius: 14px; color: var(--text-secondary); font-size: var(--text-sm); font-weight: 500; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; gap: var(--space-xs); position: relative; overflow: hidden; } .action-btn::before { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; background: rgba(var(--primary-green-rgb)0.1); border-radius: 50%; transform: translate(-50%-50%); transition: width 0.6sheight 0.6s; } .action-btn:hover { border-color: var(--primary-green); color: var(--primary-green); transform: translateY(-2px); } .action-btn:hover::before { width: 300%; height: 300%; } .action-btn.primary { background: var(--primary-green); color: var(--bg-dark); border-color: var(--primary-green); font-weight: 600; } .action-btn.primary:hover { background: var(--dark-green); border-color: var(--dark-green); box-shadow: 0 6px 20px rgba(var(--primary-green-rgb)0.3); } /* No Results */ .no-results { text-align: center; padding: var(--space-2xl) var(--space-lg); color: var(--text-secondary); } .no-results-icon { width: min(30%120px); height: auto; margin: 0 auto var(--space-lg); opacity: 0.2; } .no-results h3 { font-size: var(--text-xl); margin-bottom: var(--space-sm); color: var(--text-primary); } /* Enhanced Modal */ .modal-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0000.85); backdrop-filter: blur(20px); z-index: 2000; align-items: center; justify-content: center; padding: var(--space-md); opacity: 0; transition: opacity 0.3s ease; } .modal-overlay.active { display: flex; opacity: 1; } .modal { background: var(--bg-dark); border: 1px solid var(--card-border); border-radius: 24px; max-width: min(95%900px); max-height: 90vh; width: 100%; overflow: hidden; position: relative; animation: modalSlideIn 0.4s cubic-bezier(0.400.21); box-shadow: 0 25px 50px rgba(0000.5); } @keyframes modalSlideIn { from { transform: translateY(100px) scale(0.9); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } } .modal-header { position: relative; height: min(40vh280px); overflow: hidden; background: linear-gradient(135degvar(--bg-darker)var(--card-bg)); } .modal-header img { width: 100%; height: 100%; object-fit: cover; } .modal-header::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 60%; background: linear-gradient(to topvar(--bg-dark)transparent); } .modal-close { position: absolute; top: var(--space-sm); right: var(--space-sm); width: 45px; height: 45px; background: rgba(0000.8); backdrop-filter: blur(12px); border: 1px solid rgba(2552552550.1); border-radius: 50%; color: white; font-size: var(--text-xl); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; z-index: 10; } .modal-close:hover { background: var(--primary-green); transform: rotate(90deg) scale(1.1); border-color: var(--primary-green); } .modal-body { padding: var(--space-lg); overflow-y: auto; max-height: calc(90vh - min(40vh280px)); } /* Enhanced Scrollbar for Modal */ .modal-body::-webkit-scrollbar { width: 8px; } .modal-body::-webkit-scrollbar-thumb { background: var(--card-border); border-radius: 4px; } .modal-body::-webkit-scrollbar-thumb:hover { background: var(--primary-green); } /* Modal Content Styles */ .modal-title { display: flex; justify-content: space-between; align-items: start; margin-bottom: var(--space-lg); gap: var(--space-lg); flex-wrap: wrap; } .modal-title h2 { font-size: var(--text-3xl); font-weight: 800; margin-bottom: var(--space-xs); line-height: 1.2; } .modal-category { display: flex; align-items: center; gap: var(--space-xs); font-size: var(--text-base); color: var(--text-secondary); margin-top: var(--space-xs); } .modal-rating-large { display: flex; align-items: center; gap: var(--space-xs); background: rgba(25520400.1); padding: var(--space-sm) var(--space-md); border-radius: 14px; font-size: var(--text-lg); font-weight: 600; white-space: nowrap; border: 1px solid rgba(25520400.2); } .modal-info-section { margin: var(--space-xl) 0; padding-bottom: var(--space-lg); border-bottom: 1px solid var(--card-border); } .modal-info-section:last-child { border-bottom: none; } .info-grid { display: grid; grid-template-columns: repeat(auto-fitminmax(min(100%250px)1fr)); gap: var(--space-md); } .info-item { display: flex; flex-direction: column; gap: var(--space-xs); } .info-label { font-size: var(--text-sm); color: var(--text-secondary); font-weight: 500; } .info-value { font-size: var(--text-base); color: var(--text-primary); word-break: break-word; } .info-value a { color: var(--primary-green); text-decoration: none; transition: opacity 0.3s ease; } .info-value a:hover { opacity: 0.8; text-decoration: underline; } /* Opening Hours */ .opening-hours { display: flex; flex-direction: column; gap: var(--space-xs); } .hour-row { padding: var(--space-sm) var(--space-md); background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 12px; font-size: var(--text-sm); transition: all 0.3s ease; } .hour-row.today { background: rgba(var(--primary-green-rgb)0.1); border-color: var(--primary-green); color: var(--primary-green); font-weight: 600; box-shadow: 0 4px 12px rgba(var(--primary-green-rgb)0.2); } /* Photo Gallery */ .photo-gallery { display: grid; grid-template-columns: repeat(auto-fillminmax(min(100%150px)1fr)); gap: var(--space-sm); } .gallery-item { aspect-ratio: 1; overflow: hidden; border-radius: 16px; position: relative; cursor: pointer; transition: transform 0.3s ease; border: 1px solid var(--card-border); } .gallery-item:hover { transform: scale(1.05); border-color: var(--primary-green); box-shadow: 0 8px 24px rgba(0000.2); } .gallery-item img { width: 100%; height: 100%; object-fit: cover; } /* Reviews */ .reviews-container { display: flex; flex-direction: column; gap: var(--space-md); } .review-item { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 20px; padding: var(--space-md); transition: all 0.3s ease; } .review-item:hover { background: var(--card-hover); border-color: var(--primary-green); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0000.1); } .review-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-sm); gap: var(--space-sm); flex-wrap: wrap; } .review-author { display: flex; align-items: center; gap: var(--space-sm); } .review-avatar { width: 50px; height: 50px; border-radius: 50%; object-fit: cover; border: 2px solid var(--card-border); } .review-avatar-placeholder { width: 50px; height: 50px; border-radius: 50%; background: var(--card-border); display: flex; align-items: center; justify-content: center; font-size: var(--text-xl); } .review-name { font-weight: 600; color: var(--text-primary); } .review-time { font-size: var(--text-xs); color: var(--text-secondary); margin-top: calc(var(--space-xs) / 2); } .review-rating { color: #ffcc00; font-size: var(--text-base); white-space: nowrap; } .review-text { color: var(--text-secondary); line-height: 1.7; font-size: var(--text-sm); } /* Modal Actions */ .modal-actions { display: flex; flex-wrap: wrap; gap: var(--space-sm); margin-top: var(--space-xl); padding-top: var(--space-lg); border-top: 1px solid var(--card-border); } .modal-actions .action-btn { flex: 1; min-width: min(100%200px); padding: var(--space-sm) var(--space-md); font-size: var(--text-base); } /* Enhanced Radius Selector */ .search-options { display: flex; flex-direction: column; gap: var(--space-md); margin-top: var(--space-lg); padding: var(--space-md); background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 24px; animation: fadeInUp 1s ease-out 0.4s both; backdrop-filter: blur(20px); box-shadow: 0 8px 32px rgba(0000.1); } .radius-selector { display: flex; align-items: center; gap: var(--space-md); flex-wrap: wrap; } .radius-label { font-size: var(--text-sm); color: var(--text-secondary); display: flex; align-items: center; gap: var(--space-xs); white-space: nowrap; } .radius-icon { width: 22px; height: 22px; fill: var(--primary-green); } .radius-slider-container { flex: 1; min-width: 200px; position: relative; } .radius-slider { width: 100%; -webkit-appearance: none; appearance: none; height: 8px; background: var(--card-border); border-radius: 4px; outline: none; transition: all 0.3s ease; position: relative; } .radius-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 24px; height: 24px; background: var(--primary-green); border-radius: 50%; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 2px 8px rgba(var(--primary-green-rgb)0.3); border: 3px solid var(--bg-dark); } .radius-slider::-moz-range-thumb { width: 24px; height: 24px; background: var(--primary-green); border-radius: 50%; cursor: pointer; border: 3px solid var(--bg-dark); box-shadow: 0 2px 8px rgba(var(--primary-green-rgb)0.3); } .radius-slider:hover::-webkit-slider-thumb { transform: scale(1.2); box-shadow: 0 4px 12px rgba(var(--primary-green-rgb)0.5); } .radius-slider:hover::-moz-range-thumb { transform: scale(1.2); box-shadow: 0 4px 12px rgba(var(--primary-green-rgb)0.5); } .radius-value { font-weight: 600; color: var(--primary-green); min-width: 80px; text-align: right; font-size: var(--text-base); } /* Toggle Switch */ .toggle-container { display: flex; align-items: center; justify-content: space-between; padding: var(--space-xs) 0; gap: var(--space-md); } .toggle-label { font-size: var(--text-sm); color: var(--text-secondary); display: flex; align-items: center; gap: var(--space-xs); } .toggle-switch { position: relative; width: 56px; height: 30px; background: var(--card-border); border-radius: 15px; cursor: pointer; transition: all 0.3s ease; flex-shrink: 0; } .toggle-switch.active { background: var(--primary-green); } .toggle-switch::after { content: ''; position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; background: white; border-radius: 50%; transition: transform 0.3s cubic-bezier(0.400.21); box-shadow: 0 2px 4px rgba(0000.2); } .toggle-switch.active::after { transform: translateX(26px); } /* Enhanced Footer */ footer { background: var(--bg-darker); border-top: 1px solid var(--card-border); margin-top: var(--space-2xl); padding: var(--space-2xl) var(--space-lg) var(--space-lg); position: relative; overflow: hidden; } footer::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg transparent var(--primary-green) transparent); animation: shimmer 3s infinite; } @keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } .footer-content { max-width: var(--container-2xl); margin: 0 auto; } .footer-grid { display: grid; grid-template-columns: repeat(auto-fitminmax(min(100%280px)1fr)); gap: var(--space-xl); margin-bottom: var(--space-xl); } .footer-section h3 { color: var(--primary-green); font-size: var(--text-lg); font-weight: 700; margin-bottom: var(--space-md); } .footer-logo { display: flex; align-items: center; gap: var(--space-sm); font-size: var(--text-2xl); font-weight: 900; background: linear-gradient(135degvar(--primary-green)var(--dark-green)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: var(--space-sm); } .footer-description { color: var(--text-secondary); line-height: 1.7; margin-bottom: var(--space-md); font-size: var(--text-sm); } .footer-links { list-: none; display: flex; flex-direction: column; gap: var(--space-sm); } .footer-link { color: var(--text-secondary); text-decoration: none; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: var(--space-xs); font-size: var(--text-sm); position: relative; padding-left: 0; } .footer-link::before { content: ''; position: absolute; left: -20px; top: 50%; width: 0; height: 2px; background: var(--primary-green); transform: translateY(-50%); transition: width 0.3s ease; } .footer-link:hover { color: var(--primary-green); padding-left: var(--space-sm); } .footer-link:hover::before { width: 16px; } .footer-contact-item { color: var(--text-secondary); margin-bottom: var(--space-sm); display: flex; align-items: flex-start; gap: var(--space-sm); font-size: var(--text-sm); } .footer-contact-item svg { width: 20px; height: 20px; fill: var(--primary-green); flex-shrink: 0; margin-top: 2px; } .footer-bottom { padding-top: var(--space-lg); border-top: 1px solid var(--card-border); text-align: center; color: var(--text-secondary); font-size: var(--text-sm); line-height: 1.8; } .footer-bottom p { margin-bottom: var(--space-xs); } .footer-bottom a { color: var(--primary-green); text-decoration: none; transition: opacity 0.3s ease; font-weight: 500; } .footer-bottom a:hover { opacity: 0.8; text-decoration: underline; } .footer-social { display: flex; gap: var(--space-sm); margin-top: var(--space-sm); justify-content: center; } .social-link { width: 44px; height: 44px; background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; color: var(--text-secondary); } .social-link:hover { background: var(--primary-green); border-color: var(--primary-green); color: var(--bg-dark); transform: translateY(-3px) rotate(5deg); box-shadow: 0 8px 20px rgba(var(--primary-green-rgb)0.3); } /* Responsive Design - Tablet */ @media (max-width: 1024px) { :root { --space-xs: 0.5rem; --space-sm: 0.75rem; --space-md: 1rem; --space-lg: 1.5rem; --space-xl: 2rem; --space-2xl: 3rem; } .places-grid { grid-template-columns: repeat(auto-fillminmax(min(100%340px)1fr)); } .hero h1 { font-size: var(--text-4xl); } .nav-links { gap: var(--space-md); } } /* Responsive Design - Mobile */ @media (max-width: 768px) { header { padding: var(--space-sm) var(--space-sm); } .nav-menu { display: none; } .mobile-menu-btn { display: flex; align-items: center; justify-content: center; flex-direction: column; } .mobile-menu { display: block; } .hero { padding: var(--space-lg) var(--space-sm); padding-top: calc(80px + var(--space-lg)); min-height: auto; } .hero h1 { font-size: var(--text-4xl); line-height: 1.2; } .hero p { font-size: var(--text-base); } .search-container { max-width: 100%; } .search-input { font-size: 16px; /* Prevents zoom on iOS */ } .location-btn { padding: var(--space-sm) var(--space-md); font-size: var(--text-sm); } .places-grid { grid-template-columns: 1fr; gap: var(--space-sm); } .place-actions { flex-direction: column; } .results-section { padding: var(--space-sm); } .results-header { flex-direction: column; align-items: flex-start; } .filter-buttons { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: var(--space-xs); } .quick-categories { gap: var(--space-xs); padding: 0 var(--space-xs); display: grid; grid-template-columns: repeat(21fr); } .category-pill { padding: var(--space-xs) var(--space-sm); font-size: var(--text-xs); justify-content: center; } .modal-body { padding: var(--space-md); } .search-options { padding: var(--space-sm); } .radius-selector { flex-direction: column; align-items: stretch; } .radius-slider-container { width: 100%; } .toggle-container { flex-direction: column; align-items: stretch; gap: var(--space-sm); } /* Modal mobile */ .modal-title { flex-direction: column; gap: var(--space-sm); } .modal-title h2 { font-size: var(--text-2xl); } .info-grid { grid-template-columns: 1fr; gap: var(--space-sm); } .photo-gallery { grid-template-columns: repeat(21fr); gap: var(--space-xs); } .modal-actions { flex-direction: column; } .modal-actions .action-btn { width: 100%; } .review-header { flex-direction: column; align-items: flex-start; gap: var(--space-xs); } /* Footer mobile */ footer { padding: var(--space-xl) var(--space-sm) var(--space-md); margin-top: var(--space-xl); } .footer-grid { grid-template-columns: 1fr; gap: var(--space-lg); text-align: center; } .footer-links { align-items: center; } .footer-link::before { display: none; } .footer-link:hover { padding-left: 0; } .footer-contact-item { justify-content: center; } } /* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* Shimmer loading effect */ .shimmer { background: linear-gradient( 90deg var(--card-bg) 0%, rgba(2552552550.05) 20%, rgba(2552552550.05) 40%, var(--card-bg) 100% ); background-size: 1000px 100%; animation: shimmerAnimation 2s infinite linear; } @keyframes shimmerAnimation { 0% { background-position: -1000px 0; } 100% { background-position: 1000px 0; } } .place-card.loading .place-image, .place-card.loading .place-name, .place-card.loading .detail-row { position: relative; overflow: hidden; } .place-card.loading .place-image::after, .place-card.loading .place-name::after, .place-card.loading .detail-row::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient( 90deg, transparent 0%, rgba(2552552550.03) 50%, transparent 100% ); animation: shimmerAnimation 2s infinite; } /* Utility classes */ .text-center { text-align: center; } .mt-1 { margin-top: var(--space-xs); } .mt-2 { margin-top: var(--space-sm); } .mt-3 { margin-top: var(--space-md); } .mt-4 { margin-top: var(--space-lg); } /* Accessibility */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0000); white-space: nowrap; border-width: 0; } /* Focus s */ *:focus { outline: 2px solid var(--primary-green); outline-offset: 2px; } button:focus, a:focus { outline-offset: 4px; } /* Print s */ @media print { .bg-animation, header, footer, .search-container, .quick-categories, .filter-buttons, .modal-overlay { display: none !important; } .hero { min-height: auto; padding: 2rem; } .place-card { break-inside: avoid; box-shadow: none; border: 1px solid #ddd; } } /* ===== ENHANCED RESPONSIVE & CROSS-BROWSER OPTIMIZATIONS ===== */ /* Extra Small Mobile (320px - 374px) - iPhone SEolder Androids */ @media (max-width: 374px) { .hero h1 { font-size: clamp(1.75rem8vw2.5rem); line-height: 1.15; word-break: break-word; } .hero p { font-size: clamp(0.875rem4vw1rem); padding: 0 var(--space-xs); line-height: 1.6; } .quick-categories { grid-template-columns: 1fr 1fr; gap: var(--space-xs); padding: 0; } .category-pill { padding: var(--space-xs); font-size: clamp(0.75rem3vw0.8rem); } .search-input { padding: var(--space-sm) var(--space-md); padding-left: 2.5rem; font-size: 16px; } .location-btn { padding: var(--space-sm); font-size: clamp(0.8rem3.5vw0.9rem); } } /* Small Mobile (375px - 413px) - iPhone 12/13/14modern smartphones */ @media (min-width: 375px) and (max-width: 413px) { .hero h1 { font-size: clamp(2rem9vw2.75rem); line-height: 1.15; } .hero p { font-size: clamp(0.9rem4.2vw1.05rem); max-width: 95%; padding: 0 var(--space-sm); } .quick-categories { grid-template-columns: repeat(21fr); padding: 0 var(--space-xs); } } /* Medium Mobile (414px - 639px) - Large smartphonesiPhone Plus */ @media (min-width: 414px) and (max-width: 639px) { .hero h1 { font-size: clamp(2.25rem9vw3rem); } .hero p { font-size: clamp(0.95rem4vw1.1rem); max-width: 90%; } .quick-categories { grid-template-columns: repeat(21fr); } .search-input { font-size: 16px; } } /* Tablet Portrait (640px - 767px) */ @media (min-width: 640px) and (max-width: 767px) { .hero h1 { font-size: clamp(2.5rem8vw3.5rem); } .hero p { font-size: clamp(1rem3vw1.2rem); max-width: 85%; } .quick-categories { grid-template-columns: repeat(31fr); gap: var(--space-sm); } .places-grid { grid-template-columns: repeat(21fr); gap: var(--space-md); } } /* Tablet Landscape & Small Desktop (768px - 1023px) */ @media (min-width: 768px) and (max-width: 1023px) { .hero p { max-width: 80%; font-size: clamp(1.05rem2.5vw1.25rem); } .quick-categories { grid-template-columns: repeat(41fr); } .places-grid { grid-template-columns: repeat(21fr); } } /* Large Desktop (1024px - 1279px) */ @media (min-width: 1024px) and (max-width: 1279px) { .hero p { max-width: 75%; } .places-grid { grid-template-columns: repeat(31fr); } } /* Extra Large Desktop (1280px+) */ @media (min-width: 1280px) { .hero p { max-width: 700px; } .places-grid { grid-template-columns: repeat(auto-fillminmax(350px1fr)); } } /* ===== LANDSCAPE ORIENTATION OPTIMIZATIONS ===== */ @media (max-height: 600px) and (orientation: landscape) { .hero { min-height: auto; padding: var(--space-md) var(--space-lg); } .hero h1 { font-size: clamp(1.75rem6vw2.5rem); margin-bottom: var(--space-sm); } .hero p { font-size: clamp(0.9rem3vw1rem); margin-bottom: var(--space-md); } .quick-categories { margin-top: var(--space-md); } .search-container { margin-bottom: var(--space-md); } } /* ===== CROSS-BROWSER COMPATIBILITY FIXES ===== */ /* Safari iOS Specific Fixes */ @supports (-webkit-touch-callout: none) { /* Safe area insets for notch */ .hero { padding-top: max(var(--space-xl)env(safe-area-inset-top)); padding-left: max(var(--space-lg)env(safe-area-inset-left)); padding-right: max(var(--space-lg)env(safe-area-inset-right)); } /* Prevent text size adjustment */ .hero p, .hero h1, .category-pill, .search-input { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } /* Fix input zoom on iOS */ .search-input { font-size: max(16px1rem); } /* Improve scrolling */ .modal-body, .results-section { -webkit-overflow-scrolling: touch; } /* Fix backdrop blur on Safari */ .category-pill, .status-message { -webkit-backdrop-filter: blur(10px); } } /* Firefox Specific Fixes */ @-moz-document url-prefix() { .search-input::-moz-placeholder { opacity: 0.7; } .hero p { line-height: 1.75; } /* Better scrollbar for Firefox */ .modal-body { scrollbar-width: thin; scrollbar-color: var(--card-border) transparent; } } /* Edge/IE Specific Fixes */ @supports (-ms-ime-align: auto) { .hero p { max-width: 700px; margin-left: auto; margin-right: auto; } .search-input { padding: 1rem 1.5rem; } } /* Chrome Android Specific */ @media screen and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm) { .search-input { /* Prevent zoom on focus */ font-size: max(16px1rem); } /* Optimize for high DPI */ @media (-webkit-min-device-pixel-ratio: 2) { .hero h1 { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } } } /* ===== ACCESSIBILITY & INTERACTION IMPROVEMENTS ===== */ /* Touch Target Size Optimization (min 44x44px per Apple/Google guidelines) */ @media (pointer: coarse) { .category-pill { min-height: 44px; min-width: 44px; padding: var(--space-sm) var(--space-md); } .location-btn { min-height: 48px; padding: var(--space-md) var(--space-lg); } .action-btn { min-height: 44px; } .modal-close { min-width: 48px; min-height: 48px; } /* Increase tap areas */ .place-card { margin-bottom: var(--space-md); } /* Better spacing for touch */ .search-buttons { gap: var(--space-md); } } /* Hover-only s (prevents sticky hover on touch) */ @media (hover: hover) and (pointer: fine) { .category-pill:hover { transform: translateY(-2px) scale(1.05); } .place-card:hover { transform: translateY(-4px); } .action-btn:hover { transform: translateY(-2px); } } /* Reduced Motion Support */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .hero-content { animation: none; } .search-container { animation: none; } .quick-categories { animation: none; } } /* High Contrast Mode Support */ @media (prefers-contrast: high) { .hero p { color: var(--text-primary); opacity: 1; } .category-pill { border-width: 2px; } .search-input { border-width: 2px; } } /* Dark Mode Adjustments (already dark by defaultbut optimize) */ @media (prefers-color-scheme: dark) { .hero p { color: #cbd5e1; } .search-input { background: rgba(2552552550.05); } } /* ===== PERFORMANCE OPTIMIZATIONS ===== */ /* GPU Acceleration for Smooth Animations */ .hero-content, .search-container, .category-pill, .place-card, .modal { will-change: transform; transform: translateZ(0); -webkit-transform: translateZ(0); } /* Optimize Repaints */ .place-card:hover, .category-pill:hover, .action-btn:hover { will-change: transformbox-shadow; }

Scopri Cosa C'è
Intorno a Te

Trova i migliori ristorantibarnegozi e luoghi interessanti nella tua zona. Esplora con ricerche personalizzate o usa le categorie rapide.

Raggio di ricerca:
2.0 km
Mostra tutti i tipi di luoghi

0 luoghi trovati