/* CatNat: the only colour definitions, shared by the map, the commune sheet and the Premium/Watch pages.
   Map paint expressions read these variables at runtime; no page or module hard-codes a colour. */
:root{
 --catnat-action:#243b32;--catnat-action-ink:#ffffff;
 --catnat-ink:#243b32;--catnat-muted:#56635c;--catnat-line:#dfe4e1;--catnat-field:#6e7d73;--catnat-axis:#8f9a94;
 --catnat-surface:#ffffff;--catnat-surface-glass:rgba(255,255,255,.97);--catnat-hover:#f1f3f2;--catnat-track:#cfd5d2;
 --catnat-focus:#286398;--catnat-error:#8c2520;--catnat-alert:#7a4f00;
 --catnat-shadow:rgba(36,59,50,.12);--catnat-shadow-soft:rgba(36,59,50,.07);--catnat-backdrop:rgba(23,41,45,.47);--catnat-overlay:rgba(36,59,50,.93);
 /* Decision status (AA on white, reconnue distinct from the action green). */
 --catnat-reconnue:#1f7a52;--catnat-non-reconnue:#a64b32;--catnat-mixte:#6a4f94;
 /* Stronger publication fills following the S25 review. Text and pictograms keep their AA tokens.
    Contrast measurements belong in the UI audit; no unverified colour-vision certification. */
 --catnat-fill-reconnue:#117B5D;--catnat-fill-non-reconnue:#BE5B12;--catnat-fill-mixte:#4550A0;
 --catnat-non-concernee:#DFE5E1;--catnat-map-dim:#F0F3F1;--catnat-insuffisant:#b5bbc0;
 /* Premium history classes (1–2 stays clearly apart from white and « non concernée »). */
 --catnat-hist-1:#8fb99a;--catnat-hist-2:#5c9573;--catnat-hist-3:#2f6b4d;--catnat-hist-4:#173d2c;
 /* Premium ratio classes: 0–25 %, 25–50 %, 50–75 %, 75–100 % (= reconnue). */
 --catnat-ratio-1:#ae6656;--catnat-ratio-2:#dcb4a9;--catnat-ratio-3:#98c9af;--catnat-ratio-4:var(--catnat-reconnue);
 /* Base map. */
 --catnat-map-land:#DFE5E1;--catnat-map-border:#9EADA4;--catnat-map-region-border:#9EADA4;
 /* National view: white halo around commune points; thin darker outline (translucent ink) around coloured communes. */
 --catnat-map-point-halo:#ffffff;--catnat-map-liseret:rgba(23,36,30,.42);
}
.st-reconnue{--st:var(--catnat-reconnue)}.st-non-reconnue{--st:var(--catnat-non-reconnue)}.st-mixte,.st-both{--st:var(--catnat-mixte)}

/* One action style everywhere. */
.bouton{display:flex;align-items:center;justify-content:center;min-height:48px;padding:12px 10px;border-radius:8px;background:var(--catnat-action);border:1px solid var(--catnat-action);color:var(--catnat-action-ink);text-align:center;font-size:14px;font-weight:650;text-decoration:none}
.bouton.secondaire{background:transparent;color:var(--catnat-action)}
/* Prices: never split an amount from its unit (non-breaking spaces + no break around « / »). */
.nowrap{white-space:nowrap}

/* Range: neutral grey track, dark action thumb. */
input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;accent-color:var(--catnat-action)}
input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--catnat-track)}
input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--catnat-track)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-9px;border-radius:50%;background:var(--catnat-action);border:2px solid var(--catnat-surface);box-shadow:0 0 0 1px var(--catnat-action)}
input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--catnat-action);border:2px solid var(--catnat-surface)}

/* Commune timeline, frise, J+30 badge and locked FREE history (map sheet and /catnat/commune/). */
.j30{margin:12px 0 4px;padding:10px 12px;border-radius:10px;background:var(--catnat-surface);border:1px solid var(--catnat-alert);border-left-width:4px}.j30-title{font-size:15px;font-weight:700;color:var(--catnat-alert)}.j30-sub{font-size:12.5px;margin-top:4px;color:var(--catnat-ink)}.j30 a{color:var(--catnat-ink)}
.frise{position:relative;height:28px;margin:14px 8px 0}.frise-axis{position:absolute;left:0;right:0;top:50%;border-top:1px solid var(--catnat-axis)}.frise-tick{position:absolute;top:50%;width:1px;height:5px;margin-top:-2px;background:var(--catnat-axis)}
/* 3 px × 12 px bars: above the axis = reconnue, below = non reconnue, across = year with both outcomes. */
.frise-bar{position:absolute;width:3px;height:12px;margin-left:-1.5px;border-radius:1px;background:var(--st);cursor:default}.frise-bar.up{bottom:50%}.frise-bar.down{top:50%}.frise-bar.both{top:calc(50% - 12px);height:24px;background:linear-gradient(var(--catnat-reconnue) 50%,var(--catnat-non-reconnue) 50%)}.frise-bar.ghost{background:var(--catnat-axis)}
.frise-scale{position:relative;height:16px;margin:2px 8px 6px;font-size:11px;color:var(--catnat-muted)}.frise-scale span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}.frise-scale .frise-start{left:0;transform:none}.frise-scale .frise-end{right:0;transform:none}
.frise-key{list-style:none;display:flex;flex-wrap:wrap;gap:2px 12px;margin:0 0 4px;padding:0;font-size:11px;color:var(--catnat-muted)}.frise-key li{display:flex;align-items:center;gap:5px}.frise-swatch{display:inline-block;width:3px;height:12px;border-radius:1px;background:var(--st)}.frise-swatch.up{transform:translateY(-3px)}.frise-swatch.down{transform:translateY(3px)}.frise-swatch.both{height:14px;background:linear-gradient(var(--catnat-reconnue) 50%,var(--catnat-non-reconnue) 50%)}
.tl-list{list-style:none;margin:8px 0 0;padding:0;position:relative}.tl-list::before{content:'';position:absolute;left:10px;top:18px;bottom:18px;border-left:1px solid var(--catnat-line)}
.tl-event{position:relative;display:grid;grid-template-columns:22px 1fr;gap:0 6px;align-items:start;padding:6px 0}.tl-dot{position:relative;z-index:1;height:22px;line-height:22px;text-align:center;font-size:15px;background:var(--catnat-surface);color:var(--st)}
.tl-l1{font-size:14px;line-height:1.35;padding:2px 46px 0 0;min-height:30px;margin:0}.tl-l2{font-size:12.5px;line-height:1.35;color:var(--catnat-muted);margin:0}.tl-l2 a{color:var(--catnat-ink);text-underline-offset:3px}.tl-src{white-space:nowrap}.tl-tag{font-size:12px;color:var(--catnat-muted)}
.tl-selected{background:var(--catnat-hover);border-radius:8px}.tl-selected .tl-dot{background:var(--catnat-hover)}
.tl-more{position:absolute;top:0;right:0}.tl-more summary{list-style:none;min-height:44px;min-width:44px;padding:0;text-align:center;line-height:40px;font-size:20px;color:var(--catnat-ink);border-radius:8px;cursor:pointer}.tl-more summary::-webkit-details-marker{display:none}.tl-more[open] summary{background:var(--catnat-hover)}
.tl-menu{position:absolute;right:0;top:46px;z-index:5;width:min(270px,78vw);display:flex;flex-direction:column;gap:2px;padding:8px 12px;background:var(--catnat-surface);border:1px solid var(--catnat-line);border-radius:10px;box-shadow:0 8px 20px var(--catnat-shadow);font-size:13px}.tl-menu button,.tl-menu a{display:flex;align-items:center;min-height:44px;padding:0;border:0;background:none;color:var(--catnat-ink);font:inherit;text-align:left;text-decoration:underline;text-underline-offset:3px}.tl-menu p{font-size:12.5px;color:var(--catnat-muted);margin:4px 0}
.tl-locked{margin-top:14px;padding:12px;border:1px dashed var(--catnat-axis);border-radius:12px;background:var(--catnat-surface)}.tl-locked-title{font-size:14px;font-weight:650;margin:0;color:var(--catnat-ink)}.tl-locked-preview{filter:blur(1.5px);opacity:.75;user-select:none}.ghost-line{display:block;height:10px;width:85%;margin:8px 0;border-radius:5px;background:var(--catnat-line)}.ghost-line.short{width:55%}.tl-locked-note{font-size:13px;color:var(--catnat-muted);margin:6px 0 10px}

/* Map legend: the neutral swatch keeps an outline on white. */
.legende i.non-concernee{border:1px solid var(--catnat-axis)}
.quota-notice{margin:0 0 10px;padding:8px 10px;border:1px solid var(--catnat-alert);border-left-width:4px;border-radius:8px;background:var(--catnat-surface);color:var(--catnat-ink);font-size:13px}
/* fiñv logotype outside the site header (map panel): exactly the main site's .topbar__brand (src/styles/global.css),
   serif display face, same weight, tracking and size. Up to 600 px the site sets html{font-size:18px} and body{font-weight:400},
   so its logotype computes to 18px / 400: reproduced explicitly here (the map keeps a 16px root). */
.finv-logotype{font-family:Georgia, "Times New Roman", serif;font-weight:300;font-size:1.05rem;letter-spacing:.06em}
@media(max-width:600px){.finv-logotype{font-size:18px;font-weight:400}}

/* Commune name references from the local index, without external map requests. */
.decision-reason{font-size:13px;font-weight:600;margin-top:7px}
.decision-motivation summary{font-size:12px;min-height:36px;padding:7px 0}
.decision-motivation p,.decision-motivation small{font-size:12px;line-height:1.45}
