/* Global theme tokens used across the site */
:root{
  --prussian: #000022;
  --navy: #001242;
  --ocean: #0094C6;
  --baltic: #005E7C;
  --ink: #040F16;

  /* gunmetal + ocean */
  --accent: #3A6F84;
  --accent2: #2E5868;

  --text: rgba(255,255,255,0.95);
  --muted: rgba(255,255,255,0.78);

  --stroke: rgba(255,255,255,0.16);
  --shadow: 0 22px 70px rgba(0,0,0,0.40);
  --radius: 18px;

  --card: rgba(0, 18, 66, 0.78);
  --card-detail: rgba(0, 18, 66, 0.92);

  /* For snowy section text */
  --snow-text: rgba(4, 15, 22, 0.92);
  --snow-muted: rgba(4, 15, 22, 0.72);

  /* JS will set this 0 → 1 */
  --nav-blur: 0;
}

/* Base reset and defaults */
*{ box-sizing: border-box; }
html{
  scroll-behavior: smooth;
  scrollbar-width: none;
}
html, body{ height: 100%; }

/* Global body typography and background */
body{
  margin:0;
  font-family: "Inter", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color: var(--text);
  background: var(--ink);
  overflow-x: hidden;
  scrollbar-width: none;
}

/* Hide scrollbars while keeping scroll functionality */
html::-webkit-scrollbar,
body::-webkit-scrollbar{
  width: 0;
  height: 0;
}

/* Constrain content width with responsive gutters */
.container{
  width: min(1100px, calc(100% - 32px));
  margin: 0 auto;
}

/* --- Topnav blur fades in via --nav-blur --- */
.topnav{
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 60;

  /* No border line */
  border: none;

  /* Fade in background as you scroll */
  background:
    linear-gradient(
      to bottom,
      rgba(4,15,22, calc(0.00 + (0.32 * var(--nav-blur)))),
      rgba(4,15,22, 0.00)
    );

  backdrop-filter: blur(calc(0px + (12px * var(--nav-blur))));
  -webkit-backdrop-filter: blur(calc(0px + (12px * var(--nav-blur))));
}

.topnav-inner{
  display:flex;
  gap: 18px;
  padding: 14px 0;
  justify-content: center;
  flex-wrap: wrap;
  row-gap: 8px;
}

.topnav-link{
  text-decoration: none;
  font-weight: 750;
  font-size: 13px;
  letter-spacing: 0.3px;
  color: rgba(255,255,255, calc(0.80 + (0.16 * var(--nav-blur))));
  padding: 6px 2px;
  position: relative;
}

.topnav-link:hover{
  color: rgba(255,255,255,0.98);
}

.topnav-link::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-6px;
  height:2px;
  border-radius:999px;
  background: rgba(58,111,132,0.0);
  transform: scaleX(0.6);
  transform-origin: center;
  transition: transform 160ms ease, background 160ms ease;
}
.topnav-link:hover::after{
  background: rgba(58,111,132,0.85);
  transform: scaleX(1);
}

section[id]{ scroll-margin-top: 86px; }

/* Bands */
.band{
  position: relative;
  padding: 56px 0 72px;
}
.band--image::before,
.band--hero::before{
  content:"";
  position:absolute;
  inset:0;
  background: center/cover no-repeat var(--band-image);
  transform: translateZ(0);
  z-index:-2;
}

.band-overlay{
  position:absolute;
  inset:0;
  z-index:-1;
  background:
    radial-gradient(900px 600px at 30% 20%, rgba(58,111,132,0.08), transparent 62%),
    linear-gradient(to bottom, rgba(4,15,22,0.06), rgba(4,15,22,0.16) 60%, rgba(4,15,22,0.20));
}

/* Snow overlay slightly lighter so whites stay clean */
.band-overlay--snow{
  background:
    radial-gradient(900px 600px at 30% 20%, rgba(58,111,132,0.06), transparent 62%),
    linear-gradient(to bottom, rgba(255,255,255,0.06), rgba(255,255,255,0.10) 55%, rgba(4,15,22,0.10));
}

.band--hero{
  min-height: 100vh;
  display:flex;
  align-items:center;
  padding: 96px 0 56px;
}
.hero-inner{ text-align:center; }

.home-title{
  margin: 0;
  font-size: clamp(44px, 7vw, 86px);
  font-weight: 900;
  letter-spacing: -1px;
  text-transform: lowercase;
  text-shadow: 0 18px 50px rgba(0,0,0,0.45);
}
.home-subtitle{
  margin: 18px auto 0;
  max-width: 62ch;
  color: rgba(255,255,255,0.86);
  font-size: 16px;
  line-height: 1.65;
  text-shadow: 0 18px 50px rgba(0,0,0,0.32);
}
.home-meta{
  margin-top: 18px;
  display:flex;
  justify-content:center;
  gap: 10px;
}
.sort-form{
  margin-top: 18px;
  display:flex;
  justify-content:center;
  align-items:center;
  gap: 10px;
}
.sort-label{
  font-size: 12px;
  letter-spacing: 0.3px;
  color: rgba(255,255,255,0.78);
  font-weight: 650;
}
.sort-select{
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.20);
  background: rgba(0, 18, 66, 0.45);
  color: rgba(255,255,255,0.92);
  font-weight: 650;
  font-size: 12px;
  padding: 8px 12px;
}
.meta-chip{
  display:inline-flex;
  align-items:center;
  padding: 9px 12px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(0, 18, 66, 0.45);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  color: rgba(255,255,255,0.92);
  font-weight: 650;
  font-size: 13px;
}

/* Solid background bands for non-image sections */
.band--solid{
  background: radial-gradient(1000px 600px at 20% 0%, rgba(58,111,132,0.10), transparent 55%),
              radial-gradient(900px 600px at 90% 10%, rgba(0,94,124,0.12), transparent 60%);
}
.band--coffee{ background-color: var(--prussian); }
.band--shopping{ background-color: var(--navy); }

.band-head{ margin-bottom: 18px; }
.band-title{
  margin:0;
  font-size: 22px;
  letter-spacing: 0.2px;
}
.band-meta{
  margin: 8px 0 0;
  color: rgba(255,255,255,0.78);
  font-size: 13px;
}

/* Snowy “Other” headings use dark text for contrast */
.band-head--snow .band-title{ color: var(--snow-text); text-shadow: none; }
.band-head--snow .band-meta{ color: var(--snow-muted); text-shadow: none; }
.band-head--attractions .band-title,
.band-head--attractions .band-meta{
  color: #011e33;
  text-shadow: none;
  font-weight: 650;
}
.band-head--attractions .band-meta{
  margin-top: 4px;
}

.band--other{
  background-color: var(--prussian);
}

/* Reusable link groups */
.explore-links{
  display:flex;
  flex-wrap: wrap;
  justify-content:center;
  gap: 10px;
}

/* Horizontal scroll row */
.card-row{
  display:flex;
  gap: 16px;
  overflow-x: auto;
  padding-bottom: 8px;
  scroll-snap-type: x proximity;
  scroll-padding: 8px;
  -webkit-overflow-scrolling: touch;
}
.card-row::-webkit-scrollbar{
  height: 8px;
}
.card-row::-webkit-scrollbar-thumb{
  background: rgba(255,255,255,0.22);
  border-radius: 999px;
}
.card-row::-webkit-scrollbar-track{
  background: rgba(255,255,255,0.06);
  border-radius: 999px;
}
.card-row .card{
  flex: 0 0 calc((100% - 32px) / 3);
  min-width: 260px;
  scroll-snap-align: start;
}
@media (max-width: 980px){
  .card-row .card{
    flex-basis: calc((100% - 16px) / 2);
  }
}
@media (max-width: 640px){
  .card-row{ padding-bottom: 14px; }
  .card-row .card{ flex-basis: 100%; }
  .topnav-inner{ gap: 14px; }
}

/* Cards */
.card{
  background: var(--card);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: var(--radius);
  padding: 16px 16px 14px;
  box-shadow: var(--shadow);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

.card--snow{
  /* Slightly brighter card so it doesn't feel muddy over white snow */
  background: rgba(0, 18, 66, 0.86);
}

.card-top{
  display:flex;
  align-items:flex-start;
  justify-content: space-between;
  gap: 10px;
}
.card-title{
  margin: 0;
  font-size: 16px;
  font-weight: 850;
  letter-spacing: -0.1px;
}
.card-title a{
  color: rgba(255,255,255,0.98);
  text-decoration:none;
}
.card-title a:hover{ text-decoration: underline; }

.card-rating{
  margin-top: 8px;
  display:flex;
  align-items:center;
  gap: 10px;
}
.card-google{
  margin-top: 6px;
  font-size: 12px;
  color: rgba(255,255,255,0.72);
}

.card-desc{
  margin: 10px 0 0;
  color: rgba(255,255,255,0.84);
  line-height: 1.55;
  font-size: 13px;
}
.card-desc--muted{ opacity: 0.88; }

.card-actions{
  display:flex;
  gap: 10px;
  margin-top: 14px;
}

/* Pill label for categories */
.pill{
  display:inline-flex;
  align-items:center;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(58,111,132,0.55);
  background: rgba(58,111,132,0.16);
  color: rgba(255,255,255,0.94);
  font-size: 12px;
  font-weight: 750;
}
.pill--snow{
  border-color: rgba(58,111,132,0.60);
  background: rgba(58,111,132,0.18);
}

/* Buttons */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(58,111,132,0.70);
  background: rgba(58,111,132,0.18);
  color: rgba(255,255,255,0.96);
  text-decoration:none;
  font-weight: 750;
  font-size: 13px;
}
.btn:hover{
  background: rgba(58,111,132,0.28);
  border-color: rgba(58,111,132,0.90);
}
.btn-ghost{
  border-color: rgba(255,255,255,0.20);
  background: rgba(255,255,255,0.06);
}
.btn-ghost:hover{ background: rgba(255,255,255,0.10); }

/* Detail page */
.detail-hero{
  position: relative;
  padding: 96px 0 96px;
}
.detail-hero::before{
  content:"";
  position:absolute;
  inset:0;
  background: center/cover no-repeat var(--band-image);
  z-index:-2;
}
.detail-overlay{
  position:absolute;
  inset:0;
  z-index:-1;
  background:
    linear-gradient(120deg, rgba(4,15,22,0.85) 0%, rgba(4,15,22,0.50) 45%, rgba(4,15,22,0.70) 100%),
    radial-gradient(720px 540px at 20% 10%, rgba(58,111,132,0.28), transparent 60%);
}

.detail-shell{ padding: 0; }

.backlink a{
  color: rgba(255,255,255,0.92);
  text-decoration: none;
}
.backlink a:hover{ text-decoration: underline; }

.detail-header{
  display:flex;
  align-items:flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-top: 24px;
}
@media (max-width: 720px){
  .detail-header{ flex-direction: column; }
    .detail-side{
    width: 100%;
    align-items: flex-start;
  }
  .detail-cta .btn{ width: 100%; }
}

.detail-brand{
  display:flex;
  align-items:center;
  gap: 18px;
}
.detail-side{
  display:flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
}
.detail-cta{
  display:flex;
  flex-direction: column;
  gap: 10px;
  align-items: flex-end;
}
.detail-logo{
  width: 64px;
  height: 64px;
  border-radius: 16px;
  object-fit: cover;
  border: 1px solid rgba(255,255,255,0.20);
  box-shadow: 0 18px 40px rgba(0,0,0,0.30);
  background: rgba(255,255,255,0.08);
}
.detail-logo--top{
  width: 80px;
  height: 80px;
}
.detail-logo--fallback{
  display:flex;
  align-items:center;
  justify-content:center;
  font-size: 28px;
  font-weight: 800;
  letter-spacing: 0.6px;
  text-transform: uppercase;
}

.detail-title{
  margin: 0;
  font-size: clamp(26px, 3.6vw, 40px);
  font-weight: 900;
  letter-spacing: -0.6px;
}
.detail-sub{ margin-top: 10px; }
.detail-rating{
  margin-top: 12px;
  display:flex;
  flex-direction: column;
  align-items:flex-start;
  gap: 8px;
  color: rgba(255,255,255,0.86);
}
.rating-row{
  display:flex;
  align-items:center;
  gap: 10px;
  flex-wrap: wrap;
}
.rating-label{
  font-size: 12px;
  font-weight: 750;
  letter-spacing: 0.2px;
  color: rgba(255,255,255,0.88);
}
.rating-count{
  font-size: 12px;
  letter-spacing: 0.2px;
  color: rgba(255,255,255,0.70);
}
.rating-score{
  font-size: 12px;
  font-weight: 700;
  color: rgba(255,255,255,0.80);
}
.rating-dot{
  font-size: 12px;
  color: rgba(255,255,255,0.55);
}
.rating-link{
  font-size: 12px;
  color: rgba(255,255,255,0.82);
  text-decoration: none;
  border-bottom: 1px solid rgba(58,111,132,0.55);
}
.rating-link:hover{
  border-bottom-color: rgba(58,111,132,0.92);
}
.star-bar{
  position: relative;
  display:inline-block;
  width: 88px;
  height: 14px;
  letter-spacing: 2px;
  font-size: 12px;
}
.star-bar::before{
  content: "★★★★★";
  color: rgba(255,255,255,0.22);
}
.star-bar::after{
  content: "★★★★★";
  position: absolute;
  left: 0;
  top: 0;
  width: var(--fill-percent, 0%);
  overflow: hidden;
  color: rgba(255,255,255,0.88);
}

.detail-body{
  margin-top: 20px;
  padding: 20px 22px 24px;
  border-radius: 24px;
  background: rgba(4,15,22,0.55);
  border: 1px solid rgba(255,255,255,0.12);
  box-shadow: 0 28px 70px rgba(0,0,0,0.40);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

.detail-desc{
  margin: 14px 0 0;
  color: rgba(255,255,255,0.90);
  line-height: 1.7;
}

/* Key-value metadata rows */
.detail-meta-grid{
  margin-top: 14px;
  display:grid;
  gap: 10px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.14);
}
.detail-actions{
  margin-top: 16px;
  display:flex;
  gap: 10px;
}
.meta-row{
  display:flex;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(0, 94, 124, 0.16);
}
.meta-label{
  color: rgba(255,255,255,0.82);
  font-weight: 650;
  font-size: 12px;
}
.meta-value{
  color: rgba(255,255,255,0.96);
  font-weight: 550;
  font-size: 13px;
  text-align: right;
}
.meta-value a{
  color: rgba(255,255,255,0.98);
  text-decoration: none;
  border-bottom: 1px solid rgba(58,111,132,0.55);
}
.meta-value a:hover{
  border-bottom-color: rgba(58,111,132,0.92);
}

/* Contact form inputs */
.contact-form .detail-meta-grid{
  gap: 14px;
}
.contact-form .meta-row{
  flex-direction: column;
  align-items: stretch;
}
.contact-form .meta-label{
  margin-bottom: 8px;
  font-size: 12px;
  letter-spacing: 0.3px;
}
.contact-form .meta-value{
  display: block;
  width: 100%;
  text-align: left;
}
.contact-form input.meta-value,
.contact-form textarea.meta-value,
.contact-form select.meta-value{
  border-radius: 12px;
  border: 1px solid rgba(58,111,132,0.45);
  background: rgba(0, 18, 66, 0.55);
  color: rgba(255,255,255,0.96);
  padding: 10px 12px;
  font-size: 14px;
  line-height: 1.5;
  outline: none;
}
.contact-form textarea.meta-value{
  resize: vertical;
  min-height: 120px;
}
.contact-form select.meta-value{
  appearance: none;
  background-image:
    linear-gradient(45deg, transparent 50%, rgba(255,255,255,0.65) 50%),
    linear-gradient(135deg, rgba(255,255,255,0.65) 50%, transparent 50%),
    linear-gradient(to right, rgba(255,255,255,0.12), rgba(255,255,255,0.12));
  background-position:
    calc(100% - 18px) 16px,
    calc(100% - 13px) 16px,
    calc(100% - 40px) 0.6em;
  background-size:
    5px 5px,
    5px 5px,
    1px 1.8em;
  background-repeat: no-repeat;
  padding-right: 36px;
}
.contact-form input.meta-value::placeholder,
.contact-form textarea.meta-value::placeholder{
  color: rgba(255,255,255,0.55);
}
.contact-form input.meta-value:focus,
.contact-form textarea.meta-value:focus,
.contact-form select.meta-value:focus{
  border-color: rgba(58,111,132,0.95);
  box-shadow: 0 0 0 3px rgba(58,111,132,0.35);
}

/* Reviews list and cards */
.review-block{
  margin-top: 26px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,0.12);
}
.review-title{
  margin: 0;
  font-size: 18px;
  letter-spacing: 0.2px;
}
.review-list{
  margin-top: 14px;
  display:grid;
  gap: 12px;
}
.review-card{
  border-radius: 14px;
  padding: 12px 14px;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(0, 18, 66, 0.40);
}
.review-head{
  display:flex;
  justify-content: space-between;
  align-items:center;
  gap: 10px;
}
.review-stars{
  font-weight: 800;
  font-size: 13px;
}
.review-source{
  font-size: 11px;
  letter-spacing: 0.2px;
  color: rgba(255,255,255,0.65);
}
.review-date{
  font-size: 11px;
  color: rgba(255,255,255,0.65);
}
.review-name{
  margin-top: 6px;
  font-size: 12px;
  font-weight: 700;
  color: rgba(255,255,255,0.85);
}
.review-comment{
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.6;
  color: rgba(255,255,255,0.85);
}
.review-link{
  display:inline-block;
  margin-top: 8px;
  font-size: 12px;
  color: rgba(255,255,255,0.82);
  text-decoration: none;
  border-bottom: 1px solid rgba(58,111,132,0.55);
}
.review-link:hover{
  border-bottom-color: rgba(58,111,132,0.92);
}
.review-attrib{
  margin: 12px 0 0;
  font-size: 11px;
  color: rgba(255,255,255,0.6);
}
.review-form-wrap{
  margin-top: 18px;
}
.review-subtitle{
  margin: 0 0 10px;
  font-size: 15px;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  [data-fade="true"]{ transition: none !important; }
}
