#map-container {position: relative;height: calc(100vh - 110px);height: calc(100dvh - 110px);width: 100%;overflow: hidden;overscroll-behavior: none}
@media (max-width: 768px) {#map-container {height: calc(100vh - 60px - env(safe-area-inset-bottom, 0));height: calc(100dvh - 60px - env(safe-area-inset-bottom, 0))}}
#map-container #map {height: 100%;width: 100%;touch-action: none;overscroll-behavior: none;visibility: hidden}
#map-container #map.map-initialized {visibility: visible}
.home-timeline-link {position: absolute;top: 10px;left: 10px;z-index: var(--z-index-base);display: flex;align-items: center;gap: 6px;padding: 8px 14px;background: #fff;border-radius: 20px;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);text-decoration: none;color: #1c1e21;font-size: 0.8125rem;font-weight: 600;transition: box-shadow 0.2s}
.home-timeline-link:hover {box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18)}
.home-timeline-link svg {color: #1877f2;flex-shrink: 0}
.map-control-buttons {position: absolute;top: 50%;right: 10px;transform: translateY(-50%);display: flex;flex-direction: column;gap: 10px;z-index: var(--z-index-base)}
.map-control-btn {width: 44px;height: 44px;background: #fff;border: none;border-radius: 50%;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);cursor: pointer;display: flex;align-items: center;justify-content: center;color: #666;transition: all 0.2s ease}
@media (hover: hover) {.map-control-btn:hover {background: #f5f5f5;color: #1877f2;transform: scale(1.05)}}
.map-control-btn:active {transform: scale(0.95)}
.map-control-btn:focus:not(:focus-visible) {outline: none}
.map-control-btn:focus-visible {outline: 2px solid #1877f2;outline-offset: 2px}
.map-location-btn.loading {pointer-events: none;color: #1877f2}
.map-location-btn.loading svg {animation: pulse 1s ease-in-out infinite}
@keyframes pulse {0%, 100% { opacity: 1; }
50% { opacity: 0.4; }}
.map-forecast-btn {color: #0ea5e9}
@media (hover: hover) {.map-forecast-btn:hover:not(.disabled) {color: #0284c7;background: #e0f2fe}}
.map-forecast-btn.disabled {color: #9ca3af;background: #f3f4f6;cursor: not-allowed;opacity: 0.7}
@media (hover: hover) {.map-forecast-btn.disabled:hover {transform: none}}
.map-forecast-btn.has-favorites {color: var(--color-warning);cursor: pointer}
@media (hover: hover) {.map-forecast-btn.has-favorites:hover {color: #d97706;background: #fef3c7}}
.favorite-location-popup {position: absolute;right: 54px;top: 50%;transform: translateY(-50%);background: #fff;border-radius: 14px;box-shadow: 0 4px 24px rgba(0, 0, 0, 0.14);width: 240px;z-index: 10;overflow: hidden}
.favorite-location-popup-header {display: flex;align-items: center;justify-content: space-between;padding: 10px 14px 8px;background: linear-gradient(90deg, #eff6ff, #f0f9ff);border-bottom: 1px solid #dbeafe}
.favorite-location-popup-title {font-size: 13px;font-weight: 600;color: #1e40af;display: flex;align-items: center;gap: 5px}
.favorite-location-popup-close {display: flex;align-items: center;justify-content: center;width: 24px;height: 24px;border: none;background: none;color: #93c5fd;cursor: pointer;border-radius: 4px;padding: 0}
@media (hover: hover) {.favorite-location-popup-close:hover {background: rgba(59, 130, 246, 0.1);color: var(--color-primary)}}
.favorite-location-popup-list {padding: 6px;display: flex;flex-direction: column;gap: 4px;max-height: 220px;overflow-y: auto}
.favorite-location-popup-card {display: flex;align-items: center;gap: 10px;width: 100%;padding: 8px 10px;border-radius: 10px;border: none;background: var(--color-bg-muted);text-align: left;cursor: pointer;transition: all 0.15s;font: inherit}
@media (hover: hover) {.favorite-location-popup-card:hover {background: #eff6ff;box-shadow: 0 1px 4px rgba(59, 130, 246, 0.1)}}
.favorite-location-popup-card-icon {width: 32px;height: 32px;border-radius: 8px;background: linear-gradient(135deg, #0ea5e9, #38bdf8);display: flex;align-items: center;justify-content: center;flex-shrink: 0;color: #fff}
.favorite-location-popup-card-name {flex: 1;min-width: 0;font-size: 13px;font-weight: 600;color: var(--color-text-primary);overflow: hidden;text-overflow: ellipsis;white-space: nowrap}
@media (max-width: 768px) {.favorite-location-popup {right: 50px;width: min(240px, calc(100vw - 74px))}}
.map-weekly-btn {color: var(--color-primary)}
.map-weekly-btn:hover {color: var(--color-primary-dark);background: #dbeafe}
.map-chat-btn {position: relative;color: #10b981}
.map-chat-btn:hover {color: #059669;background: #d1fae5}
.map-chat-badge {position: absolute;top: 6px;right: 6px;width: 8px;height: 8px;background: #10b981;border-radius: 50%;border: 2px solid #fff;animation: chat-badge-pulse 2s ease-in-out infinite}
@keyframes chat-badge-pulse {0%, 100% {transform: scale(1);opacity: 1}
50% {transform: scale(1.2);opacity: 0.7}}
.map-ship-btn {color: #1877f2}
.map-ship-btn:hover {color: #1565c0;background: #e3f2fd}
.map-ship-btn.active {color: #fff;background: #1877f2;box-shadow: 0 2px 8px rgba(24, 119, 242, 0.4)}
.map-ship-btn.active:hover {background: #1565c0}
@media (max-width: 768px) {.map-control-buttons {right: 8px;gap: 8px}
.map-control-btn {width: 40px;height: 40px}}
.hidden {display: none}
.modal {position: fixed;z-index: var(--z-index-modal);left: 0;top: 0;width: 100%;height: 100%;overflow: auto;background-color: rgba(0,0,0,0.4);display: flex;align-items: center;justify-content: center}
.modal-content {background-color: #fefefe;margin: auto;padding: 20px;border: 1px solid #888;width: 80%;max-width: 500px;box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19);animation-name: animatetop;animation-duration: 0.4s;border-radius: 8px;text-align: center}
@keyframes animatetop {from {top: -300px; opacity: 0}
to {top: 0; opacity: 1}}
.close-button {color: #aaa;float: right;font-size: 28px;font-weight: bold;cursor: pointer}
.close-button:hover,
.close-button:focus {color: black;text-decoration: none;cursor: pointer}
.modal h2 {color: #333;margin-bottom: 15px}
.modal p {color: #666;line-height: 1.5;margin-bottom: 10px}
.welcome-modal-content {background: #ffffff;border: none;border-top: 4px solid #1877f2;max-height: 80vh;overflow-x: hidden;overflow-y: auto}
.welcome-title {color: #1877f2;font-size: 1.5em;margin-bottom: 10px}
.welcome-description {color: #4a5568;font-size: 0.95em;margin-bottom: 15px}
.welcome-stats {margin: 15px 0;padding: 15px;background-color: #e8f4fd;border-radius: 8px;border: 1px solid #b8daff}
.welcome-stats h3 {color: #1877f2;margin-top: 0;margin-bottom: 10px;font-size: 1em}
.welcome-stats-grid {display: flex;justify-content: space-around;gap: 10px;flex-wrap: wrap}
.welcome-stat-item {flex: 1;min-width: 100px;text-align: center;background-color: #ffffff;padding: 10px;border-radius: 8px;box-shadow: 0 2px 4px rgba(24, 119, 242, 0.1);border: 1px solid #e8f4fd}
.welcome-stat-item i {font-size: 1.5em;color: #1877f2;margin-bottom: 5px;display: block}
.welcome-stat-item p {margin: 0;font-size: 0.85em;color: #4a5568}
.welcome-stat-number {font-size: 1.3em;font-weight: bold;color: #1877f2;margin-top: 5px}
.welcome-latest-catches {margin-top: 20px;padding: 0;background: linear-gradient(135deg, #1877f2 0%, #0d5bbd 100%);border-radius: 12px;overflow: hidden}
.welcome-latest-catches h3 {color: #ffffff;margin: 0;padding: 12px 15px;font-size: 1em;text-align: left;display: flex;align-items: center;gap: 8px}
.welcome-latest-catches h3 i {color: #ff6b35}
.latest-catches-grid {display: grid;grid-template-columns: repeat(3, 1fr);gap: 8px;padding: 0 10px 10px}
.catch-card {position: relative;display: flex;flex-direction: column;border-radius: 10px;text-decoration: none;overflow: hidden;background-color: #ffffff;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);transition: all 0.25s ease}
.catch-card:hover {transform: translateY(-4px) scale(1.02);box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25)}
.catch-card-image {position: relative;width: 100%;height: 90px;overflow: hidden;background-color: #e8f4fd}
.catch-card-image img {width: 100%;height: 100%;object-fit: cover;transition: transform 0.3s ease}
.catch-card:hover .catch-card-image img {transform: scale(1.1)}
.catch-card-badge {position: absolute;bottom: 6px;left: 6px;background: linear-gradient(135deg, #ff6b35 0%, #f7931e 100%);color: #ffffff;padding: 3px 8px;border-radius: 12px;font-size: 0.7em;font-weight: bold;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);max-width: calc(100% - 12px);white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.catch-card-body {padding: 8px;background-color: #ffffff}
.catch-card-user {display: flex;align-items: center;gap: 5px;margin-bottom: 4px}
.catch-card-user i {color: #1877f2;font-size: 0.9em}
.catch-card-user .user-avatar-wrapper,
.catch-card-user .user-avatar {flex-shrink: 0}
.catch-card-user .user-avatar-image {border-radius: 50%;object-fit: cover}
.catch-card-user .user-avatar-default {display: flex;align-items: center;justify-content: center}
.catch-card-user .user-avatar-icon {width: 100%;height: 100%}
.catch-card-user span {color: #1a202c;font-size: 0.8em;font-weight: 600;white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.catch-card-meta {display: flex;align-items: center;gap: 4px}
.catch-card-meta i {color: #718096;font-size: 0.7em}
.catch-card-meta span {color: #718096;font-size: 0.7em}
.welcome-latest-catches .latest-catches-hint {margin: 0;padding: 10px 15px;background-color: rgba(255, 255, 255, 0.1);color: #ffffff !important;font-size: 0.8em;text-align: center;display: flex;align-items: center;justify-content: center;gap: 6px}
.latest-catches-hint i {animation: bounce 1.5s infinite}
@keyframes bounce {0%, 100% { transform: translateY(0); }
50% { transform: translateY(-3px); }}
.welcome-modal-content .close-button {color: #1877f2}
.welcome-modal-content .close-button:hover,
.welcome-modal-content .close-button:focus {color: #0d5bbd}
@media (max-width: 480px) {.welcome-modal-content {padding: 15px;width: 90%;max-height: 85vh}
.welcome-title {font-size: 1.3em}
.welcome-stats-grid {flex-direction: column}
.welcome-stat-item {min-width: auto}
.latest-catches-grid {grid-template-columns: repeat(3, 1fr);gap: 6px;padding: 0 8px 8px}
.catch-card-image {height: 70px}
.catch-card-body {padding: 6px}
.catch-card-user span {font-size: 0.7em}
.catch-card-meta {display: none}
.catch-card-badge {font-size: 0.6em;padding: 2px 6px}
.latest-catches-hint {font-size: 0.75em;padding: 8px 10px}}
.welcome-carousel-wrapper {overflow: hidden;width: 100%;position: relative;background: #ffffff}
.welcome-carousel {display: flex;transition: transform 0.3s ease-out;background: #ffffff}
.welcome-slide {flex: 0 0 100%;min-width: 100%;box-sizing: border-box;background: #ffffff}
.welcome-pagination {display: flex;justify-content: center;gap: 8px;padding: 12px 0 8px}
.welcome-dot {width: 10px;height: 10px;border-radius: 50%;border: none;background-color: #cbd5e1;cursor: pointer;transition: all 0.2s ease;padding: 0}
.welcome-dot:hover {background-color: var(--color-text-light)}
.welcome-dot.active {background-color: #1877f2;transform: scale(1.2)}
.welcome-swipe-hint {display: flex;align-items: center;justify-content: center;gap: 6px;padding: 8px 0;color: var(--color-text-light);font-size: 0.8em;animation: swipeHintPulse 2s ease-in-out infinite}
.welcome-swipe-hint i {animation: swipeHintMove 2s ease-in-out infinite}
@keyframes swipeHintPulse {0%, 100% { opacity: 0.6; }
50% { opacity: 1; }}
@keyframes swipeHintMove {0%, 100% { transform: translateX(0); }
25% { transform: translateX(-5px); }
75% { transform: translateX(5px); }}
.welcome-keyboard-hint {display: none;align-items: center;justify-content: center;gap: 6px;padding: 8px 0;color: var(--color-text-light);font-size: 0.8em}
.keyboard-key {display: inline-flex;align-items: center;justify-content: center;min-width: 24px;height: 24px;padding: 2px 6px;background: var(--color-bg-secondary);border: 1px solid #cbd5e1;border-radius: 4px;font-size: 0.9em;font-weight: 500;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1)}
@media (hover: hover) and (pointer: fine) {.welcome-hint-mobile {display: none}
.welcome-hint-desktop {display: flex}}
.welcome-access-chart {margin: 15px 0;padding: 15px;background-color: var(--color-bg-muted);border-radius: 8px;border: 1px solid var(--color-border)}
.access-chart-container {display: flex;justify-content: space-between;align-items: flex-end;height: 150px;padding: 10px 5px 0;gap: 6px}
.access-bar-container {flex: 1;display: flex;flex-direction: column;align-items: center;height: 100%}
.access-bar {width: 100%;max-width: 40px;background: linear-gradient(180deg, var(--color-primary) 0%, #60a5fa 100%);border-radius: 4px 4px 0 0;min-height: 4px;display: flex;justify-content: center;align-items: flex-start;padding-top: 6px;margin-top: auto;transition: height 0.3s ease}
.access-bar-count {font-size: 0.6em;color: white;font-weight: 600;text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2)}
.access-bar-label {font-size: 0.7em;color: var(--color-text-muted);margin-top: 6px;white-space: nowrap}
.access-chart-legend {display: flex;justify-content: center;margin-top: 10px;padding-top: 10px;border-top: 1px solid var(--color-border)}
.access-chart-legend-item {font-size: 0.75em;color: var(--color-text-muted);display: flex;align-items: center;gap: 4px}
.access-chart-legend-item i {color: var(--color-primary)}
.chart-no-data {text-align: center;color: var(--color-text-light);padding: 40px 0;font-size: 0.9em}
.access-stats-summary {margin-top: 15px}
.access-stats-summary h3 {color: #1877f2}
@media (max-width: 480px) {.access-chart-container {height: 120px}
.access-bar-count {font-size: 0.5em}
.access-bar-label {font-size: 0.6em}
.welcome-pagination {padding: 8px 0 4px}
.welcome-swipe-hint {font-size: 0.7em;padding: 4px 0}}
.feature-tap-hint {font-size: 0.8em;color: var(--color-text-light);margin-bottom: 10px}
.feature-tap-hint i {margin-right: 4px;animation: tapHint 1.5s ease-in-out infinite}
@keyframes tapHint {0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }}
.welcome-features-grid {display: grid;grid-template-columns: repeat(2, 1fr);gap: 12px;margin: 15px 0}
.feature-flip-card {perspective: 1000px;height: 160px;cursor: pointer}
.feature-flip-inner {position: relative;width: 100%;height: 100%;transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);transform-style: preserve-3d;-webkit-transform-style: preserve-3d;-webkit-font-smoothing: antialiased;will-change: transform}
.feature-flip-inner h4,
.feature-flip-inner p,
.feature-flip-inner svg,
.feature-flip-inner .feature-icon-compact,
.feature-flip-inner .feature-back-content {backface-visibility: hidden;-webkit-backface-visibility: hidden;transform: translateZ(0);-webkit-transform: translateZ(0)}
.feature-flip-card.flipped .feature-flip-inner {transform: rotateY(180deg)}
.feature-card-front,
.feature-card-back {position: absolute;top: 0;left: 0;width: 100%;height: 100%;backface-visibility: hidden;-webkit-backface-visibility: hidden;border-radius: 12px;overflow: hidden;box-sizing: border-box;transform: translateZ(0);-webkit-transform: translateZ(0);-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale}
.feature-card-front {display: flex;flex-direction: column;align-items: center;justify-content: center;text-align: center;padding: 14px 8px;background: #ffffff;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08)}
.feature-card-back {transform: rotateY(180deg) translateZ(0);-webkit-transform: rotateY(180deg) translateZ(0);display: flex;align-items: center;justify-content: center;padding: 10px;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08)}
.feature-back-content {text-align: center;color: #fff}
.feature-back-content i {font-size: 1.8em;margin-bottom: 8px;display: block;color: #fff;text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2)}
.feature-back-content p {font-size: 0.72em;line-height: 1.35;margin: 0;color: #fff;text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15)}
.feature-card-back.feature-card-post {background: linear-gradient(135deg, #f97316 0%, #ea580c 100%);color: #fff}
.feature-card-back.feature-card-map {background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);color: #fff}
.feature-card-back.feature-card-ai {background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);color: #fff}
.feature-card-back.feature-card-checkin {background: linear-gradient(135deg, #ec4899 0%, #db2777 100%);color: #fff}
.feature-card-back.feature-card-zukan {background: linear-gradient(135deg, #eab308 0%, #ca8a04 100%);color: #fff}
.feature-card-back.feature-card-browse {background: linear-gradient(135deg, #14b8a6 0%, #0d9488 100%);color: #fff}
.feature-card-compact {position: relative}
.feature-card-front::after {content: '';position: absolute;top: 0;left: 0;right: 0;height: 3px;border-radius: 12px 12px 0 0}
.feature-icon-compact {width: 52px;height: 52px;border-radius: 14px;display: flex;align-items: center;justify-content: center;font-size: 1.4em;color: #ffffff;margin-bottom: 12px;background: var(--color-text-muted);position: relative;z-index: 1}
.feature-icon-compact i,
.feature-icon-compact svg {color: #ffffff;stroke: #ffffff;position: relative;z-index: 2}
.feature-card-compact h4 {margin: 0 0 6px 0;font-size: 1em;font-weight: 700;color: #1a202c}
.feature-card-compact p {margin: 0;font-size: 0.8em;color: var(--color-text-muted);line-height: 1.3}
.feature-card-front.feature-card-post {background: linear-gradient(135deg, #fff7ed 0%, #ffffff 100%)}
.feature-card-front.feature-card-post::after {background: linear-gradient(90deg, #f97316 0%, #ea580c 100%)}
.feature-card-front.feature-card-post .feature-icon-compact {background: linear-gradient(135deg, #f97316 0%, #ea580c 100%);box-shadow: 0 4px 12px rgba(249, 115, 22, 0.35)}
.feature-card-front.feature-card-post .feature-icon-compact i {color: #fff}
.feature-card-front.feature-card-map {background: linear-gradient(135deg, #eff6ff 0%, #ffffff 100%)}
.feature-card-front.feature-card-map::after {background: linear-gradient(90deg, var(--color-primary) 0%, var(--color-primary-dark) 100%)}
.feature-card-front.feature-card-map .feature-icon-compact {background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);box-shadow: 0 4px 12px rgba(59, 130, 246, 0.35)}
.feature-card-front.feature-card-map .feature-icon-compact i {color: #fff}
.feature-card-front.feature-card-checkin {background: linear-gradient(135deg, #fdf2f8 0%, #ffffff 100%)}
.feature-card-front.feature-card-checkin::after {background: linear-gradient(90deg, #ec4899 0%, #db2777 100%)}
.feature-card-front.feature-card-checkin .feature-icon-compact {background: linear-gradient(135deg, #ec4899 0%, #db2777 100%);box-shadow: 0 4px 12px rgba(236, 72, 153, 0.35)}
.feature-card-front.feature-card-checkin .feature-icon-compact i {color: #fff}
.feature-card-front.feature-card-zukan {background: linear-gradient(135deg, #fefce8 0%, #ffffff 100%)}
.feature-card-front.feature-card-zukan::after {background: linear-gradient(90deg, #eab308 0%, #ca8a04 100%)}
.feature-card-front.feature-card-zukan .feature-icon-compact {background: linear-gradient(135deg, #eab308 0%, #ca8a04 100%);box-shadow: 0 4px 12px rgba(234, 179, 8, 0.35)}
.feature-card-front.feature-card-zukan .feature-icon-compact i {color: #fff}
.welcome-cta {margin-top: 20px;padding: 16px;background: linear-gradient(135deg, #1877f2 0%, #0d5bbd 100%);border-radius: 12px;text-align: center;position: relative;overflow: hidden}
.welcome-cta::before {content: '';position: absolute;top: -50%;left: -50%;width: 200%;height: 200%;background: linear-gradient(
45deg,
transparent 30%,
rgba(255, 255, 255, 0.1) 50%,
transparent 70%
);animation: shine 3s infinite}
@keyframes shine {0% {transform: translateX(-100%) rotate(45deg)}
100% {transform: translateX(100%) rotate(45deg)}}
.welcome-slide .welcome-cta .cta-text,
.welcome-slide .welcome-cta .cta-button {margin: 0;color: #fff;font-size: 1em;font-weight: 600;display: flex;align-items: center;justify-content: center;gap: 8px;position: relative;z-index: 1;text-decoration: none}
.cta-text i,
.cta-button i {animation: pointUp 1.5s ease-in-out infinite}
@keyframes pointUp {0%, 100% {transform: translateY(0)}
50% {transform: translateY(-4px)}}
@media (max-width: 480px) {.feature-tap-hint {font-size: 0.75em;margin-bottom: 8px}
.welcome-features-grid {grid-template-columns: repeat(2, 1fr);gap: 10px;margin: 12px 0}
.feature-flip-card {height: 140px}
.feature-card-front {padding: 12px 8px}
.feature-icon-compact {width: 42px;height: 42px;font-size: 1.1em;margin-bottom: 10px}
.feature-card-compact h4 {font-size: 0.9em}
.feature-card-compact p {font-size: 0.7em}
.feature-card-back {padding: 10px}
.feature-back-content svg {width: 24px;height: 24px;margin-bottom: 6px}
.feature-back-content p {font-size: 0.65em;line-height: 1.3}
.welcome-cta {margin-top: 12px;padding: 12px}
.cta-text,
.cta-button {font-size: 0.85em}}
.gm-style-iw-chr {position: absolute !important;top: 8px !important;right: 8px !important;z-index: 10 !important;height: auto !important}
.gm-style-iw-chr button.gm-ui-hover-effect {width: 32px !important;height: 32px !important;background: rgba(255, 255, 255, 0.95) !important;border-radius: 50% !important;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2) !important;opacity: 1 !important;transition: all 0.2s ease !important}
.gm-style-iw-chr button.gm-ui-hover-effect:hover {background: #ffffff !important;transform: scale(1.1) !important;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25) !important}
.gm-style-iw-chr button.gm-ui-hover-effect > span {width: 18px !important;height: 18px !important;margin: 7px !important}
.gm-style .gm-style-iw-c {padding: 0 !important;border-radius: 16px !important;box-shadow: 0 12px 48px rgba(0, 0, 0, 0.35), 0 4px 16px rgba(0, 0, 0, 0.2) !important}
.gm-style .gm-style-iw-d {overflow: visible !important;max-height: none !important}
.gm-style .gm-style-iw-tc::after {background: #ffffff !important}
.marker-info-window {font-family: var(--font-family-base);width: 280px;color: #333;border-radius: 16px;overflow: hidden;background: #ffffff}
.marker-info-image {position: relative;width: 100%;height: 180px;overflow: hidden;background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%)}
.marker-info-image img {width: 100%;height: 100%;object-fit: cover;transition: transform 0.3s ease}
.marker-info-image:hover img {transform: scale(1.05)}
.marker-info-image-placeholder {width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%)}
.marker-info-image-placeholder svg {width: 64px;height: 64px;color: #0ea5e9;opacity: 0.6}
.marker-info-fish-badge {position: absolute;bottom: 12px;left: 12px;right: 12px;display: flex;align-items: center;gap: 8px}
.marker-info-fish-name {background: linear-gradient(135deg, rgba(59, 130, 246, 0.95) 0%, rgba(37, 99, 235, 0.95) 100%);backdrop-filter: blur(8px);color: #fff;padding: 8px 14px;border-radius: 24px;font-size: 1em;font-weight: 700;letter-spacing: 0.5px;box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);max-width: calc(100% - 16px);white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.marker-info-content {padding: 16px}
.marker-info-stats {display: grid;grid-template-columns: 1fr 1fr;gap: 10px;margin-bottom: 14px}
.marker-info-stat {background: linear-gradient(135deg, var(--color-bg-muted) 0%, var(--color-bg-secondary) 100%);border-radius: 12px;padding: 12px;text-align: center;border: 1px solid var(--color-border);transition: all 0.2s ease}
.marker-info-stat:hover {background: linear-gradient(135deg, var(--color-bg-secondary) 0%, var(--color-border) 100%);border-color: #cbd5e1}
.marker-info-stat-icon {display: flex;align-items: center;justify-content: center;margin-bottom: 4px}
.marker-info-stat-icon svg {width: 16px;height: 16px;color: var(--color-text-muted)}
.marker-info-stat-label {font-size: 0.65em;color: var(--color-text-light);text-transform: uppercase;letter-spacing: 0.5px;margin-bottom: 2px}
.marker-info-stat-value {font-size: 1.1em;font-weight: 700;color: var(--color-text-primary)}
.marker-info-stat-value.has-value {color: #0284c7}
.marker-info-comment {background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);border-radius: 12px;padding: 12px;margin-bottom: 14px;border-left: 3px solid var(--color-warning)}
.marker-info-comment-text {margin: 0;font-size: 0.9em;line-height: 1.5;color: #78350f;word-wrap: break-word;overflow-wrap: break-word}
.marker-info-footer {display: flex;justify-content: space-between;align-items: center;padding-top: 12px;border-top: 1px solid var(--color-border-light)}
.marker-info-user {display: flex;align-items: center;gap: 8px;min-width: 0;flex: 1}
.marker-info-user-avatar {width: 28px;height: 28px;border-radius: 50%;background: #ffffff;border: 2px solid var(--color-border);display: flex;align-items: center;justify-content: center;flex-shrink: 0;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);overflow: hidden}
.marker-info-user-avatar svg {width: 18px;height: 18px}
.marker-info-user-avatar-img {width: 100%;height: 100%;object-fit: cover;border-radius: 50%}
.marker-info-user-avatar-fallback {width: 100%;height: 100%;display: flex;align-items: center;justify-content: center}
.marker-info-user-avatar-fallback svg {width: 18px;height: 18px}
.marker-info-user-name {color: var(--color-text-primary);text-decoration: none;font-weight: 600;font-size: 0.85em;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;transition: color 0.2s ease}
.marker-info-user-name:hover {color: var(--color-primary-dark)}
.marker-info-time {display: flex;align-items: center;gap: 4px;color: var(--color-text-light);font-size: 0.75em;flex-shrink: 0}
.marker-info-time svg {width: 12px;height: 12px}
.fishing-ship-info .marker-info-fish-name {background: linear-gradient(135deg, rgba(24, 119, 242, 0.95) 0%, rgba(13, 71, 161, 0.95) 100%);box-shadow: 0 4px 12px rgba(24, 119, 242, 0.3)}
.fishing-ship-placeholder svg {width: 64px;height: 64px;color: #1877f2;opacity: 0.6}
.fishing-ship-actions {margin-top: 14px;padding-top: 12px;border-top: 1px solid var(--color-border-light)}
.fishing-ship-detail-link {display: flex;align-items: center;justify-content: center;gap: 8px;padding: 10px 16px;background: linear-gradient(135deg, #1877f2 0%, #0d47a1 100%);color: #fff;text-decoration: none;border-radius: 10px;font-size: 0.9em;font-weight: 600;transition: all 0.2s ease;box-shadow: 0 2px 8px rgba(24, 119, 242, 0.3)}
.fishing-ship-detail-link:hover {background: linear-gradient(135deg, #1565c0 0%, #0a3068 100%);transform: translateY(-1px);box-shadow: 0 4px 12px rgba(24, 119, 242, 0.4)}
.fishing-ship-detail-link svg {width: 16px;height: 16px}
.fishing-ship-schedule {margin-top: 12px;padding: 12px;background: linear-gradient(135deg, var(--color-bg-muted) 0%, var(--color-bg-secondary) 100%);border-radius: 10px;border: 1px solid var(--color-border)}
.fishing-ship-schedule.no-schedule {background: var(--color-bg-muted)}
.fishing-ship-schedule-header {display: flex;align-items: center;gap: 6px;font-size: 0.8em;font-weight: 600;color: #1877f2;margin-bottom: 8px}
.fishing-ship-schedule-header svg {flex-shrink: 0}
.fishing-ship-schedule-content {display: flex;flex-direction: column;gap: 6px}
.fishing-ship-schedule-date {font-size: 1.05em;font-weight: 700;color: #0f172a}
.fishing-ship-target-fish {display: flex;align-items: center;gap: 4px;font-size: 0.95em;font-weight: 600;color: #334155}
.target-fish-icon {font-size: 1em}
.fishing-ship-schedule-details {display: flex;align-items: center;justify-content: space-between;margin-top: 4px}
.fishing-ship-price {font-size: 1em;font-weight: 700;color: #0f172a}
.fishing-ship-slots {font-size: 0.85em;font-weight: 600;padding: 3px 10px;border-radius: 12px}
.fishing-ship-slots.available {background: #dcfce7;color: #166534}
.fishing-ship-slots.full {background: #fee2e2;color: #991b1b}
.fishing-ship-schedule-message {font-size: 0.9em;color: var(--color-text-muted)}
@media (max-width: 480px) {.marker-info-window {width: 260px;border-radius: 14px}
.marker-info-image {height: 150px}
.marker-info-fish-name {font-size: 0.9em;padding: 6px 12px}
.marker-info-content {padding: 12px}
.marker-info-stats {gap: 8px;margin-bottom: 12px}
.marker-info-stat {padding: 10px 8px;border-radius: 10px}
.marker-info-stat-value {font-size: 1em}
.marker-info-comment {padding: 10px;margin-bottom: 12px}
.marker-info-comment-text {font-size: 0.85em}
.marker-info-footer {padding-top: 10px}
.marker-info-user-avatar {width: 24px;height: 24px}
.marker-info-user-avatar svg,
.marker-info-user-avatar-fallback svg {width: 16px;height: 16px}}
.weekly-fish-modal {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0, 0, 0, 0.5);display: flex;align-items: center;justify-content: center;z-index: var(--z-index-modal, 1000);padding: 20px}
.weekly-fish-modal.hidden {display: none}
.weekly-fish-modal-content {position: relative;background: white;border-radius: 16px;max-width: 400px;width: 100%;max-height: 80vh;overflow: hidden;box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);animation: modalSlideUp 0.3s ease-out}
@keyframes modalSlideUp {from {transform: translateY(20px);opacity: 0}
to {transform: translateY(0);opacity: 1}}
.weekly-fish-modal-body {padding: 20px;max-height: 60vh;overflow-y: auto;overflow-x: hidden}
.weekly-fish-empty {text-align: center;color: #9ca3af;padding: 40px 20px;display: flex;flex-direction: column;align-items: center;gap: 12px}
.weekly-fish-empty-icon {width: 64px;height: 64px;opacity: 0.6}
.weekly-fish-empty p {margin: 0;font-size: 0.95em;color: #6b7280}
@media (max-width: 480px) {.weekly-fish-modal {padding: 10px}
.weekly-fish-modal-content {max-height: 70vh}
.weekly-fish-modal-body {padding: 12px}}
.weekly-fish-info {display: flex;align-items: center;gap: 8px;padding: 10px 12px;background: #fef3c7;border: 1px solid #fcd34d;border-radius: 8px;margin-bottom: 12px;font-size: 0.8em;color: #92400e;animation: infoFadeOut 0.5s ease-out 3s forwards}
.weekly-fish-info i {color: var(--color-warning);flex-shrink: 0}
@keyframes infoFadeOut {0% {opacity: 1;max-height: 50px;padding: 10px 12px;margin-bottom: 12px}
50% {opacity: 0;max-height: 50px;padding: 10px 12px;margin-bottom: 12px}
100% {opacity: 0;max-height: 0;padding: 0 12px;margin-bottom: 0;border-width: 0;overflow: hidden}}
.weekly-fish-summary {display: flex;justify-content: space-around;gap: 8px;padding: 16px;background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);border-radius: 12px;margin-bottom: 12px;border: 1px solid #bae6fd}
.weekly-fish-tabs {display: flex;gap: 4px;margin-bottom: 12px;background: var(--color-bg-secondary);padding: 4px;border-radius: 10px}
.weekly-fish-tab {flex: 1;display: flex;align-items: center;justify-content: center;gap: 6px;padding: 10px 12px;font-size: 0.85em;font-weight: 600;color: var(--color-text-muted);background: transparent;border: none;border-radius: 8px;cursor: pointer;transition: all 0.2s ease}
.weekly-fish-tab:hover {color: #334155;background: rgba(255, 255, 255, 0.5)}
.weekly-fish-tab.active {color: #0284c7;background: white;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1)}
.weekly-fish-tab i {font-size: 0.95em}
.weekly-fish-tab-content {display: none;opacity: 0}
.weekly-fish-tab-content.active {display: block;opacity: 1}
.weekly-fish-compact-name-link {color: var(--color-text-primary);text-decoration: none;transition: color 0.2s}
.weekly-fish-compact-name-link:hover {color: #0284c7;text-decoration: underline}
.weekly-fish-summary-item {display: flex;flex-direction: column;align-items: center;gap: 4px}
.weekly-fish-summary-item i {font-size: 1.2em;color: #0284c7}
.weekly-fish-summary-value {font-size: 1.5em;font-weight: 700;color: #0369a1;line-height: 1}
.weekly-fish-summary-label {font-size: 0.75em;color: var(--color-text-muted);font-weight: 500}
.weekly-fish-sort-header {display: flex;justify-content: space-between;align-items: center;padding: 8px 0;margin-bottom: 12px;border-bottom: 1px solid var(--color-border)}
.weekly-fish-sort-title {font-size: 0.9em;font-weight: 600;color: #334155}
.weekly-fish-sort-buttons {display: flex;gap: 4px}
.weekly-fish-sort-btn {display: flex;align-items: center;gap: 4px;padding: 6px 10px;font-size: 0.75em;font-weight: 500;color: var(--color-text-muted);background: var(--color-bg-secondary);border: 1px solid var(--color-border);border-radius: 6px;cursor: pointer;transition: all 0.2s ease}
.weekly-fish-sort-btn:hover {background: var(--color-border);color: #334155}
.weekly-fish-sort-btn.active {background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);color: white;border-color: transparent}
.weekly-fish-sort-btn i {font-size: 0.9em}
.weekly-fish-compact-list {display: flex;flex-direction: column;gap: 8px}
.weekly-fish-compact-item {display: grid;grid-template-columns: 48px 1fr auto;grid-template-rows: auto auto;gap: 0 12px;padding: 10px 12px;background: var(--color-bg-muted);border-radius: 10px;border: 1px solid var(--color-border);transition: background 0.2s ease, border-color 0.2s ease;align-items: center}
.weekly-fish-compact-item:hover {background: var(--color-bg-secondary);border-color: #cbd5e1}
.weekly-fish-compact-image-link,
.weekly-fish-compact-image-placeholder {grid-row: 1 / 3;width: 48px;height: 48px;border-radius: 8px;overflow: hidden;flex-shrink: 0}
.weekly-fish-compact-image {width: 100%;height: 100%;object-fit: cover;transition: transform 0.2s}
.weekly-fish-compact-image-link:hover .weekly-fish-compact-image {transform: scale(1.1)}
.weekly-fish-compact-image-placeholder {background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%);display: flex;align-items: center;justify-content: center}
.weekly-fish-compact-image-placeholder i {color: #0284c7;font-size: 1.2em}
.weekly-fish-compact-info {display: flex;flex-direction: column;gap: 2px;min-width: 0}
.weekly-fish-compact-name {font-size: 0.95em;font-weight: 600;color: var(--color-text-primary);white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.weekly-fish-compact-details {display: flex;gap: 8px;font-size: 0.75em;color: var(--color-text-muted)}
.weekly-fish-compact-size::before {content: "";display: inline-block;width: 8px;height: 8px;background: #0ea5e9;border-radius: 2px;margin-right: 4px;vertical-align: middle}
.weekly-fish-compact-region::before {content: "";display: inline-block;width: 8px;height: 8px;background: var(--color-warning);border-radius: 50%;margin-right: 4px;vertical-align: middle}
.weekly-fish-compact-count {display: flex;align-items: baseline;gap: 2px;justify-self: end}
.weekly-fish-compact-count-number {font-size: 1.3em;font-weight: 700;color: #0284c7;line-height: 1}
.weekly-fish-compact-count-label {font-size: 0.7em;color: var(--color-text-muted);font-weight: 500}
.weekly-fish-compact-bar-container {grid-column: 2 / 4;height: 4px;background: var(--color-border);border-radius: 2px;overflow: hidden;margin-top: 4px}
.weekly-fish-compact-bar {height: 100%;background: linear-gradient(90deg, #0ea5e9 0%, #0284c7 100%);border-radius: 2px;transition: width 0.3s ease}
@media (max-width: 480px) {.weekly-fish-summary {padding: 12px 8px;gap: 4px}
.weekly-fish-summary-value {font-size: 1.3em}
.weekly-fish-summary-label {font-size: 0.7em}
.weekly-fish-sort-header {padding: 6px 0;margin-bottom: 10px}
.weekly-fish-sort-btn {padding: 5px 8px;font-size: 0.7em}
.weekly-fish-compact-item {grid-template-columns: 40px 1fr auto;gap: 0 10px;padding: 8px 10px}
.weekly-fish-compact-image-link,
.weekly-fish-compact-image-placeholder {width: 40px;height: 40px}
.weekly-fish-compact-name {font-size: 0.9em}
.weekly-fish-compact-details {font-size: 0.7em}
.weekly-fish-compact-count-number {font-size: 1.1em}}
.weekly-modal-slides-wrapper {overflow: hidden;position: relative;width: 100%}
.weekly-modal-slides {display: flex;transition: transform 0.3s ease-out}
.weekly-modal-slide {flex: 0 0 100%;min-width: 100%;overflow: hidden}
.weekly-modal-nav {position: absolute;top: 50%;transform: translateY(-50%);width: 44px;height: 44px;border-radius: 50%;border: none;background: rgba(255, 255, 255, 0.9);box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);cursor: pointer;display: flex;align-items: center;justify-content: center;color: var(--color-text-muted);transition: opacity 0.3s ease, background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;z-index: 10}
.weekly-modal-nav.faded {opacity: 0.2}
.weekly-modal-nav:hover {opacity: 1;background: #ffffff;color: var(--color-primary);box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2)}
.weekly-modal-nav:disabled {opacity: 0.3;cursor: not-allowed}
.weekly-modal-nav:disabled:hover {background: rgba(255, 255, 255, 0.9);color: var(--color-text-muted);box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15)}
.weekly-modal-nav svg {width: 24px;height: 24px}
.weekly-modal-nav-prev {left: 8px}
.weekly-modal-nav-next {right: 8px}
@media (max-width: 480px) {.weekly-modal-nav {width: 40px;height: 40px}
.weekly-modal-nav svg {width: 20px;height: 20px}
.weekly-modal-nav-prev {left: 4px}
.weekly-modal-nav-next {right: 4px}}
.weekly-modal-pagination {display: flex;justify-content: center;gap: 8px;padding: 12px 0 16px;background: white;border-top: 1px solid var(--color-border)}
.weekly-modal-dot {width: 10px;height: 10px;border-radius: 50%;border: none;background-color: #cbd5e1;cursor: pointer;padding: 0;transition: all 0.2s ease}
.weekly-modal-dot:hover {background-color: var(--color-text-light)}
.weekly-modal-dot.active {background-color: var(--color-primary);transform: scale(1.2)}
.supporter-slide-body {max-height: 60vh;overflow-y: auto;overflow-x: hidden;position: relative}
.scroll-indicator {position: sticky;bottom: 0;left: 0;right: 0;display: flex;justify-content: center;padding: 8px 0;background: linear-gradient(to top, rgba(255, 255, 255, 0.95) 0%, rgba(255, 255, 255, 0) 100%);opacity: 0;visibility: hidden;transition: opacity 0.3s ease, visibility 0.3s ease;pointer-events: none}
.scroll-indicator.visible {opacity: 1;visibility: visible}
.scroll-indicator svg {width: 24px;height: 24px;color: #9ca3af;animation: bounceDown 1.5s ease-in-out infinite}
@keyframes bounceDown {0%, 100% { transform: translateY(0); }
50% { transform: translateY(4px); }}
.supporter-slide-content {text-align: center;padding: 10px;width: 100%;max-width: 100%;overflow: hidden;box-sizing: border-box}
.supporter-slide-icon {margin-bottom: 16px}
.supporter-slide-icon i {font-size: 2.5em;color: var(--color-danger);animation: heartbeat 1.5s ease-in-out infinite}
@keyframes heartbeat {0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }}
.supporter-slide-title {color: #f97316;font-size: 1.3em;margin: 0 0 16px 0;font-weight: 600}
.supporter-slide-message {padding: 12px 16px;background: linear-gradient(135deg, #fff7ed 0%, #ffffff 100%);border-radius: 8px;margin-bottom: 16px;border: 1px solid #fed7aa}
.supporter-slide-message p {margin: 0 0 8px 0;color: #4a5568;font-size: 0.9em;line-height: 1.6;text-align: left}
.supporter-slide-message p:last-child {margin-bottom: 0}
.supporter-slide-thanks {font-weight: 600;color: var(--color-text-primary)}
.supporter-slide-feedback {margin-bottom: 12px;padding: 10px 12px;background: #f0f9ff;border-radius: 8px;border: 1px solid #bae6fd}
.supporter-slide-feedback p {margin: 0 0 10px 0;color: #0369a1;font-size: 0.85em;line-height: 1.5}
.supporter-slide-twitter-link {display: inline-flex;align-items: center;gap: 10px;padding: 8px 14px;background: #000000;color: #ffffff;border-radius: 20px;text-decoration: none;transition: all 0.2s ease}
.supporter-slide-twitter-link:hover {background: #333333;transform: translateY(-1px);color: #ffffff}
.supporter-slide-twitter-icon {display: flex;align-items: center;justify-content: center}
.supporter-slide-twitter-info {display: flex;flex-direction: column;line-height: 1.2}
.supporter-slide-twitter-label {font-size: 0.7em;opacity: 0.8}
.supporter-slide-twitter-handle {font-size: 0.85em;font-weight: 600}
.supporter-slide-support-section {margin-bottom: 12px;padding: 10px 12px;background: linear-gradient(135deg, #fff7ed 0%, #ffffff 100%);border-radius: 8px;border: 1px solid #fed7aa}
.supporter-slide-support-section p {margin: 0 0 6px 0;color: #4a5568;font-size: 0.85em;line-height: 1.5;text-align: left}
.supporter-slide-support-section p:last-child {margin-bottom: 0}
.supporter-slide-support-cta {color: #ea580c !important;font-weight: 500}
.supporter-slide-marquee-wrapper {overflow: hidden;position: relative;width: 100%;mask-image: linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);-webkit-mask-image: linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);mask-size: 100% 100%;-webkit-mask-size: 100% 100%;mask-repeat: no-repeat;-webkit-mask-repeat: no-repeat}
.supporter-slide-marquee {display: flex;width: max-content;animation: marquee 20s linear infinite}
.supporter-slide-marquee:hover {animation-play-state: paused}
.supporter-slide-marquee-content {display: flex;gap: 8px;padding-right: 8px}
@keyframes marquee {0% {transform: translateX(0)}
100% {transform: translateX(-50%)}}
.supporter-slide-list {margin-bottom: 16px;padding: 12px;background-color: var(--color-bg-muted);border-radius: 8px;border: 1px solid var(--color-border);overflow: hidden}
.supporter-slide-list h5 {color: #1877f2;margin: 0 0 10px 0;font-size: 0.85em;display: flex;align-items: center;justify-content: center;gap: 6px}
.supporter-slide-name {background: linear-gradient(135deg, #1877f2 0%, #0d5bbd 100%);color: #ffffff;padding: 3px 10px;border-radius: 12px;font-size: 0.8em;font-weight: 500;text-decoration: none;transition: all 0.2s ease}
.supporter-slide-name:hover {background: linear-gradient(135deg, #0d5bbd 0%, #0a4a9e 100%);transform: translateY(-1px);color: #ffffff}
.supporter-slide-cta {margin-top: 16px}
.supporter-slide-button {display: inline-flex;align-items: center;justify-content: center;gap: 8px;background: linear-gradient(135deg, #f97316 0%, #ea580c 100%);color: #ffffff;padding: 12px 24px;border-radius: 8px;font-size: 0.95em;font-weight: 600;text-decoration: none;box-shadow: 0 4px 12px rgba(249, 115, 22, 0.3);transition: all 0.3s ease}
.supporter-slide-button:hover {background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%);transform: translateY(-2px);box-shadow: 0 6px 16px rgba(249, 115, 22, 0.4);color: #ffffff}
@media (max-width: 480px) {.supporter-slide-body {max-height: 55vh}
.supporter-slide-icon i {font-size: 2em}
.supporter-slide-title {font-size: 1.1em}
.supporter-slide-message p {font-size: 0.85em}
.supporter-slide-button {padding: 10px 20px;font-size: 0.9em}}
.nice-ranking-body {padding: 12px}
.nice-ranking-list {display: flex;flex-direction: column;gap: 8px}
.nice-ranking-item {display: flex;align-items: center;gap: 12px;padding: 10px 12px;background: var(--color-bg-muted);border-radius: 10px;text-decoration: none;color: inherit;border: 1px solid var(--color-border);transition: all 0.2s ease}
.nice-ranking-item:hover {background: var(--color-bg-secondary);border-color: #cbd5e1;transform: translateX(4px)}
.nice-ranking-item.rank-1-item {background: linear-gradient(135deg, #fffef5 0%, #fef9e7 100%);border: 1.5px solid #fcd34d;box-shadow: 0 2px 6px rgba(252, 211, 77, 0.15)}
.nice-ranking-item.rank-1-item:hover {background: linear-gradient(135deg, #fef9e7 0%, #fef3c7 100%);border-color: #fbbf24;box-shadow: 0 3px 10px rgba(251, 191, 36, 0.2)}
.nice-ranking-item.rank-2-item {background: linear-gradient(135deg, #fafafa 0%, #f5f5f5 100%);border: 1.5px solid #d1d5db;box-shadow: 0 2px 6px rgba(209, 213, 219, 0.15)}
.nice-ranking-item.rank-2-item:hover {background: linear-gradient(135deg, #f5f5f5 0%, #e5e7eb 100%);border-color: #9ca3af}
.nice-ranking-item.rank-3-item {background: linear-gradient(135deg, #fffcf5 0%, #fef7ed 100%);border: 1.5px solid #fdba74;box-shadow: 0 2px 6px rgba(253, 186, 116, 0.15)}
.nice-ranking-item.rank-3-item:hover {background: linear-gradient(135deg, #fef7ed 0%, #fed7aa 100%);border-color: #fb923c}
.nice-ranking-rank-wrapper {display: flex;flex-direction: column;align-items: center;min-width: 32px}
.nice-ranking-crown {width: 22px;height: 22px;margin-bottom: -4px;filter: drop-shadow(0 1px 2px rgba(251, 191, 36, 0.4))}
.nice-ranking-rank {font-size: 1.2em;font-weight: 700;text-align: center;color: var(--color-text-muted)}
.nice-ranking-rank.rank-1 {font-size: 1.3em;color: #d97706}
.nice-ranking-rank.rank-2 {font-size: 1.2em;color: #6b7280}
.nice-ranking-rank.rank-3 {font-size: 1.2em;color: #b45309}
.nice-ranking-image {width: 48px;height: 48px;border-radius: 8px;overflow: hidden;flex-shrink: 0;background: var(--color-border)}
.nice-ranking-thumb {width: 100%;height: 100%;object-fit: cover}
.nice-ranking-no-image {width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;background: linear-gradient(135deg, #e0f2fe 0%, #bae6fd 100%)}
.nice-ranking-no-image i {color: #0284c7;font-size: 1.2em}
.nice-ranking-info {flex: 1;display: flex;flex-direction: column;gap: 2px;min-width: 0}
.nice-ranking-fish-name {font-weight: 600;color: var(--color-text-primary);font-size: 0.95em;white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.nice-ranking-user {font-size: 0.8em;color: var(--color-text-muted);white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.nice-ranking-count {display: flex;align-items: center;gap: 4px;color: var(--color-primary);font-weight: 600;font-size: 0.95em;flex-shrink: 0}
.nice-ranking-count i {color: var(--color-primary)}
.nice-ranking-empty {text-align: center;color: #9ca3af;padding: 40px 20px;display: flex;flex-direction: column;align-items: center;gap: 12px}
.nice-ranking-empty i {font-size: 2.5em;color: #fbbf24;opacity: 0.6}
.nice-ranking-empty p {margin: 0;font-size: 0.95em;color: #6b7280}
@media (max-width: 480px) {.nice-ranking-body {padding: 10px}
.nice-ranking-item {gap: 10px;padding: 8px 10px}
.nice-ranking-rank {font-size: 1.1em;min-width: 24px}
.nice-ranking-image {width: 40px;height: 40px}
.nice-ranking-fish-name {font-size: 0.9em}
.nice-ranking-user {font-size: 0.75em}
.nice-ranking-count {font-size: 0.85em}}
.map-filter-btn.active {background: #1877f2;color: #fff}
.map-filter-btn.active:hover {background: #166fe5;color: #fff}
.filter-panel {position: absolute;top: 50%;right: 60px;transform: translateY(-50%);width: 230px;background: #fff;border-radius: 12px;box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);z-index: 100;overflow: hidden;animation: filterPanelSlideIn 0.2s ease-out}
@keyframes filterPanelSlideIn {from {opacity: 0;transform: translateY(-50%) translateX(10px)}
to {opacity: 1;transform: translateY(-50%) translateX(0)}}
.filter-panel.hidden {display: none}
.filter-panel-header {display: flex;align-items: center;justify-content: space-between;padding: 12px 16px;background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);color: #fff}
.filter-panel-header h4 {margin: 0;font-size: 0.95em;font-weight: 600}
.filter-panel-close {width: 24px;height: 24px;padding: 0;background: none;border: none;color: #fff;cursor: pointer;display: flex;align-items: center;justify-content: center;border-radius: 4px;transition: background 0.2s}
.filter-panel-close:hover {background: rgba(255, 255, 255, 0.2)}
.filter-panel-close svg {width: 16px;height: 16px}
.filter-panel-body {padding: 12px}
.filter-section {margin-bottom: 12px}
.filter-section:last-child {margin-bottom: 0}
.filter-section-title {font-size: 0.8em;font-weight: 600;color: #666;margin-bottom: 8px;padding-left: 2px}
.filter-category-grid {display: grid;grid-template-columns: repeat(3, 1fr);gap: 6px}
.filter-category-chip {display: flex;flex-direction: column;align-items: center;gap: 4px;padding: 8px 4px;border-radius: 8px;cursor: pointer;transition: all 0.2s;border: 2px solid transparent;background: #f8f8f8}
.filter-category-chip:hover {background: #f0f0f0}
.filter-category-chip:has(input:checked) {background: #eff6ff;border-color: var(--color-primary)}
.filter-category-chip input[type="checkbox"] {position: absolute;opacity: 0;width: 0;height: 0}
.filter-chip-icon {width: 24px;height: 24px;object-fit: contain}
.filter-chip-label {font-size: 0.7em;color: #555;font-weight: 500;text-align: center}
.filter-category-chip:has(input:checked) .filter-chip-label {color: var(--color-primary)}
.filter-chip-row {display: flex;gap: 6px;flex-wrap: wrap}
.filter-detail-chip {display: flex;align-items: center;gap: 4px;padding: 6px 10px;border-radius: 16px;cursor: pointer;transition: all 0.2s;border: 1px solid #ddd;background: #fff;font-size: 0.75em;color: #666}
.filter-detail-chip:hover {border-color: #bbb;background: #f8f8f8}
.filter-detail-chip:has(input:checked) {background: var(--color-primary);border-color: var(--color-primary);color: #fff}
.filter-detail-chip:has(input:checked) svg {stroke: #fff}
.filter-detail-chip input[type="checkbox"] {position: absolute;opacity: 0;width: 0;height: 0}
.filter-detail-chip svg {width: 14px;height: 14px;flex-shrink: 0}
.filter-detail-chip span {white-space: nowrap}
.filter-range-row {display: flex;gap: 6px;margin-bottom: 8px}
.filter-range-compact {flex: 1;min-width: 85px;overflow: visible}
.filter-range-compact-label {display: flex;align-items: center;gap: 4px;font-size: 0.7em;color: #666;margin-bottom: 4px}
.filter-range-compact-label svg {flex-shrink: 0;color: #888}
.filter-range-compact-inputs {display: flex;align-items: center;gap: 2px;flex-wrap: nowrap}
.filter-range-compact-inputs input {width: 32px;min-width: 32px;max-width: 32px;padding: 4px 2px;border: 1px solid #ddd;border-radius: 4px;font-size: 0.75em;background: #fff;text-align: center;flex-shrink: 0}
.filter-range-compact-inputs input:focus {outline: none;border-color: var(--color-primary)}
.filter-range-compact-inputs input::placeholder {color: #bbb;font-size: 0.9em}
.filter-range-compact-inputs span {color: #999;font-size: 0.7em;flex-shrink: 0;white-space: nowrap}
.filter-range-unit {color: #888 !important;font-size: 0.7em !important;margin-left: 1px;white-space: nowrap}
.filter-date-range {margin-top: 4px}
.filter-date-inputs {display: flex;align-items: center;gap: 4px}
.filter-date-inputs input {flex: 1;min-width: 0;padding: 4px 4px;border: 1px solid #ddd;border-radius: 4px;font-size: 0.7em;background: #fff}
.filter-date-inputs input:focus {outline: none;border-color: var(--color-primary)}
.filter-date-inputs span {color: #999;font-size: 0.7em;flex-shrink: 0}
.filter-range-compact-inputs input[type="number"]::-webkit-outer-spin-button,
.filter-range-compact-inputs input[type="number"]::-webkit-inner-spin-button {-webkit-appearance: none;margin: 0}
.filter-range-compact-inputs input[type="number"] {-moz-appearance: textfield}
.filter-fish-name-search {display: flex;align-items: center;gap: 6px;padding: 6px 8px;border: 1px solid #ddd;border-radius: 6px;background: #fff;transition: all 0.2s}
.filter-fish-name-search:focus-within {border-color: var(--color-primary);box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1)}
.filter-fish-name-search svg {flex-shrink: 0;color: #999}
.filter-fish-name-search input {flex: 1;border: none;outline: none;font-size: 0.8em;background: transparent;min-width: 0}
.filter-fish-name-search input::placeholder {color: #bbb}
.filter-prefecture-select {position: relative}
.filter-prefecture-select select {width: 100%;padding: 8px 28px 8px 10px;font-size: 0.85em;border: 1px solid #e0e0e0;border-radius: 6px;background: #fff;color: #333;appearance: none;cursor: pointer;transition: border-color 0.2s}
.filter-prefecture-select select:focus {outline: none;border-color: #1877f2}
.filter-prefecture-select::after {content: '';position: absolute;right: 10px;top: 50%;transform: translateY(-50%);width: 0;height: 0;border-left: 5px solid transparent;border-right: 5px solid transparent;border-top: 5px solid #666;pointer-events: none}
.ship-price-chips {flex-wrap: wrap}
.ship-price-chips .filter-detail-chip {flex: 0 0 auto;white-space: nowrap}
.ship-date-filter__input-wrapper {position: relative;display: flex;align-items: center}
.ship-date-filter__icon {position: absolute;left: 10px;color: #1877f2;pointer-events: none;z-index: 1}
.ship-date-filter input[type="date"] {width: 100%;padding: 10px 10px 10px 34px;border: 1px solid #e0e0e0;border-radius: 8px;font-size: 0.85em;background: var(--color-bg-muted);color: #333;cursor: pointer;transition: all 0.2s}
.ship-date-filter input[type="date"]:hover {background: #fff;border-color: #1877f2}
.ship-date-filter input[type="date"]:focus {outline: none;border-color: #1877f2;background: #fff;box-shadow: 0 0 0 3px rgba(24, 119, 242, 0.1)}
.ship-date-filter input[type="date"]:not(:placeholder-shown),
.ship-date-filter input[type="date"]:valid {background: #fff}
.ship-date-filter input[type="date"]::-webkit-calendar-picker-indicator {cursor: pointer;opacity: 0.6;transition: opacity 0.2s}
.ship-date-filter input[type="date"]::-webkit-calendar-picker-indicator:hover {opacity: 1}
.filter-panel-footer {padding: 8px 12px 12px;border-top: 1px solid #eee}
.filter-clear-btn {width: 100%;padding: 8px 12px;background: #f5f5f5;border: none;border-radius: 6px;color: #666;font-size: 0.85em;font-weight: 500;cursor: pointer;transition: all 0.2s}
.filter-clear-btn:hover {background: #e5e5e5;color: #333}
@media (max-width: 768px) {.filter-panel {right: 54px;width: 220px}
.filter-panel-header {padding: 10px 14px}
.filter-panel-header h4 {font-size: 0.9em}
.filter-panel-body {padding: 10px}
.filter-section-title {font-size: 0.75em;margin-bottom: 6px}
.filter-category-grid {gap: 4px}
.filter-category-chip {padding: 6px 2px}
.filter-chip-icon {width: 20px;height: 20px}
.filter-chip-label {font-size: 0.65em}
.filter-detail-chip {padding: 5px 8px;font-size: 0.7em}
.filter-detail-chip svg {width: 12px;height: 12px}
.filter-range-row {gap: 4px}
.filter-range-compact {min-width: 80px}
.filter-range-compact-label {font-size: 0.65em}
.filter-range-compact-inputs input {width: 28px;min-width: 28px;max-width: 28px;padding: 3px 2px;font-size: 0.7em}
.filter-range-compact-inputs span {font-size: 0.65em}
.filter-range-unit {font-size: 0.65em !important}
.filter-date-inputs input {padding: 3px 2px;font-size: 0.65em}
.filter-date-inputs span {font-size: 0.65em}}
.home-pending-notice {position: absolute;top: 10px;left: 10px;right: 60px;z-index: 100;display: flex;align-items: center;gap: 12px;padding: 12px 16px;background: linear-gradient(135deg, #fef9e7 0%, #fef3c7 100%);border: 1px solid #fcd34d;border-radius: 12px;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);text-decoration: none;color: inherit;transition: all 0.2s ease}
.home-pending-notice:hover {background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);border-color: #fbbf24;box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);transform: translateY(-1px)}
.home-pending-notice > i:first-child {font-size: 1.2em;color: var(--color-warning);flex-shrink: 0}
.home-pending-notice > span {flex: 1;min-width: 0;overflow: hidden}
.home-pending-notice > span strong {display: block;font-size: 0.9em;color: #92400e;margin-bottom: 2px}
.home-pending-notice > span:not(strong) {font-size: 0.8em;color: #a16207;white-space: nowrap;overflow: hidden;text-overflow: ellipsis}
.home-pending-notice > i:last-child {font-size: 0.8em;color: #d97706;flex-shrink: 0}
@media (max-width: 768px) {.home-pending-notice {top: 8px;left: 8px;right: 54px;padding: 10px 12px;gap: 10px;border-radius: 10px}
.home-pending-notice > i:first-child {font-size: 1em}
.home-pending-notice > span strong {font-size: 0.85em}
.home-pending-notice > span:not(strong) {font-size: 0.75em}}