/* V3 on the static pages (tender, region, buyer, city, type, listings): loaded after /static.css (Adil, 01/11/2026).
   Same build as home_v3: white page, graphite text, ONE green accent, red only for locks and close deadlines.
   Motion: transform and opacity only, 0.4–0.6 s, once; scripts/seo.mjs adds html.t3-m only when motion is allowed
   (not under prefers-reduced-motion, not under html.paused), so everything is visible without JS. */
:root {
  --ink: #0E1A16; --ink-2: #33423C; --ink-3: #5B6964;
  --blue: #12805C; --blue-2: #0D6648; --yellow: #F3F6F5; --danger: #C8322B; --mist: #EAF5F0; --paper: #F3F6F5;
  --line: #E3E8E6; --line-soft: #E3E8E6;
  --t3-red-bg: #FFF7F6; --t3-red-line: #E8B4B0; --t3-sh: 0 1px 2px rgba(14, 26, 22, .06), 0 8px 24px rgba(14, 26, 22, .07);
  --t3-ease: cubic-bezier(.22, 1, .36, 1);
  --font: "IBM Plex Sans Arabic", sans-serif;
  --font-head: "Alexandria", "IBM Plex Sans Arabic", sans-serif;
}
html[lang="fr"] { --font: "IBM Plex Sans", sans-serif; --font-head: "IBM Plex Sans", sans-serif; }
html[lang="fr"] .tender h1, html[lang="fr"] h1, html[lang="fr"] h2 { font-family: "IBM Plex Sans", sans-serif; }
.num, .lines td, bdi[dir="ltr"], .bdc-q { font-family: "IBM Plex Sans", sans-serif; }
::selection { background: #CFE8DD; }
:focus-visible { outline-color: var(--blue); }

/* Header: sticky, light, bordered */
.btn { min-height: 52px; border-radius: 12px; border-width: 1px; font-weight: 600; }
.btn.small { min-height: 42px; border-radius: 12px; }
.btn.ghost { background: #fff; color: var(--ink); border: 1px solid var(--line); }
.btn.ghost:hover { background: var(--paper); border-color: var(--ink-3); }
@media (hover: hover) { .btn { transition: background-color .2s var(--t3-ease), transform .2s var(--t3-ease); } .btn:hover { transform: translateY(-1px); } }

/* Tender, region and buyer pages sit in one centred column, crumbs included */
main.wrap:has(.bdc-page, .tender) { max-width: 840px; }
.crumbs ol { margin-bottom: 24px; font-size: 14.5px; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { color: var(--blue); text-decoration: underline; }
h1 { font-weight: 700; }
.lead { color: var(--ink-2); }
a { color: var(--blue-2); }

/* Cards */
.bdc-card, .ts-s, .ready-block, .help, .hub, .read-strip { border-radius: 16px; border: 1px solid var(--line); box-shadow: var(--t3-sh); background: #fff; }
.bdc-card { padding: 20px; gap: 14px; }
.ts-s { padding: 22px 20px; }
.ts-s > h2, .ready-block h2 { font-weight: 700; }
.help { background: var(--paper); box-shadow: none; }
.bdc-ic { background: var(--mist); color: var(--blue-2); border-radius: 12px; }
.bdc-cat { color: var(--ink-3); }
.bdc-days { background: #fff; color: var(--ink); border: 1px solid var(--line); border-radius: 999px; padding: 3px 12px; }
.bdc-days.soon { background: var(--t3-red-bg); color: var(--danger); border-color: var(--t3-red-line); }
.chip { background: var(--paper); border: 1px solid var(--line); border-radius: 999px; padding: 2px 12px; }
.chip.soon { background: var(--t3-red-bg); color: var(--danger); border-color: var(--t3-red-line); }
.cc-chip { border-radius: 999px; padding: 2px 12px; }
.cc-chip.res { background: var(--mist); color: var(--blue-2); border-color: #BFE0D1; }
.cc-chip.read { background: #fff; color: var(--blue-2); border-color: #BFE0D1; }
.cc-chip.cat { background: var(--paper); border-color: var(--line); }
.tag { border-radius: 999px; padding: 0 10px; background: var(--paper); }
.bdc-what { font-weight: 700; }
.bdc-what a:hover { color: var(--blue-2); }
.bdc-place svg { color: var(--ink-3); }

/* Key facts as tiles (the home's .kv) */
.bdc-tiles > div { border: 1px solid var(--line); border-radius: 14px; background: var(--paper); padding: 10px 12px; min-width: 0; }
.bdc-tiles > div > * { min-width: 0; }
/* Root cause 01/11: the 2-column tiles let the date « 23/11 · 10:30 » run out of its box at 375 px (icon + 19 px figure wider than the cell). Icon dropped and figure 17 px on small screens. */
@media (max-width: 430px) { .bdc-tiles > div { grid-template-columns: minmax(0, 1fr); } .bdc-tiles svg { display: none; } .bdc-tiles b { font-size: 17px; overflow-wrap: anywhere; } }
.bdc-tiles svg { color: var(--blue-2); }
.bdc-tiles b { font-weight: 700; }
.bdc-file { min-height: 56px; border-radius: 12px; }
.bdc-file:hover { background: var(--blue-2); }
.bdc-items { border-radius: 14px; border-color: var(--line); }
.bdc-tick { background: var(--blue); }
.bdc-rest > summary { background: var(--mist); color: var(--blue-2); }
.ts-check .ts-list li::before { background-color: var(--blue); }
.ts-list li, .ts-s.info dl > div, .board dl > div, .row a { border-color: var(--line); }
.ts-guide::before { color: var(--blue); }
.keyfacts li { border-radius: 999px; }
.keyfacts li.good { background: var(--mist); border-color: #BFE0D1; color: var(--blue-2); }
.note.unv { background: var(--paper); border-inline-start: 4px solid var(--ink-3); }
.portal-note, .deadline .rep { background: var(--paper); }
.guide .ftable td b { background: var(--paper); border: 1px solid var(--line); }

/* LOCKED PARTS: a red lock and one subscribe button on every locked block (dashed red outline, like the home's .lockrow) */
.ts-lockline { padding: 12px 14px; border: 1px dashed var(--t3-red-line); background: var(--t3-red-bg); border-radius: 14px; color: var(--ink); }
.ts-lockline > svg { color: var(--danger); }
.ts-lockline .ts-unlock { min-height: 42px; border-radius: 12px; }
.fp { border-radius: 16px; box-shadow: var(--t3-sh); padding: 22px 22px 18px; }
.fp-k { color: var(--blue-2); }
.fp-t { font-family: var(--font-head); font-weight: 700; }
.fp-risk { border-radius: 12px; border-inline-start-color: var(--danger); padding: 14px 16px; }
.fp-tag, .risk-badge { border-radius: 999px; }
.fp-path::before { color: var(--blue); }
.fp .ts-lockline { border-top: 1px dashed var(--t3-red-line); }
@media (max-width: 600px) { .ts-lockline .ts-unlock { width: 100%; } }
.ready-block .rb-price { font-family: var(--font-head); }

/* Gift card in the one green */
.gift-card { background: var(--mist); border-color: #BFE0D1; border-radius: 16px; }
.gift-ic { background: var(--blue); }
.gift-tx strong { color: var(--blue-2); }
.gift-card .gift-go { background: var(--blue); border-color: var(--blue); }
.gift-card .gift-go:hover { background: var(--blue-2); border-color: var(--blue-2); }
.gift-pts { color: var(--blue-2); }
.gift-ex { color: var(--blue-2); }

/* Lists: region and buyer pages */
.facets a { border-radius: 999px; min-height: 42px; background: #fff; }
.facets a:hover { border-color: var(--blue); color: var(--blue-2); }
.facets h2 { color: var(--ink-3); }
.rows { border-top: 0; display: grid; gap: 10px; }
.row a { padding: 14px 16px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.row a:hover { border-color: var(--blue); }
.row a:hover .row-t { color: var(--blue-2); text-decoration: none; }
.row-f .due.soon { color: var(--danger); }
.listtools { background: #fff; border-bottom: 1px solid var(--line); }
.listtools input[type=search], .listtools select { border-radius: 12px; }
.chip-f { border-color: var(--line); }
.chip-f[aria-pressed="true"], .aud-tabs a[aria-current="page"], .pager [aria-current] { background: var(--ink); border-color: var(--ink); color: #fff; }
.pager a, .pager span { border-radius: 10px; }
.pager a:hover { border-color: var(--blue); }

/* Purchase-order lines */
.lines th { background: var(--paper); }
.lines td { border-bottom-color: var(--line); }

/* Footer: the home's dark band */

/* Guides sharing this stylesheet: one green, no yellow */
.ef-service, .ef-services .ef-svc { background: var(--blue-2); }
.ef-site { color: #CFE8DD; }
.ef-svc .btn { background: #fff; color: var(--ink); }
.ef-steps li::before { background: var(--blue); color: #fff; }
.ef-end { background: var(--mist); color: var(--ink); }
.ef-end .btn { background: var(--blue); }
.ef-tag { background: var(--mist); color: var(--blue-2); }
.ef-time { border-inline-start-color: var(--blue); }
.ef-time li::before { background: #fff; border-color: var(--blue); }
.ef-time time { color: var(--blue-2); }
.ef-box.open { background: var(--paper); }
.promise { border-inline-start-color: var(--blue); }
.sticky-bar { border-top: 1px solid var(--line); box-shadow: 0 -4px 18px rgba(14, 26, 22, .06); }

/* Deadline timeline (real dates: published, today, deadline) */
.t3-tl { padding: 14px 18px 12px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.t3-tl-h { margin: 0; font-size: 15px; color: var(--ink); }
.t3-tl-h b { font-family: var(--font-head); font-weight: 700; }
.t3-tl.hot .t3-tl-h b { color: var(--danger); }
.t3-tl-track { position: relative; height: 6px; border-radius: 999px; background: var(--line); margin: 14px 8px 0; }
.t3-tl-fill { position: absolute; inset-block: 0; inset-inline-start: 0; width: var(--p, 50%); border-radius: 999px; background: var(--blue); transform-origin: right center; }
html[dir="ltr"] .t3-tl-fill, html[lang="fr"] .t3-tl-fill { transform-origin: left center; }
.t3-tl.hot .t3-tl-fill { background: var(--danger); }
.t3-tl-dot { position: absolute; top: 50%; width: 14px; height: 14px; margin: -7px; border-radius: 50%; background: #fff; border: 3px solid var(--blue); }
.t3-tl-dot.now { inset-inline-start: var(--p, 50%); }
.t3-tl-dot.a { inset-inline-start: 0; border-color: var(--ink-3); }
.t3-tl-dot.b { inset-inline-end: 0; border-color: var(--blue-2); }
.t3-tl.hot .t3-tl-dot.b, .t3-tl.hot .t3-tl-dot.now { border-color: var(--danger); }
.t3-tl-lab { display: flex; justify-content: space-between; gap: 8px; margin-top: 12px; font-size: 13.5px; color: var(--ink-3); line-height: 1.5; }
.t3-tl-lab > span { display: grid; min-width: 0; }
.t3-tl-lab > span:last-child { text-align: end; }
.t3-tl-lab b { color: var(--ink); font-weight: 600; font-size: 14px; }
.t3-tl.hot .t3-tl-lab > span:last-child b { color: var(--danger); }

/* Motion: one reveal, one count, one fill. Only under html.t3-m */
html.t3-m .t3-rv { opacity: 0; transform: translateY(14px); transition: opacity .5s var(--t3-ease), transform .5s var(--t3-ease); }
html.t3-m .t3-rv.t3-in { opacity: 1; transform: none; }
html.t3-m .t3-tl .t3-tl-fill { transform: scaleX(0); transition: transform .6s var(--t3-ease) .15s; }
html.t3-m .t3-tl.t3-in .t3-tl-fill { transform: scaleX(1); }
html.t3-m .t3-tl .t3-tl-dot { opacity: 0; transition: opacity .4s var(--t3-ease) .55s; }
html.t3-m .t3-tl.t3-in .t3-tl-dot { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  html.t3-m .t3-rv, html.t3-m .t3-tl .t3-tl-fill, html.t3-m .t3-tl .t3-tl-dot { opacity: 1 !important; transform: none !important; transition: none !important; }
  .btn:hover { transform: none !important; }
}
html.paused .t3-rv, html.paused .t3-tl .t3-tl-fill, html.paused .t3-tl .t3-tl-dot { opacity: 1 !important; transform: none !important; transition: none !important; }

.still .t3-rv, .still .t3-tl .t3-tl-fill, .still .t3-tl .t3-tl-dot { opacity: 1 !important; transform: none !important; transition: none !important; }
/* risk count chips (no emoji in v3): red = serious, amber = medium, like the home */
.t3-rk { display: inline-block; padding: 2px 12px; border-radius: 999px; font-size: 14px; font-weight: 600; line-height: 1.7; }
.t3-rk-hi { background: #FBE9E7; color: #C8322B; border: 1px solid #F3C4BF; }
.t3-rk-med { background: #FFF4D6; color: #8A5A00; border: 1px solid #F1DC9B; }
.risk-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 8px; }
/* the dark footer carries its own bottom space; the old sticky-bar padding left a white strip under it */
@media (max-width: 760px) { body.v3.has-sticky { padding-bottom: 0; } }
