/* Finances Expat — composants communs des pages intérieures migrées.
   Consomme les tokens de design-system.css sans modifier l'accueil.
   Les styles de consentement et les moteurs fonctionnels restent autonomes. */
.fe-interior,
.fe-interior :where(main, .fe-site-header, .fe-site-footer) *,
.fe-interior :where(main, .fe-site-header, .fe-site-footer) *::before,
.fe-interior :where(main, .fe-site-header, .fe-site-footer) *::after { box-sizing: border-box; }

.fe-interior {
  margin: 0;
  color: var(--fe-text);
  background: var(--fe-ivory);
  font-family: var(--fe-font-editorial);
  font-size: 18px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.fe-interior :where(main, .fe-site-header, .fe-site-footer) :where(h1, h2, h3, p, figure, ul, ol) { margin: 0; }
.fe-interior :where(main, .fe-site-header, .fe-site-footer) :where(h1, h2, h3) {
  color: var(--fe-navy);
  font-family: var(--fe-font-editorial);
  font-weight: 600;
  text-wrap: balance;
}
.fe-interior :where(main, .fe-site-header, .fe-site-footer) a {
  color: var(--fe-forest);
  text-decoration-color: #a8bcb1;
  text-underline-offset: 4px;
  overflow-wrap: anywhere;
}
.fe-interior :where(main, .fe-site-header, .fe-site-footer) a:hover { text-decoration-color: currentColor; text-decoration-thickness: 2px; }
.fe-interior :where(main, .fe-site-header, .fe-site-footer) :focus-visible:where(:not(.fe-consent-manage)),
.fe-interior .fe-skip-link:focus-visible { outline: 3px solid var(--fe-focus); outline-offset: 4px; }
.fe-interior :where(main, .fe-site-header, .fe-site-footer) :where(h1[id], h2[id], h3[id], section[id]) { scroll-margin-top: 100px; }
.fe-interior :where(main, .fe-site-header, .fe-site-footer) img { display: block; max-width: 100%; height: auto; }
.fe-interior :where(main, .fe-site-header, .fe-site-footer) :where(button:not(.fe-consent-manage), input, select, textarea) { font: inherit; }
.fe-interior :where(main, .fe-site-header, .fe-site-footer) button { cursor: pointer; }
.fe-interior .wrap { width: min(var(--fe-container), calc(100% - 2 * var(--fe-gutter))); margin-inline: auto; }
.fe-interior .col { width: min(var(--fe-reading), calc(100% - 2 * var(--fe-gutter))); margin-inline: auto; }
.fe-interior .fe-skip-link {
  position: fixed;
  top: 8px;
  left: 16px;
  z-index: 110;
  padding: 10px 16px;
  transform: translateY(-160%);
  border-radius: var(--fe-radius-small);
  color: var(--fe-white);
  background: var(--fe-navy);
  font-family: var(--fe-font-ui);
  font-size: 14px;
}
.fe-interior .fe-skip-link:focus { transform: translateY(0); }

/* Le sélecteur cible le header principal, jamais ceux d'un futur outil. */
.fe-interior .fe-site-header {
  position: sticky;
  top: 0;
  z-index: 60;
  border-bottom: 1px solid var(--fe-line);
  background: rgb(250 248 244 / 96%);
  backdrop-filter: blur(14px);
}
.fe-interior .nav { display: flex; min-height: 76px; align-items: center; justify-content: space-between; gap: 22px; }
.fe-interior .brand { display: flex; flex: 0 0 auto; flex-direction: column; color: var(--fe-navy); line-height: 1.1; text-decoration: none; }
.fe-interior .brand b { font-family: var(--fe-font-editorial); font-size: 25px; font-weight: 600; letter-spacing: -.025em; text-transform: uppercase; }
.fe-interior .brand span { margin-top: 6px; color: var(--fe-muted); font-family: var(--fe-font-ui); font-size: 8px; letter-spacing: .11em; }
.fe-interior .navlinks { display: flex; align-items: center; gap: 20px; }
.fe-interior .navlinks a { display: inline-flex; min-height: 44px; align-items: center; color: var(--fe-navy); font-family: var(--fe-font-ui); font-size: 13px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.fe-interior .navlinks a:nth-child(4) { position: relative; margin-left: 10px; padding-left: 14px; }
.fe-interior .navlinks a:nth-child(4)::before { position: absolute; top: calc(50% - 8px); left: 0; width: 1px; height: 16px; background: var(--fe-line); content: ""; }
.fe-interior .navlinks a:nth-child(7) { margin-left: 10px; padding: 6px 12px; border: 1px solid #c3ccc7; border-radius: var(--fe-radius-small); color: var(--fe-forest); }
.fe-interior .navlinks a:hover { color: var(--fe-forest); text-decoration: underline; }
.fe-interior .mobile-menu-toggle { display: none; }

/* Primitives réutilisables, indépendantes de la famille article/hub/outil. */
.fe-interior .fe-number { white-space: nowrap; font-variant-numeric: tabular-nums; }
.fe-interior .fe-button { color: var(--fe-white); }
.fe-interior .fe-button:hover { color: var(--fe-white); background: var(--fe-forest-deep); text-decoration: none; }
.fe-interior .fe-button--outline { color: var(--fe-navy); background: var(--fe-white); border-color: #81929a; }
.fe-interior .fe-button--outline:hover { color: var(--fe-navy); background: var(--fe-beige-soft); border-color: var(--fe-forest); }
.fe-interior :where(.fe-callout, .fe-partner, .fe-disclaimer, .fe-sources) {
  margin-block: var(--fe-space-6);
  padding: var(--fe-space-5) var(--fe-space-6);
  border: 1px solid var(--fe-line);
  border-radius: var(--fe-radius-card);
  background: var(--fe-white);
  font-family: var(--fe-font-ui);
  font-size: 16px;
  line-height: 1.6;
  overflow-wrap: anywhere;
}
.fe-interior .fe-callout { border-left: 3px solid var(--fe-forest); background: var(--fe-beige-soft); }
.fe-interior .fe-callout .ctitle { margin-bottom: var(--fe-space-3); color: var(--fe-forest); font-size: 11px; font-weight: 700; letter-spacing: .08em; line-height: 1.5; text-transform: uppercase; }
.fe-interior .fe-callout p { margin-top: 0; }
.fe-interior .fe-partner { background: var(--fe-beige-soft); }
.fe-interior .fe-partner h3 { margin: 0; font-size: 25px; line-height: 1.25; }
.fe-interior .fe-partner p { margin-top: var(--fe-space-3); }
.fe-interior .fe-partner .fe-button { margin-top: var(--fe-space-5); }
.fe-interior .fe-partner .partner-note { margin-top: var(--fe-space-4); color: var(--fe-muted); font-size: 13px; line-height: 1.6; }
.fe-interior .fe-sources { margin-top: var(--fe-space-5); }
.fe-interior .fe-sources p { margin-top: 0; color: var(--fe-muted); font-size: 14px; line-height: 1.6; }
.fe-interior .fe-disclaimer { padding-block: var(--fe-space-5); background: var(--fe-beige-soft); color: var(--fe-muted); font-size: 14px; }
.fe-interior .fe-disclaimer strong { color: var(--fe-navy); }

.fe-interior .fe-site-footer { padding-block: 38px 25px; color: #d3dde0; background: var(--fe-navy); }
.fe-interior .foot-top { display: grid; grid-template-columns: 1.1fr 2.2fr; gap: 60px; align-items: start; }
.fe-interior .fe-site-footer .brand { max-width: 265px; color: var(--fe-white); }
.fe-interior .fe-site-footer .brand b { font-size: 24px; }
.fe-interior .fe-site-footer .brand span { margin-top: 10px; color: #c4d1d5; font-family: var(--fe-font-editorial); font-size: 12px; letter-spacing: 0; line-height: 1.5; text-transform: none; }
.fe-interior .foot-links { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; }
.fe-interior .fe-footer-group { display: flex; min-width: 0; flex-direction: column; gap: 5px; }
.fe-interior .fe-footer-group a { display: inline-flex; min-height: 32px; align-items: center; color: #d4dfe3; font-family: var(--fe-font-ui); font-size: 12px; line-height: 1.45; text-decoration: none; }
.fe-interior .fe-footer-group a:first-child { margin-bottom: 3px; color: var(--fe-white); font-family: var(--fe-font-editorial); font-size: 15px; font-weight: 600; }
.fe-interior .fe-footer-group a:hover { text-decoration: underline; }
.fe-interior .fe-site-footer a:focus-visible { outline-color: var(--fe-white); }
.fe-interior .foot-disc { max-width: 940px; margin-top: 26px; padding-top: 20px; border-top: 1px solid rgb(255 255 255 / 14%); color: #b6c7cf; font-family: var(--fe-font-ui); font-size: 12px; line-height: 1.65; }
.fe-interior .foot-disc strong { color: #d4dfe3; }
.fe-interior .copy { margin-top: 17px; color: #a4bcc6; font-family: var(--fe-font-ui); font-size: 11px; }

@media (max-width: 1120px) {
  .fe-interior .nav { position: relative; min-height: 72px; }
  .fe-interior .mobile-menu-toggle { display: inline-flex; min-height: 44px; align-items: center; gap: 9px; padding: 8px 12px; border: 1px solid #b6c4bf; border-radius: var(--fe-radius-small); color: var(--fe-navy); background: transparent; font-family: var(--fe-font-ui); font-size: 13px; font-weight: 600; }
  .fe-interior .mobile-menu-icon,
  .fe-interior .mobile-menu-icon::before,
  .fe-interior .mobile-menu-icon::after { display: block; width: 17px; height: 1.5px; border-radius: 2px; background: currentColor; }
  .fe-interior .mobile-menu-icon { position: relative; }
  .fe-interior .mobile-menu-icon::before,
  .fe-interior .mobile-menu-icon::after { position: absolute; left: 0; content: ""; }
  .fe-interior .mobile-menu-icon::before { top: -5px; }
  .fe-interior .mobile-menu-icon::after { top: 5px; }
  .fe-interior .navlinks { position: absolute; top: calc(100% - 1px); right: 0; left: 0; display: none; max-height: calc(100dvh - 95px); flex-direction: column; align-items: stretch; gap: 0; overflow-y: auto; padding: 8px 18px; border: 1px solid var(--fe-line); border-radius: 0 0 var(--fe-radius-card) var(--fe-radius-card); background: var(--fe-white); box-shadow: var(--fe-shadow-lift); }
  .fe-interior .navlinks.is-open { display: flex; }
  .fe-interior .navlinks a { min-height: 46px; padding-block: 12px; border-bottom: 1px solid #edf0eb; font-size: 16px; white-space: normal; }
  .fe-interior .navlinks a:last-child { border-bottom: 0; }
  .fe-interior .navlinks a:nth-child(4) { margin-left: 0; margin-top: 7px; padding-left: 0; padding-top: 15px; border-top: 1px solid var(--fe-line); }
  .fe-interior .navlinks a:nth-child(4)::before { display: none; }
  .fe-interior .navlinks a:nth-child(7) { margin-left: 0; margin-top: 7px; padding: 12px 0; border: 0; border-top: 1px solid var(--fe-line); border-radius: 0; color: var(--fe-navy); }
}
@media (max-width: 900px) {
  .fe-interior .foot-top { grid-template-columns: 1fr; gap: 28px; }
  .fe-interior .fe-site-footer .brand { max-width: 360px; }
}
@media (max-width: 540px) {
  .fe-interior .nav { min-height: 68px; gap: 12px; }
  .fe-interior .brand b { font-size: 22px; }
  .fe-interior .brand span { font-size: 7px; letter-spacing: .08em; }
  .fe-interior .mobile-menu-toggle { padding-inline: 10px; }
  .fe-interior :where(.fe-callout, .fe-partner, .fe-disclaimer, .fe-sources) { padding-inline: var(--fe-space-5); }
  .fe-interior .fe-partner .fe-button { width: 100%; }
  .fe-interior .fe-site-footer { padding-block: 32px 24px; }
  .fe-interior .foot-links { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 25px 22px; }
  .fe-interior .fe-footer-group a { min-height: 44px; }
}
@media (max-width: 359px) { .fe-interior .fe-site-header .brand b { font-size: 20px; } }
.fe-interior :where(main, .fe-site-header, .fe-site-footer) [hidden] { display: none; }
@media (prefers-reduced-motion: reduce) {
  .fe-interior :where(main, .fe-site-header, .fe-site-footer) *,
  .fe-interior :where(main, .fe-site-header, .fe-site-footer) *::before,
  .fe-interior :where(main, .fe-site-header, .fe-site-footer) *::after { animation-duration: 0s; transition-duration: 0s; scroll-behavior: auto; }
}
