:root { --ink:#16302c; --muted:#46605a; --paper:#f3f6f4; --warm:#fbf8f2; --accent:#c56843; --rule:#d8e0db; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--warm); color:var(--ink); font:16px/1.65 Arial, sans-serif; }
.shell { width:min(1100px, calc(100% - 40px)); margin:0 auto; }
.hero { padding:78px 0 56px; color:#fff; background:linear-gradient(120deg, rgba(14,42,35,.94), rgba(35,77,68,.83)), url('https://images.unsplash.com/photo-1559054663-e1183c9e2c81?auto=format&fit=crop&w=2200&q=80') center/cover; }
.eyebrow { margin:0 0 8px; color:var(--accent); font-size:.76rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; }
.hero .eyebrow { color:#f4b194; }
h1,h2,h3 { font-family:Georgia, 'Times New Roman', serif; font-weight:400; line-height:1.08; }
h1 { max-width:760px; margin:0; font-size:clamp(3rem, 8vw, 6rem); }
.lede { max-width:650px; margin:18px 0 26px; font-size:clamp(1.1rem, 2.2vw, 1.42rem); }
nav { display:flex; flex-wrap:wrap; gap:18px; }
nav a { color:#fff; text-underline-offset:4px; }
.section { padding:82px 0; }
.section-heading { max-width:660px; margin-bottom:30px; }
.section-heading h2 { margin:0 0 12px; font-size:clamp(2.1rem, 4vw, 3.5rem); }
.section-heading p:not(.eyebrow) { color:var(--muted); margin:0; }
.day-grid { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:12px; }
.day-card { position:relative; min-height:310px; overflow:hidden; background:var(--ink); }
.day-card img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .35s ease; }
.day-card:hover img { transform:scale(1.04); }
.day-card::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.04) 30%, rgba(7,24,20,.88)); }
.day-card-copy { position:absolute; z-index:1; right:0; bottom:0; left:0; padding:18px; color:#fff; }
.day-card-copy p { margin:0; font-size:.72rem; font-weight:700; letter-spacing:.13em; }
.day-card-copy h3 { margin:5px 0; font-size:1.65rem; }
.day-card-copy span { display:block; font-size:.9rem; line-height:1.35; }
.route-section { padding-bottom:0; background:var(--paper); }
.route-section .section-heading { padding-bottom:14px; }
#map { height:min(66vw, 560px); min-height:360px; width:100%; }
.map-controls { padding:14px 0 18px; }
.map-controls .leaflet-control { float:none; margin:0; }
.map-controls .leaflet-control-layers { width:100%; max-width:none; border:1px solid var(--rule); border-radius:6px; box-shadow:none; background:rgba(255,255,255,.72); }
.map-controls .leaflet-control-layers-list { display:grid; grid-template-columns:auto 1fr; gap:6px 28px; padding:10px 12px; }
.map-controls .leaflet-control-layers-base,
.map-controls .leaflet-control-layers-overlays { display:grid; grid-template-columns:repeat(2, minmax(0, max-content)); gap:6px 18px; align-content:start; }
.map-controls .leaflet-control-layers-separator { display:none; }
.map-controls .leaflet-control-layers label { margin:0; font-size:14px; line-height:1.45; white-space:nowrap; }
.leaflet-popup-content { font:14px/1.4 Arial,sans-serif; color:var(--ink); width:260px; max-width:calc(100vw - 54px); }
.leaflet-popup-content strong { font-family:Georgia,serif; font-size:16px; }
.leaflet-popup-content img { display:block; width:100%; height:132px; margin:8px 0; object-fit:cover; border-radius:4px; }
.map-popup-image { display:block; width:100%; height:116px; margin:7px 0; object-fit:cover; border-radius:4px; }
.legend-dot { display:inline-block; width:12px; height:12px; margin-right:5px; border:2px solid #fff; border-radius:50%; box-shadow:0 0 0 1px rgba(15,23,42,.45); vertical-align:-1px; }
.legend-dot.hotel { width:15px; height:15px; border:3px solid #d5a843; background:#173c45; }.legend-dot.planned { background:#24738a; }.legend-dot.optional { background:#b7791f; }
.legend-line { display:inline-block; width:18px; margin-right:5px; border-top:2px solid #24738a; vertical-align:middle; }.legend-line.optional { border-top-color:#b7791f; border-top-style:dashed; }
.itinerary { padding-top:84px; padding-bottom:96px; max-width:820px; }
.hub-content { min-height:42vh; }
.trip-card { display:flex; align-items:center; gap:22px; max-width:760px; padding:12px; border:1px solid var(--rule); background:var(--paper); color:var(--ink); text-decoration:none; transition:transform .2s ease, box-shadow .2s ease; }
.trip-card:hover { transform:translateY(-2px); box-shadow:0 10px 24px rgba(22,48,44,.12); }
.trip-card img { width:148px; height:100px; flex:0 0 auto; object-fit:cover; }
.trip-card strong,.trip-card small { display:block; }
.trip-card strong { font:1.55rem/1.15 Georgia,serif; }
.trip-card small { margin-top:6px; color:var(--muted); font-size:.95rem; line-height:1.45; }
.itinerary > h1 { font-size:clamp(2.5rem, 5vw, 4.2rem); margin-bottom:18px; }
.itinerary h2 { margin:72px 0 18px; padding-top:16px; border-top:1px solid var(--rule); font-size:clamp(1.9rem, 4vw, 2.8rem); }
.itinerary h3 { margin:36px 0 8px; font-size:1.45rem; }
.itinerary p,.itinerary li { max-width:760px; }
.itinerary a { color:#935032; text-decoration-thickness:1px; text-underline-offset:3px; }
.map-highlights { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:20px 0 36px; }
.map-highlight { padding:12px; border:1px solid var(--rule); background:var(--paper); }
.map-highlight img { display:block; width:100%; height:140px; margin:0 0 9px; object-fit:cover; }
.map-highlight h4 { margin:0 0 4px; font:1.2rem/1.15 Georgia,serif; }.map-highlight p { margin:0; font-size:.9rem; }
.itinerary table { width:100%; border-collapse:collapse; margin:22px 0; font-size:.95rem; }
.itinerary th,.itinerary td { padding:12px; text-align:left; vertical-align:top; border-bottom:1px solid var(--rule); }
.itinerary th { font-weight:700; }
footer { padding:28px 0; background:var(--ink); color:#dce8e2; font-size:.9rem; }
@media (max-width:850px) { .day-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); } .map-controls .leaflet-control-layers-list { grid-template-columns:1fr; } }
@media (max-width:560px) { .shell { width:min(100% - 28px, 1100px); } .hero { padding:58px 0 42px; } .section { padding:58px 0; } .day-grid { grid-template-columns:1fr; } .day-card { min-height:350px; } #map { height:72vh; min-height:520px; max-height:760px; } .map-controls { padding-top:10px; } .map-controls .leaflet-control-layers-base,.map-controls .leaflet-control-layers-overlays { grid-template-columns:1fr 1fr; gap:6px 12px; } .map-controls .leaflet-control-layers label { font-size:13px; white-space:normal; } .leaflet-popup-content { width:220px; max-width:calc(100vw - 72px); font-size:13px; line-height:1.35; } .leaflet-popup-content strong { font-size:15px; } .leaflet-popup-content img,.map-popup-image { height:96px; margin:6px 0; } .itinerary { padding-top:60px; padding-bottom:70px; } .trip-card { align-items:flex-start; gap:14px; } .trip-card img { width:100px; height:82px; } .trip-card strong { font-size:1.28rem; } .itinerary table { font-size:.84rem; } .itinerary th,.itinerary td { padding:8px; } }
