@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700;12..96,800&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#253c34;--green:#275647;--paper:#f8faf7;--line:#dfe6df;--muted:#6c7870;--purple:#7860ac;--display:'Bricolage Grotesque',sans-serif;--body:'Manrope',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 var(--body)}button,input,select{font:inherit;color:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer;border:0;background:none}a{color:inherit;text-decoration:none}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}:focus-visible{outline:3px solid #9f8bc6;outline-offset:3px}.icon{width:20px;height:20px;display:inline-block;flex-shrink:0;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.topbar{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 max(calc((100vw - 1260px)/2),28px);background:#fff;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:7px;font:800 31px var(--display);letter-spacing:-1.5px;color:var(--green)}.brand svg{width:auto;height:36px;margin-right:5px}.brand-dot{color:var(--purple);margin-left:-7px}.topbar nav{display:flex;align-items:center;gap:28px}.nav-link,.text-button{font-size:13px;font-weight:600;display:inline-flex;gap:9px;align-items:center;min-height:42px}.nav-link{color:var(--muted)}#saved-count{font-size:11px;background:#edf2ec;padding:0 6px;border-radius:5px}.text-button.active{color:var(--purple)}main{max-width:1320px;margin:auto;padding:0 30px}.hero{padding:35px 0 25px}.hero h1{font:600 clamp(32px,3.3vw,46px)/1.13 var(--display);letter-spacing:-1.8px;margin:0 0 9px}.hero h1 span{color:var(--green)}.hero p{margin:0;color:var(--muted);font-size:14px}
.search-panel{display:flex;align-items:center;gap:0;background:#fff;padding:12px;border:1px solid var(--line);border-radius:12px}.field{min-width:0;padding:0 18px;border-right:1px solid var(--line)}.field>label{display:block;font-size:11px;font-weight:700;color:var(--muted);margin-bottom:3px}.field input,.field select{border:0;background:transparent;font-weight:600;outline:none;min-width:0;width:100%;height:32px;padding:0}.input-wrap{display:flex;align-items:center;gap:8px}.town-field{position:relative;flex:1.5;min-width:200px;padding-left:8px}.town-field input{font-size:16px}.town-postal{font-size:11px;color:var(--muted)}.radius-field{flex:1;min-width:160px}.radius-field select{font-size:13px}.date-field{flex:1;min-width:148px}.date-field input{font-size:13px}.date-field:last-of-type{border:0}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:10px;border-radius:8px;padding:14px 18px;min-height:46px;font-size:13px;font-weight:700;white-space:nowrap}.primary{background:var(--green);color:#fff}.primary:hover{background:#1d4538}.secondary{background:#fff;border:1px solid var(--line)}.secondary:hover{background:#f0f4ef}.search-context{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:12px 0 26px}.date-shortcuts{display:flex;gap:6px}.date-shortcuts button{font-size:12px;min-height:34px;padding:5px 11px;border-radius:6px;color:var(--muted)}.date-shortcuts button:hover{background:#eaf0e8;color:var(--ink)}.date-shortcuts button.active{background:#e5eee2;color:var(--green);font-weight:700}#area-note{font-size:11px;color:var(--muted)}#suggestions{position:absolute;top:calc(100% + 20px);left:0;right:0;min-width:300px;z-index:120;background:#fff;border:1px solid var(--line);box-shadow:0 12px 35px #17332418;border-radius:9px;max-height:340px;overflow:auto}#suggestions button{display:block;width:100%;text-align:left;padding:12px 16px;border-bottom:1px solid #eef1ed}#suggestions button:hover,#suggestions button:focus{background:#eef3eb}#suggestions strong,#suggestions small{display:block}#suggestions strong{font-size:14px}#suggestions small{color:var(--muted);font-size:12px}
.tabs-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin-bottom:0}.tabs{display:flex;gap:26px}.tab{font-size:16px;padding:13px 0;position:relative;color:var(--muted);font-weight:600}.tab.active{color:var(--green)}.tab.active:after{content:'';position:absolute;height:3px;background:var(--green);bottom:-1px;left:0;right:0;border-radius:2px}.tab-count{font:600 11px var(--body);margin-left:6px;color:var(--muted)}#refresh-button{font-size:12px;color:var(--muted)}#refresh-button .icon{width:15px}
.filter-bar{display:flex;align-items:center;gap:12px;padding:22px 0;flex-wrap:wrap;position:relative;z-index:70}.facet{position:relative}.facet-trigger{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid #cfd9d0;border-radius:7px;padding:10px 14px;height:44px;font-size:13px;font-weight:600}.facet-trigger:hover,.facet-trigger[aria-expanded=true]{border-color:var(--green)}.facet-trigger.has-selection{background:#edf3e9;border-color:#8da788}.facet-count:empty{display:none}.facet-count{background:var(--green);color:#fff;padding:1px 6px;border-radius:4px;font-size:11px}.chevron{width:7px;height:7px;border-bottom:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg);margin:0 2px 4px 1px}.facet-trigger[aria-expanded=true] .chevron{transform:rotate(225deg);margin-top:6px}.simple-check{display:flex;align-items:center;gap:7px;font-size:13px;cursor:pointer;min-height:44px;margin-left:4px}.simple-check input{accent-color:var(--green);width:16px;height:16px;cursor:pointer}.text-search{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--muted);border-bottom:1px solid #cbd7cc;min-width:170px}.text-search .icon{width:17px}.text-search input{border:0;background:transparent;outline:none;font-size:13px;min-height:42px;width:190px}.facet-menu{position:absolute;top:calc(100% + 9px);left:0;width:340px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 15px 45px #15332620;overflow:hidden}.facet-search{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}.facet-search .icon{width:17px;color:var(--muted)}.facet-search input{border:0;outline:0;width:100%;font-size:14px;min-height:28px}.facet-options{max-height:350px;overflow:auto;padding:6px 10px 10px}.facet-options h4{font-size:10px;text-transform:uppercase;letter-spacing:.9px;color:var(--muted);margin:18px 8px 7px}.facet-option{display:flex;align-items:center;gap:10px;border-radius:6px;padding:9px 10px;min-height:42px;cursor:pointer;font-size:14px}.facet-option:hover{background:#f2f5ef}.facet-option:has(input:checked){background:#eaf1e4;color:var(--green);font-weight:600}.facet-option input{position:absolute;opacity:0;width:1px;height:1px}.facet-option:has(input:focus-visible){outline:2px solid #9f8bc6;outline-offset:-2px}.option-tick{margin-left:auto;opacity:0}.facet-option input:checked~.option-tick{opacity:1}.facet-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--line);background:#fafcf9}.facet-footer button{font-size:12px;padding:7px 0;color:var(--muted)}.facet-footer [data-done]{color:var(--green);font-weight:800}.facet-empty{font-size:13px;padding:8px;color:var(--muted)}.selected-filters{display:flex;flex-wrap:wrap;gap:8px;margin:-8px 0 20px}.selected-filters button{display:flex;align-items:center;gap:12px;font-size:12px;padding:5px 9px;background:#eaf1e5;border-radius:4px}.selected-filters button span{font-size:18px;line-height:1}
.results-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:7px 0 18px}.results-heading h2{font:600 27px/1.2 var(--display);letter-spacing:-.6px;margin:0}.results-heading p{font-size:12px;color:var(--muted);margin:6px 0 0}.results-heading select{font-size:12px;border:0;background:transparent;padding:8px 0;outline-offset:3px}.content-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;align-items:start}.main-column{min-width:0}.side-column{position:sticky;top:20px}.events-list{display:flex;flex-direction:column;gap:12px}.event-card{display:flex;gap:20px;padding:23px;position:relative;background:#fff;border:1px solid var(--line);border-radius:11px}.event-date{width:69px;min-width:69px;padding:12px 3px;background:var(--tint);color:var(--tone);border-radius:7px;text-align:center;align-self:stretch;display:flex;flex-direction:column;justify-content:center}.event-date .weekday{font-size:10px;text-transform:uppercase;letter-spacing:1px}.event-date b{font:600 36px/1.1 var(--display);letter-spacing:-1px;margin:3px 0}.event-date .month{font-size:10px;font-weight:700;text-transform:uppercase}.event-body{min-width:0;flex:1;padding-right:14px}.event-labels{display:flex;gap:7px;font-size:11px;color:var(--muted);margin-bottom:3px}.event-category{color:var(--tone);font-weight:700}.event-title{text-align:left;padding:0;display:block;font:600 23px/1.25 var(--display);letter-spacing:-.4px;margin:4px 0 10px}.event-title:hover{color:var(--green);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.event-meta{display:flex;gap:11px;flex-wrap:wrap;color:var(--muted);font-size:12px}.event-meta>span{display:flex;align-items:center;gap:4px}.event-meta .icon{width:14px;height:14px}.event-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:16px}.source-link{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);overflow-wrap:anywhere}.source-link .icon{width:13px;height:13px}.price-tag{font-size:11px;font-weight:600;color:var(--muted)}.price-tag.free{color:var(--green);background:#edf4e5;border-radius:4px;padding:3px 6px}.heart-button{position:absolute;top:18px;right:13px;min-width:32px;min-height:32px;color:#9da9a0}.heart-button.active{color:var(--purple)}.heart-button.active .icon{fill:#eee7f5}.heart-button .icon{width:18px}.map-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.map-heading{display:flex;justify-content:space-between;align-items:center;padding:14px 17px;font-size:12px}.map-heading>span{font-size:11px;color:var(--muted)}#map{height:345px;background:#e9efe4;z-index:0}.map-foot{padding:10px 15px;font-size:10px;color:var(--muted)}.map-marker{background:var(--green);border:3px solid #fff;border-radius:50%;color:#fff;font:700 12px/21px var(--body);text-align:center;box-shadow:0 2px 8px #23442b35}.leaflet-popup-content{font:12px/1.6 var(--body);color:var(--ink)}
.empty{padding:48px 20px;text-align:center;background:#fff;border:1px dashed #ccd7cc;border-radius:10px}.empty>.icon{width:29px;height:29px;color:#86a274}.empty h3{font:600 25px/1.2 var(--display);margin:14px 0 8px}.empty p{font-size:13px;color:var(--muted);max-width:440px;margin:0 auto 17px}.empty .secondary{margin:5px;font-size:12px}.address-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:26px 0}.address-toolbar h2,.panel-intro h2{font:600 28px var(--display);letter-spacing:-.5px;margin:0}.address-toolbar p,.panel-intro p{font-size:13px;color:var(--muted);margin:4px 0}.address-search{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:11px 14px;width:360px;max-width:100%}.address-search input{border:0;background:transparent;outline:0;width:100%;font-size:14px;min-width:0}.address-search .icon{width:18px;color:var(--muted)}.business-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.business-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:22px;min-width:0}.business-card h4{font:600 22px var(--display);letter-spacing:-.3px;margin:10px 0 5px}.business-card p{font-size:12px;color:var(--muted);margin:5px 0}.business-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:15px;font-size:12px}.business-links a{text-decoration:underline;text-underline-offset:3px}.source-avatar{display:flex;align-items:center;justify-content:center;border-radius:8px;background:#eef3ea;color:#6b8960;width:34px;height:34px;flex-shrink:0}.panel-intro{padding:28px 0 16px}.add-source{display:flex;gap:10px;margin:15px 0}.add-source input{flex:1;min-width:0;background:#fff;border:1px solid var(--line);border-radius:7px;padding:12px}.source-row{display:flex;align-items:center;gap:14px;padding:17px 0;border-bottom:1px solid var(--line)}.source-copy{flex:1;min-width:0}.source-copy strong,.source-copy small{display:block}.source-copy strong{font-size:13px;overflow-wrap:anywhere}.source-copy small{font-size:11px;color:var(--muted)}.source-status{font-size:11px;color:var(--muted);max-width:240px}.source-status.limited{color:#957546}.source-row>a{padding:8px}.candidates{padding:22px 0}.candidates h4{font:600 22px var(--display)}.candidate{padding:9px 0;border-bottom:1px solid var(--line)}.candidate a{font-size:13px}.candidate small{display:block;font-size:11px;color:var(--muted)}.footnote{font-size:12px;color:var(--muted);line-height:1.7;overflow-wrap:anywhere}
.message{padding:13px 16px;border:1px solid #e1ccba;background:#faf0e7;border-radius:8px;font-size:13px;margin:15px 0}.message.ok{border-color:#c9dfa2;background:#edf4e5}.scan-panel{display:flex;align-items:center;gap:14px;background:#edf3e7;border-radius:8px;padding:15px 18px;margin:18px 0}.scan-panel strong{font-size:13px}.scan-panel p{font-size:12px;color:var(--muted);margin:3px 0 0}#scan-time{margin-left:auto;white-space:nowrap;font-size:12px;color:var(--muted)}.scan-indicator{width:17px;height:17px;border:2px solid #c9d7c0;border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}footer{display:flex;align-items:center;gap:22px;border-top:1px solid var(--line);margin-top:55px;padding:24px 0 32px}.footer-brand{font:700 23px var(--display);letter-spacing:-1px;color:var(--green)}.footer-note{font-size:11px;color:var(--muted)}footer button{margin-left:auto;font-size:12px;color:var(--muted);padding:8px 0}
dialog{border:1px solid var(--line);border-radius:18px;padding:42px;max-width:760px;width:calc(100% - 36px);max-height:90vh;overflow:auto;color:var(--ink);background:#fff}dialog::backdrop{background:#243e3370;backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:20px;top:18px;border-radius:50%;padding:9px;background:#f0f4ed}.dialog-close .icon{width:20px}dialog h2{font:600 37px/1.1 var(--display);letter-spacing:-1px;margin:18px 35px 23px 0}dialog p{font-size:14px;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:1.7px;font-weight:700}.detail-badges{display:flex;flex-wrap:wrap;gap:7px}.detail-badges span{font-size:12px;padding:4px 9px;background:#f0f4eb;border-radius:5px}.detail-facts{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:26px 0}.detail-facts div{font-size:14px;border-top:1px solid var(--line);padding-top:14px}.detail-facts small{display:block;font-size:10px;color:var(--muted);margin-bottom:6px}.detail-evidence{padding:16px 20px;border-radius:9px;background:#f5f7f2}.detail-evidence strong{font-size:13px}.detail-evidence p{font-size:13px;margin:9px 0}.detail-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}.detail-actions .icon{width:17px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 19px;border-radius:9px;z-index:300;box-shadow:0 6px 22px #12261c22;max-width:calc(100% - 30px);font-size:13px}
@media(max-width:1100px){.search-panel{flex-wrap:wrap;row-gap:15px}.town-field{flex:1.5}.date-field{min-width:130px}.search-panel>.primary{margin-left:auto}.content-layout{grid-template-columns:minmax(0,1fr) 280px;gap:20px}.filter-bar{gap:9px}.text-search{flex:1;min-width:150px}.text-search input{width:100%}.event-card{padding:19px;gap:14px}.event-title{font-size:21px}.business-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.topbar{height:72px;padding:0 20px}.brand{font-size:27px}.brand svg{width:auto;height:28px}.topbar nav{gap:18px}.nav-link{font-size:12px}#saved-toggle{font-size:0;gap:5px}#saved-count{font-size:11px}main{padding:0 20px}.hero{padding:28px 0 22px}.hero h1{font-size:35px;max-width:320px}.hero p{font-size:12px;max-width:330px}.search-panel{padding:14px 10px;gap:12px 0}.field{padding:0 10px}.town-field{flex:1 1 58%;min-width:175px}.radius-field{flex:1 1 35%;min-width:115px;border:0}.radius-field select{font-size:12px}.town-postal{display:none}.date-field{flex:1 1 40%;min-width:130px;border:0}.date-field input{font-size:14px}.search-panel>.primary{width:100%;margin:4px 0 0}.search-context{flex-direction:column;align-items:flex-start;gap:7px;margin-bottom:17px}.date-shortcuts{gap:4px}.date-shortcuts button{padding:6px 9px;font-size:12px}#area-note{font-size:10px}.tab{font-size:15px}.tabs{gap:24px}.filter-bar{gap:10px;padding:18px 0 15px}.facet{flex:1 1 40%;min-width:0}.facet-trigger{width:100%;justify-content:space-between;gap:8px;font-size:12px;padding:10px 12px}.facet-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.facet-menu{width:min(340px,calc(100vw - 40px))}.facet:nth-child(2) .facet-menu{left:auto;right:0}.facet-options{max-height:300px}.simple-check{font-size:12px;margin-right:8px}.text-search{flex:1 1 100%;margin:0}.text-search input{font-size:14px}.content-layout{display:flex;flex-direction:column;gap:22px}.main-column,.side-column{width:100%}.side-column{position:static}.results-heading{align-items:flex-start;margin-top:7px}.results-heading h2{font-size:24px}.results-heading p{font-size:11px}.results-heading select{font-size:11px;max-width:105px}.event-card{padding:16px;gap:13px}.event-date{width:56px;min-width:56px}.event-date b{font-size:29px}.event-title{font-size:20px}.event-body{padding-right:13px}.event-meta{font-size:11px;gap:8px}.event-bottom{flex-wrap:wrap;gap:8px;margin-top:12px}.source-link{font-size:10px;max-width:200px}.price-tag{font-size:10px}.event-labels{font-size:10px}.heart-button{right:7px;top:10px}.map-card #map{height:230px}.address-toolbar{align-items:flex-start;flex-direction:column;gap:14px}.address-toolbar h2{font-size:25px}.address-search{width:100%}.business-grid{grid-template-columns:1fr}.business-card{padding:19px}.source-row{gap:9px}.source-copy strong{font-size:12px}.source-copy small{font-size:10px}.source-status{font-size:10px;max-width:105px}.source-row .source-avatar{display:none}.add-source{flex-wrap:wrap}.add-source input{flex:1 1 100%}.add-source button{width:100%}footer{gap:12px;flex-wrap:wrap;padding-bottom:25px;margin-top:35px}.footer-brand{font-size:21px}.footer-note{font-size:10px}footer button{font-size:11px}dialog{padding:29px 22px}dialog h2{font-size:29px}.detail-facts{gap:15px}.detail-facts div{font-size:13px}.detail-actions>a,.detail-actions>button{width:100%}.empty{padding:32px 16px}.empty h3{font-size:22px}.scan-panel{gap:9px;padding:12px}.scan-panel strong{font-size:12px}.scan-panel p{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.period-selector{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}.period-selector select{border:1px solid #cfd9d0;border-radius:7px;background:#fff;color:var(--ink);font-weight:600;font-size:13px;padding:9px 34px 9px 12px;min-height:40px;cursor:pointer}.select-filter{display:flex;flex-direction:column;gap:5px}.select-filter>span{font-size:11px;color:var(--muted);font-weight:600}.select-filter select{appearance:auto;cursor:pointer;background:#fff;border:1px solid #cfd9d0;border-radius:7px;padding:10px 28px 10px 12px;font-size:13px;font-weight:600;min-height:44px;max-width:225px}.filter-bar{align-items:flex-end}.filter-bar .simple-check{margin-bottom:0}.filter-bar .text-search{margin-bottom:1px}@media(max-width:760px){.select-filter{flex:1 1 45%;min-width:0}.select-filter select{width:100%;max-width:none;font-size:14px}.period-selector{width:100%}.period-selector select{flex:1}.filter-bar .simple-check{flex:0 1 auto}}
.exact-source{overflow-wrap:anywhere;word-break:break-word}

.date-until{font-size:10px;font-weight:600;margin-top:5px;line-height:1.3}.event-period{font-weight:600;color:var(--ink)}

/* ── Où ça bouge ────────────────────────────────────────────────────────────
   La date est le héros : on ne cherche pas « un événement », on cherche « ce samedi ».
   Les jours forment une colonne de gros chiffres, les sorties s'y accrochent.
   Bleu d'encre la nuit, blanc le jour ; l'accent est le jaune des guirlandes de guinguette. */
:root{--green:#1B2436;--ink:#141C2B;--paper:#FFFFFF;--line:#E2E6EC;--muted:#5C6678;--ampoule:#B07800;--carte:#F4F6F9}
:root[data-theme="nuit"]{--ink:#EEF1F6;--paper:#0D1320;--line:#28334A;--muted:#98A4BB;--green:#FFC233;--ampoule:#FFC233;--carte:#161E2E;color-scheme:dark}
:root[data-theme="nuit"] body,:root[data-theme="nuit"] .topbar,:root[data-theme="nuit"] dialog{background:var(--paper);color:var(--ink)}
:root[data-theme="nuit"] .search-panel,:root[data-theme="nuit"] .facet-trigger,:root[data-theme="nuit"] .empty,:root[data-theme="nuit"] .select-filter select,:root[data-theme="nuit"] .period-selector select{background:var(--carte);color:var(--ink);border-color:var(--line)}
:root[data-theme="nuit"] .field input,:root[data-theme="nuit"] .field select{background:transparent;color:var(--ink)}
.brand{color:var(--green)}
.hero h1 span{color:inherit}
.brand-dot{color:var(--ampoule)}

/* la colonne des jours */
.events-list{display:block}
.journee{display:grid;grid-template-columns:76px 1fr;gap:18px;padding:20px 0;border-top:1px solid var(--line)}
.journee:first-child{border-top:0}
.jour{position:sticky;top:14px;align-self:start;text-align:right}
.jour b{display:block;font:800 42px/.86 var(--display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;color:var(--ink)}
.jour small{display:block;font-size:12.5px;color:var(--muted);margin-top:5px}
.journee.aujourdhui .jour b{color:var(--ampoule)}
.sorties{display:flex;flex-direction:column;gap:2px;min-width:0}
.event-card{display:grid!important;grid-template-columns:58px 1fr auto 40px;gap:13px;align-items:baseline;padding:12px 13px;border:0!important;border-radius:12px;background:transparent!important;box-shadow:none!important}
.event-card:hover,.event-card:focus-within{background:var(--carte)!important}
.event-card .event-date{display:none}
.event-card .event-heure:empty{visibility:hidden}
.event-card .event-heure{font-variant-numeric:tabular-nums;color:var(--muted);font-size:14.5px;white-space:nowrap}
.event-card .event-body{min-width:0;display:block}
.event-card .event-title{font:600 17.5px/1.3 var(--body);letter-spacing:-.01em;text-align:left;color:var(--ink);background:none;border:0;padding:0;cursor:pointer}
.event-card .event-title:hover{text-decoration:underline}
.event-card .event-labels{display:none}
.event-card .event-meta{margin-top:3px;display:flex;flex-wrap:wrap;gap:3px 11px;font-size:14px;color:var(--muted)}
.event-card .event-meta .icon{width:13px;height:13px;vertical-align:-2px;margin-right:3px}
.event-card .event-period{color:var(--ampoule);font-weight:600}
.event-card .event-bottom{grid-column:3;grid-row:1;display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:14px}
.event-card .price-tag{background:none;padding:0;font-size:14px;color:var(--muted)}
.event-card .price-tag.free{color:var(--ink);font-weight:600}
.event-card .source-link{font-size:12.5px;color:var(--muted)}
.event-card .heart-button{position:static;grid-column:4;grid-row:1;align-self:start;width:40px;height:40px;min-width:40px;min-height:40px;margin:-6px 0 0;display:grid;place-items:center;border-radius:50%}
.event-card .heart-button:hover{background:var(--line)}.event-card .heart-button.active{color:var(--ampoule)}.event-card .heart-button:focus-visible,.event-card .event-title:focus-visible{outline:3px solid var(--ampoule);outline-offset:2px}
/* Le cadre entier de la carte ouvre le détail (le bouton titre s'étire par-dessus tout, via ::after, jusqu'au
   cadre de la carte qui reste le seul ancêtre positionné) ; le cœur et le lien source passent par-dessus grâce
   à un z-index plus haut (les items de grille l'acceptent même en position statique), pour rester cliquables
   indépendamment sans jamais aussi ouvrir le détail. */
.event-card .event-title::after{content:'';position:absolute;inset:0;z-index:1}
.event-card .event-bottom,.event-card .heart-button{position:relative;z-index:2}
.event-card .source-link{position:relative;z-index:2}
.newsletter-cta{display:flex;align-items:center;gap:14px;background:var(--carte);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:0 0 16px}.newsletter-cta .icon{color:var(--tone,var(--green));flex-shrink:0}.newsletter-cta strong{display:block;font-size:14.5px}.newsletter-cta p{margin:2px 0 0;font-size:12.5px;color:var(--muted)}.newsletter-cta button{margin-left:auto;white-space:nowrap}
.newsletter-form{display:flex;flex-direction:column;gap:14px;margin-top:18px}.newsletter-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:var(--muted)}.newsletter-form select,.newsletter-form input{font:inherit;font-weight:500;color:var(--ink);background:var(--carte);border:1px solid var(--line);border-radius:8px;padding:0 12px;height:44px}.newsletter-form .primary{align-self:flex-start}
:root[data-theme="nuit"] .newsletter-cta{background:var(--carte);border-color:var(--line)}
/* Sur téléphone, la colonne de gauche des jours mangeait un tiers de la largeur de chaque carte (263 px utiles
   sur 390) et les cartes montaient à 234 px de haut en moyenne : la date passe en en-tête de section, pleine
   largeur, et la carte se resserre. Mesuré avant/après, voir README. */
@media(max-width:620px){
  .journee,.journee.longue{display:block;grid-template-columns:none;padding:15px 0}
  .jour{position:static;text-align:left;display:flex;align-items:baseline;gap:9px;margin:0 0 6px}
  .jour b{display:inline;font-size:21px;line-height:1}
  .jour small{display:inline;font-size:12.5px;margin:0}
  .event-card{grid-template-columns:1fr 42px;gap:0 6px;padding:9px 6px;align-items:start}
  /* visibility:hidden gardait une ligne vide sur chaque sortie sans horaire connu : là, la case disparaît
     vraiment et le titre remonte à côté du cœur. */
  .event-card .event-heure:empty{display:none}
  .event-card .event-heure{font-size:13px;line-height:1.5}
  .event-card .event-title{font-size:16.5px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .event-card .event-meta{font-size:13px;gap:1px 9px;margin-top:2px}
  .event-card .event-bottom{margin-top:3px;font-size:13px;gap:10px}
  .event-card .price-tag,.event-card .source-link{font-size:12.5px}
  /* 42 px de cible tactile : en dessous de ~44 px, le cœur devient difficile à viser, en particulier pour les
     personnes âgées visées par le cahier des charges. */
  .event-card .heart-button{width:42px;height:42px;min-width:42px;min-height:42px;margin:-4px -3px 0 0}
  .hero{padding:16px 0 12px}
  .hero h1{font-size:27px;max-width:none;margin-bottom:6px}
  .hero p{font-size:12.5px;max-width:none}
  .search-context{flex-direction:row;flex-wrap:wrap;align-items:center;gap:9px 14px;margin-bottom:14px}
  /* Le bandeau ne doit pas repousser les résultats : une ligne compacte. Le titre répétait mot pour mot le
     bouton ; on garde la description, qui dit vraiment ce qu'on recevra. */
  .newsletter-cta{gap:10px;padding:10px 12px;flex-wrap:nowrap;align-items:center}
  .newsletter-cta strong{display:none}
  .newsletter-cta p{margin:0;font-size:12.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .newsletter-cta button{margin-left:auto;padding:8px 12px;min-height:40px;font-size:12px;flex-shrink:0}
}
@media(max-width:620px){
  .journee{grid-template-columns:50px 1fr;gap:11px}
  .jour b{font-size:31px}
  .event-card{grid-template-columns:1fr 40px;gap:2px;padding:11px 8px}
  .event-card .heart-button{grid-column:2;grid-row:1}
  .event-card .event-body{grid-column:1}
  .event-card .event-heure:empty{visibility:hidden}
.event-card .event-heure{order:-1;font-size:13.5px}
  .event-card .event-bottom{grid-column:1 / -1;grid-row:auto;flex-direction:row;gap:12px;align-items:baseline}
}

.journee.longue{grid-template-columns:76px 1fr}
.journee.longue .jour b{font-size:15px;line-height:1.1;letter-spacing:-.01em;font-family:var(--body);font-weight:700;color:var(--ink)}
.journee.longue .jour small{font-size:12px}

/* thème nuit : tout ce qui était blanc en dur passe sur la surface sombre, et --green (fond des boutons) devient l'ampoule */
:root[data-theme="nuit"] .brand,:root[data-theme="nuit"] .footer-brand{color:var(--ink)}
:root[data-theme="nuit"] .primary,:root[data-theme="nuit"] .facet-count,:root[data-theme="nuit"] .map-marker{color:#1A1204}
:root[data-theme="nuit"] .map-marker{border-color:var(--paper);box-shadow:0 2px 8px #0008}
:root[data-theme="nuit"] .secondary,:root[data-theme="nuit"] #suggestions,:root[data-theme="nuit"] .facet-menu,:root[data-theme="nuit"] .facet-trigger,:root[data-theme="nuit"] .map-card,:root[data-theme="nuit"] .address-search,:root[data-theme="nuit"] .business-card,:root[data-theme="nuit"] .add-source input,:root[data-theme="nuit"] .date-shortcuts button{background:var(--carte);color:var(--ink);border-color:var(--line)}
:root[data-theme="nuit"] .date-shortcuts button.active{background:var(--ampoule);color:#1A1204}
:root[data-theme="nuit"] .map-card *,:root[data-theme="nuit"] .business-card *{color:inherit}
:root[data-theme="nuit"] .map-card a{color:var(--ampoule)}
:root[data-theme="nuit"] .leaflet-container{background:#1b2436}
:root[data-theme="nuit"] .leaflet-tile{filter:brightness(.62) contrast(1.05) saturate(.75)}
:root[data-theme="nuit"] .scan-panel{background:var(--carte);color:var(--ink)}
:root[data-theme="nuit"] .message{background:#2a2110;border-color:#5a4715;color:var(--ink)}
:root[data-theme="nuit"] dialog::backdrop{background:#000a}
:root[data-theme="nuit"] .empty{border-color:var(--line)}
:root[data-theme="nuit"] input,:root[data-theme="nuit"] select{color:var(--ink)}
:root[data-theme="nuit"] ::placeholder{color:var(--muted)}
:root[data-theme="nuit"] #saved-count{background:var(--carte);color:var(--ink);border:1px solid var(--line)}
:root[data-theme="nuit"] .text-button.active #saved-count{background:var(--ampoule);color:#1A1204;border-color:var(--ampoule)}

/* le FOMO honnête : une pastille n'apparaît que si la date la justifie */
.urgence{display:inline-block;font:700 12.5px/1 var(--body);padding:4px 8px;border-radius:999px;white-space:nowrap;letter-spacing:.01em}
.urgence.n1{background:var(--ampoule);color:#1A1204}
.urgence.n2{background:transparent;color:var(--ampoule);box-shadow:inset 0 0 0 1.5px var(--ampoule)}
.urgence.n0{background:transparent;color:var(--muted);box-shadow:inset 0 0 0 1.5px var(--line)}
:root:not([data-theme="nuit"]) .urgence.n1{background:#1B2436;color:#fff}
:root:not([data-theme="nuit"]) .urgence.n2{color:#8A5A00;box-shadow:inset 0 0 0 1.5px #B07800}
.rater-bandeau{padding:6px 0 18px}
.rater-bandeau h3{font:800 20px/1.2 var(--display);letter-spacing:-.02em;margin:0 0 10px}
.rater-liste{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.rater{display:flex;flex-direction:column;align-items:flex-start;gap:7px;text-align:left;padding:14px;border-radius:14px;border:1px solid var(--line);background:var(--carte);color:var(--ink);cursor:pointer;font:inherit}
.rater:hover{border-color:var(--ampoule)}.rater:focus-visible{outline:3px solid var(--ampoule);outline-offset:2px}
.rater b{font:700 16.5px/1.25 var(--body)}.rater small{color:var(--muted);font-size:13.5px}
.event-card .event-meta .urgence{align-self:center;margin-right:2px}

.voir-plus{align-self:flex-start;margin:6px 13px 4px;padding:10px 16px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--ink);font:600 14.5px var(--body);cursor:pointer}
.voir-plus:hover{border-color:var(--ampoule)}.voir-plus:focus-visible{outline:3px solid var(--ampoule);outline-offset:2px}

.department-note{background:var(--carte);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:0 0 16px;font-size:14.5px;color:var(--ink)}
.department-note p{margin:0 0 8px;display:flex;align-items:center;gap:8px}
.department-note .icon{width:16px;height:16px;color:var(--ampoule);flex:none}
.explorer-liste{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.explorer-liste span{color:var(--muted);font-size:13.5px}
.explorer-liste button{background:transparent;border:1px solid var(--line);border-radius:999px;padding:6px 13px;font:600 13.5px var(--body);color:var(--ink);cursor:pointer}
.explorer-liste button:hover{border-color:var(--ampoule)}
#suggestions .suggestion-departement{background:var(--carte)}
#suggestions .suggestion-departement .icon{width:14px;height:14px;margin-right:6px;vertical-align:-2px;color:var(--ampoule)}

.search-context{display:flex;flex-wrap:wrap;align-items:center;gap:14px 16px;padding:14px 0 8px}
.search-context .period-selector{gap:8px}
#type-facet .facet-trigger{background:var(--carte);color:var(--ink);border-color:var(--line);height:40px;border-radius:999px;padding:0 16px}
#type-facet .facet-trigger.active{border-color:var(--ampoule);color:var(--ink)}
#type-facet .facet-trigger .icon{width:12px;height:12px;color:var(--muted)}
#type-facet .facet-menu{width:min(420px,calc(100vw - 32px));z-index:80}
.facet-group{padding:8px 6px 4px}
.facet-group small{display:block;padding:4px 4px 2px;color:var(--muted);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.facet-group .facet-option{display:flex;align-items:center;gap:9px;padding:7px 6px;border-radius:7px;cursor:pointer;font-size:14px;color:var(--ink)}
.facet-group .facet-option:hover{background:var(--carte)}
.facet-group .facet-option input{accent-color:var(--ampoule);width:16px;height:16px;flex:none}
.search-context .simple-check{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--ink);cursor:pointer}
.search-context .simple-check input{accent-color:var(--ampoule);width:16px;height:16px}
#area-note{font-size:12.5px;color:var(--muted)}
@media(max-width:620px){.search-context{gap:10px 12px}#type-facet .facet-menu{right:0;left:auto}}

:root[data-theme="nuit"] .facet-footer{background:var(--carte);border-color:var(--line)}
.boost-page{max-width:640px;padding-bottom:60px}.boost-form{flex-direction:column;align-items:stretch;gap:16px;padding:22px}.boost-form .field{border-right:0;padding:0}.boost-form .input-wrap{background:var(--carte);border:1px solid var(--line);border-radius:8px;padding:0 12px}.boost-form .input-wrap input{height:44px}.boost-cadence{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.boost-cadence legend{font-size:11px;font-weight:700;color:var(--muted);margin-bottom:3px;padding:0}.boost-form>.primary{margin-top:6px}
.event-card.sponsored{border-color:var(--ampoule)}.event-card .sponsored-tag{position:absolute;top:-1px;left:14px;background:var(--ampoule);color:#1A1204;font-size:10px;font-weight:700;letter-spacing:.4px;padding:3px 8px;border-radius:0 0 6px 6px}

:root[data-theme="nuit"] .facet-footer .text-button{color:var(--ink)}
