/* The Gestion header = the file-prod « A » header (base.css .top) + the platform switch; self-contained for the
   Dashboard (Eden's page) and the Flowchart (the mapping page), which don't load base.css. */
header.top.fph { display: flex; align-items: center; gap: 6px; height: 52px; padding: 0 14px; background: #fff; border-bottom: 1px solid #E6E3E7; position: sticky; top: 0; z-index: 40; font-family: Figtree, system-ui, -apple-system, 'Segoe UI', sans-serif; font-size: 13.5px; color: #201A21; box-sizing: border-box; }
header.top.fph * { box-sizing: border-box; }
header.top.fph a { color: inherit; text-decoration: none; }
header.top.fph .brand { display: flex; align-items: center; gap: 8px; margin-right: 6px; flex-shrink: 0; font-weight: 600; font-size: 15px; letter-spacing: -.01em; }
header.top.fph .fph-mark, header.top.fph .fph-mark svg { width: 22px; height: 22px; display: block; }
header.top.fph .fph-sw { margin-right: 8px; flex-shrink: 0; }
header.top.fph .fph-sw .sw-box { padding: 5px 9px; }
header.top.fph .fph-sw .sw-box .nm { font-size: 12.5px; }
header.top.fph .nav { display: flex; gap: 2px; align-items: center; min-width: 0; overflow-x: auto; }
header.top.fph .nav a { padding: 5px 10px; border-radius: 7px; color: #6D5F6F; font-weight: 500; font-size: 13px; white-space: nowrap; }
header.top.fph .nav a:hover { background: #F4F3F5; color: #201A21; }
header.top.fph .nav a[aria-current="page"] { background: #EFEDF0; color: #201A21; font-weight: 600; }
header.top.fph .sync { margin-left: auto; display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
header.top.fph .sync .code { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 6px; border-radius: 6px; font: 12px Figtree, system-ui, sans-serif; color: #6D5F6F; white-space: nowrap; background: none; border: 0; cursor: pointer; }
header.top.fph .sync .code i { width: 6px; height: 6px; border-radius: 50%; background: #3A7D2C; }
header.top.fph .sync .read { font-size: 12px; color: #6D5F6F; white-space: nowrap; }
header.top.fph .sync .read a { text-decoration: underline; text-underline-offset: 2px; text-decoration-color: #CFC9D1; }
header.top.fph .sync .btn { height: 30px; padding: 0 12px; border: 1px solid #E6E3E7; border-radius: 8px; background: #fff; font: 500 13px Figtree, system-ui, sans-serif; color: #201A21; cursor: pointer; }
header.top.fph .sw-menu { font-size: 13.5px; }
header.top.fph .sw-row small, header.top.fph .sw-row u { line-height: 1.35; }
.lotsfold { margin: 0 0 14px; border: 1px solid var(--border, #E6E3E7); border-radius: 12px; background: var(--surface, #fff); }
.lotsfold > summary { display: flex; align-items: center; gap: 10px; padding: 10px 14px; cursor: pointer; list-style: none; }
.lotsfold > summary::-webkit-details-marker { display: none; }
.lotsfold > summary::before { content: '▸'; color: #6D5F6F; }
.lotsfold[open] > summary::before { content: '▾'; }
.lotsfold #lotsbox { padding: 0 10px 10px; }
.chip.lot i.dot { background: var(--c); }
/* eight tabs since the Costs tab (Oct 21): the « Sheet read » line goes first, then the team code, so the tabs never scroll on a laptop */
@media (max-width: 1600px) { header.top.fph .sync .read { display: none; } }
@media (max-width: 1440px) { header.top.fph .sync .code { display: none; } }
@media (max-width: 1366px) { header.top.fph .fph-sw .sw-box .k { display: none; } header.top.fph .nav a { padding: 5px 8px; } }
@media (max-width: 1240px) and (min-width: 761px) { header.top.fph .nav a { padding: 5px 6px; font-size: 12.5px; } header.top.fph .sync { gap: 8px; } }
@media (max-width: 1180px) { header.top.fph .sync .code, header.top.fph .sync .read { display: none; } }
@media (max-width: 760px) { header.top.fph .fph-sw .sw-box .k, header.top.fph .brand span:not(.fph-mark) { display: none; } header.top.fph .fph-sw .sw-box .nm { max-width: 120px; } header.top.fph .sync { display: none; } }
.chip.lot { border-style: dashed; }
.chip.lot .lk { color: #6D5F6F; font-size: 10.5px; text-transform: uppercase; letter-spacing: .06em; margin-right: 2px; }
/* EN | FR */
header.top.fph .fph-lang { display: inline-flex; border: 1px solid #E6E3E7; border-radius: 8px; padding: 2px; background: #fff; }
header.top.fph .fph-lang a { padding: 3px 8px; border-radius: 6px; font: 600 11.5px 'JetBrains Mono', ui-monospace, monospace; color: #6D5F6F; text-decoration: none; }
header.top.fph .fph-lang a[aria-current="page"] { background: #201A21; color: #fff; }
@media (max-width: 760px) { header.top.fph .sync { display: flex !important; } header.top.fph .sync .code, header.top.fph .sync .read, header.top.fph .sync .btn { display: none; } }
/* Phone: row 1 = logo · platform switch · EN | FR ; then the tabs, all visible (they wrap, no sideways scroll). Same on every page. */
@media (max-width: 760px) {
  header.top.fph { flex-wrap: wrap; height: auto; min-height: 52px; padding: 8px 12px 6px; gap: 6px; row-gap: 6px; position: relative; }   /* two rows of tabs (~144 px): it scrolls away on a phone instead of covering a third of the screen (Oct 21) */
  header.top.fph .nav { order: 5; flex: 0 0 100%; width: 100%; margin: 0; padding: 0; gap: 2px 0; justify-content: flex-start; flex-wrap: wrap; overflow: visible; scrollbar-width: none; }   /* eight tabs: two rows, every tab visible */
  header.top.fph .nav::-webkit-scrollbar { display: none; }
  header.top.fph .nav a { padding: 5px 4px; font-size: 12px; }
  header.top.fph .sync { margin-left: auto; gap: 8px; }
}
/* Resync = an important button (Alex, Oct 21): white + lime outline, the « important secondary » tier, like Demo */
header.top.fph .sync #resync { border: 1.5px solid #D5F098; font-weight: 600; }
header.top.fph .sync #resync:hover { background: #F4FBE3; }
/* the tabs always fit on one row: tighter, then « More ▾ » (fph.js, Oct 22) */
header.top.fph.nav-tight .nav a { padding: 5px 6px; font-size: 12.5px; }
header.top.fph .nav a[hidden] { display: none; }
header.top.fph .nav-more { flex-shrink: 0; padding: 5px 8px; border: 0; border-radius: 7px; background: none; color: #6D5F6F; font: 500 12.5px Figtree, system-ui, sans-serif; white-space: nowrap; cursor: pointer; }
header.top.fph .nav-more:hover, header.top.fph .nav-more[aria-expanded="true"] { background: #F4F3F5; color: #201A21; }
header.top.fph .nav-menu { position: absolute; z-index: 60; min-width: 190px; display: flex; flex-direction: column; padding: 6px; background: #fff; border: 1px solid #E6E3E7; border-radius: 10px; box-shadow: 0 12px 28px -12px rgba(32, 26, 33, .35); }
header.top.fph .nav-menu[hidden] { display: none; }
header.top.fph .nav-menu a { padding: 8px 10px; border-radius: 7px; font-size: 13.5px; color: #201A21; white-space: nowrap; }
header.top.fph .nav-menu a:hover { background: #F4F3F5; }
/* the catalogue = the first button of the Show bar, in lime (Alex, Oct 22; back in lime Oct 25: « remettre le bouton catalogue en lime, partout »): Dashboard, Costs, Jurisdictions, the Map's Market */
button.ex-fsel.cat-cta,.mbar button.mb-ddb.cat-cta,button.mb-ddb.cat-cta{background:#D5F098;border-color:#BFE27A;color:#201A21}
button.ex-fsel.cat-cta:hover,button.ex-fsel.cat-cta[aria-expanded="true"],button.mb-ddb.cat-cta:hover,button.mb-ddb.cat-cta[aria-expanded="true"]{background:#C9EB82;border-color:#A9CF5E}
button.ex-fsel.cat-cta .k,button.mb-ddb.cat-cta .k{color:#41571A}
button.mb-ddb.cat-cta .cv{color:#41571A}
button.mb-ddb.cat-cta .tg,button.mb-ddb.cat-cta [class*="tag"]{background:#fff}
/* a narrow laptop (761–900 px): the platform name gets shorter so the tabs keep room */
@media (max-width:900px) and (min-width:761px){header.top.fph .fph-sw .sw-box .nm{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}}
/* ── Feedback: one confirmation for the whole Gestion (fph.js FB, Oct 22) ── */
.fb-stack{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:400;display:flex;flex-direction:column;align-items:center;gap:8px;width:min(560px,calc(100vw - 24px));pointer-events:none}
.fb{pointer-events:auto;display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:2px 12px;align-items:center;width:100%;box-sizing:border-box;padding:11px 8px 11px 14px;border-radius:12px;background:#24112A;color:#fff;box-shadow:0 18px 40px -16px rgba(20,8,24,.55),0 0 0 1px rgba(255,255,255,.06) inset;font:500 14px/1.35 Figtree,system-ui,sans-serif;animation:fbIn .22s ease-out}
.fb.out{opacity:0;transform:translateY(6px);transition:opacity .18s,transform .18s}
.fb .ic{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:14px;background:#D5F098;color:#24350A}
.fb.info .ic{background:rgba(255,255,255,.16);color:#fff;font-weight:600}
.fb.warn .ic{background:#F5C24B;color:#3A2600}
.fb .tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.fb .tt{overflow-wrap:anywhere}
.fb .tt b{font-weight:700}
.fb .tt a,.fb .dt a{color:#D5F098}
.fb .dt{font-size:12.5px;color:rgba(255,255,255,.72);overflow-wrap:anywhere}
.fb .acts{display:flex;align-items:center;gap:2px;flex-wrap:wrap;justify-content:flex-end}
.fb .acts a,.fb .acts button{background:none;border:0;border-radius:7px;padding:6px 9px;color:#D5F098;font:600 13px Figtree,system-ui,sans-serif;text-decoration:none;cursor:pointer;white-space:nowrap}
.fb .acts a:hover,.fb .acts button:hover{background:rgba(213,240,152,.14)}
.fb .acts .x{color:rgba(255,255,255,.55);font-size:17px;font-weight:500;padding:4px 8px}
.fb .acts .x:hover{color:#fff;background:rgba(255,255,255,.1)}
@keyframes fbIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.fb-flash{animation:fbFlash 2s ease-out;border-radius:inherit}
@keyframes fbFlash{0%,35%{box-shadow:0 0 0 3px #B9DE6A,0 0 0 8px rgba(213,240,152,.55)}100%{box-shadow:0 0 0 0 rgba(213,240,152,0)}}
@media (max-width:560px){.fb{grid-template-columns:24px minmax(0,1fr);padding:10px 10px 8px 12px}.fb .acts{grid-column:1/-1;justify-content:flex-start;margin-left:30px}}
@media (prefers-reduced-motion:reduce){.fb,.fb-flash{animation:none}}
