/* Ray & Robin France 2026 — Shared Styles */
*,*::before,*::after{box-sizing:border-box}
body{
  margin:0;font-family:Georgia,'Times New Roman',serif;
  background:#faf8f5;color:#2c2c2c;line-height:1.7;
}
a{color:#8b2500;text-decoration:none;border-bottom:1px solid #8b250040}
a:hover{color:#6b1c00;border-bottom-color:#8b2500}

/* NAV */
.nav{
  background:#8b2500;padding:0.6rem 1.2rem;display:flex;flex-wrap:wrap;
  gap:0.4rem 1.2rem;align-items:center;position:sticky;top:0;z-index:100;
}
.nav a{color:#fff;border:none;font-size:0.95rem;padding:0.3rem 0.5rem;border-radius:4px}
.nav a:hover{background:#a03000}
.nav a.active{background:#6b1c00;font-weight:bold}

/* CITY HEADER */
.ch{
  background:#8b2500;color:#fff;padding:3rem 1.5rem;text-align:center;
}
.ch h1{margin:0 0 0.3rem;font-size:2.4rem;letter-spacing:0.5px}
.ch p{margin:0;opacity:0.9;font-size:1.1rem}

/* CONTAINER */
.container{max-width:900px;margin:0 auto;padding:1.5rem}

/* DAY SECTION */
.day{
  background:#fdfcfa;border-left:4px solid #8b2500;padding:1.2rem 1.5rem;
  margin:1.5rem 0;border-radius:0 8px 8px 0;
}
.day h2{margin:0 0 0.5rem;color:#8b2500;font-size:1.4rem}
.day h3{margin:1rem 0 0.4rem;font-size:1.1rem;color:#5a1a00}

/* CARDS — shared base */
.s,.h,.r,.bar,.shop,.event{
  background:#fff;border:1px solid #e8e2da;border-radius:8px;
  padding:1rem 1.2rem;margin:0.8rem 0;
}
.s h4,.h h4,.r h4,.bar h4,.shop h4,.event h4{margin:0 0 0.4rem;font-size:1.05rem;color:#3a3a3a}
.s p,.h p,.r p,.bar p,.shop p,.event p{margin:0.2rem 0;font-size:0.92rem;color:#555}

/* SPOT */
.s{border-left:3px solid #8b2500}
.s .meta{display:flex;flex-wrap:wrap;gap:0.5rem 1.2rem;margin-top:0.5rem;font-size:0.85rem;color:#777}
.s .meta span{display:inline-flex;align-items:center;gap:0.3rem}

/* HOTEL */
.h{border-left:3px solid #b08d57}
.h.ihg{border-left:4px solid #2e8b57}
.h .badge{
  display:inline-block;background:#2e8b57;color:#fff;font-size:0.75rem;
  padding:0.15rem 0.5rem;border-radius:3px;margin-left:0.5rem;vertical-align:middle;
}

/* RESTAURANT */
.r{border-left:3px solid #cd853f}

/* BAR */
.bar{border-left:3px solid #722f37}

/* SHOP / SMALL MUSEUM */
.shop{border-left:3px solid #4a6741}

/* EVENT (opera/concert) */
.event{border-left:4px solid #daa520}

/* TRANSPORT BOX */
.tb{
  background:#e8f5e9;border:1px solid #a5d6a7;border-radius:8px;
  padding:1rem 1.2rem;margin:1.5rem 0;
}
.tb h3{margin:0 0 0.5rem;color:#2e7d32}

/* TABLES */
table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:0.92rem}
th,td{padding:0.6rem 0.8rem;text-align:left;border-bottom:1px solid #e8e2da}
th{background:#f5f0ea;color:#5a1a00;font-weight:600}
tr:hover{background:#faf5ef}

/* INDEX HERO */
.hero{
  background:linear-gradient(135deg,#8b2500 0%,#a03000 50%,#cd5c3d 100%);
  color:#fff;padding:4rem 1.5rem;text-align:center;
}
.hero h1{font-size:2.6rem;margin:0 0 0.5rem;letter-spacing:1px}
.hero p{font-size:1.2rem;margin:0.3rem 0;opacity:0.92}
.hero .route{font-size:1.4rem;margin-top:1rem;letter-spacing:2px;opacity:0.85}

/* CITY LINK CARDS on index */
.city-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin:1.5rem 0}
.city-card{
  background:#fff;border:1px solid #e8e2da;border-radius:8px;padding:1.2rem;
  transition:transform 0.2s,box-shadow 0.2s;
}
.city-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #8b250015}
.city-card h3{margin:0 0 0.3rem;color:#8b2500}
.city-card p{margin:0.2rem 0;font-size:0.9rem;color:#666}

/* BUDGET */
.budget{background:#fff;border:1px solid #e8e2da;border-radius:8px;padding:1.2rem;margin:1.5rem 0}

/* RESPONSIVE */
@media(max-width:600px){
  .nav{gap:0.2rem 0.6rem;padding:0.5rem 0.8rem}
  .nav a{font-size:0.82rem;padding:0.25rem 0.4rem}
  .ch h1{font-size:1.8rem}
  .hero h1{font-size:1.8rem}
  .hero .route{font-size:1rem}
  .container{padding:1rem}
  .day{padding:1rem}
  table{font-size:0.82rem}
  th,td{padding:0.4rem 0.5rem}
}

/* STAR RATINGS */
.stars { display: inline-block; font-size: .82rem; margin-left: .4rem; text-decoration: none; color: #666; border: none; }
.stars:hover { color: #333; border: none; }
.stars .filled { color: #f5a623; }
.stars .empty { color: #ddd; }
.stars .count { color: #666; margin-left: .2rem; }

/* ATTRACTION THUMBNAIL IMAGES */
.s-img { width: 100%; max-height: 180px; object-fit: cover; border-radius: 6px 6px 0 0; margin: -0.6rem -0.8rem 0.6rem -0.8rem; width: calc(100% + 1.6rem); display: block; }

/* TICKET & DIRECTIONS BUTTONS */
.btn-ticket, .btn-map {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .35rem .7rem; border-radius: 20px; font-size: .82rem;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  text-decoration: none; border: none; cursor: pointer;
  margin: .25rem .25rem 0 0; white-space: nowrap;
}
/* Ticket buttons hidden by default — shown only when unlocked */
.btn-ticket {
  display: none;
}
body.tickets-unlocked .btn-ticket {
  display: inline-flex;
  background: #1a56db; color: #fff;
}
body.tickets-unlocked .btn-ticket:hover { background: #1446bf; color: #fff; border: none; }
.btn-map {
  background: #1a7a3c; color: #fff;
}
.btn-map:hover { background: #155f2f; color: #fff; border: none; }
.btn-row { margin-top: .5rem; display: flex; flex-wrap: wrap; gap: .2rem; }

/* TICKET UNLOCK SECTION */
.ticket-unlock-section {
  margin: 1.5rem 0 2rem;
  padding: 1.2rem 1.4rem;
  border: 2px solid #1a56db;
  border-radius: 10px;
  background: #f0f4ff;
}
.ticket-unlock-section h3 {
  margin: 0 0 .4rem;
  font-size: 1rem;
  color: #1a56db;
}
.ticket-unlock-section p {
  margin: 0 0 .75rem;
  font-size: .9rem;
  color: #444;
}
.unlock-row {
  display: flex; gap: .5rem; flex-wrap: wrap; align-items: center;
}
.unlock-row input[type=password] {
  padding: .45rem .75rem; border: 2px solid #1a56db; border-radius: 8px;
  font-size: .95rem; outline: none; width: 200px; max-width: 100%;
}
.unlock-row input[type=password]:focus { border-color: #0e3aa8; }
.unlock-row button {
  padding: .45rem 1.1rem; background: #1a56db; color: #fff; border: none;
  border-radius: 8px; font-size: .95rem; font-weight: 600; cursor: pointer;
}
.unlock-row button:hover { background: #1446bf; }
.unlock-error { color: #c0392b; font-size: .85rem; margin-top: .4rem; display: none; }
.unlock-success {
  display: none;
  color: #1a7a3c; font-size: .9rem; font-weight: 600;
}

/* MAP PIN in stars anchor */
.map-pin { font-size: .9rem; margin-right: .1rem; cursor: pointer; }
.stars:hover .map-pin { opacity: .8; }

/* ===== France 2026 additions ===== */
h2.sec{color:#8b2500;margin-top:2.2rem;border-bottom:2px solid #e8e2da;padding-bottom:.3rem}
.small{font-size:.82rem;color:#777}
.callout{background:#fff4e6;border-left:4px solid #cd853f;padding:.7rem 1rem;border-radius:0 6px 6px 0;margin:.8rem 0;font-size:.93rem}
.notice{background:#fff8e1;border:1px solid #f0c36d;border-radius:8px;padding:.8rem 1.1rem;margin:1rem 0;font-size:.93rem}
.notice.red{background:#fdecea;border-color:#e6a19a}
.h.booked{border-left:4px solid #2e7d32;background:#f0fff0}
.st-ok{color:#2e7d32}.st-open{color:#777}.st-warn{color:#b26a00}
.vk{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.7rem;margin:.9rem 0 .3rem}
.vk-col{background:#fff;border:1px solid #e8e2da;border-radius:8px;padding:.6rem .9rem;font-size:.88rem}
.vk-col h4{margin:0 0 .3rem;font-size:.95rem}
.vk-col ul{margin:0;padding-left:1.1rem}
.vk-col.inc{border-top:4px solid #2e7d32}.vk-col.opt{border-top:4px solid #1a56db}.vk-col.diy{border-top:4px solid #cd853f}
.fr{background:#f5f0ea;border-radius:8px;padding:.6rem 1.2rem;margin:1rem 0}
.bar .meta,.r .meta,.shop .meta,.event .meta{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;margin-top:.4rem;font-size:.84rem;color:#777}
.hero-img{width:100%;max-height:340px;object-fit:cover;display:block}
.foot{text-align:center;font-size:.8rem;color:#999;padding:2rem 1rem}
.pod{background:#fff;border:1px solid #e8e2da;border-left:4px solid #6a4c93;border-radius:8px;padding:.6rem 1rem;margin:.6rem 0}
.pod h4{margin:0 0 .3rem;font-size:.98rem;color:#3a3a3a}
.pod p{margin:.2rem 0;font-size:.9rem;color:#555}
.hero .flag{width:84px;height:56px;display:block;margin:0 auto 1rem;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.35);border:2px solid rgba(255,255,255,.85)}
@media(max-width:600px){.hero .flag{width:60px;height:40px}}
