/* ═══════════════════════════════════════════ ROOT & RESET ═══ */
:root {
  --forest:       #1a3a2a;
  --pine:         #2d5016;
  --moss:         #4a7c3f;
  --sage:         #7aaa6b;
  --stone:        #8c8070;
  --gold:         #b5861a;
  --amber:        #d4a830;
  --cream:        #f5f0e8;
  --offwhite:     #faf8f4;
  --bark:         #3d2b1a;
  --challenge:    #c0392b;
  --challengebg:  #fdf0ee;
  --voted:        #1a7f4e;
  --votedbg:      #e8f8ef;
  --snow:         #ffffff;
  --shadow:       rgba(15,25,15,0.16);
  --radius:       14px;
  --radius-sm:    8px;
  --transition:   0.32s cubic-bezier(0.4,0,0.2,1);
  --nav-h:        64px;
}
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; }
body { font-family:'Inter',system-ui,sans-serif; background:var(--offwhite); color:var(--bark); overflow-x:hidden; }
img { display:block; max-width:100%; }
a { text-decoration:none; color:inherit; }
button { cursor:pointer; border:none; background:none; font-family:inherit; }

/* ═══════════ PROGRESS BAR ═══ */
#progress-bar {
  position:fixed; top:0; left:0; height:3px; width:0%;
  background:linear-gradient(90deg,var(--moss),var(--amber));
  z-index:1000; transition:width .1s linear; pointer-events:none;
}

/* ═══════════ NAV ═══ */
nav {
  position:fixed; top:3px; left:0; right:0; height:var(--nav-h);
  display:flex; align-items:center; justify-content:space-between;
  padding:0 clamp(16px,4vw,48px);
  background:rgba(26,58,42,0.9); backdrop-filter:blur(14px) saturate(1.4);
  border-bottom:1px solid rgba(255,255,255,0.08); z-index:900;
}
.nav-logo {
  display:flex; align-items:center; gap:10px;
  font-family:'Playfair Display',serif; font-size:1.1rem;
  color:var(--cream); letter-spacing:.02em;
}
.nav-logo i { color:var(--amber); font-size:1.25rem; }
.nav-right { display:flex; align-items:center; gap:10px; }
.nav-back {
  display:none; align-items:center; gap:7px;
  color:var(--cream); font-size:.85rem; font-weight:500;
  padding:6px 14px; border-radius:999px;
  border:1px solid rgba(255,255,255,.25); background:rgba(255,255,255,.07);
  transition:var(--transition);
}
.nav-back:hover { background:rgba(255,255,255,.18); }
.nav-back.visible { display:flex; }
.nav-name-btn {
  display:flex; align-items:center; gap:7px;
  color:rgba(255,255,255,.75); font-size:.82rem; font-weight:500;
  padding:6px 14px; border-radius:999px;
  border:1px solid rgba(255,255,255,.18); background:rgba(255,255,255,.05);
  transition:var(--transition);
}
.nav-name-btn:hover { background:rgba(255,255,255,.12); color:var(--cream); }
.nav-name-btn i { color:var(--amber); }

/* ═══════════ VIEWS ═══ */
.view { display:none; }
.view.active { display:block; }

/* ═══════════ HERO ═══ */
#hero {
  position:relative; height:100vh; min-height:580px;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.hero-img {
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center; transform:scale(1.05);
  transition:transform 8s ease;
}
#hero:hover .hero-img { transform:scale(1); }
.hero-overlay {
  position:absolute; inset:0;
  background:linear-gradient(170deg,rgba(10,20,14,.3) 0%,rgba(10,20,14,.58) 60%,rgba(10,20,14,.78) 100%);
}
.hero-content { position:relative; z-index:2; text-align:center; padding:0 20px; max-width:820px; }
.hero-eyebrow {
  display:inline-flex; align-items:center; gap:8px;
  font-size:.75rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  color:var(--amber); margin-bottom:20px;
  opacity:0; animation:fadeUp .8s .3s forwards;
}
.hero-eyebrow::before,.hero-eyebrow::after { content:''; width:30px; height:1px; background:var(--amber); }
.hero-title {
  font-family:'Playfair Display',serif;
  font-size:clamp(2.4rem,6vw,4.5rem); color:#fff; line-height:1.1; margin-bottom:20px;
  opacity:0; animation:fadeUp .8s .5s forwards;
}
.hero-title em { font-style:italic; color:var(--amber); }
.hero-subtitle {
  font-size:clamp(.9rem,1.8vw,1.1rem); color:rgba(255,255,255,.8);
  font-weight:300; line-height:1.75; margin-bottom:36px;
  opacity:0; animation:fadeUp .8s .7s forwards;
}
.hero-tags {
  display:flex; flex-wrap:wrap; gap:9px; justify-content:center; margin-bottom:40px;
  opacity:0; animation:fadeUp .8s .88s forwards;
}
.hero-tag {
  padding:6px 15px; border-radius:999px;
  border:1px solid rgba(255,255,255,.28); background:rgba(255,255,255,.09);
  color:var(--cream); font-size:.8rem; backdrop-filter:blur(6px);
}
.hero-cta {
  display:inline-flex; align-items:center; gap:10px;
  padding:14px 36px; border-radius:999px;
  background:linear-gradient(135deg,var(--moss),var(--forest));
  color:#fff; font-weight:600; font-size:1rem;
  box-shadow:0 6px 24px rgba(45,80,22,.45); transition:var(--transition);
  opacity:0; animation:fadeUp .8s 1.04s forwards;
}
.hero-cta:hover { transform:translateY(-2px); box-shadow:0 10px 32px rgba(45,80,22,.55); }
.hero-scroll {
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:5px;
  color:rgba(255,255,255,.55); font-size:.7rem; letter-spacing:.12em; text-transform:uppercase;
  animation:bounce 2.5s 2.5s infinite, fadeIn 1s 1.5s forwards;
  opacity:0;
}

/* ═══════════ INTRO STRIP ═══ */
.intro-strip {
  background:var(--forest);
  display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:0;
  padding:0 clamp(16px,4vw,48px);
}
.intro-stat {
  text-align:center; padding:22px 16px;
  border-right:1px solid rgba(255,255,255,.1);
}
.intro-stat:last-child { border-right:none; }
.intro-stat-num { font-family:'Playfair Display',serif; font-size:2rem; color:var(--amber); font-weight:700; display:block; }
.intro-stat-label { font-size:.72rem; color:rgba(255,255,255,.6); letter-spacing:.08em; text-transform:uppercase; margin-top:3px; }

/* ═══════════ ROUTES SECTION ═══ */
.routes-section { padding:72px clamp(16px,4vw,64px); max-width:1280px; margin:0 auto; }
.section-label {
  font-size:.72rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--moss);
  display:flex; align-items:center; gap:10px; margin-bottom:12px;
}
.section-label::after { content:''; flex:1; height:1px; background:var(--moss); opacity:.3; }
.section-title {
  font-family:'Playfair Display',serif; font-size:clamp(1.8rem,3.5vw,2.8rem);
  color:var(--forest); line-height:1.2; margin-bottom:48px;
}
.routes-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:28px; }

/* ─── Route Card ─── */
.route-card {
  border-radius:var(--radius); overflow:hidden;
  box-shadow:0 4px 20px var(--shadow);
  cursor:pointer; background:var(--snow);
  opacity:0; transform:translateY(28px);
  transition:opacity .6s ease, transform .6s ease, box-shadow .3s ease;
}
.route-card.visible { opacity:1; transform:translateY(0); }
.route-card:hover { box-shadow:0 14px 44px rgba(15,25,15,.28); }
.route-card-img-wrap { position:relative; overflow:hidden; height:210px; }
.route-card-img {
  width:100%; height:100%; object-fit:cover;
  transition:transform .5s ease; filter:brightness(.88) saturate(1.1);
}
.route-card:hover .route-card-img { transform:scale(1.06); }
.route-card-img-overlay {
  position:absolute; inset:0;
  background:linear-gradient(to bottom,transparent 35%,rgba(10,20,14,.65) 100%);
}
.route-card-num {
  position:absolute; top:14px; left:14px;
  width:34px; height:34px; border-radius:50%;
  background:var(--amber); color:#fff;
  font-weight:700; font-size:.88rem; display:flex; align-items:center; justify-content:center;
  font-family:'Playfair Display',serif;
}
.route-card-voted-badge {
  position:absolute; top:14px; right:14px;
  background:var(--voted); color:#fff; font-size:.72rem; font-weight:700;
  padding:4px 10px; border-radius:999px; letter-spacing:.05em;
  display:none; align-items:center; gap:5px;
}
.route-card-voted-badge.show { display:flex; }

.route-card-body { padding:20px 22px 22px; }
.route-card-region { font-size:.7rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--moss); margin-bottom:5px; }
.route-card-name { font-family:'Playfair Display',serif; font-size:1.3rem; color:var(--forest); margin-bottom:10px; line-height:1.2; }
.route-card-desc { font-size:.82rem; color:var(--stone); line-height:1.6; margin-bottom:15px; }
.route-card-tags { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:15px; }
.tag { font-size:.68rem; padding:3px 9px; border-radius:999px; background:var(--cream); color:var(--stone); font-weight:500; }
.tag-challenge { background:var(--challengebg); color:var(--challenge); }
.route-card-stats { display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; margin-bottom:18px; }
.card-stat { background:var(--offwhite); border-radius:var(--radius-sm); padding:8px; text-align:center; }
.card-stat-val { font-weight:600; font-size:.84rem; color:var(--forest); display:block; margin-bottom:2px; }
.card-stat-key { font-size:.65rem; color:var(--stone); text-transform:uppercase; letter-spacing:.07em; }

/* Card buttons */
.card-btn-row { display:grid; grid-template-columns:1fr auto; gap:8px; }
.route-card-btn {
  padding:11px; background:var(--forest); color:#fff;
  border-radius:var(--radius-sm); font-weight:600; font-size:.86rem;
  display:flex; align-items:center; justify-content:center; gap:7px;
  transition:var(--transition);
}
.route-card-btn:hover { background:var(--moss); }
.vote-btn {
  padding:11px 16px; border-radius:var(--radius-sm);
  font-weight:600; font-size:.86rem;
  border:2px solid var(--cream); color:var(--stone);
  display:flex; align-items:center; gap:6px;
  transition:var(--transition); background:var(--snow);
  white-space:nowrap;
}
.vote-btn:hover { border-color:var(--moss); color:var(--moss); }
.vote-btn.voted { background:var(--votedbg); border-color:var(--voted); color:var(--voted); }

/* ═══════════ VOTE RESULTS PANEL ═══ */
.vote-results-section {
  background:var(--snow); border-radius:var(--radius);
  border:1.5px solid var(--cream);
  padding:32px 32px 28px;
  margin:48px 0 0;
  box-shadow:0 2px 12px rgba(0,0,0,.05);
}
.vote-results-header {
  display:flex; align-items:center; justify-content:space-between;
  flex-wrap:wrap; gap:12px; margin-bottom:28px;
}
.vote-results-title {
  font-family:'Playfair Display',serif; font-size:1.4rem; color:var(--forest);
  display:flex; align-items:center; gap:10px;
}
.vote-results-title i { color:var(--amber); font-size:1.1rem; }
.total-votes-badge {
  background:var(--cream); border-radius:999px; padding:5px 14px;
  font-size:.8rem; font-weight:600; color:var(--stone);
}
.vote-bars { display:flex; flex-direction:column; gap:16px; }
.vote-bar-item {}
.vote-bar-meta {
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:7px;
}
.vote-bar-name { font-size:.88rem; font-weight:600; color:var(--forest); }
.vote-bar-count { font-size:.8rem; color:var(--stone); }
.vote-bar-track {
  height:10px; background:var(--cream); border-radius:999px; overflow:hidden;
}
.vote-bar-fill {
  height:100%; border-radius:999px;
  background:linear-gradient(90deg,var(--moss),var(--sage));
  transition:width .7s cubic-bezier(.4,0,.2,1);
  min-width:0%;
}
.vote-bar-fill.leading { background:linear-gradient(90deg,var(--forest),var(--moss)); }
.voter-pills { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.voter-pill {
  font-size:.7rem; padding:3px 10px; border-radius:999px;
  background:var(--offwhite); color:var(--stone); border:1px solid var(--cream);
  display:flex; align-items:center; gap:4px;
}
.voter-pill.mine { background:var(--votedbg); color:var(--voted); border-color:rgba(26,127,78,.25); font-weight:600; }

/* ═══════════ VOTE MODAL ═══ */
.modal-overlay {
  position:fixed; inset:0; z-index:1100;
  background:rgba(15,25,18,.55); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center; padding:20px;
  opacity:0; pointer-events:none; transition:opacity .3s;
}
.modal-overlay.open { opacity:1; pointer-events:all; }
.modal-box {
  background:var(--snow); border-radius:18px; padding:36px 32px;
  width:100%; max-width:420px;
  box-shadow:0 24px 64px rgba(0,0,0,.25);
  transform:translateY(20px) scale(.97);
  transition:transform .3s cubic-bezier(.4,0,.2,1);
}
.modal-overlay.open .modal-box { transform:translateY(0) scale(1); }
.modal-icon { font-size:2rem; margin-bottom:14px; }
.modal-title { font-family:'Playfair Display',serif; font-size:1.4rem; color:var(--forest); margin-bottom:8px; }
.modal-sub { font-size:.87rem; color:var(--stone); line-height:1.6; margin-bottom:22px; }
.modal-input {
  width:100%; padding:12px 16px; border-radius:var(--radius-sm);
  border:2px solid var(--cream); font-family:'Inter',sans-serif;
  font-size:.95rem; outline:none; transition:var(--transition);
  background:var(--offwhite); color:var(--bark);
}
.modal-input:focus { border-color:var(--moss); background:#fff; }
.modal-btns { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:18px; }
.modal-btn {
  padding:11px; border-radius:var(--radius-sm); font-weight:600; font-size:.9rem;
  transition:var(--transition);
}
.modal-btn-cancel { border:1.5px solid var(--cream); color:var(--stone); background:#fff; }
.modal-btn-cancel:hover { background:var(--cream); }
.modal-btn-confirm { background:var(--forest); color:#fff; }
.modal-btn-confirm:hover { background:var(--moss); }

/* ═══════════ ROUTE DETAIL VIEW ═══ */
#route-view { padding-top:var(--nav-h); }
.route-hero { position:relative; height:50vh; min-height:300px; overflow:hidden; }
.route-hero-img { width:100%; height:100%; object-fit:cover; object-position:center 40%; filter:brightness(.78); }
.route-hero-overlay { position:absolute; inset:0; background:linear-gradient(to bottom,rgba(0,0,0,.1),rgba(15,25,15,.72)); }
.route-hero-content { position:absolute; bottom:0; left:0; right:0; padding:clamp(20px,4vw,56px) clamp(16px,4vw,64px) 30px; }
.route-hero-region { font-size:.72rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--amber); margin-bottom:8px; }
.route-hero-title { font-family:'Playfair Display',serif; font-size:clamp(1.8rem,4vw,3rem); color:#fff; margin-bottom:10px; }
.route-hero-tagline { font-size:.9rem; color:rgba(255,255,255,.72); font-style:italic; max-width:520px; }

/* Meta strip */
.route-meta-strip {
  background:var(--forest); display:flex; flex-wrap:wrap;
  padding:0 clamp(16px,4vw,64px);
}
.meta-item {
  padding:16px 22px; display:flex; align-items:center; gap:10px;
  border-right:1px solid rgba(255,255,255,.1); min-width:120px;
}
.meta-item:last-child { border-right:none; }
.meta-item i { color:var(--amber); font-size:.95rem; width:16px; text-align:center; }
.meta-item-label { font-size:.62rem; color:rgba(255,255,255,.5); text-transform:uppercase; letter-spacing:.1em; }
.meta-item-val { font-size:.86rem; color:var(--cream); font-weight:500; }

/* Day nav */
.day-nav-wrapper {
  position:sticky; top:var(--nav-h); z-index:800;
  background:#fff; border-bottom:2px solid var(--cream);
  box-shadow:0 2px 12px rgba(0,0,0,.06);
}
.day-nav {
  display:flex; overflow-x:auto; scrollbar-width:none; max-width:1100px;
  margin:0 auto; padding:0 clamp(16px,3vw,48px);
}
.day-nav::-webkit-scrollbar { display:none; }
.day-tab {
  flex:none; padding:15px 18px; font-size:.82rem; font-weight:500;
  color:var(--stone); white-space:nowrap;
  border-bottom:3px solid transparent; transition:var(--transition);
  display:flex; align-items:center; gap:6px;
}
.day-tab:hover { color:var(--forest); }
.day-tab.active { color:var(--forest); font-weight:600; border-bottom-color:var(--moss); }
.bolt-tag { font-size:.68rem; color:var(--challenge); background:var(--challengebg); border-radius:3px; padding:1px 5px; font-weight:700; }

/* Day panels */
.day-panels-wrapper { max-width:1100px; margin:0 auto; padding:0 clamp(16px,3vw,48px); }
.day-panel { display:none; padding:44px 0; animation:fadeIn .35s ease; }
.day-panel.active { display:block; }
.challenge-badge {
  display:inline-flex; align-items:center; gap:8px;
  background:var(--challengebg); color:var(--challenge);
  border:1px solid rgba(192,57,43,.22); border-radius:999px;
  padding:6px 16px; font-size:.78rem; font-weight:700;
  margin-bottom:18px; letter-spacing:.04em;
}
.day-header { display:flex; flex-wrap:wrap; align-items:flex-start; gap:16px; margin-bottom:30px; }
.day-number {
  font-family:'Playfair Display',serif; font-size:3.2rem; color:var(--cream);
  font-weight:700; line-height:1; width:76px; height:76px;
  background:var(--forest); border-radius:var(--radius);
  display:flex; align-items:center; justify-content:center; flex:none;
}
.day-title-block { flex:1; min-width:200px; }
.day-title { font-family:'Playfair Display',serif; font-size:clamp(1.3rem,2.5vw,1.85rem); color:var(--forest); line-height:1.2; margin-bottom:6px; }
.day-route-label { font-size:.84rem; color:var(--stone); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.day-route-label i { font-size:.78rem; color:var(--moss); }
.day-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(125px,1fr)); gap:12px; margin-bottom:34px; }
.stat-card {
  background:#fff; border-radius:var(--radius); padding:16px;
  border:1px solid var(--cream); box-shadow:0 2px 8px rgba(0,0,0,.04);
  display:flex; flex-direction:column; gap:8px;
}
.stat-card.challenge-stat { background:var(--challengebg); border-color:rgba(192,57,43,.2); }
.stat-icon { width:34px; height:34px; border-radius:var(--radius-sm); background:var(--cream); display:flex; align-items:center; justify-content:center; }
.stat-icon i { color:var(--moss); font-size:.95rem; }
.challenge-stat .stat-icon { background:rgba(192,57,43,.1); }
.challenge-stat .stat-icon i { color:var(--challenge); }
.stat-val { font-size:1.05rem; font-weight:700; color:var(--forest); }
.stat-key { font-size:.67rem; color:var(--stone); text-transform:uppercase; letter-spacing:.09em; }
.day-content-grid { display:grid; grid-template-columns:1fr 1fr; gap:30px; }
@media(max-width:700px) { .day-content-grid { grid-template-columns:1fr; } }
.day-description { font-size:.96rem; line-height:1.85; color:#3d3028; }
.hut-highlight {
  margin-top:22px; display:flex; align-items:center; gap:14px;
  padding:15px 18px; background:#fff; border-radius:var(--radius);
  border:1px solid var(--cream); box-shadow:0 2px 8px rgba(0,0,0,.04);
}
.hut-highlight i { font-size:1.35rem; color:var(--amber); }
.hut-highlight-label { font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; color:var(--stone); }
.hut-highlight-name { font-size:.93rem; font-weight:600; color:var(--forest); }
.hut-highlight-alt { font-size:.78rem; color:var(--stone); }
.terrain-strip {
  margin-top:16px; padding:14px 18px; background:var(--cream);
  border-radius:var(--radius); display:flex; align-items:center; gap:11px;
  font-size:.83rem; color:var(--bark);
}
.terrain-strip i { color:var(--moss); font-size:1rem; }
.day-photo-wrap {
  border-radius:var(--radius); overflow:hidden; aspect-ratio:4/3;
  box-shadow:0 8px 32px var(--shadow); position:relative;
}
.day-photo-wrap img { width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.day-photo-wrap:hover img { transform:scale(1.04); }
.day-photo-caption {
  position:absolute; bottom:0; left:0; right:0;
  padding:10px 14px; background:linear-gradient(transparent,rgba(0,0,0,.58));
  color:rgba(255,255,255,.85); font-size:.73rem; font-style:italic;
}
.day-nav-arrows { display:flex; gap:12px; padding:0 0 48px; justify-content:space-between; }
.day-arrow-btn {
  display:flex; align-items:center; gap:7px; padding:10px 22px;
  border-radius:999px; border:1.5px solid var(--cream);
  color:var(--forest); font-size:.84rem; font-weight:500;
  transition:var(--transition); background:#fff;
}
.day-arrow-btn:hover { background:var(--forest); color:#fff; border-color:var(--forest); }
.day-arrow-btn:disabled { opacity:.3; pointer-events:none; }

/* ═══════════ FOOTER ═══ */
footer { background:var(--forest); color:rgba(255,255,255,.6); text-align:center; padding:28px 20px; font-size:.8rem; line-height:1.8; }
footer strong { color:var(--amber); }

/* ═══════════ ANIMATIONS ═══ */
@keyframes fadeUp { from{opacity:0;transform:translateY(22px)} to{opacity:1;transform:translateY(0)} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes bounce { 0%,100%{transform:translateX(-50%) translateY(0)} 50%{transform:translateX(-50%) translateY(8px)} }

/* ═══════════ RESPONSIVE ═══ */
@media(max-width:600px) {
.meta-item { padding:13px 14px; }
  .intro-strip { grid-template-columns:1fr 1fr; }
  .intro-stat { border-right:none; border-bottom:1px solid rgba(255,255,255,.1); }
  .vote-results-section { padding:22px 18px; }
  .modal-box { padding:28px 22px; }
}
