/* A quiet, editorial atlas for the wedding weekend. */
.travel-page { color:#3f4e3d; }
.travel-atlas { width:min(1320px,calc(100% - 64px)); margin:30px auto 0; }
.atlas-stage { position:relative; isolation:isolate; background:#f4f4ea; overflow:hidden; border:1px solid #c5cdba; border-radius:12px; }
.atlas-intro { position:absolute; z-index:3; top:26px; left:26px; max-width:530px; pointer-events:none; }
.atlas-eyebrow { margin:0; color:#65745b; font:500 8px/1.6 var(--sans); text-transform:uppercase; letter-spacing:.17em; }
.atlas-region { position:absolute; z-index:3; top:25px; right:26px; max-width:300px; margin:0; color:#65745b; text-align:right; font:8px/1.7 var(--sans); letter-spacing:.08em; pointer-events:none; }
.atlas-region span { display:block; margin-top:5px; font:17px/1.4 var(--serif); letter-spacing:0; }
.map-viewport { position:relative; width:100%; height:660px; overflow:hidden; touch-action:none; cursor:grab; }
.map-viewport.is-dragging { cursor:grabbing; }
.map-viewport:focus-visible { outline:2px solid #7e8a6d; outline-offset:-4px; }
.map-geography { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; user-select:none; }
.map-pins, .map-labels { position:absolute; inset:0; pointer-events:none; }
.map-pin-leaders { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; stroke:#9eae90; stroke-width:1; opacity:.7; }
.map-label { position:absolute; width:max-content; white-space:nowrap; pointer-events:none; }
.map-label-town { color:#78856d; font:500 10px/1.4 var(--sans); text-transform:uppercase; letter-spacing:.14em; text-shadow:0 1px 3px #f7f6ec; }
.map-label-region { color:#929e85; font:italic 28px/1 var(--serif); }
.map-label-river { color:#8aa59b; font:italic 14px/1 var(--serif); }
.map-label-street { color:#839078; font:10px/1.4 var(--sans); text-shadow:0 0 3px #f9f7ee,0 0 3px #f9f7ee; }
.map-label-route { padding:3px 6px; border:1px solid #c4cdb8; border-radius:3px; color:#7c8b6d; background:#f8f8ef; font:9px/1 var(--sans); }
.map-pin { position:absolute; z-index:1; display:grid; place-items:center; width:44px; height:44px; padding:0; border:0; background:transparent; color:#55684e; transform:translate(-50%,-50%); cursor:pointer; pointer-events:auto; touch-action:none; }
.pin-dot { display:grid; place-items:center; width:23px; height:23px; border:1px solid #7b8b6d; border-radius:50%; background:#fffef7; box-shadow:0 2px 7px #34463112; font:10px/1 var(--sans); transition:background .18s,box-shadow .18s,transform .18s; }
.map-pin[data-cluster="true"] .pin-dot { width:28px; height:28px; box-shadow:0 0 0 3px #fffef780,0 2px 7px #34463112; }
.map-pin[data-pin-category="wedding"] .pin-dot { border-color:#a9717b; color:#a9717b; background:#fff7f5; font-size:17px; }
.pin-label { position:absolute; left:50%; top:49px; transform:translateX(-50%); width:max-content; max-width:180px; padding:6px 10px; border:1px solid #dce1d2; border-radius:5px; background:#fffef9f5; color:#46533f; box-shadow:0 3px 12px #3446310d; font:10px/1.4 var(--sans); text-align:center; opacity:0; visibility:hidden; pointer-events:none; }
.map-pin[aria-pressed="true"] { z-index:3; color:#fffef9; }
.map-pin[aria-pressed="true"] .pin-dot { width:32px; height:32px; border-color:#637754; color:#fffef9; background:#637754; box-shadow:0 0 0 5px #fffef7a6,0 3px 10px #3446311a; }
.map-pin[data-pin-category="wedding"][aria-pressed="true"] .pin-dot { border-color:#a9717b; background:#a9717b; }
.map-pin:hover .pin-dot { transform:scale(1.08); }
.map-pin:hover, .map-pin:focus-visible { z-index:4; }
.map-pin:hover .pin-label, .map-pin:focus-visible .pin-label, .map-pin[aria-pressed="true"] .pin-label { opacity:1; visibility:visible; }
.map-pin:focus-visible { outline:2px solid #9d6870; outline-offset:7px; border-radius:50%; }
.atlas-compass { position:absolute; left:26px; bottom:24px; color:#7a8971; font:8px/1 var(--sans); text-align:center; pointer-events:none; }
.atlas-compass span { display:block; margin-top:4px; font:30px/1 var(--serif); }
.map-controls { position:absolute; z-index:4; right:18px; top:108px; display:grid; gap:0; padding:4px; border:1px solid #d1d8c5; border-radius:28px; background:#fffef7eb; box-shadow:0 4px 16px #3b4b3010; }
.map-controls button, .rail-controls button { display:grid; place-items:center; width:42px; height:42px; padding:0; border:1px solid #a9b59d; background:#fffef7e8; color:#55684e; cursor:pointer; font:23px/1 var(--serif); }
.map-controls button:hover, .rail-controls button:hover { background:#e2e8d8; }
.map-controls button:disabled { opacity:.35; cursor:default; }
.map-controls button { width:44px; height:44px; border:0; border-radius:50%; background:transparent; }
.atlas-credit { position:absolute; right:22px; bottom:17px; color:#718066; font:8px/1.5 var(--sans); text-underline-offset:3px; }
.atlas-browse { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:18px; padding:25px 0 20px; }
.travel-filters { display:flex; flex-wrap:wrap; gap:7px; }
.travel-filters button { display:flex; align-items:center; gap:8px; min-height:37px; padding:8px 13px; border:1px solid #b8c0ab; border-radius:22px; background:transparent; color:#65745b; font:10px/1.4 var(--sans); cursor:pointer; }
.travel-filters button span { opacity:.65; font-size:8px; }
.travel-filters button[aria-pressed="true"] { background:#55684e; border-color:#55684e; color:#fffef7; }
.places-rail { display:flex; gap:12px; overflow-x:auto; padding:1px 1px 10px; scroll-snap-type:x mandatory; scrollbar-width:thin; scrollbar-color:#b8c0ab transparent; }
.place-card { display:flex; flex:0 0 233px; flex-direction:column; min-height:176px; padding:20px 22px 18px; border:1px solid #d2d6c7; background:#f5f5ed; color:#48583f; text-decoration:none; scroll-snap-align:start; transition:background .2s,border-color .2s; }
.place-card-top { display:flex; justify-content:space-between; gap:10px; align-items:center; font:8px/1.4 var(--sans); letter-spacing:.1em; text-transform:uppercase; }
.place-card-top > span:last-child { font:20px/1 var(--serif); }
.place-card-town { margin-top:auto; font:8px/1.5 var(--sans); text-transform:uppercase; letter-spacing:.1em; color:#75826a; }
.place-card h3 { margin:5px 0 13px; font:400 27px/1.05 var(--serif); }
.place-card-action { font:8px/1.6 var(--sans); letter-spacing:.04em; color:#75826a; }
.place-card:hover { background:#e9eddf; border-color:#91a082; }
.place-card[aria-pressed="true"] { border-color:#718363; background:#e8edde; }
.place-card[aria-pressed="true"] .place-card-action { color:#55684e; }
.rail-toolbar { display:flex; justify-content:flex-end; align-items:center; gap:20px; padding:9px 0 24px; }
.rail-controls { display:flex; gap:7px; }
.rail-controls button { width:36px; height:32px; font-size:18px; }
.place-details { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:60px; padding:32px 0 35px; border-top:1px solid #c7cebc; border-bottom:1px solid #c7cebc; scroll-margin-top:25px; }
.detail-heading h2 { margin:10px 0 14px; font:400 43px/1.05 var(--serif); }
.detail-address { margin:0; max-width:360px; color:#75816b; font:11px/1.7 var(--sans); }
.detail-copy > p:first-child { margin:0 0 14px; color:#53634b; font:21px/1.5 var(--serif); }
.detail-links { display:flex; flex-wrap:wrap; gap:12px; margin-top:22px; }
.travel-page button:focus-visible, .travel-page a:focus-visible { outline:2px solid #a7636e; outline-offset:4px; }
.map-controls[hidden], .travel-filters[hidden], .rail-controls[hidden], .place-card[hidden] { display:none; }
@media(max-width:900px) {
 .travel-atlas { width:calc(100% - 36px); }
 .atlas-region { max-width:200px; font-size:7px; }
 .atlas-region span { font-size:14px; }
 .atlas-intro { left:25px; max-width:400px; }
 .atlas-browse { align-items:flex-start; flex-direction:column; }
 .place-details { gap:30px; }
}
@media(max-width:620px) {
 .travel-atlas { width:calc(100% - 24px); margin-top:18px; }
 .atlas-intro { top:20px; left:18px; max-width:none; }
 .atlas-region { display:none; }
 .map-viewport { height:390px; }
 .atlas-compass { bottom:36px; left:18px; }
 .map-controls { right:12px; top:20px; }
 .map-label-town { font-size:9px; letter-spacing:.12em; }
 .map-label-region { font-size:20px; }
 .atlas-credit { left:15px; right:auto; bottom:14px; font-size:7px; }
 .atlas-browse { gap:12px; padding:21px 4px 16px; }
 .travel-filters { gap:6px; }
 .travel-filters button { padding:7px 11px; min-height:36px; font-size:9px; }
 .place-card { flex-basis:205px; min-height:156px; padding:18px; }
 .place-card h3 { font-size:25px; }
 .rail-toolbar { padding-inline:4px; }
 .place-details { grid-template-columns:1fr; gap:22px; padding:28px 10px; }
 .detail-heading h2 { font-size:38px; }
 .detail-copy > p:first-child { font-size:20px; }
}
@media(prefers-reduced-motion:reduce) { .place-card, .pin-dot { transition:none; } }
@media print { .map-controls,.rail-controls,.travel-filters { display:none; } .places-rail { flex-wrap:wrap; overflow:visible; } .place-card { flex-basis:30%; break-inside:avoid; } .map-viewport { height:400px; } .atlas-intro { position:static; padding:20px; } }
.map-pin[hidden], .map-label[hidden], .cluster-choices[hidden], .detail-links[hidden] { display:none; }
.cluster-choices { display:flex; flex-wrap:wrap; gap:7px; margin-top:16px; }
.cluster-choices button { padding:10px 13px; border:1px solid #b8c0ab; border-radius:3px; color:#55684e; background:#f3f5eb; font:11px/1.4 var(--sans); cursor:pointer; }
.atlas-eyebrow, .place-card-town, .place-card-action { font-size:9px; }
.place-card-town, .place-card-action, .atlas-credit { color:#65745b; }
.place-card:focus-visible { outline-offset:-4px; }
