/* =========================================================
   4BeyondTheMap — Modern UI (v2)
   - Classes HTML existantes conservées pour compatibilité
   - Design tokens, typographie premium, glassmorphism,
     cartes élevées, gradients, animations douces
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Manrope:wght@500;600;700;800&display=swap');

:root{
  /* Palette claire */
  --bg: #fafaf7;
  --bg-elevated: #ffffff;
  --fg: #0f172a;
  --fg-soft: #1e293b;
  --muted: #64748b;
  --border: #e6e8ee;
  --border-soft: #f1f3f8;

  --card: #ffffff;
  --card-hover: #ffffff;
  --card-elevated: #ffffff;

  /* Accents */
  --accent: #f59e0b;
  --accent-strong: #d97706;
  --accent2: #fb923c;

  --teal: #0d9488;
  --indigo: #6366f1;
  --rose: #ec4899;
  --sky: #0ea5e9;

  /* Gradients */
  --grad-hero: linear-gradient(135deg, #fde68a 0%, #fdba74 40%, #fecaca 100%);
  --grad-accent: linear-gradient(135deg, #f59e0b 0%, #fb923c 60%, #ec4899 100%);
  --grad-sky: linear-gradient(135deg, #0ea5e9 0%, #6366f1 100%);
  --grad-mesh: radial-gradient(900px 500px at 10% -10%, rgba(245,158,11,.18), transparent 60%),
               radial-gradient(800px 600px at 90% 10%, rgba(99,102,241,.14), transparent 55%),
               radial-gradient(700px 500px at 50% 110%, rgba(236,72,153,.12), transparent 55%);

  /* Shadows */
  --shadow-xs: 0 1px 2px rgba(15,23,42,.04);
  --shadow-sm: 0 2px 6px rgba(15,23,42,.06), 0 1px 2px rgba(15,23,42,.04);
  --shadow-md: 0 10px 30px -8px rgba(15,23,42,.12), 0 4px 12px -4px rgba(15,23,42,.06);
  --shadow-lg: 0 24px 60px -12px rgba(15,23,42,.18), 0 10px 24px -8px rgba(15,23,42,.08);
  --shadow-glow: 0 0 0 1px rgba(245,158,11,.22), 0 16px 40px -10px rgba(245,158,11,.25);

  /* Radii & motion */
  --r-sm: 10px;
  --r-md: 14px;
  --r-lg: 20px;
  --r-xl: 28px;
  --r-pill: 999px;
  --ease: cubic-bezier(.2,.7,.2,1);
  --t-fast: .18s;
  --t-med: .32s;
  --t-slow: .55s;
}

:root.dark{
  --bg: #070b16;
  --bg-elevated: #0d1424;
  --fg: #e5e7eb;
  --fg-soft: #cbd5e1;
  --muted: #94a3b8;
  --border: #1e293b;
  --border-soft: #162033;

  --card: #0f172a;
  --card-hover: #131c30;
  --card-elevated: #131c30;

  --grad-hero: linear-gradient(135deg, #1e1b4b 0%, #3b0764 40%, #831843 100%);
  --grad-mesh: radial-gradient(900px 500px at 10% -10%, rgba(245,158,11,.18), transparent 60%),
               radial-gradient(800px 600px at 90% 10%, rgba(99,102,241,.22), transparent 55%),
               radial-gradient(700px 500px at 50% 110%, rgba(236,72,153,.18), transparent 55%);

  --shadow-sm: 0 2px 6px rgba(0,0,0,.35), 0 1px 2px rgba(0,0,0,.2);
  --shadow-md: 0 10px 30px -8px rgba(0,0,0,.55), 0 4px 12px -4px rgba(0,0,0,.35);
  --shadow-lg: 0 24px 60px -12px rgba(0,0,0,.65), 0 10px 24px -8px rgba(0,0,0,.45);
  --shadow-glow: 0 0 0 1px rgba(245,158,11,.35), 0 16px 40px -10px rgba(245,158,11,.35);
}

*{box-sizing:border-box}
html,body{
  margin:0;padding:0;
  font-family:'Inter','Manrope',system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);
  color:var(--fg);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  font-feature-settings:"cv11","ss01","ss03";
}
body{
  background:
    var(--grad-mesh),
    var(--bg);
  background-attachment: fixed;
}
a{color:var(--accent-strong);text-decoration:none;transition:color var(--t-fast) var(--ease)}
a:hover{color:var(--accent2)}
::selection{background:rgba(245,158,11,.3);color:var(--fg)}

.container{max-width:1180px;margin:0 auto;padding:22px 22px}
@media (max-width:560px){ .container{padding:16px 14px} }

/* ====== Typo ====== */
h1,h2,h3,h4{font-family:'Manrope','Inter',system-ui,sans-serif;letter-spacing:-.02em;line-height:1.18;color:var(--fg)}
h1{font-size:clamp(28px,4.6vw,44px);font-weight:800;margin:0 0 .4em}
h2{font-size:clamp(20px,2.8vw,26px);font-weight:700;margin:.2em 0 .6em}
h3{font-size:clamp(17px,2vw,20px);font-weight:700;margin:.4em 0 .3em}
p{margin:.4em 0 .9em;color:var(--fg-soft)}
.lead{font-size:clamp(16px,1.8vw,18px);color:var(--fg-soft);max-width:72ch;line-height:1.65}
strong{color:var(--fg);font-weight:600}
ul{padding-left:1.2em}
ul li{margin:.35em 0}
ul li strong{color:var(--fg)}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--border-soft);padding:.15em .4em;border-radius:6px;font-size:.9em}

/* ====== Nav ====== */
header.container{position:sticky;top:0;z-index:50;padding-top:14px;padding-bottom:14px;background:transparent}
.nav{
  display:flex;gap:20px;align-items:center;flex-wrap:wrap;
  padding:10px 16px;
  background:rgba(255,255,255,.72);
  border:1px solid rgba(230,232,238,.8);
  border-radius:var(--r-pill);
  backdrop-filter:blur(14px) saturate(1.4);
  -webkit-backdrop-filter:blur(14px) saturate(1.4);
  box-shadow:var(--shadow-sm);
  transition:box-shadow var(--t-med) var(--ease),background var(--t-med) var(--ease);
}
:root.dark .nav{background:rgba(13,20,36,.7);border-color:rgba(30,41,59,.7)}
.nav:hover{box-shadow:var(--shadow-md)}
.nav a{font-weight:600;color:var(--fg);font-size:14.5px;padding:4px 2px;position:relative}
.nav a::after{
  content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;
  background:var(--grad-accent);border-radius:2px;
  transform:scaleX(0);transform-origin:center;
  transition:transform var(--t-med) var(--ease);
}
.nav a:hover::after{transform:scaleX(1)}
.nav a:first-child{
  font-size:17px;font-weight:800;letter-spacing:-.02em;
  background:var(--grad-accent);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.nav a:first-child::after{display:none}
.langs{margin-left:auto;display:flex;gap:6px;align-items:center}
.langs .btn{padding:6px 10px;font-size:12px;font-weight:600}

/* ====== Boutons ====== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  border:1px solid transparent;
  background:var(--grad-accent);
  color:#111;
  padding:10px 18px;
  border-radius:var(--r-pill);
  cursor:pointer;font-weight:700;font-size:14px;
  box-shadow:0 6px 16px -4px rgba(245,158,11,.45), inset 0 1px 0 rgba(255,255,255,.4);
  transition:transform var(--t-fast) var(--ease),box-shadow var(--t-med) var(--ease),filter var(--t-fast) var(--ease);
  font-family:inherit;text-decoration:none;
}
.btn:hover{transform:translateY(-1px);box-shadow:0 10px 22px -6px rgba(245,158,11,.55);color:#111;text-decoration:none}
.btn:active{transform:translateY(0)}
.btn.small{padding:6px 12px;font-size:12.5px;border-radius:var(--r-pill)}
.btn.secondary{
  background:var(--bg-elevated);color:var(--fg);
  border:1px solid var(--border);box-shadow:var(--shadow-xs);
}
.btn.secondary:hover{background:var(--card-hover);border-color:var(--border)}
.btn.theme{background:transparent;border:1px solid var(--border);color:var(--fg);box-shadow:none;padding:6px 10px}
.btn.theme:hover{background:var(--card-hover)}

/* ====== Cartes ====== */
.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  padding:22px;
  box-shadow:var(--shadow-sm);
  transition:transform var(--t-med) var(--ease),box-shadow var(--t-med) var(--ease),border-color var(--t-med) var(--ease),background var(--t-med) var(--ease);
  position:relative;
}
.card h2{margin-top:0}
a.card{
  display:block;color:var(--fg);
  position:relative;overflow:hidden;
}
a.card::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(135deg, rgba(245,158,11,.08), rgba(99,102,241,.05));
  opacity:0;transition:opacity var(--t-med) var(--ease);
  pointer-events:none;
}
a.card:hover{
  text-decoration:none;
  transform:translateY(-4px);
  box-shadow:var(--shadow-lg);
  border-color:rgba(245,158,11,.35);
}
a.card:hover::before{opacity:1}
a.card strong{font-size:16px;font-weight:700;color:var(--fg)}
a.card .small{display:block;margin-top:4px;color:var(--muted);font-size:13px;line-height:1.5}

/* Grids */
.grid{display:grid;gap:16px}
@media (max-width:560px){ .grid{gap:12px} }

/* Section "container card" = carte large avec grand titre */
section.container.card{
  padding:28px 26px;
  border-radius:var(--r-xl);
}
@media (max-width:560px){ section.container.card{padding:22px 18px;border-radius:var(--r-lg)} }

/* ====== Hero "container card" (première section d'une page pays/ville) ====== */
section.container.card:first-of-type{
  background:linear-gradient(135deg, var(--bg-elevated) 0%, var(--bg-elevated) 100%);
  border:1px solid var(--border);
  position:relative;overflow:hidden;
}
section.container.card:first-of-type::before{
  content:"";position:absolute;inset:0;z-index:0;
  background:
    radial-gradient(500px 220px at 85% 0%, rgba(245,158,11,.18), transparent 60%),
    radial-gradient(420px 200px at 10% 100%, rgba(99,102,241,.14), transparent 60%);
  pointer-events:none;
}
section.container.card:first-of-type > *{position:relative;z-index:1}
section.container.card:first-of-type h1{margin-top:6px}

/* ====== Petite UI ====== */
.small{font-size:12.5px;color:var(--muted)}
.badge{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;border-radius:var(--r-pill);
  background:var(--grad-accent);color:#111;font-weight:700;font-size:13px;
  box-shadow:var(--shadow-sm);
}
footer{border-top:1px solid var(--border);margin-top:48px;padding:20px 22px;color:var(--muted);font-size:13px}
footer a{color:var(--muted)}
footer a:hover{color:var(--accent-strong)}
img{max-width:100%;height:auto;border-radius:12px}

/* ====== Calendrier ====== */
table.calendar{width:100%;border-collapse:separate;border-spacing:4px;margin:10px 0;font-size:13px}
table.calendar th,table.calendar td{
  border:none;padding:8px 2px;text-align:center;width:calc(100%/12);
  border-radius:8px;font-weight:600;
}
table.calendar th{
  color:var(--muted);background:transparent;font-weight:700;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;
  padding:4px 0;
}
table.calendar td.m2{background:linear-gradient(135deg,rgba(16,185,129,.18),rgba(52,211,153,.24));color:var(--fg)}
table.calendar td.m1{background:linear-gradient(135deg,rgba(251,191,36,.18),rgba(245,158,11,.25));color:var(--fg)}
table.calendar td.m0,table.calendar td.m3{background:linear-gradient(135deg,rgba(248,113,113,.18),rgba(239,68,68,.25));color:var(--fg)}
.cost{
  font-size:22px;letter-spacing:3px;margin:6px 0;
  background:var(--grad-accent);-webkit-background-clip:text;background-clip:text;color:transparent;
  font-weight:800;
}

/* ====== Accordion ====== */
.accordion details{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  padding:14px 18px;
  transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease);
}
.accordion details[open]{box-shadow:var(--shadow-sm);border-color:rgba(245,158,11,.35)}
.accordion summary{
  cursor:pointer;font-weight:700;list-style:none;
  display:flex;align-items:center;gap:10px;color:var(--fg);font-size:15px;
}
.accordion summary::-webkit-details-marker{display:none}
.accordion summary::before{
  content:"+";display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;
  background:var(--grad-accent);color:#111;font-weight:800;font-size:14px;
  transition:transform var(--t-fast) var(--ease);
}
.accordion details[open] summary::before{content:"–";transform:rotate(180deg)}
.accordion .content{margin-top:12px;color:var(--fg-soft)}

/* ====== Forms ====== */
input,textarea,select{
  width:100%;padding:12px 14px;
  border:1px solid var(--border);border-radius:12px;
  background:var(--bg-elevated);color:var(--fg);
  font:inherit;
  transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease);
}
input:focus,textarea:focus,select:focus{
  outline:none;border-color:var(--accent);
  box-shadow:0 0 0 4px rgba(245,158,11,.18);
}
label{display:block;margin-bottom:14px;font-weight:600;color:var(--fg)}
label input,label textarea,label select{margin-top:6px;font-weight:400}

/* ====== Animations ====== */
.fade{transition:background-color var(--t-slow) var(--ease),color var(--t-slow) var(--ease),filter var(--t-slow) var(--ease)}

/* Splash */
.splash{
  position:fixed;inset:0;background:var(--bg);
  display:flex;align-items:center;justify-content:center;z-index:9999;
  opacity:1;transition:opacity .6s var(--ease);
}
.splash.hide{opacity:0;pointer-events:none}
.splash-inner{text-align:center;animation:pop .6s var(--ease)}
@keyframes pop { from{transform:scale(.96);opacity:.4} to{transform:scale(1);opacity:1} }

/* Animations d'entrée (utilisables avec IntersectionObserver ou au chargement) */
@keyframes rise { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:translateY(0)} }
section.container{animation:rise .6s var(--ease) both}
section.container:nth-child(2){animation-delay:.05s}
section.container:nth-child(3){animation-delay:.1s}
section.container:nth-child(4){animation-delay:.15s}
section.container:nth-child(5){animation-delay:.2s}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* ====== Behind the Map card ====== */
.behind-card{
  margin-top:20px;
  background:linear-gradient(135deg,rgba(245,158,11,.1),rgba(251,146,60,.04) 60%,rgba(99,102,241,.08));
  border:1px solid rgba(245,158,11,.35);
  border-radius:var(--r-lg);
  padding:22px;
  box-shadow:var(--shadow-sm);
}
.behind-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.behind-header h3{margin:0;font-size:18px}
.behind-tips{display:grid;gap:10px}
.behind-tip{
  background:var(--card);border:1px solid var(--border);
  border-radius:12px;padding:12px 14px;
  transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease);
}
.behind-tip:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}
.behind-locked{display:grid;gap:12px}
.behind-form{display:flex;gap:8px;flex-wrap:wrap}
.behind-form input[name=email]{flex:1;min-width:200px}
.behind-form .btn{flex:0 0 auto}

/* ====== Utilitaires ====== */
.chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 12px;border-radius:var(--r-pill);
  background:var(--card);border:1px solid var(--border);
  font-size:12.5px;font-weight:600;color:var(--fg);
}

/* Scrollbar plus discrète */
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:rgba(100,116,139,.35);border-radius:10px}
*::-webkit-scrollbar-thumb:hover{background:rgba(100,116,139,.55)}
*::-webkit-scrollbar-track{background:transparent}
