        :root {
            --bg-primary: #020617;
            /* Deepest Indigo/Black */
            --bg-secondary: #0f172a;
            --bg-card: rgba(15, 23, 42, 0.6);
            /* Transparent for glass effect */
            --glass-border: rgba(255, 255, 255, 0.08);
            /* White border with low opacity */
            --glass-highlight: rgba(255, 255, 255, 0.15);
            /* Top highlight */
            --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.36);

            --text-primary: #f8fafc;
            --text-secondary: #94a3b8;
            --text-muted: #64748b;

            --accent-orange: #fb923c;
            --accent-red: #ef4444;
            --accent-blue: #3b82f6;
            --accent-cyan: #06b6d4;
            --accent-green: #22c55e;
            --accent-purple: #8b5cf6;

            --shadow-glow: 0 0 60px rgba(99, 102, 241, 0.2);
            --shadow-card: 0 4px 24px rgba(0, 0, 0, 0.4);

            --temp-hue: 30;
            --frost-intensity: 0;

            /* Spotlight effect variables */
            --spotlight-x: 50%;
            --spotlight-y: 50%;
        }

        /* 初期読み込み時のちらつき防止: 全てのtransitionを無効化 */
        html.no-transition,
        html.no-transition *,
        html.no-transition *::before,
        html.no-transition *::after {
            transition: none !important;
        }

        /* Light Mode - Premium Design with Better Contrast */
        html.light-mode {
            /* Background: slightly gray for better card contrast */
            --bg-primary: #f1f5f9;
            --bg-secondary: #e2e8f0;
            --bg-card: rgba(255, 255, 255, 0.92);

            /* Borders: visible but subtle */
            --glass-border: rgba(100, 116, 139, 0.15);
            --glass-highlight: rgba(255, 255, 255, 0.9);
            --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.08);
            --border-color: rgba(100, 116, 139, 0.18);

            /* Text: high contrast */
            --text-primary: #0f172a;
            --text-secondary: #334155;
            --text-muted: #64748b;

            /* Shadows: subtle but visible */
            --shadow-glow: 0 0 40px rgba(59, 130, 246, 0.12);
            --shadow-card: 0 4px 16px rgba(0, 0, 0, 0.06), 0 1px 4px rgba(0, 0, 0, 0.04);
        }

        html {
            height: 100%;
            /* Noise texture overlay for entire app */
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E");
            background-attachment: fixed;
        }

        body {
            font-family: 'Inter', 'Noto Sans JP', sans-serif;
            background: var(--bg-primary);
            color: var(--text-primary);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
            overflow-x: hidden;
            letter-spacing: -0.015em;
            line-height: 1.5;
            transition: background 1s ease;
        }

        html.light-mode body {
            background: #f1f5f9;
        }

        html.light-mode .bg-orb {
            opacity: 0.4;
        }

        html.light-mode .grid-pattern {
            opacity: 0.02;
        }

        /* Light Mode - Card Visibility Enhancement */
        html.light-mode .stat-card,
        html.light-mode .chart-card {
            background: rgba(255, 255, 255, 0.95);
            border-color: rgba(100, 116, 139, 0.15);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
        }

        html.light-mode .stat-card:hover,
        html.light-mode .chart-card:hover {
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04);
            border-color: rgba(59, 130, 246, 0.25);
        }

        html.light-mode .weather-hero {
            background: rgba(255, 255, 255, 0.95);
            border-color: rgba(100, 116, 139, 0.15);
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
        }

        html.light-mode .comment-card,
        html.light-mode .precipitation-card,
        html.light-mode .ai-advisor-section {
            background: rgba(255, 255, 255, 0.92);
            border-color: rgba(100, 116, 139, 0.12);
        }

        html.light-mode .footer-stats {
            background: rgba(255, 255, 255, 0.95);
            border-color: rgba(100, 116, 139, 0.12);
        }

        /* Footer Notification Button - Subtle Design */
        .footer-notification-area {
            display: flex;
            justify-content: center;
            margin: 16px 0 8px;
        }

        .footer-notification-btn {
            display: flex;
            align-items: center;
            gap: 6px;
            background: transparent;
            border: 1px solid var(--glass-border);
            color: var(--text-muted);
            padding: 8px 16px;
            border-radius: 20px;
            font-size: 0.75rem;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .footer-notification-btn:hover {
            background: var(--bg-card);
            color: var(--text-secondary);
            border-color: var(--accent-cyan);
        }

        .footer-notification-btn.active {
            background: rgba(6, 182, 212, 0.1);
            border-color: var(--accent-cyan);
            color: var(--accent-cyan);
        }

        .footer-notification-btn .icon {
            width: 1rem;
            height: 1rem;
        }

        .footer-notification-text {
            font-size: 0.7rem;
            opacity: 0.8;
        }

        html.light-mode .footer-notification-btn {
            border-color: rgba(100, 116, 139, 0.2);
        }

        html.light-mode .footer-notification-btn:hover {
            background: rgba(255, 255, 255, 0.8);
        }

        /* =====================================================
           DESIGN IMPROVEMENTS - Transitions & Hover Effects
           ===================================================== */

        /* Smooth theme transition for all elements */
        *,
        *::before,
        *::after {
            transition: background-color 0.4s ease, border-color 0.4s ease, box-shadow 0.4s ease;
        }

        /* Prevent pinch-zoom and browser pull-to-refresh on mobile */
        html,
        body {
            touch-action: manipulation;
            -ms-touch-action: manipulation;
            overscroll-behavior-y: contain;
        }

        /* Pull-to-Refresh Indicator - Polished Version */
        .pull-refresh-indicator {
            display: flex;
            align-items: center;
            justify-content: center;
            background: rgba(99, 102, 241, 0.08);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            border: 1px solid rgba(99, 102, 241, 0.15);
            border-radius: 16px;
            margin: 0 0 12px 0;
            max-height: 0;
            padding: 0 16px;
            opacity: 0;
            overflow: hidden;
            transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                padding 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.25s ease,
                background 0.3s ease,
                border-color 0.3s ease;
        }

        .pull-refresh-indicator.visible {
            max-height: 60px;
            padding: 14px 16px;
            opacity: 1;
        }

        .pull-refresh-indicator.ready {
            background: rgba(99, 102, 241, 0.15);
            border-color: rgba(99, 102, 241, 0.4);
        }

        .pull-refresh-indicator.refreshing {
            background: rgba(96, 165, 250, 0.12);
            border-color: rgba(96, 165, 250, 0.3);
        }

        .pull-refresh-content {
            display: flex;
            align-items: center;
            gap: 12px;
            font-size: 0.9em;
            color: var(--text-secondary);
            font-weight: 500;
        }

        .pull-refresh-spinner {
            width: 22px;
            height: 22px;
            border: 2.5px solid rgba(99, 102, 241, 0.25);
            border-top-color: var(--accent-blue);
            border-radius: 50%;
            transition: transform 0.1s ease-out;
        }

        .pull-refresh-indicator.pulling .pull-refresh-spinner {
            animation: none;
        }

        .pull-refresh-indicator.refreshing .pull-refresh-spinner {
            animation: smoothSpin 0.7s linear infinite;
            border-top-color: var(--accent-cyan);
        }

        @keyframes smoothSpin {
            from {
                transform: rotate(0deg);
            }

            to {
                transform: rotate(360deg);
            }
        }

        .pull-refresh-arrow {
            font-size: 1.1em;
            transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
        }

        .pull-refresh-indicator.ready .pull-refresh-arrow {
            transform: rotate(180deg);
        }

        .pull-refresh-text {
            transition: color 0.2s ease, opacity 0.2s ease;
            white-space: nowrap;
        }

        .pull-refresh-indicator.ready .pull-refresh-text {
            color: var(--accent-blue);
        }

        .pull-refresh-indicator.refreshing .pull-refresh-text {
            color: var(--accent-cyan);
        }

        html.light-mode .pull-refresh-indicator {
            background: rgba(59, 130, 246, 0.06);
            border-color: rgba(59, 130, 246, 0.12);
        }

        html.light-mode .pull-refresh-indicator.visible {
            background: rgba(59, 130, 246, 0.08);
        }

        html.light-mode .pull-refresh-indicator.ready {
            background: rgba(59, 130, 246, 0.12);
            border-color: rgba(59, 130, 246, 0.3);
        }

        html.light-mode .pull-refresh-indicator.refreshing {
            background: rgba(37, 99, 235, 0.1);
        }

        /* Card Hover Effects */
        .weather-hero-section,
        .comment-card,
        .precipitation-card,
        .ai-advisor-section,
        .chart-section,
        .mini-stats>div,
        .footer-stat {
            transition: transform 0.3s ease, box-shadow 0.3s ease, background-color 0.4s ease, border-color 0.4s ease;
        }

        .weather-hero-section:hover,
        .comment-card:hover,
        .precipitation-card:hover,
        .ai-advisor-section:hover,
        .chart-section:hover {
            transform: translateY(-2px);
            box-shadow: var(--shadow-card), 0 12px 40px rgba(99, 102, 241, 0.15);
        }

        html.light-mode .weather-hero-section:hover,
        html.light-mode .comment-card:hover,
        html.light-mode .precipitation-card:hover,
        html.light-mode .ai-advisor-section:hover,
        html.light-mode .chart-section:hover {
            box-shadow: 0 12px 40px rgba(59, 130, 246, 0.12), 0 4px 12px rgba(0, 0, 0, 0.06);
        }

        .mini-stats>div:hover,
        .footer-stat:hover {
            transform: translateY(-1px) scale(1.02);
        }

        /* Enhanced Skeleton Loading */
        .skeleton {
            background: linear-gradient(90deg,
                    var(--bg-card) 25%,
                    rgba(99, 102, 241, 0.1) 50%,
                    var(--bg-card) 75%);
            background-size: 200% 100%;
            animation: skeleton-shimmer 1.5s ease-in-out infinite;
            border-radius: 8px;
        }

        @keyframes skeleton-shimmer {
            0% {
                background-position: 200% 0;
            }

            100% {
                background-position: -200% 0;
            }
        }

        html.light-mode .skeleton {
            background: linear-gradient(90deg,
                    rgba(241, 245, 249, 0.8) 25%,
                    rgba(59, 130, 246, 0.08) 50%,
                    rgba(241, 245, 249, 0.8) 75%);
            background-size: 200% 100%;
        }

        /* Chart improvements */
        canvas {
            transition: opacity 0.3s ease;
        }

        /* Button and interactive elements */
        button,
        .clickable,
        [onclick] {
            transition: transform 0.2s ease, opacity 0.2s ease, background-color 0.3s ease;
        }

        button:active,
        .clickable:active {
            transform: scale(0.97);
        }

        /* Focus states for accessibility */
        button:focus-visible,
        a:focus-visible {
            outline: 2px solid var(--accent-blue);
            outline-offset: 2px;
        }

        /* Performance: GPU acceleration for animated elements */
        .bg-orb,
        .effect-rain,
        .effect-snow,
        .weather-hero-section {
            will-change: transform, opacity;
            backface-visibility: hidden;
        }

        /* Theme Toggle Button */
        .theme-toggle {
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            color: var(--text-secondary);
            padding: 6px 12px;
            border-radius: 100px;
            font-size: 0.75rem;
            cursor: pointer;
            transition: all 0.3s ease;
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .theme-toggle:hover {
            border-color: var(--border-glow);
        }

        .notification-toggle {
            padding: 6px 10px;
        }

        .notification-toggle.enabled {
            background: rgba(74, 222, 128, 0.15);
            border-color: rgba(74, 222, 128, 0.4);
        }

        .notification-toggle.denied {
            opacity: 0.5;
            cursor: not-allowed;
        }

        /* =====================================================
           ADVANCED GLASSMORPHISM & VISUAL SYSTEM
           ===================================================== */

        /* Glassmorphism Cards */
        .weather-hero,
        .comment-card,
        .stat-card,
        .chart-card,
        .precipitation-card,
        .ai-advisor-section {
            background: var(--bg-card);
            backdrop-filter: blur(24px) saturate(180%);
            -webkit-backdrop-filter: blur(24px) saturate(180%);
            border: 1px solid var(--glass-border);
            border-top: 1px solid var(--glass-highlight);
            box-shadow: var(--glass-shadow),
                inset 0 0 0 1px rgba(255, 255, 255, 0.05);
            border-radius: 24px;
            position: relative;
            overflow: hidden;
            transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1),
                box-shadow 0.3s ease,
                border-color 0.3s ease;
            box-sizing: border-box;
        }

        /* Intelligent Spotlights */
        .weather-hero::after,
        .comment-card::after,
        .stat-card::after,
        .chart-card::after,
        .precipitation-card::after,
        .ai-advisor-section::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: radial-gradient(800px circle at var(--spotlight-x, 50%) var(--spotlight-y, 50%),
                    rgba(255, 255, 255, 0.06),
                    transparent 40%);
            z-index: 1;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.5s ease;
        }

        .weather-hero:hover::after,
        .comment-card:hover::after,
        .stat-card:hover::after,
        .chart-card:hover::after,
        .precipitation-card:hover::after,
        .ai-advisor-section:hover::after {
            opacity: 1;
        }

        /* Interactive Lift */
        .stat-card:hover,
        .chart-card:hover {
            transform: translateY(-4px);
            box-shadow: 0 12px 40px -10px rgba(0, 0, 0, 0.5);
            border-top-color: rgba(255, 255, 255, 0.4);
        }

        /* Update Flash Animation */
        @keyframes flashUpdate {
            0% {
                box-shadow: 0 0 0 0 hsla(var(--temp-hue), 80%, 60%, 0);
            }

            30% {
                box-shadow: 0 0 0 4px hsla(var(--temp-hue), 80%, 60%, 0.3);
                border-color: hsla(var(--temp-hue), 80%, 60%, 0.8);
            }

            100% {
                box-shadow: 0 0 0 8px hsla(var(--temp-hue), 80%, 60%, 0);
            }
        }

        .flash-active {
            animation: flashUpdate 0.8s cubic-bezier(0.25, 1, 0.5, 1);
        }

        /* Typography Refinement */
        h1,
        h2,
        h3,
        .stat-value,
        .hero-temp-value {
            font-feature-settings: "tnum";
            letter-spacing: -0.03em;
        }

        .stat-value {
            font-size: 2rem;
            font-weight: 600;
            color: var(--text-primary);
            line-height: 1.1;
        }

        .stat-unit {
            font-size: 0.5em;
            font-weight: 500;
            color: var(--text-secondary);
            margin-left: 2px;
            vertical-align: 0.1em;
            opacity: 0.7;
        }

        /* SVG Icon System (Lucide-style) */
        .icon {
            width: 1.25rem;
            height: 1.25rem;
            stroke: currentColor;
            stroke-width: 2;
            stroke-linecap: round;
            stroke-linejoin: round;
            fill: none;
            display: inline-block;
            vertical-align: middle;
            transition: stroke 0.3s ease;
        }

        .icon-sm {
            width: 1rem;
            height: 1rem;
        }

        .icon-md {
            width: 1.5rem;
            height: 1.5rem;
        }

        .icon-lg {
            width: 2rem;
            height: 2rem;
        }

        .icon-xl {
            width: 2.5rem;
            height: 2.5rem;
            stroke-width: 1.5;
            color: hsl(var(--temp-hue), 85%, 60%);
            filter: drop-shadow(0 0 12px hsla(var(--temp-hue), 90%, 60%, 0.5));
            transition: color 2s ease, filter 2s ease;
        }

        /* Logo icon - large with glow effect */
        .logo-icon {
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .logo-icon .icon {
            width: 2.5rem;
            height: 2.5rem;
            stroke-width: 1.5;
            color: hsl(var(--temp-hue), 85%, 60%);
            filter: drop-shadow(0 0 12px hsla(var(--temp-hue), 90%, 60%, 0.5));
            transition: color 2s ease, filter 2s ease;
        }

        /* Logo container - tighter spacing */
        .logo {
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .logo h1 {
            font-size: 1.5rem;
            font-weight: 700;
            background: linear-gradient(135deg, hsl(var(--temp-hue), 90%, 65%) 0%, hsl(calc(var(--temp-hue) + 30), 80%, 60%) 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            transition: background 2s ease;
            margin: 0;
        }

        /* Stat card icons */
        .stat-icon {
            display: flex;
            align-items: center;
        }

        .stat-icon .icon {
            width: 1.5rem;
            height: 1.5rem;
            stroke-width: 1.75;
        }

        /* Chart card styling */
        .chart-card {
            min-height: 380px;
            display: flex;
            flex-direction: column;
        }

        .chart-header {
            display: grid;
            grid-template-columns: 1fr auto 1fr;
            align-items: center;
            gap: 12px;
            margin-bottom: 20px;
            padding-bottom: 12px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.05);
        }

        .chart-header .drag-handle {
            grid-column: 1;
            justify-self: start;
        }

        .chart-header .chart-title {
            grid-column: 2;
            justify-self: center;
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 1rem;
            font-weight: 600;
            color: var(--text-secondary);
        }

        .chart-header .chart-badge {
            grid-column: 3;
            justify-self: end;
        }

        .chart-title {
            display: flex;
            font-size: 1rem;
            font-weight: 600;
            color: var(--text-secondary);
            align-items: center;
            gap: 8px;
        }

        .chart-title .icon {
            color: var(--text-muted);
            width: 1.125em;
            height: 1.125em;
        }

        .chart-container {
            flex-grow: 1;
            position: relative;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }

        /* Section label icons */
        .comment-label .icon,
        .precipitation-title .icon,
        .ai-advisor-icon .icon {
            width: 1.1em;
            height: 1.1em;
            vertical-align: -0.15em;
        }

        /* Alert icon */
        .alert-icon .icon {
            width: 1.3rem;
            height: 1.3rem;
            stroke-width: 2.25;
        }

        /* Status bar icons */
        .status-item .icon {
            width: 1em;
            height: 1em;
            opacity: 0.9;
        }

        /* Drag handle */
        .drag-handle {
            cursor: grab;
            display: flex;
            padding: 4px;
            margin-right: 8px;
            align-items: center;
            justify-content: center;
            transition: opacity 0.2s, background 0.2s;
            border-radius: 4px;
            opacity: 0.4;
        }

        .drag-handle:hover {
            opacity: 1;
            background: rgba(255, 255, 255, 0.1);
        }

        .drag-handle .icon {
            width: 1.1em;
            height: 1.1em;
        }

        /* Theme toggle button icon */
        .theme-toggle .icon,
        .notification-toggle .icon {
            width: 1rem;
            height: 1rem;
        }

        .stat-card.high .stat-icon .icon {
            color: #f87171;
        }

        .stat-card.low .stat-icon .icon {
            color: #60a5fa;
        }

        /* AI Advisor sparkle effect */
        .ai-advisor-icon .icon {
            background: linear-gradient(135deg, #6366f1, #8b5cf6);
            -webkit-background-clip: text;
            color: #8b5cf6;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        /* Dynamic Temperature Background */
        .background-effects {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: -1;
            overflow: hidden;
            transition: all 2s ease;
        }

        .bg-orb {
            position: absolute;
            border-radius: 50%;
            filter: blur(120px);
            animation: float 20s ease-in-out infinite;
            transition: background 2s ease, opacity 2s ease;
        }

        .bg-orb-1 {
            width: 800px;
            height: 800px;
            background: radial-gradient(circle, hsla(var(--temp-hue), 90%, 60%, 0.2) 0%, transparent 70%);
            top: -300px;
            right: -200px;
        }

        .bg-orb-2 {
            width: 600px;
            height: 600px;
            background: radial-gradient(circle, hsla(calc(var(--temp-hue) + 180), 70%, 50%, 0.15) 0%, transparent 70%);
            bottom: -200px;
            left: -100px;
            animation-delay: -10s;
        }

        @keyframes float {

            0%,
            100% {
                transform: translate(0, 0) scale(1);
            }

            33% {
                transform: translate(30px, -30px) scale(1.05);
            }

            66% {
                transform: translate(-20px, 20px) scale(0.95);
            }
        }

        /* Grid Pattern */
        .grid-pattern {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-image:
                linear-gradient(rgba(99, 102, 241, 0.03) 1px, transparent 1px),
                linear-gradient(90deg, rgba(99, 102, 241, 0.03) 1px, transparent 1px);
            background-size: 60px 60px;
            pointer-events: none;
            z-index: -2;
        }

        /* Weather Effects Container */
        .weather-effects {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: -1;
            overflow: hidden;
        }

        /* --- Starry Night Effect --- */
        .effect-stars {
            background-image:
                radial-gradient(1px 1px at 10% 10%, #fff, transparent),
                radial-gradient(1px 1px at 20% 40%, #fff, transparent),
                radial-gradient(1px 1px at 30% 70%, #fff, transparent),
                radial-gradient(2px 2px at 40% 20%, #fff, transparent),
                radial-gradient(1px 1px at 50% 50%, #fff, transparent),
                radial-gradient(2px 2px at 60% 80%, #fff, transparent),
                radial-gradient(1px 1px at 70% 30%, #fff, transparent),
                radial-gradient(1px 1px at 80% 60%, #fff, transparent),
                radial-gradient(2px 2px at 90% 10%, #fff, transparent),
                radial-gradient(1px 1px at 5% 90%, #fff, transparent);
            background-size: 500px 500px;
            opacity: 0;
            transition: opacity 2s ease;
            animation: twinkle 4s infinite alternate;
        }

        .effect-stars::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-image:
                radial-gradient(1px 1px at 15% 15%, #fff, transparent),
                radial-gradient(2px 2px at 25% 45%, #fff, transparent),
                radial-gradient(1px 1px at 35% 75%, #fff, transparent),
                radial-gradient(1px 1px at 45% 25%, #fff, transparent),
                radial-gradient(2px 2px at 55% 55%, #fff, transparent),
                radial-gradient(1px 1px at 65% 85%, #fff, transparent),
                radial-gradient(2px 2px at 75% 35%, #fff, transparent),
                radial-gradient(1px 1px at 85% 65%, #fff, transparent);
            background-size: 400px 400px;
            animation: twinkle 6s infinite alternate-reverse;
        }

        @keyframes twinkle {
            0% {
                opacity: 0.3;
                transform: translateY(0);
            }

            100% {
                opacity: 0.8;
                transform: translateY(-2px);
            }
        }

        /* --- Rain Effect (Enhanced Multi-Layer Parallax) --- */
        .effect-rain {
            opacity: 0;
            transition: opacity 1s ease;
        }

        /* Base layer (middle distance) */
        .effect-rain::before {
            content: '';
            position: absolute;
            top: -100%;
            left: 0;
            width: 100%;
            height: 200%;
            background-image:
                repeating-linear-gradient(100deg,
                    transparent,
                    transparent 5px,
                    rgba(174, 194, 224, 0.15) 5px,
                    rgba(174, 194, 224, 0.15) 6px);
            background-size: 100% 100%;
            transform: skewX(-10deg);
            animation: rain-fall-mid 0.7s linear infinite;
            pointer-events: none;
        }

        /* Front layer (closest, fastest, thicker) */
        .effect-rain::after {
            content: '';
            position: absolute;
            top: -100%;
            left: 0;
            width: 100%;
            height: 200%;
            background-image:
                repeating-linear-gradient(100deg,
                    transparent,
                    transparent 8px,
                    rgba(174, 194, 224, 0.25) 8px,
                    rgba(174, 194, 224, 0.25) 10px);
            background-size: 100% 100%;
            transform: skewX(-12deg);
            animation: rain-fall-front 0.5s linear infinite;
            pointer-events: none;
        }

        /* Back layer (farthest, slowest, thinner, blurred) via extra element */
        .effect-rain-back {
            position: absolute;
            top: -100%;
            left: 0;
            width: 100%;
            height: 200%;
            background-image:
                repeating-linear-gradient(100deg,
                    transparent,
                    transparent 3px,
                    rgba(174, 194, 224, 0.08) 3px,
                    rgba(174, 194, 224, 0.08) 4px);
            background-size: 100% 100%;
            transform: skewX(-8deg);
            filter: blur(1px);
            animation: rain-fall-back 1.2s linear infinite;
            pointer-events: none;
            opacity: 0;
            transition: opacity 1s ease;
        }

        .effect-rain.active,
        .effect-rain.active::before,
        .effect-rain.active::after {
            opacity: 1;
        }

        .effect-rain-back.active {
            opacity: 0.7;
        }

        @keyframes rain-fall-front {
            0% {
                transform: skewX(-12deg) translateY(-50%);
            }

            100% {
                transform: skewX(-12deg) translateY(0%);
            }
        }

        @keyframes rain-fall-mid {
            0% {
                transform: skewX(-10deg) translateY(-50%);
            }

            100% {
                transform: skewX(-10deg) translateY(0%);
            }
        }

        @keyframes rain-fall-back {
            0% {
                transform: skewX(-8deg) translateY(-50%);
            }

            100% {
                transform: skewX(-8deg) translateY(0%);
            }
        }

        /* --- Heavy Rain (more intense) --- */
        .effect-rain.heavy::before {
            animation-duration: 0.5s;
        }

        .effect-rain.heavy::after {
            animation-duration: 0.35s;
            background-image:
                repeating-linear-gradient(100deg,
                    transparent,
                    transparent 6px,
                    rgba(174, 194, 224, 0.35) 6px,
                    rgba(174, 194, 224, 0.35) 9px);
        }

        /* --- Lightning Flash Effect --- */
        .lightning-flash {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(255, 255, 255, 0);
            pointer-events: none;
            z-index: 1000;
            transition: background 0.1s ease;
        }

        .lightning-flash.active {
            animation: lightning 0.3s ease-out;
        }

        @keyframes lightning {
            0% {
                background: rgba(200, 220, 255, 0);
            }

            10% {
                background: rgba(200, 220, 255, 0.9);
            }

            20% {
                background: rgba(200, 220, 255, 0.2);
            }

            30% {
                background: rgba(200, 220, 255, 0.8);
            }

            50% {
                background: rgba(200, 220, 255, 0.1);
            }

            100% {
                background: rgba(200, 220, 255, 0);
            }
        }

        /* --- Wet Window Blur Effect (during rain) --- */
        .weather-effects.rainy .bg-orb {
            filter: blur(150px);
            transition: filter 2s ease;
        }

        .weather-effects.rainy~.grid-pattern {
            opacity: 0.02;
            filter: blur(1px);
        }

        /* --- Snow Effect --- */
        .effect-snow {
            background-image:
                radial-gradient(3px 3px at 20% 30%, rgba(255, 255, 255, 0.8), transparent),
                radial-gradient(2px 2px at 40% 70%, rgba(255, 255, 255, 0.8), transparent),
                radial-gradient(4px 4px at 60% 20%, rgba(255, 255, 255, 0.8), transparent),
                radial-gradient(3px 3px at 80% 60%, rgba(255, 255, 255, 0.8), transparent);
            background-size: 200px 200px;
            opacity: 0;
            transition: opacity 2s ease;
        }

        .effect-snow.active {
            animation: snow-fall 8s linear infinite;
        }

        @keyframes snow-fall {
            0% {
                transform: translateY(-200px);
            }

            100% {
                transform: translateY(200px);
            }
        }

        /* --- Clouds/Fog Effect --- */
        .effect-clouds {
            background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 60%);
            background-size: 200% 100%;
            filter: blur(40px);
            opacity: 0;
            transition: opacity 2s ease;
            transform-origin: center;
        }

        .effect-clouds.active {
            animation: cloud-drift 30s linear infinite alternate;
        }

        @keyframes cloud-drift {
            0% {
                transform: translateX(-10%);
            }

            100% {
                transform: translateX(10%);
            }
        }

        /* --- Sun Glow/Flare Effect --- */
        .effect-sun {
            background: radial-gradient(circle at 80% 10%, rgba(255, 200, 0, 0.15) 0%, rgba(255, 200, 0, 0.05) 30%, transparent 70%);
            mix-blend-mode: screen;
            opacity: 0;
            transition: opacity 2s ease;
        }

        .effect-sun.active {
            animation: sun-pulse 10s ease-in-out infinite alternate;
        }

        @keyframes sun-pulse {
            0% {
                transform: scale(1);
                opacity: 0.6;
            }

            100% {
                transform: scale(1.1);
                opacity: 0.8;
            }
        }

        /* Dark/Light Mode Adaptations */
        html.light-mode .effect-stars {
            display: none;
        }

        /* No stars in day */
        html.light-mode .effect-rain {
            background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(51, 65, 85, 0.15) 50%, rgba(0, 0, 0, 0) 100%);
        }

        html.light-mode .effect-snow {
            background-image:
                radial-gradient(3px 3px at 20% 30%, rgba(203, 213, 225, 0.6), transparent),
                radial-gradient(2px 2px at 40% 70%, rgba(203, 213, 225, 0.6), transparent),
                radial-gradient(4px 4px at 60% 20%, rgba(203, 213, 225, 0.6), transparent),
                radial-gradient(3px 3px at 80% 60%, rgba(203, 213, 225, 0.6), transparent);
        }

        /* Glassmorphism Refinement */
        .stat-card,
        .chart-card,
        .footer-stats {
            background: var(--bg-card);
            border: 1px solid rgba(255, 255, 255, 0.08);
            /* Softer border */
            box-shadow:
                0 4px 6px -1px rgba(0, 0, 0, 0.1),
                0 2px 4px -1px rgba(0, 0, 0, 0.06),
                inset 0 1px 0 rgba(255, 255, 255, 0.05);
            /* Inner highlight */
        }

        html.light-mode .stat-card,
        html.light-mode .chart-card,
        html.light-mode .footer-stats {
            border-color: rgba(99, 102, 241, 0.1);
            box-shadow:
                0 4px 20px rgba(0, 0, 0, 0.03),
                0 1px 3px rgba(0, 0, 0, 0.05);
        }

        .container {
            max-width: 1440px;
            margin: 0 auto;
            padding: 32px;
        }

        /* Header */
        header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 8px;
            flex-wrap: nowrap;
            gap: 8px;
        }

        .status-info {
            display: flex;
            align-items: center;
            gap: 6px;
            flex-wrap: nowrap;
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
        }

        .status-info::-webkit-scrollbar {
            display: none;
        }

        .status-item {
            display: flex;
            align-items: center;
            gap: 4px;
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            padding: 6px 10px;
            border-radius: 20px;
            font-size: 0.75rem;
            color: var(--text-secondary);
            white-space: nowrap;
            flex-shrink: 0;
        }

        .status-item strong {
            color: var(--text-primary);
        }

        .status-dot {
            width: 6px;
            height: 6px;
            background: #22c55e;
            border-radius: 50%;
            animation: pulse-dot 2s infinite;
        }

        @keyframes pulse-dot {

            0%,
            100% {
                opacity: 1;
            }

            50% {
                opacity: 0.5;
            }
        }

        html.light-mode .status-item {
            background: rgba(241, 245, 249, 0.9);
            border-color: rgba(203, 213, 225, 0.5);
        }

        /* Weather Hero Section (Redesigned) */
        .weather-hero {
            text-align: center;
            margin-top: 12px;
            margin-bottom: 20px;
            padding: 24px 16px;
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            border-radius: 24px;
            backdrop-filter: blur(12px);
        }

        html.light-mode .weather-hero {
            /* Base background with frost-based gray tint overlay */
            background: linear-gradient(rgba(180, 190, 200, calc(0.15 * var(--frost-intensity, 0))),
                    rgba(180, 190, 200, calc(0.15 * var(--frost-intensity, 0)))), rgba(241, 245, 249, 0.85);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
            border-color: rgba(203, 213, 225, calc(0.5 + 0.3 * var(--frost-intensity, 0)));
            backdrop-filter: blur(8px);
        }

        html.light-mode .weather-hero-info {
            /* Add slight gray overlay based on frost */
            background: linear-gradient(rgba(160, 180, 200, calc(0.1 * var(--frost-intensity, 0))),
                    rgba(160, 180, 200, calc(0.1 * var(--frost-intensity, 0)))), linear-gradient(135deg, rgba(59, 130, 246, 0.08) 0%, rgba(147, 197, 253, 0.12) 100%);
            border: 1px solid rgba(59, 130, 246, 0.1);
        }

        html.light-mode .weather-hero-icon {
            filter: drop-shadow(0 4px 12px rgba(251, 191, 36, 0.4));
        }

        html.light-mode .hero-temp-value {
            text-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
        }

        /* Sunrise/Sunset display */
        .sun-times {
            position: absolute;
            top: 16px;
            right: 16px;
            display: flex;
            flex-direction: column;
            gap: 8px;
            text-align: right;
        }

        .sun-time-item {
            display: flex;
            align-items: center;
            gap: 6px;
            font-size: 0.8rem;
            color: var(--text-secondary);
        }

        .sun-icon {
            font-size: 1rem;
        }

        .sun-label {
            font-size: 0.7rem;
            opacity: 0.7;
        }

        .sun-value {
            font-weight: 500;
            color: var(--text-primary);
        }

        .weather-hero-center {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
            margin-bottom: 16px;
        }

        .weather-hero-icon {
            font-size: 4rem;
            line-height: 1;
            filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));
        }

        .weather-hero-temp {
            display: flex;
            align-items: flex-start;
            justify-content: center;
        }

        .hero-temp-value {
            font-size: 5rem;
            font-weight: 500;
            line-height: 1;
            /* Default color, will be overridden by JS for gradient effect */
            color: var(--text-primary);
            transition: color 0.5s ease, transform 0.3s ease, filter 0.3s ease;
        }

        /* Temperature update animation */
        .hero-temp-value.temp-updated {
            animation: tempPulse 1s ease-out;
        }

        @keyframes tempPulse {
            0% {
                transform: scale(1);
                filter: brightness(1) drop-shadow(0 0 0 transparent);
            }

            20% {
                transform: scale(1.15);
                filter: brightness(1.4) drop-shadow(0 0 30px rgba(255, 200, 100, 0.8));
            }

            50% {
                transform: scale(1.08);
                filter: brightness(1.2) drop-shadow(0 0 20px rgba(255, 200, 100, 0.5));
            }

            100% {
                transform: scale(1);
                filter: brightness(1) drop-shadow(0 0 0 transparent);
            }
        }

        /* Temperature color classes - gradient based on --temp-hue */
        .hero-temp-value.temp-freezing,
        .hero-temp-value.temp-cold,
        .hero-temp-value.temp-cool,
        .hero-temp-value.temp-mild,
        .hero-temp-value.temp-warm,
        .hero-temp-value.temp-hot,
        .hero-temp-value.temp-extreme {
            background: linear-gradient(135deg,
                    hsl(var(--temp-hue), 85%, 60%) 0%,
                    hsl(calc(var(--temp-hue) + 25), 80%, 55%) 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            text-shadow: none;
            transition: background 2s ease;
        }

        /* Gradual frost effect using --frost-intensity (0 to 1) */
        /* Starts subtle at 5°C, becomes fully white/frosty at -10°C */
        .hero-temp-value.temp-cold,
        .hero-temp-value.temp-freezing {
            /* Dynamic white glow based on frost intensity */
            filter: drop-shadow(0 0 calc(15px * var(--frost-intensity, 0)) rgba(255, 255, 255, calc(0.8 * var(--frost-intensity, 0)))) drop-shadow(0 0 calc(30px * var(--frost-intensity, 0)) rgba(200, 230, 255, calc(0.6 * var(--frost-intensity, 0)))) drop-shadow(0 0 calc(50px * var(--frost-intensity, 0)) rgba(180, 220, 255, calc(0.4 * var(--frost-intensity, 0))));
        }

        /* < 0℃ - add extra frosty white tint to gradient */
        .hero-temp-value.temp-freezing {
            /* Whiter gradient for freezing temperatures */
            background: linear-gradient(135deg,
                    hsl(200, calc(70% - 30% * var(--frost-intensity, 0)), calc(60% + 20% * var(--frost-intensity, 0))) 0%,
                    hsl(210, calc(60% - 25% * var(--frost-intensity, 0)), calc(55% + 25% * var(--frost-intensity, 0))) 50%,
                    hsl(220, calc(50% - 20% * var(--frost-intensity, 0)), calc(65% + 20% * var(--frost-intensity, 0))) 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }

        /* > 30℃ - extra glow for extreme heat */
        .hero-temp-value.temp-extreme {
            filter: drop-shadow(0 0 20px hsla(var(--temp-hue), 80%, 60%, 0.6));
        }

        .hero-temp-unit {
            font-size: 1.5rem;
            font-weight: 500;
            color: var(--text-secondary);
            margin-top: 12px;
            margin-left: 2px;
        }

        /* Decimal part styling - same size as integer */
        .temp-decimal {
            /* Same font-size as parent, no special styling */
        }

        /* Weather icon (no animation) */
        .weather-hero-icon {
            font-size: 4rem;
            line-height: 1;
            filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));
        }

        .weather-hero-condition {
            font-size: 1.2rem;
            font-weight: 500;
            color: var(--text-secondary);
            margin-top: 4px;
        }

        .weather-hero-info {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 0;
            padding: 12px 16px;
            background: rgba(0, 0, 0, 0.2);
            border-radius: 16px;
            margin-top: 8px;
        }

        .weather-hero-info-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: 0 16px;
            min-width: 60px;
        }

        .weather-hero-info-item .info-label {
            font-size: 0.75rem;
            color: var(--text-muted);
            margin-bottom: 2px;
        }

        .weather-hero-info-item .info-value {
            font-size: 1.3rem;
            font-weight: 600;
            color: var(--text-primary);
        }

        .weather-hero-info-item .info-unit {
            font-size: 0.8rem;
            color: var(--text-secondary);
        }

        .weather-hero-info-divider {
            width: 1px;
            height: 32px;
            background: rgba(148, 163, 184, 0.2);
        }

        /* Comment Card Section */
        .comment-card {
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            border-radius: 16px;
            padding: 16px 20px;
            margin-bottom: 24px;
            opacity: 0;
            transform: translateY(-10px);
            transition: all 0.5s ease;
        }

        .comment-card.show {
            opacity: 1;
            transform: translateY(0);
        }

        .comment-label {
            font-size: 0.9rem;
            font-weight: 700;
            color: var(--text-secondary);
            margin-bottom: 10px;
        }

        .comment-content {
            font-size: 0.95rem;
            color: var(--text-primary);
            line-height: 1.6;
            white-space: normal;
            word-wrap: break-word;
            overflow-wrap: break-word;
        }

        html.light-mode .comment-card {
            background: rgba(241, 245, 249, 0.85);
            border-color: rgba(203, 213, 225, 0.5);
        }

        /* Precipitation Chart Card */
        .precipitation-card {
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            border-radius: 16px;
            padding: 16px;
            margin-bottom: 20px;
        }

        .precipitation-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 12px;
        }

        .precipitation-title {
            font-size: 0.95rem;
            font-weight: 700;
            color: var(--text-primary);
        }

        .precipitation-time {
            font-size: 0.75rem;
            color: var(--text-muted);
        }

        .precipitation-chart-container {
            height: 120px;
            position: relative;
        }

        .precipitation-legend {
            display: flex;
            justify-content: center;
            gap: 16px;
            margin-top: 8px;
            font-size: 0.75rem;
            color: var(--text-muted);
        }

        .legend-item {
            display: flex;
            align-items: center;
            gap: 4px;
        }

        .legend-obs {
            color: #60a5fa;
        }

        .legend-forecast {
            color: #93c5fd;
        }

        html.light-mode .precipitation-card {
            background: rgba(241, 245, 249, 0.85);
            border-color: rgba(203, 213, 225, 0.5);
        }

        .rain-alert {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-top: 12px;
            padding: 10px 14px;
            background: linear-gradient(135deg, rgba(59, 130, 246, 0.15), rgba(99, 102, 241, 0.15));
            border: 1px solid rgba(59, 130, 246, 0.3);
            border-radius: 10px;
            font-size: 0.85rem;
            color: var(--text-primary);
            animation: rain-pulse 2s ease-in-out infinite;
        }

        @keyframes rain-pulse {

            0%,
            100% {
                opacity: 1;
            }

            50% {
                opacity: 0.7;
            }
        }

        .rain-alert-icon {
            font-size: 1.1rem;
        }

        .rain-alert.raining {
            background: linear-gradient(135deg, rgba(34, 197, 94, 0.15), rgba(22, 163, 74, 0.15));
            border-color: rgba(34, 197, 94, 0.3);
        }

        html.light-mode .rain-alert {
            background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(99, 102, 241, 0.1));
        }

        /* Moon Card Styles */
        .moon-card {
            background: linear-gradient(180deg, rgba(15, 23, 42, 0.98), rgba(10, 14, 26, 0.99));
            border-color: rgba(251, 191, 36, 0.2);
        }

        html.light-mode .moon-card {
            background: linear-gradient(180deg, rgba(255, 251, 235, 0.98), rgba(254, 249, 231, 0.99));
            border-color: rgba(251, 191, 36, 0.3);
        }

        /* Light mode: lighter SVG strokes for moon markers */
        html.light-mode .moon-card circle[stroke="#0f172a"] {
            stroke: rgba(100, 116, 139, 0.4);
            stroke-width: 1;
        }

        html.light-mode .moon-card #moonPosition {
            stroke: rgba(100, 116, 139, 0.3);
            stroke-width: 1;
        }

        /* Light mode: softer text shadow */
        html.light-mode .moon-card text[filter="url(#textShadow)"] {
            filter: none;
        }

        .moon-badge {
            background: linear-gradient(135deg, #fbbf24, #f59e0b) !important;
            color: #1e293b !important;
            font-weight: 600;
        }

        /* Info Bar */
        .moon-info-bar {
            display: flex;
            align-items: center;
            gap: 20px;
            margin-bottom: 12px;
            padding: 8px 0;
            flex-wrap: wrap;
        }

        .moon-info-group {
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .moon-icon {
            font-size: 2rem;
            filter: drop-shadow(0 0 10px rgba(251, 191, 36, 0.4));
        }

        .moon-phase-name {
            font-size: 0.95rem;
            color: var(--text-primary);
            font-weight: 500;
        }

        .moon-stat-label {
            font-size: 0.75rem;
            color: var(--text-muted);
        }

        .moon-stat-value {
            font-size: 1.1rem;
            font-weight: 700;
            color: #fbbf24;
        }

        .moon-stat-unit {
            font-size: 0.85rem;
            color: #fbbf24;
        }

        /* Main Arc Area */
        .moon-arc-main {
            width: 100%;
        }

        .moon-arc-svg {
            width: 100%;
            height: auto;
            min-height: 200px;
        }

        @media (max-width: 500px) {
            .moon-info-bar {
                gap: 12px;
            }

            .moon-arc-svg {
                min-height: 110px;
            }
        }

        .greeting-text {
            font-size: 1.3rem;
            font-weight: 600;
            color: var(--text-primary);
            margin-bottom: 8px;
        }

        .greeting-text .emoji {
            font-size: 1.5rem;
        }

        .weather-comment {
            font-size: 0.95rem;
            color: var(--text-secondary);
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            flex-wrap: wrap;
            max-width: 90%;
            margin: 0 auto;
            line-height: 1.6;
            text-align: center;
        }

        .weather-comment .temp-highlight {
            color: hsl(var(--temp-hue), 85%, 65%);
            font-weight: 700;
            font-size: 1.1rem;
        }

        /* Alert Banner */
        .alert-banner {
            background: linear-gradient(135deg, rgba(251, 146, 60, 0.2) 0%, rgba(251, 146, 60, 0.1) 100%);
            border: 1px solid rgba(251, 146, 60, 0.4);
            border-radius: 12px;
            padding: 12px 20px;
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            gap: 12px;
            animation: alertPulse 2s ease-in-out infinite;
            cursor: pointer;
            transition: transform 0.2s ease, box-shadow 0.2s ease;
        }

        .alert-banner.alert-warning {
            background: linear-gradient(135deg, rgba(250, 204, 21, 0.2) 0%, rgba(250, 204, 21, 0.1) 100%);
            border-color: rgba(250, 204, 21, 0.4);
        }

        .alert-banner.alert-severe {
            background: linear-gradient(135deg, rgba(248, 113, 113, 0.2) 0%, rgba(248, 113, 113, 0.1) 100%);
            border-color: rgba(248, 113, 113, 0.4);
        }

        .alert-banner.alert-special {
            background: linear-gradient(135deg, rgba(168, 85, 247, 0.2) 0%, rgba(168, 85, 247, 0.1) 100%);
            border-color: rgba(168, 85, 247, 0.4);
        }

        .alert-icon {
            font-size: 1.3rem;
        }

        #alertText {
            color: var(--text-primary);
            font-weight: 500;
            flex: 1;
        }

        .alert-link-hint {
            font-size: 0.8rem;
            color: var(--text-secondary);
            opacity: 0.7;
            transition: opacity 0.3s ease;
        }

        .alert-banner:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
        }

        .alert-banner:hover .alert-link-hint {
            opacity: 1;
        }

        /* AI Advisor Section */
        .ai-advisor-section {
            background: linear-gradient(135deg, rgba(99, 102, 241, 0.15) 0%, rgba(139, 92, 246, 0.15) 50%, rgba(236, 72, 153, 0.1) 100%);
            border: 1px solid rgba(139, 92, 246, 0.3);
            border-radius: 16px;
            padding: 16px 20px;
            margin-bottom: 20px;
            display: none;
            animation: fadeInUp 0.5s ease-out;
            position: relative;
            overflow: hidden;
        }

        /* Gemini-style border shimmer - traces the outline once */
        .ai-advisor-section.show {
            display: block;
            animation: fadeInUp 0.5s ease-out, aiShimmerBorder 3.5s linear;
        }

        @keyframes aiShimmerBorder {
            0% {
                box-shadow: 0 0 0 0 transparent;
            }

            2% {
                box-shadow: 0 -2px 15px 1px rgba(139, 92, 246, 0.35);
            }

            5% {
                box-shadow: 0 -4px 28px 3px rgba(139, 92, 246, 0.65);
            }

            9% {
                box-shadow: 2px -4px 32px 4px rgba(139, 92, 246, 0.7);
            }

            14% {
                box-shadow: 4px -2px 35px 4px rgba(99, 102, 241, 0.7);
            }

            19% {
                box-shadow: 5px 0px 35px 4px rgba(99, 102, 241, 0.7);
            }

            24% {
                box-shadow: 5px 2px 35px 4px rgba(129, 140, 248, 0.65);
            }

            29% {
                box-shadow: 4px 4px 32px 4px rgba(167, 139, 250, 0.65);
            }

            34% {
                box-shadow: 2px 5px 35px 4px rgba(192, 132, 252, 0.65);
            }

            39% {
                box-shadow: 0px 5px 35px 4px rgba(236, 72, 153, 0.65);
            }

            44% {
                box-shadow: -2px 5px 35px 4px rgba(236, 72, 153, 0.7);
            }

            49% {
                box-shadow: -4px 4px 32px 4px rgba(192, 132, 252, 0.65);
            }

            54% {
                box-shadow: -5px 2px 35px 4px rgba(167, 139, 250, 0.65);
            }

            59% {
                box-shadow: -5px 0px 35px 4px rgba(139, 92, 246, 0.7);
            }

            64% {
                box-shadow: -4px -2px 35px 4px rgba(139, 92, 246, 0.7);
            }

            69% {
                box-shadow: -2px -4px 32px 4px rgba(139, 92, 246, 0.65);
            }

            74% {
                box-shadow: 0px -4px 28px 3px rgba(139, 92, 246, 0.55);
            }

            80% {
                box-shadow: 0px -3px 22px 2px rgba(139, 92, 246, 0.4);
            }

            86% {
                box-shadow: 0px -2px 16px 1px rgba(139, 92, 246, 0.3);
            }

            92% {
                box-shadow: 0px -1px 10px 0px rgba(139, 92, 246, 0.18);
            }

            96% {
                box-shadow: 0px 0px 5px 0px rgba(139, 92, 246, 0.08);
            }

            100% {
                box-shadow: 0 0 0 0 transparent;
            }
        }

        .ai-advisor-header {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 10px;
            font-size: 0.85rem;
            color: var(--text-secondary);
        }

        .ai-advisor-icon {
            font-size: 1.2rem;
            background: linear-gradient(135deg, #6366f1, #8b5cf6);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }

        .ai-advisor-label {
            font-weight: 600;
            background: linear-gradient(135deg, #6366f1, #8b5cf6);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }

        .ai-advisor-time {
            font-size: 0.75rem;
            opacity: 0.6;
            margin-left: auto;
        }

        .ai-advisor-content {
            font-size: 1rem;
            line-height: 1.6;
            color: var(--text-primary);
        }

        .ai-advisor-text {
            display: inline;
        }

        .ai-advisor-expand {
            display: inline-block;
            background: none;
            border: none;
            color: var(--accent-blue);
            font-size: 0.9rem;
            font-weight: 600;
            cursor: pointer;
            padding: 0;
            margin-left: 8px;
        }

        .ai-advisor-expand:hover {
            text-decoration: underline;
        }

        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(10px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes alertPulse {

            0%,
            100% {
                opacity: 1;
            }

            50% {
                opacity: 0.8;
            }
        }

        .status-info {
            display: flex;
            gap: 8px;
            font-size: 0.85rem;
            color: var(--text-muted);
            flex-wrap: nowrap;
            align-items: center;
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
        }



        .status-item {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 16px;
            background: var(--bg-card);
            border-radius: 100px;
            border: 1px solid var(--border-color);
        }

        .status-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: var(--accent-green);
            box-shadow: 0 0 12px var(--accent-green);
            animation: pulse 2s infinite;
        }

        @keyframes pulse {

            0%,
            100% {
                opacity: 1;
            }

            50% {
                opacity: 0.5;
            }
        }

        /* Skeleton Loading */
        .skeleton {
            background: linear-gradient(90deg, rgba(100, 116, 139, 0.2) 25%, rgba(100, 116, 139, 0.4) 50%, rgba(100, 116, 139, 0.2) 75%);
            background-size: 200% 100%;
            animation: shimmer 1.5s infinite;
            border-radius: 8px;
            display: inline-block;
        }

        @keyframes shimmer {
            0% {
                background-position: 200% 0;
            }

            100% {
                background-position: -200% 0;
            }
        }

        /* Main Stats Grid */
        .main-stats {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 20px;
            margin-bottom: 32px;
        }

        .stat-card {
            background: var(--bg-card);
            border-radius: 24px;
            padding: 28px;
            border: 1px solid var(--border-color);
            backdrop-filter: blur(20px);
            position: relative;
            overflow: hidden;
            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
            box-shadow: var(--shadow-card);
        }

        .stat-card:hover {
            transform: translateY(-6px);
            border-color: var(--border-glow);
            box-shadow: var(--shadow-glow), var(--shadow-card);
        }

        .stat-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 4px;
        }

        .stat-card.temp::before {
            background: linear-gradient(90deg, hsl(var(--temp-hue), 90%, 60%), hsl(calc(var(--temp-hue) + 30), 80%, 55%));
            transition: background 2s ease;
        }

        .stat-card.humidity::before {
            background: linear-gradient(135deg, #60a5fa 0%, #22d3ee 100%);
        }

        .stat-card.high::before {
            background: #f87171;
        }

        .stat-card.low::before {
            background: #22d3ee;
        }

        .stat-header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 12px;
        }

        .stat-icon {
            font-size: 1.5rem;
        }

        .comfort-badge {
            font-size: 0.65rem;
            padding: 4px 10px;
            border-radius: 100px;
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 4px;
            opacity: 0;
            transform: translateY(-10px);
            transition: all 0.5s ease;
        }

        .comfort-badge.show {
            opacity: 1;
            transform: translateY(0);
        }

        .comfort-badge.hot {
            background: rgba(248, 113, 113, 0.2);
            color: #f87171;
        }

        .comfort-badge.warm {
            background: rgba(251, 146, 60, 0.2);
            color: #fb923c;
        }

        .comfort-badge.comfort {
            background: rgba(74, 222, 128, 0.2);
            color: #4ade80;
        }

        .comfort-badge.cool {
            background: rgba(96, 165, 250, 0.2);
            color: #60a5fa;
        }

        .comfort-badge.cold {
            background: rgba(34, 211, 238, 0.2);
            color: #22d3ee;
        }

        /* UV Badge styles */
        .uv-badge {
            font-size: 0.6rem;
            padding: 3px 8px;
            border-radius: 100px;
            font-weight: 600;
            margin-left: 8px;
        }

        .uv-badge.uv-low {
            background: rgba(74, 222, 128, 0.2);
            color: #4ade80;
        }

        .uv-badge.uv-moderate {
            background: rgba(250, 204, 21, 0.2);
            color: #facc15;
        }

        .uv-badge.uv-high {
            background: rgba(251, 146, 60, 0.2);
            color: #fb923c;
        }

        .uv-badge.uv-very-high {
            background: rgba(248, 113, 113, 0.2);
            color: #f87171;
        }

        .uv-badge.uv-extreme {
            background: rgba(168, 85, 247, 0.2);
            color: #a855f7;
        }

        .stat-value.feels-like {
            color: #94a3b8;
        }

        .stat-value.uv {
            color: #94a3b8;
        }

        .stat-label {
            font-size: 0.85rem;
            font-weight: 700;
            color: var(--text-secondary);
            letter-spacing: 0.5px;
            margin-bottom: 12px;
        }

        .stat-value {
            font-size: 3.2rem;
            font-weight: 800;
            line-height: 1;
            display: flex;
            align-items: baseline;
            gap: 4px;
            transition: color 2s ease, text-shadow 2s ease;
        }

        .stat-value.temp {
            color: hsl(var(--temp-hue), 85%, 65%);
            text-shadow: 0 0 40px hsla(var(--temp-hue), 90%, 60%, 0.4);
        }

        .stat-value.humidity {
            color: var(--accent-cyan);
            text-shadow: 0 0 40px rgba(34, 211, 238, 0.3);
        }

        .stat-value.high {
            color: var(--accent-red);
            text-shadow: 0 0 40px rgba(248, 113, 113, 0.3);
        }

        .stat-value.low {
            color: var(--accent-blue);
            text-shadow: 0 0 40px rgba(96, 165, 250, 0.3);
        }

        .stat-unit {
            font-size: 1.5rem;
            font-weight: 600;
            opacity: 0.8;
        }

        /* Charts Grid */
        .charts-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 24px;
        }

        .chart-card {
            background: var(--bg-card);
            border-radius: 24px;
            padding: 28px;
            border: 1px solid var(--border-color);
            backdrop-filter: blur(20px);
            box-shadow: var(--shadow-card);
            transition: all 0.3s ease;
        }

        .chart-card:hover {
            border-color: rgba(99, 102, 241, 0.25);
        }

        .chart-card.full-width {
            grid-column: span 2;
        }

        /* Combined with unified .chart-header above */

        .chart-badge {
            font-size: 0.65rem;
            padding: 6px 14px;
            border-radius: 100px;
            background: rgba(139, 92, 246, 0.15);
            color: var(--accent-purple);
            font-weight: 600;
            border: 1px solid rgba(139, 92, 246, 0.2);
        }

        /* 時間範囲切り替えボタン */
        .chart-range-selector {
            display: flex;
            gap: 4px;
            background: rgba(15, 23, 42, 0.4);
            border: 1px solid rgba(139, 92, 246, 0.15);
            border-radius: 100px;
            padding: 3px;
        }

        .range-btn {
            font-size: 0.65rem;
            padding: 4px 12px;
            border-radius: 100px;
            background: transparent;
            color: var(--text-muted);
            font-weight: 600;
            border: none;
            cursor: pointer;
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
            white-space: nowrap;
            line-height: 1.2;
        }

        .range-btn:hover {
            color: var(--text-secondary);
            background: rgba(139, 92, 246, 0.1);
        }

        .range-btn.active {
            background: rgba(139, 92, 246, 0.2);
            color: var(--accent-purple);
            border: 1px solid rgba(139, 92, 246, 0.3);
            box-shadow: 0 0 8px rgba(139, 92, 246, 0.15);
        }

        html.light-mode .chart-range-selector {
            background: rgba(241, 245, 249, 0.6);
            border-color: rgba(139, 92, 246, 0.12);
        }

        html.light-mode .range-btn:hover {
            background: rgba(139, 92, 246, 0.08);
        }

        html.light-mode .range-btn.active {
            background: rgba(139, 92, 246, 0.15);
            border-color: rgba(139, 92, 246, 0.25);
        }

        .chart-controls {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 100%;
            padding: 16px 0;
            margin-top: auto;
            border-top: 1px solid rgba(255, 255, 255, 0.05);
        }

        html.light-mode .chart-controls {
            border-top-color: rgba(100, 116, 139, 0.1);
        }

        .chart-container {
            height: 300px;
            width: 100%;
            position: relative;
            overflow: hidden;
        }

        .chart-container canvas {
            width: 100% !important;
            height: 100% !important;
        }

        .chart-skeleton {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 1;
            transition: opacity 0.5s ease;
        }

        .chart-skeleton.hidden {
            opacity: 0;
            pointer-events: none;
        }

        /* Footer Stats */
        .footer-stats {
            display: flex;
            justify-content: center;
            gap: 48px;
            margin-top: 32px;
            padding: 24px 40px;
            background: var(--bg-card);
            border-radius: 20px;
            border: 1px solid var(--border-color);
            box-shadow: var(--shadow-card);
            flex-wrap: wrap;
        }

        .footer-stat {
            text-align: center;
        }

        .footer-stat-label {
            font-size: 0.7rem;
            color: var(--text-muted);
            text-transform: uppercase;
            letter-spacing: 1px;
            margin-bottom: 6px;
            font-weight: 500;
        }

        .footer-stat-value {
            font-size: 1.1rem;
            font-weight: 700;
            color: var(--text-secondary);
        }

        .footer-stat-value.highlight {
            color: var(--accent-orange);
            text-shadow: 0 0 20px rgba(251, 146, 60, 0.3);
        }

        .footer-stat-value.cool {
            color: var(--accent-blue);
        }

        .version-info {
            text-align: center;
            font-size: 0.65rem;
            color: var(--text-muted);
            opacity: 0.5;
            margin-top: 16px;
        }

        /* Responsive */
        @media (max-width: 1200px) {
            .main-stats {
                grid-template-columns: repeat(2, 1fr);
            }
        }

        @media (max-width: 1024px) {
            .charts-grid {
                grid-template-columns: 1fr;
            }

            .chart-card.full-width {
                grid-column: span 1;
            }
        }

        @media (max-width: 768px) {
            .container {
                padding: 20px;
            }

            header {
                flex-direction: column;
                align-items: flex-start;
            }

            .main-stats {
                gap: 16px;
            }

            .stat-card {
                padding: 20px;
                border-radius: 20px;
            }

            .stat-value {
                font-size: 2.5rem;
            }

            .stat-unit {
                font-size: 1.2rem;
            }

            .chart-container {
                height: 250px;
            }

            .footer-stats {
                gap: 24px;
                padding: 20px;
            }
        }

        @media (max-width: 480px) {
            .main-stats {
                grid-template-columns: 1fr 1fr;
                gap: 12px;
            }

            .stat-card {
                padding: 16px;
            }

            .stat-value {
                font-size: 2rem;
            }

            .stat-unit {
                font-size: 1rem;
            }

            .logo h1 {
                font-size: 1.3rem;
            }

            .chart-container {
                height: 200px;
            }
        }

        /* =====================================================
           MOON CARD STYLES - Premium Design
           ===================================================== */

        .chart-card.moon-card {
            background: linear-gradient(135deg,
                    rgba(15, 23, 42, 0.95) 0%,
                    rgba(30, 41, 59, 0.9) 50%,
                    rgba(15, 23, 42, 0.95) 100%);
            border: 1px solid rgba(251, 191, 36, 0.15);
            position: relative;
            overflow: hidden;
        }

        .chart-card.moon-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 2px;
            background: linear-gradient(90deg,
                    transparent 0%,
                    rgba(251, 191, 36, 0.6) 50%,
                    transparent 100%);
        }

        .chart-card.moon-card:hover {
            border-color: rgba(251, 191, 36, 0.3);
            box-shadow: 0 8px 32px rgba(251, 191, 36, 0.1);
        }

        html.light-mode .chart-card.moon-card {
            background: linear-gradient(135deg,
                    rgba(255, 255, 255, 0.95) 0%,
                    rgba(254, 252, 232, 0.9) 50%,
                    rgba(255, 255, 255, 0.95) 100%);
            border-color: rgba(217, 119, 6, 0.2);
        }

        /* Moon Notice (Full Moon Tonight notification) */
        .moon-notice {
            padding: 10px 16px;
            margin: 0 16px 12px;
            background: rgba(251, 191, 36, 0.1);
            border: 1px solid rgba(251, 191, 36, 0.3);
            border-radius: 8px;
            text-align: center;
            font-size: 0.9em;
            font-weight: 500;
        }

        html.light-mode .moon-notice {
            background: rgba(251, 191, 36, 0.15);
            border-color: rgba(217, 119, 6, 0.3);
        }

        /* Moon Info Bar */
        .moon-info-bar {
            display: flex;
            justify-content: space-around;
            align-items: center;
            padding: 12px 16px;
            margin: 8px 0;
            background: rgba(0, 0, 0, 0.2);
            border-radius: 12px;
            gap: 8px;
        }

        html.light-mode .moon-info-bar {
            background: rgba(251, 191, 36, 0.08);
        }

        .moon-info-group {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
        }

        .moon-icon {
            font-size: 2rem;
            filter: drop-shadow(0 0 8px rgba(251, 191, 36, 0.5));
            animation: moonPulse 4s ease-in-out infinite;
        }

        @keyframes moonPulse {

            0%,
            100% {
                filter: drop-shadow(0 0 8px rgba(251, 191, 36, 0.5));
            }

            50% {
                filter: drop-shadow(0 0 16px rgba(251, 191, 36, 0.8));
            }
        }

        .moon-phase-name {
            font-size: 0.9rem;
            font-weight: 600;
            color: var(--text-primary);
        }

        .moon-stat-label {
            font-size: 0.85rem;
            color: var(--text-secondary);
            letter-spacing: 0.5px;
            margin-bottom: 2px;
        }

        .moon-stat-value {
            font-size: 1.6rem;
            font-weight: 700;
            color: #fbbf24;
            font-feature-settings: 'tnum';
            line-height: 1;
        }

        .moon-stat-unit {
            font-size: 0.9rem;
            color: var(--text-muted);
            margin-left: 2px;
            vertical-align: baseline;
        }

        html.light-mode .moon-stat-value {
            color: #d97706;
        }

        /* Moon Arc Visualization */
        .moon-arc-main {
            padding: 8px;
            margin-top: 8px;
        }

        .moon-arc-svg {
            width: 100%;
            border-radius: 8px;
            background: radial-gradient(ellipse at center bottom,
                    rgba(30, 41, 59, 0.5) 0%,
                    transparent 70%);
        }

        html.light-mode .moon-arc-svg {
            background: radial-gradient(ellipse at center bottom,
                    rgba(251, 191, 36, 0.05) 0%,
                    transparent 70%);
        }

        /* Moon Badge (Next Phase) */
        .moon-badge {
            background: rgba(15, 23, 42, 0.95) !important;
            color: #fbbf24 !important;
            border: 2px solid rgba(251, 191, 36, 0.5) !important;
            font-weight: 700;
            font-size: 0.85rem;
            padding: 4px 12px !important;
            text-shadow: 0 0 8px rgba(251, 191, 36, 0.5);
        }

        html.light-mode .moon-badge {
            background: rgba(255, 255, 255, 0.95) !important;
            color: #d97706 !important;
            border-color: rgba(217, 119, 6, 0.5) !important;
            text-shadow: none;
        }

        /* SVG Moon Marker Animation */
        #moonPosition {
            transition: cx 0.5s ease-out, cy 0.5s ease-out, fill 0.3s ease, opacity 0.3s ease;
        }

        #moonGlowCircle {
            transition: cx 0.5s ease-out, cy 0.5s ease-out, opacity 0.3s ease;
        }

        #moonCurrentInfoGroup {
            transition: transform 0.5s ease-out, opacity 0.3s ease;
        }

        /* =====================================================
           CARD DRAG & DROP - Premium Experience
           ===================================================== */

        /* Drag Handle */
        .drag-handle {
            cursor: grab;
            padding: 4px 8px;
            border-radius: 4px;
            transition: all 0.2s ease;
            opacity: 0.5;
            font-size: 1.1rem;
            user-select: none;
            -webkit-user-select: none;
            touch-action: none;
        }

        .drag-handle:hover {
            opacity: 1;
            background: rgba(99, 102, 241, 0.2);
            transform: scale(1.1);
        }

        .drag-handle:active {
            cursor: grabbing;
            transform: scale(0.95);
        }

        /* Card in normal state */
        .chart-card[draggable="true"] {
            transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                box-shadow 0.3s ease,
                opacity 0.3s ease;
            position: relative;
        }

        /* Card being dragged */
        .chart-card.dragging {
            opacity: 0.6;
            transform: scale(0.98) rotate(1deg);
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4),
                0 0 30px rgba(99, 102, 241, 0.3);
            z-index: 1000;
            cursor: grabbing;
        }

        /* Card being dragged (touch mode) */
        .chart-card.touch-dragging {
            position: fixed;
            opacity: 0.9;
            transform: scale(1.02);
            box-shadow: 0 25px 80px rgba(0, 0, 0, 0.5),
                0 0 40px rgba(99, 102, 241, 0.4);
            z-index: 10000;
            pointer-events: none;
            transition: none;
        }

        /* Drop placeholder */
        .drag-placeholder {
            background: linear-gradient(135deg,
                    rgba(99, 102, 241, 0.1) 0%,
                    rgba(99, 102, 241, 0.05) 100%);
            border: 2px dashed rgba(99, 102, 241, 0.5);
            border-radius: 16px;
            min-height: 200px;
            transition: all 0.3s ease;
            animation: placeholderPulse 1.5s ease-in-out infinite;
        }

        @keyframes placeholderPulse {

            0%,
            100% {
                border-color: rgba(99, 102, 241, 0.3);
                background: rgba(99, 102, 241, 0.05);
            }

            50% {
                border-color: rgba(99, 102, 241, 0.6);
                background: rgba(99, 102, 241, 0.1);
            }
        }

        /* Card drop animation */
        .chart-card.drop-animation {
            animation: cardDrop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
        }

        @keyframes cardDrop {
            0% {
                transform: scale(0.95);
                opacity: 0.8;
            }

            50% {
                transform: scale(1.02);
            }

            100% {
                transform: scale(1);
                opacity: 1;
            }
        }

        /* Drag over state for other cards */
        .chart-card.drag-over {
            transform: translateY(10px);
            opacity: 0.7;
        }

        /* Mobile touch feedback */
        .chart-card.touch-ready {
            animation: touchReady 0.3s ease;
        }

        @keyframes touchReady {
            0% {
                transform: scale(1);
            }

            50% {
                transform: scale(0.98);
            }

            100% {
                transform: scale(1);
            }
        }

        /* Light mode adjustments */
        html.light-mode .drag-handle:hover {
            background: rgba(59, 130, 246, 0.15);
        }

        html.light-mode .drag-placeholder {
            background: rgba(59, 130, 246, 0.08);
            border-color: rgba(59, 130, 246, 0.4);
        }

        /* Larger touch target on mobile */
        @media (max-width: 768px) {
            .drag-handle {
                padding: 8px 12px;
                font-size: 1.3rem;
            }
        }

        /* =====================================================
   SIMPLE MODE - Simplified View
   ===================================================== */

        /* Hide elements in Simple Mode */
        body.simple-mode .chart-card:not([data-chart-id="chart24h"]) {
            display: none !important;
        }

        body.simple-mode .main-stats {
            display: none !important;
        }

        body.simple-mode .footer-stats {
            display: none !important;
        }

        /* Simple Mode: Full width chart - 通常モードと同じ表示 */
        body.simple-mode .charts-grid {
            grid-template-columns: 1fr;
        }

        body.simple-mode .chart-card[data-chart-id="chart24h"] {
            grid-column: 1;
            width: 100%;
            max-width: 100%;
        }

        /* Simple Mode: container を通常モードと同じ幅に */
        body.simple-mode .container {
            max-width: 100%;
            width: 100%;
        }

        /* Mode Toggle Button (next to notification button) */
        .footer-mode-btn {
            display: flex;
            align-items: center;
            gap: 6px;
            background: transparent;
            border: 1px solid var(--glass-border);
            color: var(--text-muted);
            padding: 8px 16px;
            border-radius: 20px;
            font-size: 0.75rem;
            cursor: pointer;
            transition: all 0.3s ease;
        }

        .footer-mode-btn:hover {
            background: var(--bg-card);
            color: var(--text-secondary);
            border-color: var(--accent-purple);
        }

        .footer-mode-btn .icon {
            width: 1rem;
            height: 1rem;
        }

        .footer-mode-text {
            font-size: 0.7rem;
            opacity: 0.8;
        }

        /* Simple mode button active state */
        body.simple-mode .footer-mode-btn {
            background: rgba(139, 92, 246, 0.1);
            border-color: var(--accent-purple);
            color: var(--accent-purple);
        }

        html.light-mode .footer-mode-btn {
            border-color: rgba(100, 116, 139, 0.2);
        }

        html.light-mode .footer-mode-btn:hover {
            background: rgba(255, 255, 255, 0.8);
        }

        /* Footer button area - flex container */
        .footer-notification-area {
            display: flex;
            justify-content: center;
            gap: 12px;
            margin: 16px 0 8px;
            flex-wrap: wrap;
        }

        /* ===== Report Link Card ===== */
        .report-link-card {
            display: flex;
            align-items: center;
            justify-content: space-between;
            background: var(--bg-card);
            backdrop-filter: blur(24px) saturate(180%);
            -webkit-backdrop-filter: blur(24px) saturate(180%);
            border: 1px solid var(--glass-border);
            border-top: 1px solid var(--glass-highlight);
            box-shadow: var(--glass-shadow);
            border-radius: 20px;
            padding: 18px 22px;
            margin: 16px 0;
            text-decoration: none;
            color: var(--text-primary);
            transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
        }

        .report-link-card:hover {
            transform: translateY(-2px);
            box-shadow: var(--glass-shadow), 0 12px 40px rgba(99, 102, 241, 0.15);
            border-color: rgba(99, 102, 241, 0.3);
        }

        .report-link-content {
            display: flex;
            align-items: center;
            gap: 14px;
        }

        .report-link-icon .icon {
            color: var(--accent-purple);
            filter: drop-shadow(0 0 8px rgba(139, 92, 246, 0.4));
        }

        .report-link-title {
            display: block;
            font-size: 1rem;
            font-weight: 700;
            color: var(--text-primary);
        }

        .report-link-subtitle {
            display: block;
            font-size: 0.75rem;
            color: var(--text-muted);
            margin-top: 2px;
        }

        .report-link-arrow {
            color: var(--text-muted);
            transition: transform 0.2s ease, color 0.2s ease;
        }

        .report-link-card:hover .report-link-arrow {
            transform: translateX(4px);
            color: var(--accent-purple);
        }

        html.light-mode .report-link-card {
            background: rgba(255, 255, 255, 0.95);
            border-color: rgba(100, 116, 139, 0.15);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
        }

        html.light-mode .report-link-card:hover {
            box-shadow: 0 8px 24px rgba(99, 102, 241, 0.12);
            border-color: rgba(99, 102, 241, 0.25);
        }