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

        body {
            font-family: 'Segoe UI', sans-serif;
            background: linear-gradient(135deg, #1a1a2e, #16213e, #0f3460);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
            align-items: center;
            color: white;
            padding: 2rem 1rem;
        }

        h1 {
            font-size: 1.8rem;
            margin-bottom: 0.3rem;
            letter-spacing: 2px;
            color: #00d4ff;
            text-align: center;
        }

        .subtitle {
            font-size: 0.9rem;
            color: #aaa;
            margin-bottom: 0.5rem;
            text-align: center;
        }

        .update-status {
            font-size: 0.85rem;
            color: #1dd1a1;
            margin-bottom: 1.5rem;
            text-align: center;
            min-height: 1.2rem;
            transition: color 0.3s;
        }

        /* ── Onglets ── */
        .tabs {
            display: flex;
            gap: 0.5rem;
            margin-bottom: 1.5rem;
            width: 90%;
            max-width: 600px;
        }

        .tab-btn {
            flex: 1;
            padding: 0.7rem 1rem;
            border: 1px solid rgba(255,255,255,0.2);
            border-radius: 12px;
            background: rgba(255,255,255,0.05);
            color: #aaa;
            font-size: 0.9rem;
            cursor: pointer;
            transition: all 0.3s;
            backdrop-filter: blur(10px);
        }

        .tab-btn:hover {
            background: rgba(255,255,255,0.1);
            color: white;
        }

        .tab-btn.active {
            background: rgba(0, 212, 255, 0.15);
            border-color: #00d4ff;
            color: #00d4ff;
            font-weight: bold;
        }

        .tab-content { display: none; width: 100%; align-items: center; flex-direction: column; }
        .tab-content.active { display: flex; }

        /* ── Alerte globale ── */
        .alert-banner {
            display: none;
            width: 90%;
            max-width: 600px;
            border-radius: 12px;
            padding: 0.9rem 1.2rem;
            text-align: center;
            font-size: 1rem;
            font-weight: bold;
            margin-bottom: 1.5rem;
            animation: pulse-bg 2s infinite;
        }

        .alert-banner.canicule {
            background: rgba(255, 80, 80, 0.25);
            border: 2px solid #ff5050;
            color: #ff5050;
        }

        .alert-banner.gel {
            background: rgba(72, 219, 251, 0.2);
            border: 2px solid #48dbfb;
            color: #48dbfb;
        }

        .alert-banner.offline {
            background: rgba(196, 77, 255, 0.2);
            border: 2px solid #c44dff;
            color: #c44dff;
        }

        @keyframes pulse-bg {
            0%   { opacity: 1; }
            50%  { opacity: 0.6; }
            100% { opacity: 1; }
        }

        /* ── Zone de confort ── */
        .comfort-bar-section {
            width: 90%;
            max-width: 600px;
            margin-bottom: 1.5rem;
        }

        .comfort-label {
            font-size: 0.85rem;
            color: #aaa;
            margin-bottom: 0.5rem;
            text-align: center;
        }

        .comfort-bar {
            width: 100%;
            height: 18px;
            border-radius: 10px;
            background: linear-gradient(to right,
                #48dbfb 0%,
                #48dbfb 15%,
                #1dd1a1 25%,
                #1dd1a1 45%,
                #feca57 65%,
                #ff6b6b 80%,
                #ff5050 100%
            );
            position: relative;
            box-shadow: 0 0 10px rgba(0,0,0,0.4);
        }

        .comfort-cursor {
            position: absolute;
            top: -5px;
            width: 6px;
            height: 28px;
            background: white;
            border-radius: 3px;
            transform: translateX(-50%);
            box-shadow: 0 0 6px rgba(255,255,255,0.8);
            transition: left 1s ease;
        }

        .comfort-scale {
            display: flex;
            justify-content: space-between;
            font-size: 0.7rem;
            color: #666;
            margin-top: 0.3rem;
            padding: 0 2px;
        }

        .comfort-status {
            text-align: center;
            margin-top: 0.5rem;
            font-size: 0.9rem;
            font-weight: bold;
        }

        /* ── Soleil ── */
        .sun-section {
            width: 90%;
            max-width: 600px;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 1rem;
            margin-bottom: 1.5rem;
        }

        .sun-card {
            background: rgba(255,255,255,0.07);
            border: 1px solid rgba(255,255,255,0.15);
            border-radius: 14px;
            padding: 1rem;
            text-align: center;
            backdrop-filter: blur(10px);
        }

        .sun-card .sun-icon { font-size: 2rem; margin-bottom: 0.3rem; }
        .sun-card .sun-label {
            font-size: 0.75rem;
            color: #aaa;
            text-transform: uppercase;
            letter-spacing: 1px;
        }
        .sun-card .sun-time {
            font-size: 1.6rem;
            font-weight: bold;
            color: #feca57;
            margin-top: 0.2rem;
        }

        /* ── Cartes capteur ── */
        .grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 1.2rem;
            width: 90%;
            max-width: 600px;
        }

        .card {
            background: rgba(255,255,255,0.07);
            border: 1px solid rgba(255,255,255,0.15);
            border-radius: 16px;
            padding: 1.5rem;
            text-align: center;
            backdrop-filter: blur(10px);
            transition: transform 0.2s;
        }

        .card:hover { transform: scale(1.03); }
        .card .icon { font-size: 2.2rem; margin-bottom: 0.5rem; }

        .card .label {
            font-size: 0.8rem;
            color: #aaa;
            text-transform: uppercase;
            letter-spacing: 1px;
            margin-bottom: 0.4rem;
        }

        .card .value {
            font-size: 2rem;
            font-weight: bold;
        }

        .card .unit { font-size: 1rem; color: #aaa; }
        .card.temp  .value { color: #ff6b6b; }
        .card.press .value { color: #feca57; }

        /* ── Carte UV ── */
        .uv-section {
            width: 90%;
            max-width: 600px;
            margin-bottom: 1.5rem;
        }

        .uv-card {
            background: rgba(255,255,255,0.07);
            border: 1px solid rgba(255,255,255,0.15);
            border-radius: 16px;
            padding: 1.2rem 1.5rem;
            backdrop-filter: blur(10px);
            display: flex;
            align-items: center;
            gap: 1.5rem;
        }

        .uv-left {
            text-align: center;
            min-width: 80px;
        }

        .uv-left .uv-icon { font-size: 2.5rem; }
        .uv-left .uv-index {
            font-size: 2.8rem;
            font-weight: bold;
            line-height: 1;
            margin-top: 0.2rem;
        }
        .uv-left .uv-label {
            font-size: 0.75rem;
            color: #aaa;
            text-transform: uppercase;
            letter-spacing: 1px;
        }

        .uv-right { flex: 1; }

        .uv-bar-wrap {
            width: 100%;
            height: 14px;
            border-radius: 8px;
            background: linear-gradient(to right,
                #1dd1a1 0%,
                #feca57 25%,
                #ff9f43 50%,
                #ff6b6b 70%,
                #c44dff 100%
            );
            position: relative;
            box-shadow: 0 0 8px rgba(0,0,0,0.4);
            margin-bottom: 0.4rem;
        }

        .uv-cursor {
            position: absolute;
            top: -4px;
            width: 6px;
            height: 22px;
            background: white;
            border-radius: 3px;
            transform: translateX(-50%);
            box-shadow: 0 0 6px rgba(255,255,255,0.8);
            transition: left 1s ease;
        }

        .uv-scale {
            display: flex;
            justify-content: space-between;
            font-size: 0.65rem;
            color: #666;
        }

        .uv-status {
            font-size: 0.9rem;
            font-weight: bold;
            margin-top: 0.5rem;
        }

        .uv-advice {
            font-size: 0.78rem;
            color: #aaa;
            margin-top: 0.3rem;
        }

        /* ── Section météo ── */
        .meteo-section {
            margin-top: 2rem;
            width: 90%;
            max-width: 600px;
        }

        .meteo-title {
            font-size: 1.2rem;
            color: #00d4ff;
            margin-bottom: 1rem;
            text-align: center;
            letter-spacing: 1px;
        }

        .meteo-now {
            background: rgba(255,255,255,0.07);
            border: 1px solid rgba(255,255,255,0.15);
            border-radius: 16px;
            padding: 1.5rem;
            text-align: center;
            margin-bottom: 1.2rem;
            backdrop-filter: blur(10px);
        }

        .meteo-now .big-icon { font-size: 3rem; }
        .meteo-now .big-temp {
            font-size: 2.5rem;
            font-weight: bold;
            color: #ff6b6b;
        }

        .meteo-now .meteo-details {
            display: flex;
            justify-content: center;
            gap: 1.2rem;
            margin-top: 0.8rem;
            font-size: 0.9rem;
            color: #aaa;
            flex-wrap: wrap;
        }

        .meteo-now .meteo-details span {
            background: rgba(255,255,255,0.05);
            border-radius: 8px;
            padding: 0.3rem 0.7rem;
        }

        .wind-arrow {
            display: inline-block;
            font-size: 1.4rem;
            transition: transform 0.5s ease;
        }

        .forecast-grid {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 0.8rem;
        }

        .forecast-card {
            background: rgba(255,255,255,0.07);
            border: 1px solid rgba(255,255,255,0.15);
            border-radius: 12px;
            padding: 0.8rem 0.4rem;
            text-align: center;
            backdrop-filter: blur(10px);
        }

        .forecast-card .day {
            font-size: 0.75rem;
            color: #aaa;
            text-transform: uppercase;
            margin-bottom: 0.4rem;
        }

        .forecast-card .f-icon { font-size: 1.6rem; margin-bottom: 0.3rem; }
        .forecast-card .f-max  { font-size: 1rem; font-weight: bold; color: #ff6b6b; }
        .forecast-card .f-min  { font-size: 0.85rem; color: #48dbfb; }
        .forecast-card .f-rain { font-size: 0.75rem; color: #aaa; margin-top: 0.3rem; }
        .forecast-card .f-uv   { font-size: 0.75rem; color: #feca57; margin-top: 0.2rem; }

        #last-update {
            margin-top: 1.5rem;
            font-size: 0.8rem;
            color: #666;
            text-align: center;
            transition: color 0.5s;
        }

        /* ── Graphique ── */
        .chart-section {
            width: 90%;
            max-width: 600px;
        }

        .chart-card {
            background: rgba(255,255,255,0.07);
            border: 1px solid rgba(255,255,255,0.15);
            border-radius: 16px;
            padding: 1.5rem;
            backdrop-filter: blur(10px);
            margin-bottom: 1.5rem;
        }

        .chart-title {
            font-size: 1rem;
            color: #00d4ff;
            text-align: center;
            margin-bottom: 1rem;
            letter-spacing: 1px;
        }

        .chart-stats {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 0.8rem;
            margin-top: 1.2rem;
        }

        .stat-box {
            background: rgba(255,255,255,0.05);
            border-radius: 10px;
            padding: 0.8rem;
            text-align: center;
        }

        .stat-box .stat-label {
            font-size: 0.75rem;
            color: #aaa;
            text-transform: uppercase;
            letter-spacing: 1px;
            margin-bottom: 0.3rem;
        }

        .stat-box .stat-value {
            font-size: 1.4rem;
            font-weight: bold;
        }

        /* ── Sélecteur de plage historique ── */
        .range-selector {
            display: flex;
            gap: 0.5rem;
            margin-bottom: 1.2rem;
            justify-content: center;
        }

        .range-btn {
            padding: 0.5rem 1rem;
            border: 1px solid rgba(255,255,255,0.2);
            border-radius: 10px;
            background: rgba(255,255,255,0.05);
            color: #aaa;
            font-size: 0.85rem;
            cursor: pointer;
            transition: all 0.3s;
        }

        .range-btn:hover {
            background: rgba(255,255,255,0.1);
            color: white;
        }

        .range-btn.active {
            background: rgba(0, 212, 255, 0.15);
            border-color: #00d4ff;
            color: #00d4ff;
            font-weight: bold;
        }

        .chart-loading {
            text-align: center;
            color: #aaa;
            padding: 2rem;
            font-size: 0.9rem;
        }

        .footer {
            margin-top: 0.8rem;
            font-size: 0.8rem;
            color: #555;
            text-align: center;
        }

        .credit {
            margin-top: 1.5rem;
            padding-top: 1rem;
            border-top: 1px solid rgba(255,255,255,0.08);
            font-size: 0.78rem;
            color: #444;
            text-align: center;
            letter-spacing: 0.5px;
        }

        .credit span { color: #666; }

        .status-dot {
            display: inline-block;
            width: 8px; height: 8px;
            border-radius: 50%;
            background: #1dd1a1;
            margin-right: 5px;
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0%   { opacity: 1; }
            50%  { opacity: 0.3; }
            100% { opacity: 1; }
        }

        /* ── Recommandation journalière ── */
        .recommendation {
            width: 90%;
            max-width: 600px;
            border-radius: 16px;
            padding: 1.2rem 1.5rem;
            text-align: center;
            margin-bottom: 1.5rem;
            backdrop-filter: blur(10px);
            transition: all 0.5s;
        }
        .recommendation .rec-icon { font-size: 2.5rem; }
        .recommendation .rec-text { font-size: 1.3rem; font-weight: bold; margin-top: 0.3rem; }
        .recommendation .rec-detail { font-size: 0.85rem; margin-top: 0.4rem; opacity: 0.8; }

        /* ── Tendance pression ── */
        .press-trend { font-size: 1.2rem; margin-left: 0.3rem; display: inline-block; }

        /* ── Risques 24h ── */
        .risks-section { margin-top: 1.2rem; width: 100%; }
        .risks-title { font-size: 0.9rem; color: #00d4ff; text-align: center; margin-bottom: 0.8rem; letter-spacing: 1px; }
        .risks-grid { display: flex; gap: 0.6rem; justify-content: center; flex-wrap: wrap; }
        .risk-pill {
            background: rgba(255,255,255,0.05);
            border: 1px solid rgba(255,255,255,0.12);
            border-radius: 20px;
            padding: 0.4rem 0.9rem;
            font-size: 0.8rem;
            white-space: nowrap;
        }
        .risk-pill.active { animation: pulse-bg 2s infinite; }

        /* ── Version & Changelog ── */
        .version-info {
            margin-top: 2rem;
            text-align: center;
            font-size: 0.78rem;
            color: #444;
        }
        .version-info .version {
            color: #666;
            letter-spacing: 0.5px;
        }
        .version-changelog {
            margin-top: 0.5rem;
            font-size: 0.75rem;
            color: #555;
            text-align: left;
            max-width: 400px;
            margin-left: auto;
            margin-right: auto;
            line-height: 1.6;
        }
        .version-changelog summary {
            cursor: pointer;
            color: #666;
            text-align: center;
            list-style: none;
            padding: 0.3rem 0;
        }
        .version-changelog summary::-webkit-details-marker {
            display: none;
        }
        .version-changelog summary:hover {
            color: #888;
        }
        .version-changelog ul {
            margin-top: 0.5rem;
            padding-left: 1.2rem;
        }
        .version-changelog li {
            margin-bottom: 0.3rem;
        }
        .version-changelog li strong {
            color: #777;
        }

        @media (max-width: 480px) {
            .grid { grid-template-columns: repeat(2, 1fr); }
            .forecast-grid { grid-template-columns: repeat(3, 1fr); }
            h1 { font-size: 1.3rem; }
            .uv-card { flex-direction: column; text-align: center; }
            .chart-stats { grid-template-columns: repeat(3, 1fr); }
        }