/* ==========================================================================
   La Tablée Nomade — thème enfant TT5
   site.css : polices, tokens, primitives, header, footer (chargé partout).
   Les styles propres à chaque écran sont dans assets/css/<page>.css.
   ========================================================================== */

/* ---------- Polices auto-hébergées ---------- */
@font-face {
  font-family: 'Cormorant Garamond'; font-weight: 600; font-style: normal; font-display: swap;
  src: url('../fonts/cormorant-garamond-latin-600-normal.woff2') format('woff2');
}
@font-face { font-family: 'Karla'; font-weight: 400; font-style: normal; font-display: swap; src: url('../fonts/karla-latin-400-normal.woff2') format('woff2'); }
@font-face { font-family: 'Karla'; font-weight: 500; font-style: normal; font-display: swap; src: url('../fonts/karla-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family: 'Karla'; font-weight: 600; font-style: normal; font-display: swap; src: url('../fonts/karla-latin-600-normal.woff2') format('woff2'); }
@font-face { font-family: 'Karla'; font-weight: 700; font-style: normal; font-display: swap; src: url('../fonts/karla-latin-700-normal.woff2') format('woff2'); }

/* ---------- Tokens ---------- */
:root {
  --forest: #1f3a34; --terracotta: #a9503c; --terracotta-dark: #8a3f2e; --cream: #f7f1e1;
  --offwhite: #fdfaf2; --ocre: #d9a545; --olive: #6b7a3f; --olive-text: #54632f;
  --forest-text: #3d4a3f; --forest-text-2: #3f5c53; --cream-text: #e6dfcd; --brown: #8a6244;
  --sand: #a08c68; --border-light: #e0d5bb; --border-field: #cbbf9f; --terracotta-light: #f6e5de;
  --label-bg: #f3f1e2; --tile: #efe6d3;
  --font-serif: 'Cormorant Garamond', Georgia, serif;
  --font-sans: 'Karla', system-ui, -apple-system, sans-serif;
  --content-max: 1100px; --pad-x: 44px; --pad-x-mobile: 20px;
}

/* ---------- Reset ciblé (le thème parent gère la base ; on impose notre charte) ---------- */
.tn body, body.tn-body { margin: 0; }
body {
  background: var(--offwhite); color: var(--forest-text);
  font-family: var(--font-sans); font-weight: 400; line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
.tn-main { display: block; }
.tn-main *, .tn-main *::before, .tn-main *::after { box-sizing: border-box; }
.tn-main img { max-width: 100%; display: block; }
.tn-main h1, .tn-main h2, .tn-main h3, .tn-main h4 {
  font-family: var(--font-serif); font-weight: 600; color: var(--forest); margin: 0; line-height: 1.15;
}
.tn-main p { margin: 0; }
.tn-main a { color: var(--terracotta); text-decoration: none; transition: color 150ms ease; }
.tn-main a:hover { color: var(--terracotta-dark); }
.tn-main :focus-visible { outline: 2px solid var(--terracotta); outline-offset: 2px; }

/* ---------- Sections & wrap ---------- */
.section { padding: 60px var(--pad-x); }
.section--cream { background: var(--cream); border-top: 1px solid var(--border-light); border-bottom: 1px solid var(--border-light); }
.section--offwhite { background: var(--offwhite); }
.section--forest { background: var(--forest); color: var(--cream-text); }
.wrap { max-width: var(--content-max); margin-inline: auto; }

/* ---------- Surtitre / filet / titres ---------- */
.surtitre { font: 600 11px/1 var(--font-sans); letter-spacing: .22em; text-transform: uppercase; color: var(--terracotta); }
.surtitre--ocre { color: var(--ocre); }
.rule { width: 44px; height: 2px; background: var(--ocre); border: 0; }
.rule--sm { width: 34px; }
.title-hero { font: 600 54px/1.04 var(--font-serif); color: var(--forest); }
.title-page { font: 600 42px/1.1 var(--font-serif); color: var(--forest); }
.title-section { font: 600 34px/1.15 var(--font-serif); color: var(--forest); }
.title-card { font: 600 24px/1.15 var(--font-serif); color: var(--forest); }

/* ---------- Boutons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font: 600 14px var(--font-sans); padding: 13px 26px; border-radius: 26px;
  border: 1px solid transparent; cursor: pointer; text-align: center; white-space: nowrap;
  transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}
/* Spécificité .btn.btn--x (0,2,0) pour l'emporter sur .tn-main a (0,1,1) : sinon
   le texte des boutons-liens hérite du terracotta et devient invisible. */
.btn.btn--primary { background: var(--terracotta); color: #fff; }
.btn.btn--primary:hover { background: var(--terracotta-dark); color: #fff; }
.btn.btn--outline { background: var(--offwhite); color: var(--forest); border-color: var(--forest); }
.btn.btn--outline:hover { background: var(--cream); color: var(--forest); }
.btn.btn--forest { background: var(--forest); color: var(--cream); }
.btn.btn--forest:hover { background: #16302a; color: var(--cream); }
.btn.btn--outline-cream { background: transparent; color: var(--cream); border-color: var(--cream); }
.btn.btn--outline-cream:hover { background: rgba(247,241,225,.1); color: var(--cream); }
.btn--sm { padding: 9px 18px; font-size: 12.5px; border-radius: 22px; }

/* ---------- Carte / chip / placeholder / champs ---------- */
.card { background: var(--cream); border: 1px solid var(--border-light); border-radius: 5px; overflow: hidden; }
.chip { display: inline-block; border: 1px solid var(--olive); color: var(--olive-text); background: var(--label-bg); border-radius: 16px; padding: 5px 13px; font: 500 12.5px var(--font-sans); }
.placeholder-hatch {
  background: repeating-linear-gradient(45deg, var(--tile), var(--tile) 8px, #f9f3e4 8px, #f9f3e4 16px);
  border: 1px solid var(--border-field); display: flex; align-items: center; justify-content: center;
  text-align: center; font: 12px/1.5 ui-monospace, Menlo, monospace; color: var(--brown); border-radius: 4px; padding: 10px;
}
.field-label { font: 600 12px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--forest-text-2); }
.input, .textarea { width: 100%; background: var(--cream); border: 1px solid var(--border-field); border-radius: 4px; padding: 13px 14px; font: 400 14px var(--font-sans); color: var(--forest); }
.input::placeholder, .textarea::placeholder { color: var(--sand); }
.input:focus, .textarea:focus { outline: none; border-color: var(--terracotta); }
.input--error, .textarea--error { border-color: var(--terracotta); }
.field-error { font: 500 12.5px var(--font-sans); color: var(--terracotta); }

/* ---------- En-tête ---------- */
.tn-header { position: sticky; top: 0; z-index: 40; background: var(--cream); border-bottom: 1px solid var(--border-light); }
.tn-header__inner { max-width: var(--content-max); margin-inline: auto; display: flex; align-items: center; justify-content: space-between; gap: 28px; padding: 18px var(--pad-x); }
.tn-logo { font: 600 22px/1 var(--font-serif); letter-spacing: .06em; text-transform: uppercase; color: var(--forest); white-space: nowrap; text-decoration: none; }
.tn-logo:hover { color: var(--forest); }
.tn-nav { display: flex; gap: 26px; }
.tn-nav a { font: 500 13px var(--font-sans); color: var(--forest-text-2); text-decoration: none; padding-bottom: 2px; border-bottom: 2px solid transparent; }
.tn-nav a:hover { color: var(--terracotta); }
.tn-nav a.is-current { color: var(--terracotta); border-bottom-color: var(--terracotta); }
.tn-header__cta { display: flex; align-items: center; gap: 10px; }
.tn-header__phone { font: 600 13px var(--font-sans); color: var(--forest); text-decoration: none; }
.tn-header__phone:hover { color: var(--terracotta); }
.tn-menu-toggle { display: none; background: none; border: none; font: 600 22px var(--font-sans); color: var(--forest); cursor: pointer; line-height: 1; padding: 4px 8px; }
.tn-nav-mobile { display: none; flex-direction: column; padding: 8px var(--pad-x) 16px; border-top: 1px solid var(--border-light); background: var(--cream); }
.tn-nav-mobile.is-open { display: flex; }
.tn-nav-mobile a { font: 500 15px var(--font-sans); color: var(--forest-text-2); text-decoration: none; padding: 12px 0; border-bottom: 1px solid var(--border-light); min-height: 44px; display: flex; align-items: center; }
.tn-nav-mobile a.is-current { color: var(--terracotta); }

/* ---------- Pied de page ---------- */
.tn-footer { background: var(--forest); }
.tn-footer__inner { max-width: var(--content-max); margin-inline: auto; padding: 32px var(--pad-x); display: flex; justify-content: space-between; align-items: center; gap: 24px; }
.tn-footer__brand { font: 600 18px var(--font-serif); letter-spacing: .06em; text-transform: uppercase; color: var(--cream); }
.tn-footer__meta { font: 400 12.5px/1.7 var(--font-sans); color: var(--cream-text); text-align: right; }
.tn-footer__meta a { color: var(--cream-text); text-decoration: none; }
.tn-footer__meta a:hover { color: #fff; }

/* ---------- Accessibilité ---------- */
.visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ---------- Îlots ---------- */
.tn-island:empty { min-height: 0; }

/* ---------- Responsive header/footer ---------- */
@media (max-width: 900px) {
  :root { --pad-x: 24px; }
  .section { padding: 40px var(--pad-x); }
  .title-hero { font-size: 40px; }
  .title-page { font-size: 34px; }
  .title-section { font-size: 27px; }
  .tn-nav, .tn-header__phone { display: none; }
  .tn-menu-toggle { display: block; }
}
@media (max-width: 600px) {
  :root { --pad-x: 20px; }
  .section { padding: 30px var(--pad-x); }
  .title-hero { font-size: 33px; line-height: 1.08; }
  .tn-footer__inner { flex-direction: column; align-items: center; text-align: center; }
  .tn-footer__meta { text-align: center; }
}
@media (prefers-reduced-motion: reduce) { * { animation-duration: .001ms !important; transition-duration: .001ms !important; } }
