/*
Theme Name: MvdS World
Theme URI: https://mvdsprojecten.nl/
Author: MvdS Projecten
Description: Modulair WordPress-thema voor de interactieve MvdS-wereld: een plein met klikbare gebouwen, uitbreidbare binnenruimtes en normale toegankelijke navigatie als fallback.
Version: 0.1.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: mvds-world
*/

:root {
  --mvds-ink: #21302d;
  --mvds-paper: #f7f3ea;
  --mvds-accent: #8f4b35;
  --mvds-accent-2: #335f68;
  --mvds-gold: #b39150;
  --mvds-shadow: 0 16px 40px rgba(24, 35, 31, .16);
  --mvds-radius: 20px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--mvds-ink);
  background: var(--mvds-paper);
  font-family: Calibri, "Segoe UI", Arial, sans-serif;
  line-height: 1.55;
}
a { color: inherit; }
img { max-width: 100%; height: auto; }

.mvds-site-header {
  position: relative;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 14px clamp(18px, 4vw, 56px);
  background: rgba(247,243,234,.96);
  border-bottom: 1px solid rgba(33,48,45,.12);
  backdrop-filter: blur(10px);
}
.mvds-brand { display:flex; align-items:center; gap:14px; text-decoration:none; }
.mvds-brand__title { font-weight: 700; letter-spacing: .01em; }
.mvds-brand__tagline { font-size: .9rem; opacity: .72; }
.mvds-site-nav ul { list-style:none; margin:0; padding:0; display:flex; gap:20px; flex-wrap:wrap; }
.mvds-site-nav a { text-decoration:none; font-weight:600; }
.mvds-site-nav a:hover, .mvds-site-nav a:focus-visible { text-decoration:underline; text-underline-offset:4px; }

.mvds-main { min-height: 70vh; }
.mvds-content-wrap { width:min(1180px, calc(100% - 36px)); margin: 0 auto; padding: 42px 0 70px; }

.mvds-world-hero { width:min(1500px, 100%); margin:0 auto; }
.mvds-world-intro { width:min(980px, calc(100% - 36px)); margin: 0 auto; padding: 26px 0 18px; }
.mvds-world-intro h1 { margin:0 0 8px; font-family: Georgia, serif; font-size:clamp(2rem, 4vw, 4rem); line-height:1.05; }
.mvds-world-intro p { max-width: 760px; margin:0; font-size:1.08rem; }

.mvds-map {
  position: relative;
  overflow: hidden;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #d9e3da center / cover no-repeat;
  box-shadow: var(--mvds-shadow);
}
.mvds-map::after { content:""; position:absolute; inset:0; pointer-events:none; box-shadow: inset 0 0 0 1px rgba(0,0,0,.08); }
.mvds-map__image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.mvds-map__overlay { position:absolute; inset:0; pointer-events:none; overflow:hidden; z-index:2; }
.mvds-map__overlay.is-winter::before,
.mvds-map__overlay.is-winter::after {
  content:""; position:absolute; inset:-20%;
  background-image: radial-gradient(circle, rgba(255,255,255,.95) 0 2px, transparent 2.5px);
  background-size: 42px 42px; opacity:.45; animation: mvds-snow 13s linear infinite;
}
.mvds-map__overlay.is-winter::after { background-size: 70px 70px; opacity:.25; animation-duration:19s; }
.mvds-map__overlay.is-autumn::before { content:""; position:absolute; inset:0; background: linear-gradient(rgba(160,84,35,.07), rgba(150,80,35,.12)); }
.mvds-map__overlay.is-spring::before { content:""; position:absolute; inset:0; background: linear-gradient(rgba(230,160,190,.04), rgba(90,150,95,.04)); }
@keyframes mvds-snow { to { transform: translate3d(40px, 120px, 0); } }

.mvds-hotspot {
  --x: 50%; --y: 50%;
  position:absolute; left:var(--x); top:var(--y); transform:translate(-50%, -50%);
  z-index:5;
  display:flex; align-items:center; gap:8px;
  min-width: 42px; min-height: 42px;
  padding: 0;
  text-decoration:none;
}
.mvds-hotspot__dot {
  width:42px; height:42px; border-radius:999px; display:grid; place-items:center;
  background:rgba(255,255,255,.94); color:var(--mvds-ink); border:2px solid rgba(255,255,255,.9);
  box-shadow:0 7px 22px rgba(0,0,0,.25); font-weight:800; transition:transform .18s ease, box-shadow .18s ease;
}
.mvds-hotspot__label {
  position:absolute; left:50%; bottom:calc(100% + 8px); transform:translateX(-50%);
  width:max-content; max-width:240px; padding:9px 11px; border-radius:10px;
  background:rgba(27,39,36,.94); color:#fff; font-size:.9rem; line-height:1.25; box-shadow:0 8px 22px rgba(0,0,0,.22);
  opacity:0; pointer-events:none; transition:opacity .18s ease, transform .18s ease;
}
.mvds-hotspot:hover .mvds-hotspot__dot, .mvds-hotspot:focus-visible .mvds-hotspot__dot { transform:scale(1.1); box-shadow:0 9px 28px rgba(0,0,0,.32); }
.mvds-hotspot:hover .mvds-hotspot__label, .mvds-hotspot:focus-visible .mvds-hotspot__label { opacity:1; transform:translate(-50%, -4px); }
.mvds-hotspot:focus-visible { outline: 3px solid #fff; outline-offset:3px; border-radius:999px; }
.mvds-hotspot[data-status="construction"] .mvds-hotspot__dot { background:#f0c166; }
.mvds-hotspot[data-status="closed"] .mvds-hotspot__dot { background:#d7d7d7; }

.mvds-location-grid {
  width:min(1180px, calc(100% - 36px)); margin: 28px auto 70px;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:18px;
}
.mvds-location-card {
  display:block; padding:20px; border-radius:var(--mvds-radius); background:#fff; box-shadow:0 8px 24px rgba(24,35,31,.08); text-decoration:none; border:1px solid rgba(33,48,45,.08);
}
.mvds-location-card:hover, .mvds-location-card:focus-visible { transform:translateY(-2px); box-shadow:0 12px 30px rgba(24,35,31,.13); }
.mvds-location-card h2, .mvds-location-card h3 { margin:.2rem 0 .45rem; font-family:Georgia,serif; }
.mvds-badge { display:inline-flex; align-items:center; border-radius:999px; padding:5px 9px; font-size:.78rem; font-weight:700; background:#ede8de; }
.mvds-badge--construction { background:#f7d894; }
.mvds-badge--closed { background:#ddd; }

.mvds-building-hero { width:min(1400px,100%); margin:0 auto; }
.mvds-building-header { width:min(1050px, calc(100% - 36px)); margin:0 auto; padding:34px 0 18px; }
.mvds-building-header h1 { font-family:Georgia,serif; font-size:clamp(2.2rem, 4vw, 4.4rem); margin:0; }
.mvds-building-header .mvds-kicker { text-transform:uppercase; letter-spacing:.14em; font-size:.75rem; font-weight:800; opacity:.66; }
.mvds-building-body { width:min(920px, calc(100% - 36px)); margin: 0 auto; padding: 24px 0 60px; font-size:1.06rem; }
.mvds-backlink { display:inline-block; margin-bottom:18px; font-weight:700; text-decoration:none; }
.mvds-backlink:hover { text-decoration:underline; }

.mvds-site-footer { padding:26px clamp(18px,4vw,56px); border-top:1px solid rgba(33,48,45,.12); font-size:.9rem; opacity:.82; }

@media (max-width: 800px) {
  .mvds-site-header { align-items:flex-start; flex-direction:column; gap:10px; }
  .mvds-map { aspect-ratio: 4 / 5; }
  .mvds-map__image { object-position:center; }
  .mvds-hotspot__dot { width:38px; height:38px; }
  .mvds-hotspot__label { display:none; }
}

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