:root { --ink:#1b3028; --muted:#63746c; --border:#dfe7e1; --paper:#f5f7f4; --radius:18px; }
body { font-size:15px; }
.shell { max-width:1380px; }
.shell.form-page { max-width:820px; }
.shell.login-page { max-width:560px; }
.site-header { height:80px; }
.main-nav { font-size:14px; }
.main-nav a.active:after { bottom:-27px; border-radius:4px; }
.hero { background:radial-gradient(ellipse at 80% 20%,#dceacb,transparent 55%),linear-gradient(120deg,#eff4eb,#e9f1e5); }
.hero-inner { min-height:375px; padding-top:35px; padding-bottom:58px; gap:50px; }
.hero h1 { font-size:clamp(36px,3.6vw,54px); letter-spacing:-2px; line-height:1.17; margin:24px 0 22px; }
.hero-copy>p { font-size:15px; color:#596f61; line-height:1.8; max-width:580px; }
.hero-meta { font-size:12px; color:#49634f; margin-top:23px; }
.hero-tools > a { display:inline-flex; align-items:center; justify-content:center; gap:9px; min-height:44px; padding:10px 15px; border:1px solid var(--green); border-radius:10px; background:var(--green); color:#fff; font-size:20px; font-weight:650; transition:background .2s; }
.hero-tools > a:hover { background:var(--deep); color:#fff; }
.hero-tools > a i { color:#fff; }
.hero-browse { display:inline-flex; align-items:center; gap:10px; margin-top:16px; font-weight:700; color:var(--green); font-size:13px; }
.hero-browse:hover { text-decoration:underline; text-underline-offset:5px; }
.art-main { box-shadow:16px 18px 0 #cfdcc2,0 20px 40px #174c3c14; }
.search-bar { border-radius:18px; box-shadow:0 12px 36px #173d3210; border-color:#dfe7da; }
.search-field input,.search-field select { font-size:14px; }
.popular { color:#6d7e71; font-size:12px; gap:10px; }
.popular a { background:#fff; border-radius:24px; padding:7px 13px; }
.popular a:hover { border-color:#a4bd9b; background:#eef5e9; }
.listing-section { padding-top:48px; }
.section-heading h2 { font-size:32px; letter-spacing:-1px; }
.section-heading p { color:#68796c; font-size:14px; }
.listing-grid { grid-template-columns:250px minmax(0,1fr); gap:28px; align-items:start; }
.filter-panel { padding:22px; border-radius:18px; background:#fff; }
.filter-title h3 { font-size:16px; }
.filter-title a { font-size:12px; color:var(--green); }
.filter-group legend { font-size:13px; font-weight:650; color:#354e40; }
.filter-check,.filter-label { font-size:12px; color:#526a5a; }
.filter-panel .form-select,.filter-panel .form-control { font-size:12px; border-radius:9px; min-height:40px; }
.results-toolbar { background:#fff; padding:16px 18px; border:1px solid var(--border); border-radius:12px; font-size:13px; margin-bottom:20px; gap:16px; }
.results-toolbar strong { color:var(--green); font-size:20px; }
.results-sub,.result-dot { display:none; }
.sort-label { font-size:12px; white-space:nowrap; }
.sort-label select { font-size:12px; background:var(--paper); border-radius:8px; }
.job-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.job-list>.empty-state { grid-column:1/-1; }
.job-card { display:flex; flex-direction:column; padding:24px; border:1px solid #dfe7e1; border-radius:18px; background:#fff; margin:0; min-width:0; box-shadow:0 4px 16px #173d3205; transition:border-color .2s,box-shadow .2s,transform .2s; }
.job-card:hover { border-color:#a7bea8; box-shadow:0 12px 28px #173d320d; transform:translateY(-3px); }
.job-card.featured { background:linear-gradient(145deg,#fff 65%,#f2f7e9); border-color:#bdcf9d; }
.card-top { align-items:flex-start; gap:13px; position:relative; }
.company-logo { width:46px; height:46px; flex-basis:46px; border-radius:13px; font-size:23px; }
.company-name { color:#637769; font-size:12px; margin-bottom:5px; line-height:1.5; overflow-wrap:anywhere; }
.job-heading { padding-right:0; }
.job-heading h3 { font-size:18px; line-height:1.4; letter-spacing:-.4px; overflow-wrap:anywhere; }
.job-heading h3 a:hover { text-decoration:underline; text-underline-offset:4px; }
.card-actions { width:auto; padding:0; gap:0; flex:0 0 auto; }
.save-job { position:static; width:32px; height:32px; font-size:17px; background:#f5f7f3; color:#718773; border-radius:9px; }
.job-meta { margin-top:20px; gap:9px 14px; font-size:12px; color:#526a59; align-items:center; }
.job-meta i { color:#6e8975; }
.contract-tag { padding:4px 9px; background:#edf4ee; border-radius:6px; color:#315a42; }
.job-badge { font-size:10px; padding:5px 9px; border-radius:6px; }
.job-badge.urgent { color:#95541f; background:#fff0df; }
.job-badge.new { color:#286045; background:#e8f4ec; }
.job-excerpt { color:#6a7a6f; font-size:13px; line-height:1.75; margin:16px 0; max-width:100%; }
.job-qualifications { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:14px; }
.job-qualifications>span { border:1px solid #e4eae4; border-radius:6px; padding:5px 8px; font-size:11px; color:#5c7062; background:#fafbf9; }
.job-qualifications i { margin-right:4px; }
.job-salary { display:flex; flex-wrap:wrap; align-items:center; gap:7px; color:var(--green); font-size:12px; margin:0 0 14px; }
.job-salary strong { font-size:13px; font-weight:700; }
.job-salary>span { font-size:11px; color:#7a8a7f; }
.job-application-mode { font-size:11px; color:#758579; margin:auto 0 18px; padding-top:4px; }
.job-application-mode i { margin-right:5px; }
.card-bottom { border-top-color:#e9eee8; padding-top:16px; align-items:end; gap:12px; }
.job-dates { flex-direction:column; gap:7px; font-size:10px; color:#829084; }
.job-dates strong { font-weight:650; color:#526a59; }
.job-dates .deadline-soon,.job-dates .deadline-soon strong { color:#a16124; }
.view-job { font-size:12px; background:var(--green); border-color:var(--green); color:#fff; padding:10px 12px; gap:8px; border-radius:9px; }
.view-job:hover { background:#25634e; border-color:#25634e; color:#fff; }
.pagination-bar { font-size:12px; margin-top:28px; }
.page-button { width:36px; height:36px; border-radius:9px; font-size:12px; }
.results-note { color:#6e8070; font-size:11px; }
.recruiter-banner { background:linear-gradient(110deg,#e8f1dc,#f3f7ee); border-radius:22px; padding:34px; }
.recruiter-banner h3 { font-size:26px; }
.recruiter-banner p { font-size:13px; color:#637960; }
.content-panel { box-shadow:0 4px 18px #173d3204; }
.content-panel p { color:#596e61; font-size:14px; }
.detail-heading h1 { font-size:clamp(28px,3vw,42px); max-width:950px; }
.detail-grid { grid-template-columns:minmax(0,1fr) 330px; gap:28px; }
.detail-grid>article { padding:36px; }
.detail-grid>article h2 { color:var(--green); font-size:21px; }
.detail-grid>article p { font-size:15px; line-height:1.9; }
.job-summary { border-top:4px solid var(--green); }
.job-summary dt { color:#76897a; font-size:12px; }
.job-summary dd { font-size:14px; line-height:1.7; overflow-wrap:anywhere; }
.job-summary .external-application { background:#f1f6eb; padding:16px; border-radius:12px; margin-top:20px; }
.job-summary .external-application h4 { font-size:15px; line-height:1.5; }
.form-label { color:#38523f; font-size:13px; }
.form-text { color:#788875; font-size:12px; }
.admin-nav a:hover { border-color:#b4c8ad; background:#eff5e9; }
@media(min-width:1101px) { .filter-panel { position:sticky; top:24px; max-height:calc(100vh - 48px); overflow-y:auto; scrollbar-width:thin; } }
@media(max-width:1150px) { .job-list { grid-template-columns:1fr; } .hero-inner { gap:25px; } }
@media(max-width:800px) {
 .site-header { height:74px; } .main-nav { top:74px; } .main-nav a.active:after { display:none; }
 .hero-inner { min-height:350px; grid-template-columns:1fr .6fr; } .hero h1 { font-size:36px; } .hero-copy>p { font-size:13px; } .hero-meta { font-size:11px; }
 .listing-grid { grid-template-columns:1fr; } .job-list { grid-template-columns:repeat(2,minmax(0,1fr)); } .job-card { padding:20px; } .filter-panel { border-radius:0; padding:25px; }
 .detail-grid { grid-template-columns:1fr; } .job-summary { grid-row:auto; } .job-summary dl { display:block; } .job-summary dt { margin-top:18px; } .detail-grid>article { padding:25px; }
}
@media(max-width:650px) {
 .job-list { grid-template-columns:1fr; } .hero-inner { display:block; min-height:unset; padding-top:30px; padding-bottom:48px; } .hero-art { display:none; }
 .hero h1 { font-size:clamp(30px,7.6vw,40px); letter-spacing:-1.3px; } .hero-meta { gap:14px; flex-wrap:wrap; flex-direction:row; } .hero-meta span:last-child { max-width:none; }
 .search-wrap { margin-top:-22px; } .search-bar { flex-wrap:wrap; padding:10px; gap:7px; } .search-field { flex-basis:100%; border-bottom:1px solid var(--border); padding:0 8px 4px; } .location-field { flex:1; min-width:0; border:0; } .search-submit { min-width:116px; min-height:44px; font-size:12px; }
 .popular { font-size:11px; gap:7px; } .popular a { padding:5px 10px; } .listing-section { padding-top:32px; } .section-heading h2 { font-size:27px; max-width:none; } .section-heading p { font-size:12px; } .local-tag { display:none; }
 .results-toolbar { padding:13px; font-size:12px; flex-wrap:wrap; } .sort-label { font-size:11px; } .sort-label select { font-size:11px; max-width:none; }
 .card-top { flex-wrap:nowrap; } .card-actions:has(>.save-job:only-child) { display:flex; } .company-name { font-size:12px; } .job-heading h3 { font-size:18px; } .job-meta { font-size:12px; } .job-excerpt { font-size:13px; }
 .card-bottom { align-items:center; } .view-job { font-size:12px; } .job-dates { font-size:10px; } .recruiter-banner { padding:25px; } .recruiter-banner h3 { font-size:23px; } .pagination-bar { font-size:11px; } .page-button { width:32px; height:32px; }
}

/* Textes plus grands et cartes plus compactes. */
body { font-size:16px; }
.main-nav { font-size:15px; }
.hero-copy>p { font-size:16px; }
.section-heading p { font-size:15px; }
.form-label,.form-page .form-control,.form-page .form-select { font-size:15px; }
.form-text { font-size:13px; }
.content-panel p { font-size:15px; }
.filter-check,.filter-label,.filter-group legend { font-size:14px; }
.filter-panel .form-select,.filter-panel .form-control { font-size:14px; }
.results-toolbar,.sort-label,.sort-label select { font-size:14px; }
.job-list { gap:14px; }
.job-card { padding:18px; border-radius:14px; }
.company-logo { width:40px; height:40px; flex-basis:40px; border-radius:10px; }
.company-name { font-size:14px; margin-bottom:3px; }
.job-heading h3 { font-size:20px; line-height:1.3; }
.job-meta { margin-top:12px; gap:7px 12px; font-size:14px; }
.job-badge { font-size:12px; padding:3px 7px; }
.contract-tag { padding:3px 7px; }
.job-excerpt { font-size:14px; line-height:1.55; margin:10px 0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.job-qualifications { gap:5px; margin-bottom:9px; }
.job-qualifications>span { font-size:12px; padding:3px 6px; }
.job-salary { margin-bottom:9px; font-size:14px; }
.job-salary strong { font-size:15px; }
.job-salary>span { font-size:12px; }
.job-application-mode { font-size:12px; margin-bottom:10px; padding-top:0; }
.card-bottom { padding-top:10px; gap:10px; }
.job-dates { font-size:12px; gap:4px; }
.view-job { font-size:14px; padding:8px 10px; }
.career-tools { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:24px; margin-bottom:24px; }
.career-tool { display:flex; align-items:center; gap:16px; padding:22px; background:white; border:1px solid var(--border); border-radius:16px; box-shadow:0 4px 18px #173d3205; transition:border-color .2s,box-shadow .2s; min-width:0; }
.career-tool:hover { border-color:#a7bea8; box-shadow:0 8px 24px #173d3210; }
.career-tool-icon { display:grid; place-items:center; flex:0 0 48px; height:48px; border-radius:13px; background:#edf4e6; color:var(--green); font-size:24px; }
.career-tool strong { display:block; font-size:17px; line-height:1.4; color:var(--green); }
.career-tool small { display:block; margin-top:5px; font-size:13px; line-height:1.5; color:var(--muted); }
.career-tool > .bi { margin-left:auto; color:var(--green); font-size:20px; }
.career-tools + .search-wrap { margin-top:0; }
@media(max-width:650px) {
 .career-tools { grid-template-columns:minmax(0,1fr); gap:10px; margin-top:18px; margin-bottom:18px; }
 .career-tool { padding:16px; gap:12px; }
 .career-tool strong { font-size:16px; }
 .career-tool small { font-size:12px; }
 .job-card { padding:16px; }
 .job-heading h3 { font-size:19px; }
 .company-name,.job-meta { font-size:13px; }
 .job-dates { font-size:11px; }
 .sort-label,.sort-label select { font-size:12px; }
}
