
:root {
  --bg: #f5f1e8;
  --bg-soft: #fbf8f2;
  --card: #fffdf9;
  --text: #21352f;
  --muted: #5f6f67;
  --primary: #1f5f54;
  --primary-dark: #153f38;
  --accent: #c57d3d;
  --accent-soft: #f0e0d0;
  --border: #ded7ca;
  --shadow: 0 16px 38px rgba(17, 31, 28, .08);
  --radius: 18px;
  --container: 1180px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.65;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
.container { width: min(var(--container), calc(100% - 2rem)); margin: 0 auto; }
.section { padding: 88px 0; }
.section-sm { padding: 56px 0; }
.section-alt { background: linear-gradient(180deg, var(--bg), #eee6d8); }
.kicker { letter-spacing: .14em; text-transform: uppercase; font-size: 12px; color: var(--accent); font-weight: 700; margin-bottom: 12px; }
h1,h2,h3,h4 { line-height: 1.15; margin: 0 0 18px; font-family: Georgia, 'Times New Roman', serif; }
h1 { font-size: clamp(2.5rem, 6vw, 4.8rem); }
h2 { font-size: clamp(2rem, 4vw, 3rem); }
h3 { font-size: 1.4rem; }
p { margin: 0 0 16px; }
.lead { font-size: 1.18rem; color: rgba(255,255,255,.9); }
.lead-dark { font-size: 1.08rem; color: var(--muted); }
.btn-row { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 28px; }
.btn, button.btn {
  border: 0; cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
  padding: 14px 22px; border-radius: 999px; font-weight: 700; font-size: .95rem;
}
.btn-primary { background: var(--accent); color: white; }
.btn-secondary { background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.28); color: white; }
.btn-outline { background: transparent; border: 1px solid var(--border); color: var(--primary); }
.btn-solid { background: var(--primary); color: white; }
.topbar {
  position: sticky; top: 0; z-index: 50; backdrop-filter: blur(10px);
  background: rgba(245,241,232,.92); border-bottom: 1px solid rgba(222,215,202,.8);
}
.nav-wrap { display: flex; align-items: center; justify-content: space-between; min-height: 86px; gap: 24px; }
.brand { display: flex; align-items: center; gap: 12px; min-width: 0; }
.brand img { width: min(320px, 48vw); height: auto; object-fit: contain; }
.nav-links { display: flex; gap: 24px; align-items: center; }
.nav-links a { font-size: .95rem; color: var(--muted); }
.nav-links a:hover, .nav-links a.active { color: var(--primary); }
.lang-switch { display:flex; gap:10px; align-items:center; margin-left: 8px; }
.lang-switch a { display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:50%; border:1px solid var(--border); background:white; font-size:1.05rem; box-shadow:0 6px 16px rgba(0,0,0,.05); }
.lang-switch a.active { border-color: var(--primary); box-shadow: inset 0 0 0 2px rgba(31,95,84,.16); }
.menu-toggle { display:none; width:46px; height:46px; border-radius:12px; border:1px solid var(--border); background:var(--bg-soft); }
.menu-toggle span{ display:block; width:18px; height:2px; background:var(--primary); margin:4px auto; }
.mobile-panel { display:none; padding: 0 0 18px; }
.mobile-panel a { display:block; padding: 10px 0; color: var(--muted); }
.mobile-panel .lang-switch{margin-top: 10px;}
.hero {
  position: relative; min-height: 84vh; display: flex; align-items: center; overflow: hidden;
  background: #153f38;
}
.hero > img { position: absolute; inset: 0; width:100%; height:100%; object-fit: cover; }
.hero::before {
  content:''; position:absolute; inset:0;
  background: linear-gradient(110deg, rgba(21,63,56,.92) 0%, rgba(21,63,56,.78) 42%, rgba(21,63,56,.35) 100%);
}
.hero-inner { position: relative; z-index: 2; color: white; padding: 90px 0 56px; width: min(760px, 100%); }
.hero-card { margin-top: 28px; display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; }
.stat-card {
  background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.16); border-radius: 18px;
  padding: 18px 20px;
}
.stat-card strong { display:block; font-size:1.35rem; font-family: Georgia, serif; margin-bottom:4px; }
.grid-2 { display: grid; grid-template-columns: 1.05fr .95fr; gap: 52px; align-items: center; }
.card {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.about-image { position: relative; }
.about-image img { border-radius: 22px; min-height: 420px; object-fit: cover; width: 100%; }
.badge-box {
  position: absolute; left: 20px; bottom: 20px; background: white; border-radius: 18px;
  padding: 18px 20px; box-shadow: var(--shadow); border:1px solid var(--border);
}
.badge-box strong { display:block; font-size:1.8rem; font-family: Georgia, serif; color: var(--primary); }
.news-card { padding: 28px; }
.news-empty { color: var(--muted); }
.focus-grid { display:grid; grid-template-columns: repeat(3,1fr); gap: 18px; margin-top: 32px; }
.focus-item { padding: 22px; border-radius: 18px; background: var(--card); border:1px solid var(--border); }
.focus-item h3 { font-size: 1.06rem; margin-bottom: 8px; }
.focus-item p { margin: 0; color: var(--muted); font-size: .95rem; }
.project-grid { display:grid; grid-template-columns: repeat(2,1fr); gap: 22px; }
.project-card { overflow:hidden; display:flex; flex-direction:column; }
.project-card img { aspect-ratio: 16/9; object-fit: cover; width: 100%; }
.project-body { padding: 22px; }
.tag { display:inline-flex; padding:6px 12px; border-radius:999px; font-size:.74rem; font-weight:700; letter-spacing:.03em; margin-bottom:12px; }
.tag.current { background: rgba(31,95,84,.1); color: var(--primary); }
.tag.done { background: var(--accent-soft); color: #7b5128; }
.meta { color: var(--muted); font-size:.88rem; }
.project-link { color: var(--primary); font-weight:700; display:inline-flex; gap:6px; margin-top:8px; }
.split-card { display:grid; grid-template-columns: .9fr 1.1fr; gap: 0; overflow:hidden; }
.split-card img { width:100%; height:100%; min-height:360px; object-fit:cover; }
.split-content { padding: 34px; }
.contact-band { background: var(--primary-dark); color: white; }
.contact-grid { display:grid; grid-template-columns: repeat(3,1fr); gap: 18px; margin-top: 30px; }
.contact-item { padding: 22px; border:1px solid rgba(255,255,255,.12); border-radius: 18px; background: rgba(255,255,255,.05); }
.contact-item h3 { font-size:1rem; margin-bottom:8px; }
.contact-item p, .contact-item a { color: rgba(255,255,255,.86); }
.legal-list, .content-list { padding-left: 18px; margin: 0 0 16px; }
.legal-list li, .content-list li { margin-bottom: 8px; }
.footer { padding: 28px 0 40px; background: #efe6d8; border-top: 1px solid var(--border); }
.footer-wrap { display:flex; justify-content:space-between; gap: 18px; align-items:flex-start; }
.footer-links { display:flex; gap:16px; flex-wrap:wrap; }
.page-hero { padding: 88px 0 24px; }
.page-hero p { max-width: 760px; color: var(--muted); }
.breadcrumb-wrap { padding-top: 18px; }
.breadcrumbs { display:flex; flex-wrap:wrap; gap:8px; list-style:none; margin:0; padding:0; color: var(--muted); font-size:.92rem; }
.breadcrumbs li::after { content: '›'; margin-left:8px; }
.breadcrumbs li:last-child::after { content: ''; }
.filters { display:flex; flex-wrap:wrap; gap: 12px; margin-top: 18px; }
.filters button { background:white; border:1px solid var(--border); color: var(--muted); }
.filters button.active { background: var(--primary); color: white; border-color: var(--primary); }
.project-detail-hero { position: relative; min-height: 58vh; display:flex; align-items:end; overflow:hidden; background:#123; }
.project-detail-hero img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.project-detail-hero::before { content:''; position:absolute; inset:0; background: linear-gradient(180deg, rgba(14,31,28,.18), rgba(14,31,28,.8)); }
.project-detail-inner { position:relative; z-index:1; color:white; padding: 32px 0 44px; }
.back-link { display:inline-flex; margin-bottom: 20px; font-weight:700; color: rgba(255,255,255,.92); }
.detail-layout { display:grid; grid-template-columns: minmax(0,1fr) 320px; gap: 32px; align-items:start; }
.detail-box { padding: 28px; }
.detail-box h2 { font-size: 1.6rem; }
.gallery-grid { display:grid; grid-template-columns: repeat(3,1fr); gap: 14px; margin-top: 20px; }
.gallery-grid figure { margin:0; background: var(--bg-soft); border-radius: 16px; overflow:hidden; border:1px solid var(--border); }
.gallery-grid a{ display:block; }
.gallery-grid img { aspect-ratio: 4/3; object-fit: cover; width:100%; transition: transform .25s ease; }
.gallery-grid a:hover img { transform: scale(1.03); }
.gallery-grid figcaption { padding: 10px 12px 14px; font-size: .88rem; color: var(--muted); }
.sidebar dt { font-weight: 700; color: var(--muted); font-size:.85rem; text-transform:uppercase; letter-spacing:.04em; }
.sidebar dd { margin: 6px 0 18px; }
.download-list a { display:block; padding: 12px 14px; border-radius: 14px; background: var(--bg-soft); border:1px solid var(--border); margin-bottom: 12px; color: var(--primary); font-weight:700; }
.richtext h1, .richtext h2, .richtext h3 { margin-top: 28px; }
.richtext p, .richtext li, .richtext div { color: var(--muted); }
.richtext strong { color: var(--text); }
.richtext a { color: var(--primary); text-decoration: underline; }
.richtext span[style], .richtext p span[style] { font-size: inherit !important; }
.partner-grid { display:grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap:14px; margin-top:18px; }
.partner-card { display:flex; flex-direction:column; justify-content:center; align-items:center; min-height:132px; padding:18px; background:var(--bg-soft); border-radius:16px; border:1px solid var(--border); text-align:center; }
.partner-card img{ max-height:68px; width:auto; object-fit:contain; margin-bottom:12px; }
.partner-card .text-logo{ font-weight:700; color:var(--primary); font-size:1.02rem; }
.partner-card span{ color:var(--muted); font-size:.92rem; }
.lightbox { position:fixed; inset:0; background:rgba(13,19,18,.85); display:none; align-items:center; justify-content:center; z-index:100; padding:24px; }
.lightbox.open { display:flex; }
.lightbox img { max-width:min(1200px, 92vw); max-height:88vh; border-radius:16px; box-shadow: 0 16px 50px rgba(0,0,0,.35); }
.lightbox button { position:absolute; top:22px; right:22px; width:44px; height:44px; border-radius:50%; border:0; background:white; font-size:1.5rem; cursor:pointer; }
@media (max-width: 980px) {
  .grid-2, .split-card, .detail-layout, .contact-grid, .focus-grid, .project-grid, .gallery-grid, .hero-card, .partner-grid { grid-template-columns: 1fr; }
  .nav-links, .desktop-lang { display:none; }
  .menu-toggle { display:block; }
  .mobile-panel.open { display:block; }
  .split-card img { min-height: 280px; }
}
@media (max-width: 720px) {
  .section { padding: 72px 0; }
  .hero { min-height: auto; }
  .hero-inner { padding: 110px 0 56px; }
  .footer-wrap { flex-direction: column; }
  .brand img { width:min(250px, 62vw); }
}


/* 2026-03 refinements */
.hero {
  min-height: 72vh;
}
.hero-inner {
  padding: 72px 0 44px;
}
.project-detail-inner .breadcrumb-wrap {
  display: inline-block;
  padding: 10px 16px;
  border-radius: 999px;
  background: rgba(14, 31, 28, .46);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.14);
}
.project-detail-inner .breadcrumbs {
  color: rgba(255,255,255,.92);
  text-shadow: 0 1px 2px rgba(0,0,0,.35);
}
.project-detail-inner .breadcrumbs a {
  color: #fff;
}
.route-accordion {
  display: grid;
  gap: 12px;
  margin-top: 14px;
}
.route-item {
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 14px;
  background: rgba(255,255,255,.04);
  overflow: hidden;
}
.route-item summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  font-weight: 700;
  color: #fff;
}
.route-item summary::-webkit-details-marker {
  display: none;
}
.route-item summary::after {
  content: '+';
  font-size: 1.1rem;
  line-height: 1;
}
.route-item[open] summary::after {
  content: '–';
}
.route-content {
  padding: 0 16px 16px;
}
.route-content p:last-child {
  margin-bottom: 0;
}
.contact-directions > p:last-of-type {
  margin-bottom: 0;
}
@media (max-width: 720px) {
  .hero-inner {
    padding: 96px 0 44px;
  }
}
