| 5 |
5 |
Contact : contact@spboucher.ai |
| 6 |
6 |
Fichier : frontend/src/styles.css |
| 7 |
7 |
Rôle : CSS local Job·Ka — s'appuie sur le design system commun Groupe KA |
| 8 |
|
− (ka/tokens.css, importé AVANT ce fichier dans main.tsx). Ici : |
| 9 |
|
− seulement l'accent de la marque + les classes métier (offres, |
| 10 |
|
− filtres, carte) au style « éditorial sharp » du groupe (bordures |
| 11 |
|
− encre 1,5 px + ombres décalées dures, étiquettes mono). Le socle |
| 12 |
|
− (body, grain, sélection, .container, .btn, .card, .chip, |
| 13 |
|
− ka-footer…) vit dans tokens.css. |
|
8 |
+ (ka/tokens.css, importé AVANT ce fichier dans main.tsx). Refonte |
|
9 |
+ « éditoriale premium » 2026-08-25 : moins de boîtes bordées, plus |
|
10 |
+ de filets fins et de hiérarchie typographique. Hero avec recherche |
|
11 |
+ centrale, filtres en rail discret + panneau bas mobile, offres en |
|
12 |
+ rangées éditoriales (salaire en exergue). Le socle (body, grain, |
|
13 |
+ .container, .btn, .card, .chip, ka-footer…) vit dans tokens.css. |
| 14 |
14 |
Créé : 2026-08-17 Modifié : 2026-08-25 |
| 15 |
15 |
============================================================================= |
| 16 |
16 |
*/ |
| 24 |
24 |
--lime: var(--accent); |
| 25 |
25 |
--lime-soft: var(--accent-soft); |
| 26 |
26 |
|
| 27 |
|
− /* ---- alias hérités du CSS v1 (classes métier ci-dessous) ---- */ |
|
27 |
+ /* ---- alias hérités du CSS v1 ---- */ |
| 28 |
28 |
--brand: var(--ink); |
| 29 |
29 |
--border: var(--line); |
| 30 |
30 |
--green-soft: #e7f2ec; |
| 86 |
86 |
} |
| 87 |
87 |
.auth-user button:hover { color: #fff; text-decoration: underline; } |
| 88 |
88 |
|
| 89 |
|
−/* bascule mobile du header : sous 980 px la nav passe sur sa propre rangée |
| 90 |
|
− (défilement horizontal contenu — jamais de débordement de page) */ |
|
89 |
+/* bascule mobile du header : sous 980 px la nav passe sur sa propre rangée */ |
| 91 |
90 |
@media (max-width: 979px) { |
| 92 |
91 |
nav.main { |
| 93 |
92 |
order: 10; flex-basis: 100%; margin-left: 0; |
| 105 |
104 |
} |
| 106 |
105 |
|
| 107 |
106 |
/* --- menu mobile (hamburger) ------------------------------------------------- |
| 108 |
|
− Sous 700 px, la nav en flex-wrap (2-3 lignes) est remplacée par un bouton |
| 109 |
|
− 44×44 + panneau déroulant sous le header ; backdrop fixe rendu HORS du |
| 110 |
|
− header (frère dans App.tsx), verrou de scroll géré côté React. */ |
|
107 |
+ Sous 700 px, panneau PLEIN ÉCRAN fixed inset:0 (KA Nav v2, 2026-08-25), |
|
108 |
+ backdrop fixe rendu HORS du header, verrou de scroll géré côté React. */ |
| 111 |
109 |
.menu-btn { |
| 112 |
110 |
display: none; width: 44px; height: 44px; margin-left: 4px; |
| 113 |
111 |
flex-direction: column; align-items: center; justify-content: center; gap: 5px; |
| 122 |
120 |
.menu-btn[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); } |
| 123 |
121 |
.menu-btn[aria-expanded="true"] span:nth-child(2) { opacity: 0; } |
| 124 |
122 |
.menu-btn[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); } |
| 125 |
|
−/* KA Nav v2 (2026-08-25) : panneau PLEIN ÉCRAN en position:fixed inset:0 — |
| 126 |
|
− visible peu importe la position de scroll (l'ancien dropdown absolute 480px |
| 127 |
|
− se dessinait sous le header). Le rang du header (marque + burger→✕) reste |
| 128 |
|
− au-dessus du panneau via .menu-open .container. */ |
| 129 |
123 |
.mobile-menu { |
| 130 |
124 |
display: none; position: fixed; inset: 0; |
| 131 |
125 |
background: var(--brand); |
| 135 |
129 |
} |
| 136 |
130 |
.mobile-menu.open { animation: mm-in 0.16s ease; } |
| 137 |
131 |
@keyframes mm-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } } |
| 138 |
|
−/* burger masqué à l'ouverture : la fermeture passe par le ✕ fixe du panneau |
| 139 |
|
− (le burger vit dans le header — hors écran si le header n'est pas épinglé) */ |
|
132 |
+/* burger masqué à l'ouverture : la fermeture passe par le ✕ fixe du panneau */ |
| 140 |
133 |
header.site.menu-open .menu-btn { visibility: hidden; } |
| 141 |
|
−/* bouton de fermeture du panneau : fixe en haut à droite du viewport */ |
| 142 |
134 |
.mm-close { |
| 143 |
135 |
position: fixed; top: 10px; right: 14px; z-index: 2; |
| 144 |
136 |
width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; |
| 157 |
149 |
font-family: var(--font-mono, ui-monospace, monospace); font-size: 11px; |
| 158 |
150 |
font-weight: 700; color: var(--accent-soft); |
| 159 |
151 |
} |
|
152 |
+/* entrée en cascade des liens : le panneau prend vie sans devenir lent */ |
|
153 |
+.mobile-menu.open a { animation: mm-link 0.32s cubic-bezier(0.22, 0.7, 0.3, 1) both; } |
|
154 |
+.mobile-menu.open a:nth-child(2) { animation-delay: 0.03s; } |
|
155 |
+.mobile-menu.open a:nth-child(3) { animation-delay: 0.06s; } |
|
156 |
+.mobile-menu.open a:nth-child(4) { animation-delay: 0.09s; } |
|
157 |
+.mobile-menu.open a:nth-child(5) { animation-delay: 0.12s; } |
|
158 |
+.mobile-menu.open a:nth-child(6) { animation-delay: 0.15s; } |
|
159 |
+.mobile-menu.open a:nth-child(7) { animation-delay: 0.18s; } |
|
160 |
+.mobile-menu.open a:nth-child(8) { animation-delay: 0.21s; } |
|
161 |
+@keyframes mm-link { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } } |
| 160 |
162 |
.mobile-menu a:last-child { border-bottom: 0; } |
| 161 |
163 |
.mobile-menu a:hover { color: #fff; text-decoration: none; } |
| 162 |
164 |
.mobile-menu a.active { color: var(--accent-soft); } |
| 170 |
172 |
.mobile-menu.open { display: flex; } |
| 171 |
173 |
} |
| 172 |
174 |
|
| 173 |
|
−/* --- héros (encre — identité Job·Ka) ---------------------------------------- */ |
| 174 |
|
−.hero { background: var(--brand); color: #fff; padding: 42px 0 36px; } |
|
175 |
+/* --- héros éditorial (encre + halo cyan, recherche centrale) ------------------ */ |
|
176 |
+.hero { |
|
177 |
+ background: |
|
178 |
+ radial-gradient(680px 340px at 85% -60px, rgb(12 133 153 / 28%), transparent 70%), |
|
179 |
+ var(--brand); |
|
180 |
+ color: #fff; |
|
181 |
+ padding: 54px 0 46px; |
|
182 |
+} |
| 175 |
183 |
.hero .kicker { color: var(--accent-soft); } |
| 176 |
|
−.hero .kicker::before { background: var(--accent); } |
| 177 |
|
−.hero h1 { margin: 6px 0 8px; font-size: clamp(28px, 2.6vw + 16px, 42px); font-weight: 700; letter-spacing: -0.03em; color: #fff; line-height: 1.08; } |
|
184 |
+.hero .kicker::before { display: none; } |
|
185 |
+.hero .kicker .pulse { |
|
186 |
+ width: 8px; height: 8px; border-radius: 50%; background: var(--accent); |
|
187 |
+ box-shadow: 0 0 0 0 rgb(12 133 153 / 55%); |
|
188 |
+ animation: pulse 2.2s ease-out infinite; |
|
189 |
+} |
|
190 |
+@keyframes pulse { |
|
191 |
+ 0% { box-shadow: 0 0 0 0 rgb(12 133 153 / 55%); } |
|
192 |
+ 70% { box-shadow: 0 0 0 9px rgb(12 133 153 / 0%); } |
|
193 |
+ 100% { box-shadow: 0 0 0 0 rgb(12 133 153 / 0%); } |
|
194 |
+} |
|
195 |
+.hero h1 { |
|
196 |
+ margin: 14px 0 10px; |
|
197 |
+ font-size: clamp(32px, 3.4vw + 16px, 54px); |
|
198 |
+ font-weight: 700; letter-spacing: -0.035em; color: #fff; line-height: 1.04; |
|
199 |
+} |
| 178 |
200 |
.hero h1 em { |
| 179 |
201 |
/* surligné d'accent incliné — signature du groupe (.hl), déclinaison encre */ |
| 180 |
202 |
display: inline-block; font-style: normal; background: var(--accent); |
| 181 |
|
− color: var(--on-accent); border-radius: 8px; padding: 0 10px 2px; |
|
203 |
+ color: var(--on-accent); border-radius: 10px; padding: 0 14px 3px; |
| 182 |
204 |
transform: rotate(-1deg); |
| 183 |
205 |
} |
| 184 |
|
−.hero p { margin: 0 0 22px; color: #b9c2be; max-width: 640px; } |
|
206 |
+.hero-lede { margin: 0 0 26px; color: #b9c2be; max-width: 560px; font-size: 15.5px; } |
| 185 |
207 |
|
| 186 |
|
−/* --- filtres (champs sharp : bordure encre + focus accent décalé) ------------ */ |
| 187 |
|
−.filters { display: flex; flex-wrap: wrap; gap: 10px; } |
| 188 |
|
−.filters input[type="search"], .filters select { |
| 189 |
|
− height: 44px; padding: 0 12px; border-radius: var(--r-ctl); |
| 190 |
|
− border: 1.5px solid var(--ink); |
| 191 |
|
− background: var(--surface); color: var(--ink); font: inherit; min-width: 130px; |
|
208 |
+/* barre de recherche centrale — LA porte d'entrée du site */ |
|
209 |
+.searchbar { |
|
210 |
+ display: flex; align-items: center; gap: 4px; |
|
211 |
+ max-width: 720px; min-height: 62px; padding: 6px 6px 6px 18px; |
|
212 |
+ background: var(--surface); border: 2px solid var(--ink); |
|
213 |
+ border-radius: 14px; |
|
214 |
+ box-shadow: 8px 8px 0 rgb(12 133 153 / 32%); |
|
215 |
+ transition: box-shadow 0.18s, transform 0.18s; |
|
216 |
+} |
|
217 |
+.searchbar:focus-within { |
|
218 |
+ box-shadow: 8px 8px 0 var(--accent); |
|
219 |
+ transform: translate(-1px, -1px); |
|
220 |
+} |
|
221 |
+.searchbar svg { |
|
222 |
+ width: 21px; height: 21px; flex-shrink: 0; |
|
223 |
+ fill: none; stroke: var(--ink-3); stroke-width: 2.2; stroke-linecap: round; |
|
224 |
+} |
|
225 |
+.searchbar input { |
|
226 |
+ flex: 1; min-width: 0; border: 0; background: none; padding: 10px 12px; |
|
227 |
+ font: 500 17px/1.3 var(--font-body); color: var(--ink); |
|
228 |
+} |
|
229 |
+.searchbar input:focus { outline: none; } |
|
230 |
+.searchbar input::placeholder { color: var(--ink-3); } |
|
231 |
+.searchbar input::-webkit-search-cancel-button { -webkit-appearance: none; } |
|
232 |
+.searchbar button { |
|
233 |
+ flex-shrink: 0; min-height: 48px; padding: 0 22px; |
|
234 |
+ border: 0; border-radius: 9px; cursor: pointer; |
|
235 |
+ background: var(--accent); color: var(--on-accent); |
|
236 |
+ font-family: var(--font-display); font-weight: 700; font-size: 15px; |
|
237 |
+ letter-spacing: -0.01em; |
|
238 |
+ transition: background 0.15s; |
|
239 |
+} |
|
240 |
+.searchbar button:hover { background: var(--accent-deep); } |
|
241 |
+ |
|
242 |
+/* chiffres du marché en direct sous la recherche */ |
|
243 |
+.hero-stats { |
|
244 |
+ display: flex; flex-wrap: wrap; gap: 6px 26px; margin: 22px 0 0; |
|
245 |
+ font-family: var(--font-mono); font-size: 11px; font-weight: 500; |
|
246 |
+ text-transform: uppercase; letter-spacing: 0.08em; color: #8f9a95; |
| 192 |
247 |
} |
| 193 |
|
−.filters input[type="search"]:focus, .filters select:focus { |
| 194 |
|
− outline: none; box-shadow: 3px 3px 0 var(--accent); |
|
248 |
+.hero-stats b { |
|
249 |
+ color: var(--accent-soft); font-weight: 700; font-size: 13px; |
|
250 |
+ font-variant-numeric: tabular-nums; letter-spacing: 0; |
|
251 |
+} |
|
252 |
+.hero-stats .hs-sync { opacity: 0.65; } |
|
253 |
+@media (max-width: 700px) { |
|
254 |
+ .hero { padding: 40px 0 36px; } |
|
255 |
+ .searchbar { min-height: 56px; padding-left: 14px; border-radius: 12px; } |
|
256 |
+ .searchbar button { padding: 0 16px; font-size: 14px; min-height: 44px; } |
|
257 |
+ .hero-stats { gap: 4px 18px; } |
|
258 |
+} |
|
259 |
+ |
|
260 |
+/* --- zone de filtres sous le héros ------------------------------------------- |
|
261 |
+ Desktop : rail de sélecteurs discrets (pas de formulaire lourd). |
|
262 |
+ Mobile : bouton « Filtres » → panneau bas + bascule salaire. */ |
|
263 |
+.filter-zone { |
|
264 |
+ background: var(--paper); |
|
265 |
+ border-bottom: 1px solid var(--line); |
|
266 |
+ padding: 12px 0 14px; |
|
267 |
+} |
|
268 |
+.filter-rail { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } |
|
269 |
+.fr-label { |
|
270 |
+ font-family: var(--font-mono); font-size: 10px; font-weight: 700; |
|
271 |
+ text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-3); |
|
272 |
+ margin-right: 4px; |
|
273 |
+} |
|
274 |
+.f-select { |
|
275 |
+ appearance: none; -webkit-appearance: none; |
|
276 |
+ max-width: 168px; height: 38px; padding: 0 28px 0 13px; |
|
277 |
+ border: 1px solid var(--line-strong); border-radius: var(--r-pill); |
|
278 |
+ background: transparent no-repeat right 11px center; |
|
279 |
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%234d5551' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E"); |
|
280 |
+ font: 600 13px/1 var(--font-body); color: var(--ink-2); |
|
281 |
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; |
|
282 |
+ cursor: pointer; transition: border-color 0.12s, background-color 0.12s; |
|
283 |
+} |
|
284 |
+.f-select:hover { border-color: var(--ink); color: var(--ink); } |
|
285 |
+.f-select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgb(12 133 153 / 15%); } |
|
286 |
+.f-select[data-on="1"] { |
|
287 |
+ background-color: var(--ink); border-color: var(--ink); color: #f5f3ee; |
|
288 |
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23def0f4' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E"); |
|
289 |
+} |
|
290 |
+.f-toggle { |
|
291 |
+ display: inline-flex; align-items: center; gap: 8px; |
|
292 |
+ height: 38px; padding: 0 14px; cursor: pointer; user-select: none; |
|
293 |
+ border: 1px solid var(--line-strong); border-radius: var(--r-pill); |
|
294 |
+ font: 600 13px/1 var(--font-body); color: var(--ink-2); white-space: nowrap; |
|
295 |
+ transition: border-color 0.12s, background-color 0.12s; |
|
296 |
+} |
|
297 |
+.f-toggle:hover { border-color: var(--ink); color: var(--ink); } |
|
298 |
+.f-toggle input { accent-color: var(--accent); width: 15px; height: 15px; margin: 0; } |
|
299 |
+.f-toggle[data-on="1"] { background: var(--accent); border-color: var(--accent-deep); color: var(--on-accent); } |
|
300 |
+.f-toggle[data-on="1"] input { accent-color: #fff; } |
|
301 |
+ |
|
302 |
+/* mobile : bouton d'ouverture du panneau */ |
|
303 |
+.filter-mobile { display: none; gap: 8px; align-items: center; } |
|
304 |
+.fm-btn { |
|
305 |
+ display: inline-flex; align-items: center; gap: 9px; |
|
306 |
+ height: 44px; padding: 0 16px; cursor: pointer; |
|
307 |
+ border: 1.5px solid var(--ink); border-radius: var(--r-pill); |
|
308 |
+ background: var(--surface); color: var(--ink); |
|
309 |
+ font-family: var(--font-display); font-weight: 700; font-size: 14px; |
| 195 |
310 |
} |
| 196 |
|
−.filters input[type="search"] { flex: 1 1 220px; } |
| 197 |
|
−.filters input[type="search"]::placeholder { color: var(--ink-3); } |
| 198 |
|
−.filters label.check { |
| 199 |
|
− display: inline-flex; align-items: center; gap: 7px; background: var(--surface); |
| 200 |
|
− color: var(--ink); /* le héros est blanc sur encre — ne pas hériter */ |
| 201 |
|
− border: 1.5px solid var(--ink); border-radius: var(--r-ctl); padding: 0 14px; |
| 202 |
|
− height: 44px; cursor: pointer; user-select: none; white-space: nowrap; |
|
311 |
+.fm-btn svg { |
|
312 |
+ width: 17px; height: 17px; fill: none; stroke: currentColor; |
|
313 |
+ stroke-width: 1.8; stroke-linecap: round; |
|
314 |
+} |
|
315 |
+.fm-btn svg circle { fill: var(--surface); } |
|
316 |
+.fm-btn b { |
|
317 |
+ display: inline-flex; align-items: center; justify-content: center; |
|
318 |
+ min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; |
|
319 |
+ background: var(--accent); color: var(--on-accent); |
|
320 |
+ font-family: var(--font-mono); font-size: 11px; |
|
321 |
+} |
|
322 |
+@media (max-width: 899px) { |
|
323 |
+ .filter-rail { display: none; } |
|
324 |
+ .filter-mobile { display: flex; } |
|
325 |
+ .filter-mobile .f-toggle { height: 44px; } |
|
326 |
+} |
|
327 |
+ |
|
328 |
+/* puces des filtres actifs — retrait en un geste */ |
|
329 |
+.filter-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 11px; } |
|
330 |
+.fchip { |
|
331 |
+ display: inline-flex; align-items: center; gap: 8px; |
|
332 |
+ min-height: 30px; padding: 3px 11px; cursor: pointer; |
|
333 |
+ border: 1px solid var(--accent); border-radius: var(--r-pill); |
|
334 |
+ background: var(--accent-soft); color: var(--accent-deep); |
|
335 |
+ font-family: var(--font-mono); font-size: 11px; font-weight: 700; |
|
336 |
+ letter-spacing: 0.03em; |
|
337 |
+} |
|
338 |
+.fchip span { font-size: 10px; opacity: 0.7; } |
|
339 |
+.fchip:hover { background: var(--accent); color: var(--on-accent); } |
|
340 |
+.fchip:hover span { opacity: 1; } |
|
341 |
+.fchip-clear { |
|
342 |
+ border: 0; background: none; cursor: pointer; min-height: 30px; padding: 0 6px; |
|
343 |
+ font-family: var(--font-mono); font-size: 10.5px; font-weight: 700; |
|
344 |
+ text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-3); |
|
345 |
+ text-decoration: underline; text-underline-offset: 3px; |
|
346 |
+} |
|
347 |
+.fchip-clear:hover { color: var(--ink); } |
|
348 |
+ |
|
349 |
+/* --- panneau bas de filtres (mobile) ------------------------------------------ */ |
|
350 |
+.fsheet { |
|
351 |
+ position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-modal, 900); |
|
352 |
+ display: flex; flex-direction: column; |
|
353 |
+ max-height: 88vh; max-height: 88dvh; |
|
354 |
+ background: var(--surface); |
|
355 |
+ border-top: 2px solid var(--ink); |
|
356 |
+ border-radius: 18px 18px 0 0; |
|
357 |
+ transform: translateY(103%); visibility: hidden; |
|
358 |
+ transition: transform 0.28s cubic-bezier(0.32, 0.72, 0.28, 1), visibility 0.28s; |
|
359 |
+} |
|
360 |
+.fsheet.open { transform: none; visibility: visible; } |
|
361 |
+.fs-head { |
|
362 |
+ display: flex; align-items: center; justify-content: space-between; |
|
363 |
+ padding: 15px 12px 13px 20px; border-bottom: 1px solid var(--line); |
|
364 |
+} |
|
365 |
+.fs-close { |
|
366 |
+ width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; |
|
367 |
+ border: 1px solid var(--line-strong); border-radius: 999px; background: none; |
|
368 |
+ color: var(--ink); font-size: 15px; font-weight: 700; cursor: pointer; padding: 0; |
|
369 |
+} |
|
370 |
+.fs-body { |
|
371 |
+ padding: 16px 20px; overflow-y: auto; -webkit-overflow-scrolling: touch; |
|
372 |
+ overscroll-behavior: contain; display: grid; gap: 10px; |
|
373 |
+} |
|
374 |
+.fs-body .f-select { |
|
375 |
+ max-width: none; width: 100%; height: 48px; border-radius: 10px; |
|
376 |
+ font-size: 16px; background-color: var(--surface-2); |
|
377 |
+ border-color: var(--line-strong); |
|
378 |
+} |
|
379 |
+.fs-body .f-select[data-on="1"] { background-color: var(--ink); border-color: var(--ink); } |
|
380 |
+.fs-body .f-toggle { height: 48px; border-radius: 10px; font-size: 16px; justify-content: flex-start; } |
|
381 |
+.fs-foot { |
|
382 |
+ display: flex; gap: 10px; padding: 13px 20px calc(15px + env(safe-area-inset-bottom)); |
|
383 |
+ border-top: 1px solid var(--line); |
|
384 |
+} |
|
385 |
+.fs-foot .btn { flex: 1; } |
|
386 |
+@media (min-width: 900px) { .fsheet { display: none; } } |
|
387 |
+ |
|
388 |
+/* --- tête de résultats --------------------------------------------------------- */ |
|
389 |
+.results-head { |
|
390 |
+ display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; |
|
391 |
+ gap: 6px 16px; margin: 26px 0 10px; |
|
392 |
+} |
|
393 |
+.results-count { |
|
394 |
+ margin: 0; font-family: var(--font-display); font-weight: 700; |
|
395 |
+ font-size: clamp(19px, 1.4vw + 13px, 24px); letter-spacing: -0.02em; |
|
396 |
+ font-variant-numeric: tabular-nums; |
|
397 |
+} |
|
398 |
+.sort-quiet { |
|
399 |
+ display: inline-flex; align-items: center; gap: 6px; |
|
400 |
+ font-family: var(--font-mono); font-size: 10.5px; font-weight: 700; |
|
401 |
+ text-transform: uppercase; letter-spacing: 0.07em; color: var(--ink-3); |
| 203 |
402 |
} |
| 204 |
|
−.filters label.check:has(input:checked) { |
| 205 |
|
− background: var(--accent-soft); box-shadow: 3px 3px 0 var(--accent); |
|
403 |
+.sort-quiet select { |
|
404 |
+ border: 0; background: none; cursor: pointer; padding: 8px 0; |
|
405 |
+ font-family: var(--font-mono); font-size: 11px; font-weight: 700; |
|
406 |
+ text-transform: uppercase; letter-spacing: 0.07em; color: var(--ink); |
|
407 |
+ text-decoration: underline; text-underline-offset: 3px; |
| 206 |
408 |
} |
| 207 |
|
−/* champs >=16px sur mobile : évite le zoom automatique d'iOS au focus */ |
|
409 |
+.sort-quiet select:focus { outline: none; color: var(--accent-deep); } |
|
410 |
+ |
|
411 |
+/* --- liste d'offres : rangées éditoriales (fini les cartes bordées) ------------- */ |
|
412 |
+.job-list { margin: 0 0 30px; border-top: 2px solid var(--ink); } |
|
413 |
+.job-row { |
|
414 |
+ position: relative; |
|
415 |
+ display: grid; grid-template-columns: minmax(0, 1fr) auto auto; |
|
416 |
+ grid-template-areas: "main side fav"; |
|
417 |
+ gap: 2px 26px; align-items: start; |
|
418 |
+ padding: 19px 10px 19px 18px; |
|
419 |
+ border-bottom: 1px solid var(--line); |
|
420 |
+ color: inherit; text-decoration: none; |
|
421 |
+ transition: background 0.14s; |
|
422 |
+} |
|
423 |
+.job-row .jr-main { grid-area: main; } |
|
424 |
+.job-row .jr-side { grid-area: side; } |
|
425 |
+.job-row .fav-btn { grid-area: fav; } |
|
426 |
+.job-row::before { |
|
427 |
+ content: ""; position: absolute; left: 0; top: -1px; bottom: -1px; width: 3px; |
|
428 |
+ background: var(--accent); transform: scaleY(0); transform-origin: top; |
|
429 |
+ transition: transform 0.16s ease; |
|
430 |
+} |
|
431 |
+.job-row:hover { background: var(--surface); text-decoration: none; } |
|
432 |
+.job-row:hover::before { transform: scaleY(1); } |
|
433 |
+.jr-main { min-width: 0; } |
|
434 |
+.jr-title { |
|
435 |
+ margin: 0; font-family: var(--font-display); font-size: 18px; font-weight: 700; |
|
436 |
+ letter-spacing: -0.02em; line-height: 1.22; color: var(--ink); |
|
437 |
+} |
|
438 |
+.job-row:hover .jr-title { |
|
439 |
+ text-decoration: underline; text-decoration-color: var(--accent); |
|
440 |
+ text-decoration-thickness: 2px; text-underline-offset: 3px; |
|
441 |
+} |
|
442 |
+.jr-new { |
|
443 |
+ display: inline-block; vertical-align: 2px; margin-right: 9px; |
|
444 |
+ padding: 2px 8px 3px; border-radius: 5px; |
|
445 |
+ background: var(--accent); color: var(--on-accent); |
|
446 |
+ font-family: var(--font-mono); font-size: 9.5px; font-weight: 700; |
|
447 |
+ text-transform: uppercase; letter-spacing: 0.07em; |
|
448 |
+} |
|
449 |
+.jr-org { margin: 5px 0 0; font-size: 14px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; } |
|
450 |
+.jr-org .employer { font-weight: 600; color: var(--ink); } |
|
451 |
+.jr-city { color: var(--ink-3); } |
|
452 |
+.jr-city::before { content: "· "; } |
|
453 |
+.jr-direct { |
|
454 |
+ font-family: var(--font-mono); font-size: 9.5px; font-weight: 700; |
|
455 |
+ text-transform: uppercase; letter-spacing: 0.07em; color: var(--accent-deep); |
|
456 |
+} |
|
457 |
+.jr-direct::before { content: "✓ "; } |
|
458 |
+.jr-tags { |
|
459 |
+ margin: 7px 0 0; display: flex; flex-wrap: wrap; gap: 3px 7px; |
|
460 |
+ font-family: var(--font-mono); font-size: 10.5px; font-weight: 500; |
|
461 |
+ text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-3); |
|
462 |
+} |
|
463 |
+.jr-tags span:not(:last-child)::after { content: " ·"; color: var(--line-strong); } |
|
464 |
+.jr-side { |
|
465 |
+ display: flex; flex-direction: column; align-items: flex-end; gap: 3px; |
|
466 |
+ text-align: right; padding-top: 2px; |
|
467 |
+} |
|
468 |
+.jr-salary { |
|
469 |
+ font-family: var(--font-display); font-weight: 700; font-size: 16.5px; |
|
470 |
+ letter-spacing: -0.01em; color: var(--accent-deep); |
|
471 |
+ font-variant-numeric: tabular-nums; white-space: nowrap; |
|
472 |
+} |
|
473 |
+.jr-yearly { font-size: 12px; color: var(--ink-3); white-space: nowrap; } |
|
474 |
+.jr-nosalary { |
|
475 |
+ font-family: var(--font-mono); font-size: 10px; font-weight: 500; |
|
476 |
+ text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-3); |
|
477 |
+ padding-top: 4px; |
|
478 |
+} |
|
479 |
+.jr-when { margin-top: 4px; font-size: 12px; color: var(--ink-3); white-space: nowrap; } |
| 208 |
480 |
@media (max-width: 700px) { |
| 209 |
|
− .filters input[type="search"], .filters select, .filters label.check { font-size: 16px; } |
|
481 |
+ .job-row { |
|
482 |
+ grid-template-columns: minmax(0, 1fr) auto; |
|
483 |
+ grid-template-areas: "main fav" "side side"; |
|
484 |
+ padding: 17px 6px 17px 14px; |
|
485 |
+ } |
|
486 |
+ .jr-side { |
|
487 |
+ grid-column: 1 / -1; flex-direction: row; align-items: baseline; |
|
488 |
+ flex-wrap: wrap; gap: 3px 14px; text-align: left; margin-top: 9px; padding-top: 0; |
|
489 |
+ } |
|
490 |
+ .jr-when { margin: 0 0 0 auto; } |
|
491 |
+ .jr-salary { font-size: 15.5px; } |
| 210 |
492 |
} |
| 211 |
493 |
|
| 212 |
|
−/* --- cartes d'offres (sharp : bordure encre + ombre décalée) --------------------- */ |
| 213 |
|
−.job-list { display: grid; gap: 14px; margin: 22px 0; } |
| 214 |
|
−.job-card { |
| 215 |
|
− display: block; background: var(--surface); border: 1.5px solid var(--ink); |
| 216 |
|
− border-radius: var(--r-card); box-shadow: var(--shadow-off-soft); |
| 217 |
|
− padding: 18px 20px; color: inherit; |
| 218 |
|
− transition: transform 0.15s, box-shadow 0.15s; |
|
494 |
+/* cœur ♥ favoris — discret dans la rangée, plein quand actif */ |
|
495 |
+.fav-btn { |
|
496 |
+ width: 38px; height: 38px; padding: 0; flex-shrink: 0; |
|
497 |
+ display: inline-flex; align-items: center; justify-content: center; |
|
498 |
+ border: 1px solid var(--line-strong); border-radius: 999px; cursor: pointer; |
|
499 |
+ background: transparent; color: var(--ink-2); |
|
500 |
+ transition: transform 0.12s ease, background 0.12s ease, border-color 0.12s ease; |
| 219 |
501 |
} |
| 220 |
|
−.job-card:hover { transform: translate(-2px, -2px); box-shadow: var(--shadow-off-mid); text-decoration: none; } |
| 221 |
|
−.job-card h3 { margin: 0 0 2px; font-family: var(--font-display); font-size: 17.5px; font-weight: 700; color: var(--ink); letter-spacing: -0.02em; } |
| 222 |
|
−.job-card:hover h3 { text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2px; text-underline-offset: 3px; } |
| 223 |
|
−.job-card .employer { color: var(--accent-deep); font-weight: 600; } |
| 224 |
|
−.job-card .meta { color: var(--ink-3); font-size: 13px; margin-top: 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; } |
|
502 |
+.fav-btn svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linejoin: round; } |
|
503 |
+.fav-btn:hover { transform: scale(1.08); background: var(--accent-soft); border-color: var(--accent); color: var(--accent-deep); } |
|
504 |
+.fav-btn.on { background: var(--accent); border-color: var(--accent-deep); color: var(--on-accent); } |
|
505 |
+.fav-btn.on svg { fill: currentColor; } |
|
506 |
+/* fiche d'offre : le cœur à droite du titre */ |
|
507 |
+.fav-btn.big { width: 44px; height: 44px; } |
|
508 |
+.fav-btn.big svg { width: 21px; height: 21px; } |
| 225 |
509 |
|
| 226 |
|
−/* étiquettes façon .chip du groupe : mono, uppercase, pilule bordée */ |
|
510 |
+/* étiquettes de la fiche : mono, calmes, filets fins */ |
| 227 |
511 |
.badge { |
| 228 |
512 |
display: inline-flex; align-items: center; gap: 5px; |
| 229 |
513 |
padding: 3px 10px; border-radius: var(--r-pill); |
| 230 |
514 |
font-family: var(--font-mono); font-size: 10.5px; font-weight: 700; |
| 231 |
515 |
text-transform: uppercase; letter-spacing: 0.05em; |
| 232 |
516 |
background: var(--surface-2); color: var(--ink-2); |
| 233 |
|
− border: 1.5px solid var(--line); |
|
517 |
+ border: 1px solid var(--line); |
| 234 |
518 |
} |
| 235 |
519 |
.badge.salary { background: var(--green-soft); color: var(--green); border-color: var(--green); } |
| 236 |
520 |
.badge.mode { background: var(--accent-soft); color: var(--accent-deep); border-color: var(--line); } |
| 237 |
521 |
.badge.direct { background: transparent; border-color: var(--accent); color: var(--accent-deep); } |
| 238 |
522 |
.badge.new { background: var(--accent); color: var(--on-accent); border-color: var(--accent-deep); } |
| 239 |
|
−.badge.seniority { background: var(--surface-2); color: var(--ink); border-color: var(--ink); } |
|
523 |
+.badge.seniority { background: var(--surface-2); color: var(--ink); border-color: var(--line-strong); } |
| 240 |
524 |
.badge.salary .approx { font-style: normal; font-weight: 600; opacity: 0.75; margin-left: 5px; text-transform: none; letter-spacing: 0; } |
| 241 |
525 |
|
| 242 |
|
−/* pied de carte : fraîcheur · avantages · plateforme source */ |
| 243 |
|
−.jc-foot { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12.5px; } |
| 244 |
|
−.jc-foot .ats { font-family: var(--font-mono); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.8; } |
|
526 |
+/* --- fiche d'offre : mise en page éditoriale ouverte (fini la grosse boîte) ----- */ |
|
527 |
+.sheet { padding: 34px 0 10px; margin: 0 0 20px; } |
|
528 |
+.sheet h1 { |
|
529 |
+ margin: 0; font-size: clamp(26px, 2.6vw + 14px, 40px); |
|
530 |
+ letter-spacing: -0.03em; line-height: 1.08; |
|
531 |
+} |
|
532 |
+.sheet .facts { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 8px; } |
|
533 |
+.sheet .description { |
|
534 |
+ white-space: pre-line; color: var(--ink-2); |
|
535 |
+ max-width: 760px; font-size: 15.5px; line-height: 1.62; |
|
536 |
+} |
|
537 |
+.sheet .btn-apply { |
|
538 |
+ min-height: 52px; padding: 12px 26px; font-size: 15.5px; |
|
539 |
+ background: var(--accent); color: var(--on-accent); border-color: var(--accent-deep); |
|
540 |
+} |
|
541 |
+.sheet .btn-apply:hover { background: var(--accent-deep); } |
| 245 |
542 |
|
| 246 |
|
−/* --- métriques « En un coup d'œil » (fiche d'offre) -------------------------- */ |
|
543 |
+/* métriques « En un coup d'œil » : blocs ouverts à filet supérieur (éditorial) */ |
| 247 |
544 |
.metrics { |
| 248 |
|
− display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); |
| 249 |
|
− gap: 12px; margin: 12px 0 22px; |
|
545 |
+ display: grid; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); |
|
546 |
+ gap: 18px 26px; margin: 14px 0 26px; |
| 250 |
547 |
} |
| 251 |
|
−.metric { |
| 252 |
|
− background: var(--surface-2); border: 1.5px solid var(--line); |
| 253 |
|
− border-radius: var(--r-card); padding: 13px 15px; |
| 254 |
|
−} |
| 255 |
|
−.metric .m-value { font-family: var(--font-display); font-size: 19px; font-weight: 700; letter-spacing: -0.02em; } |
|
548 |
+.metric { border-top: 2px solid var(--ink); padding: 11px 2px 0; } |
|
549 |
+.metric .m-value { font-family: var(--font-display); font-size: 20px; font-weight: 700; letter-spacing: -0.02em; } |
| 256 |
550 |
.metric .m-label { color: var(--ink-3); font-family: var(--font-mono); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; margin-top: 3px; } |
| 257 |
551 |
.metric .m-sub { color: var(--ink-3); font-size: 12px; margin-top: 6px; line-height: 1.45; } |
| 258 |
552 |
.delta-up { color: var(--green); } |
| 268 |
562 |
.salary-history { margin: 8px 0 0; padding-left: 18px; } |
| 269 |
563 |
.salary-history li { margin: 3px 0; font-size: 14px; } |
| 270 |
564 |
|
| 271 |
|
−/* --- fiche ------------------------------------------------------------------------- */ |
| 272 |
|
−.sheet { |
| 273 |
|
− background: var(--surface); border: 1.5px solid var(--ink); |
| 274 |
|
− border-radius: var(--r-card); box-shadow: var(--shadow-off-soft); |
| 275 |
|
− padding: 28px 32px; margin: 24px 0; |
| 276 |
|
−} |
| 277 |
|
−.sheet h1 { margin: 0 0 4px; font-size: 24px; letter-spacing: -0.3px; } |
| 278 |
|
−.sheet .facts { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 20px; } |
| 279 |
|
−.sheet .description { white-space: pre-line; color: var(--ink-2); } |
| 280 |
|
− |
| 281 |
|
−/* --- tuiles de statistiques (hero numbers) --------------------------------------- */ |
| 282 |
|
−.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; margin: 22px 0; } |
| 283 |
|
−.tile { |
| 284 |
|
− background: var(--surface); border: 1.5px solid var(--ink); |
| 285 |
|
− border-radius: var(--r-card); box-shadow: var(--shadow-off-soft); |
| 286 |
|
− padding: 18px 20px; position: relative; overflow: hidden; |
| 287 |
|
−} |
| 288 |
|
−.tile::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: var(--accent); } |
| 289 |
|
−.tile .value { font-family: var(--font-display); font-size: 27px; font-weight: 700; letter-spacing: -0.5px; } |
|
565 |
+/* --- tuiles de statistiques : blocs ouverts à filet supérieur -------------------- */ |
|
566 |
+.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 18px 26px; margin: 22px 0; } |
|
567 |
+.tile { border-top: 2px solid var(--ink); padding: 11px 2px 0; position: relative; } |
|
568 |
+.tile::before { content: ""; position: absolute; top: -2px; left: 0; width: 34px; height: 2px; background: var(--accent); } |
|
569 |
+.tile .value { font-family: var(--font-display); font-size: 28px; font-weight: 700; letter-spacing: -0.5px; font-variant-numeric: tabular-nums; } |
| 290 |
570 |
.tile .label { color: var(--ink-3); font-family: var(--font-mono); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; margin-top: 4px; } |
| 291 |
571 |
|
| 292 |
572 |
/* --- barres horizontales (magnitude, teinte unique) --------------------------------- */ |
| 297 |
577 |
.bar-row .fill { background: var(--accent); border-radius: 4px; height: 14px; min-width: 3px; } |
| 298 |
578 |
.bar-row .n { font-size: 13px; color: var(--ink-2); text-align: right; font-variant-numeric: tabular-nums; } |
| 299 |
579 |
|
| 300 |
|
−/* --- tableaux ----------------------------------------------------------------------- */ |
| 301 |
|
−table.data { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--surface); border: 1.5px solid var(--ink); border-radius: var(--r-card); overflow: hidden; box-shadow: var(--shadow-off-soft); } |
| 302 |
|
−table.data th, table.data td { text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--border); font-size: 14px; } |
| 303 |
|
−table.data th { background: var(--surface-2); color: var(--ink-2); font-family: var(--font-mono); font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; border-bottom: 1.5px solid var(--ink); } |
| 304 |
|
−table.data tr:last-child td { border-bottom: none; } |
|
580 |
+/* --- tableaux : filets fins, plus de boîte lourde ------------------------------------ */ |
|
581 |
+table.data { width: 100%; border-collapse: separate; border-spacing: 0; } |
|
582 |
+table.data th, table.data td { text-align: left; padding: 11px 14px 11px 2px; border-bottom: 1px solid var(--border); font-size: 14px; } |
|
583 |
+table.data th { |
|
584 |
+ color: var(--ink-3); font-family: var(--font-mono); font-size: 10.5px; font-weight: 700; |
|
585 |
+ text-transform: uppercase; letter-spacing: 0.08em; |
|
586 |
+ border-bottom: 2px solid var(--ink); background: none; |
|
587 |
+} |
|
588 |
+table.data tbody tr:hover td { background: var(--surface); } |
| 305 |
589 |
|
| 306 |
590 |
/* --- carte -------------------------------------------------------------------------- */ |
| 307 |
|
−/* hauteur = viewport - hauteur RÉELLE du header (--header-h posée par App.tsx |
| 308 |
|
− via ResizeObserver) ; dvh évite le saut quand la barre du navigateur se replie */ |
| 309 |
591 |
.map-wrap { |
| 310 |
592 |
height: calc(100vh - var(--header-h, 58px)); |
| 311 |
593 |
height: calc(100dvh - var(--header-h, 58px)); |
| 322 |
604 |
.map-popup { font: 13px "Inter", sans-serif; } |
| 323 |
605 |
|
| 324 |
606 |
/* --- pagination / divers ------------------------------------------------------------- */ |
| 325 |
|
−.pager { display: flex; gap: 10px; justify-content: center; margin: 26px 0; } |
|
607 |
+.pager { display: flex; gap: 22px; align-items: center; justify-content: center; margin: 30px 0; } |
| 326 |
608 |
.pager button { |
| 327 |
|
− background: var(--surface); border: 1.5px solid var(--ink); border-radius: var(--r-ctl); |
| 328 |
|
− padding: 8px 16px; cursor: pointer; font: inherit; |
| 329 |
|
− font-family: var(--font-display); font-weight: 700; font-size: 14px; |
| 330 |
|
− min-height: var(--touch); |
| 331 |
|
− transition: transform 0.15s, box-shadow 0.15s; |
|
609 |
+ border: 0; background: none; cursor: pointer; padding: 10px 4px; min-height: var(--touch); |
|
610 |
+ font-family: var(--font-mono); font-size: 11.5px; font-weight: 700; |
|
611 |
+ text-transform: uppercase; letter-spacing: 0.07em; color: var(--ink); |
|
612 |
+} |
|
613 |
+.pager button:hover:not(:disabled) { |
|
614 |
+ color: var(--accent-deep); text-decoration: underline; |
|
615 |
+ text-decoration-thickness: 2px; text-underline-offset: 4px; |
| 332 |
616 |
} |
| 333 |
|
−.pager button:hover:not(:disabled) { transform: translate(-2px, -2px); box-shadow: var(--shadow-off-mid); } |
| 334 |
|
−.pager button:active { transform: none; box-shadow: none; } |
| 335 |
|
−.pager button:disabled { opacity: 0.4; cursor: default; } |
| 336 |
|
−.empty { text-align: center; color: var(--ink-3); padding: 60px 0; } |
|
617 |
+.pager button:disabled { opacity: 0.35; cursor: default; } |
|
618 |
+.pager .pg-pos { |
|
619 |
+ font-family: var(--font-mono); font-size: 11.5px; font-weight: 700; |
|
620 |
+ color: var(--ink-3); font-variant-numeric: tabular-nums; |
|
621 |
+} |
|
622 |
+.empty { text-align: center; color: var(--ink-3); padding: 64px 0; display: grid; gap: 14px; justify-items: center; } |
|
623 |
+.empty p { margin: 0; } |
| 337 |
624 |
.section-title { font-family: var(--font-display); font-size: 19px; font-weight: 700; letter-spacing: -0.02em; margin: 30px 0 4px; } |
| 338 |
625 |
.muted { color: var(--ink-3); font-size: 13px; } |
|
626 |
+.sub, .lede { color: var(--ink-2); max-width: 640px; } |
| 339 |
627 |
|
| 340 |
628 |
/* --- formulaire de dépôt direct (page Publier) ------------------------------------------ */ |
| 341 |
629 |
.depot-grid { display: grid; gap: 14px; grid-template-columns: 1fr 1fr; } |
| 371 |
659 |
} |
| 372 |
660 |
.contact-note { |
| 373 |
661 |
border-left: 3px solid var(--accent); background: var(--surface); |
| 374 |
|
− border-top: 1.5px solid var(--ink); border-right: 1.5px solid var(--ink); |
| 375 |
|
− border-bottom: 1.5px solid var(--ink); border-radius: 0 var(--r-card) var(--r-card) 0; |
|
662 |
+ border-radius: 0 var(--r-card) var(--r-card) 0; |
| 376 |
663 |
padding: 14px 18px; max-width: 720px; color: var(--ink-2); font-size: 14px; |
| 377 |
664 |
} |
| 378 |
665 |
.contact-note b { color: var(--ink); } |
| 379 |
666 |
.contact-sites { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; } |
| 380 |
667 |
.contact-sites a { |
| 381 |
668 |
display: inline-flex; align-items: center; min-height: 34px; |
| 382 |
|
− padding: 4px 12px; border: 1.5px solid var(--ink); border-radius: var(--r-pill); |
|
669 |
+ padding: 4px 12px; border: 1px solid var(--line-strong); border-radius: var(--r-pill); |
| 383 |
670 |
background: var(--surface); font-family: var(--font-mono); font-size: 11px; |
| 384 |
671 |
font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; |
| 385 |
672 |
color: var(--ink); transition: transform 0.12s, box-shadow 0.12s; |
| 388 |
675 |
.contact-hub { margin-top: 26px; } |
| 389 |
676 |
|
| 390 |
677 |
/* --- rangée de navigation locale au-dessus du footer commun ----------------------------- */ |
| 391 |
|
−.prefooter { border-top: 1.5px solid var(--ink); background: var(--surface-2); padding: 18px 0; margin-top: 60px; } |
|
678 |
+.prefooter { border-top: 2px solid var(--ink); background: var(--surface-2); padding: 18px 0; margin-top: 60px; } |
| 392 |
679 |
.prefooter .container { |
| 393 |
680 |
display: flex; flex-wrap: wrap; align-items: center; gap: 6px 20px; |
| 394 |
681 |
} |
| 403 |
690 |
|
| 404 |
691 |
@media (max-width: 640px) { |
| 405 |
692 |
.bar-row { grid-template-columns: 120px 1fr 44px; } |
| 406 |
|
− .sheet { padding: 20px; } |
| 407 |
693 |
} |
| 408 |
694 |
|
| 409 |
|
−/* --- favoris ♥ « Mon univers Ka » (hub Groupe KA) ---------------------------------- */ |
| 410 |
|
−.job-card { position: relative; } |
| 411 |
|
−.job-card h3 { padding-right: 48px; } |
| 412 |
|
−.fav-btn { |
| 413 |
|
− position: absolute; right: 14px; top: 14px; z-index: 2; |
| 414 |
|
− width: 40px; height: 40px; padding: 0; |
| 415 |
|
− display: inline-flex; align-items: center; justify-content: center; |
| 416 |
|
− border: 1.5px solid var(--ink); border-radius: 999px; cursor: pointer; |
| 417 |
|
− background: rgba(255, 255, 255, 0.95); color: var(--ink); |
| 418 |
|
− transition: transform 0.12s ease, background 0.12s ease; |
|
695 |
+/* bulle KA Agent masquée quand un panneau plein écran est ouvert (filtres, |
|
696 |
+ menu mobile) : son z-index maximal (2147483000) passerait au-dessus */ |
|
697 |
+body.ka-hide-agent .kaa-btn { opacity: 0 !important; pointer-events: none !important; } |
|
698 |
+ |
|
699 |
+/* --- mouvement réduit : on coupe les animations décoratives ----------------------------- */ |
|
700 |
+@media (prefers-reduced-motion: reduce) { |
|
701 |
+ .hero .kicker .pulse { animation: none; } |
|
702 |
+ .mobile-menu.open, .mobile-menu.open a { animation: none; } |
|
703 |
+ .fsheet { transition: none; } |
|
704 |
+ .job-row, .job-row::before, .searchbar { transition: none; } |
| 419 |
705 |
} |
| 420 |
|
−.fav-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linejoin: round; } |
| 421 |
|
−.fav-btn:hover { transform: scale(1.08); background: var(--accent-soft); } |
| 422 |
|
−.fav-btn.on { background: var(--accent); border-color: var(--accent-deep); color: var(--on-accent); } |
| 423 |
|
−.fav-btn.on svg { fill: currentColor; } |
| 424 |
|
−/* fiche d'offre : le cœur à droite du titre */ |
| 425 |
|
−.fav-btn.big { position: static; flex-shrink: 0; width: 44px; height: 44px; } |
| 426 |
|
−.fav-btn.big svg { width: 21px; height: 21px; } |
| 427 |
|
−/* page /favoris */ |
| 428 |
|
−.fav-card { padding-right: 64px; } |
| 429 |
706 |
|