/* =========================================================
   Ronnie's Teesdale Retreat — Design System
   Midnight near-black · Electric violet · Platinum
   (matches the Ronnie site aesthetic)
   ========================================================= */
:root{
  --void:#0b0710; --den:#120c1a; --burrow:#1a1226; --ridge:#251a35;
  --violet:#9d5bf0; --ember:#7c3aed;
  --plat:#d9d6e3; --plat2:#b9b4c9;
  --cream:#f2f0f7; --tan:#a8a2ba; --whisker:#6f6884;
  --amber:#f0b45b; --star:#ffd76a;
  --border:rgba(217,214,227,.14); --border-hot:rgba(157,91,240,.42);
  --glow:0 0 60px rgba(157,91,240,.28);
  --grad:linear-gradient(120deg,#ffffff 0%,#c9c2dd 42%,var(--ember) 100%);
  --radius:14px; --radius-lg:20px;
  --fd:'Playfair Display',Georgia,serif; --fb:'DM Sans','Segoe UI',system-ui,sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;background:var(--void)}
body{font-family:var(--fb);background:var(--void);color:var(--cream);line-height:1.6;overflow-x:hidden}
img{max-width:100%;display:block}
a{text-decoration:none;color:inherit}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
h1,h2,h3{font-family:var(--fd);line-height:1.1}
textarea{font-family:inherit}

body::after{content:"";position:fixed;inset:0;z-index:9998;pointer-events:none;opacity:.045;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.grad-text{background:var(--grad);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 5s linear infinite}
@keyframes shimmer{0%{background-position:-200% center}100%{background-position:200% center}}

/* hero */
.hero{position:relative;padding:5.5rem 2rem 3rem;text-align:center;overflow:hidden}
.hero-bg{position:absolute;inset:-20%;pointer-events:none;animation:aurora 18s ease-in-out infinite;
  background:radial-gradient(ellipse 80% 100% at 10% 20%,rgba(157,91,240,.16) 0%,transparent 55%),
  radial-gradient(ellipse 60% 80% at 85% 30%,rgba(217,214,227,.10) 0%,transparent 50%),
  radial-gradient(ellipse 50% 60% at 55% 100%,rgba(124,58,237,.10) 0%,transparent 50%)}
@keyframes aurora{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(3%,-2%,0) scale(1.08)}100%{transform:translate3d(0,0,0) scale(1)}}
.eyebrow{position:relative;display:inline-flex;align-items:center;gap:.6rem;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--plat);font-weight:600;margin-bottom:1.1rem}
.eyebrow::before,.eyebrow::after{content:"";width:2rem;height:1px;background:linear-gradient(90deg,transparent,var(--plat))}
.eyebrow::after{background:linear-gradient(90deg,var(--plat),transparent)}
.hero h1{position:relative;font-size:clamp(2.6rem,8vw,5rem);font-weight:900;letter-spacing:-.03em;line-height:.95;margin-bottom:1rem;text-shadow:0 0 80px rgba(157,91,240,.25)}
.hero .sub{position:relative;color:var(--tan);max-width:56ch;margin:0 auto;font-size:clamp(1rem,2vw,1.12rem)}
.trip-facts{position:relative;display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:1.75rem}
.fact{border:1px solid var(--border);background:linear-gradient(160deg,var(--burrow),var(--den));border-radius:100px;padding:.5rem 1.1rem;font-size:.8rem;color:var(--cream);font-weight:500}
.fact b{color:var(--violet)}

/* marquee */
.marquee{position:relative;overflow:hidden;padding:.85rem 0;background:var(--grad);box-shadow:var(--glow);transform:rotate(-1.2deg) scale(1.04);margin:2rem 0 0}
.marquee-track{display:flex;width:max-content;gap:2.5rem;animation:scroll 30s linear infinite}
.marquee-track span{font-family:var(--fd);font-weight:900;font-size:1.02rem;letter-spacing:.05em;text-transform:uppercase;color:#1a0b2e;white-space:nowrap;display:inline-flex;gap:2.5rem}
.marquee-track span::after{content:"🐾"}
@keyframes scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* sticky toolbar */
.toolbar{position:sticky;top:0;z-index:50;background:rgba(11,7,16,.82);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);border-bottom:1px solid var(--border)}
.toolbar-inner{max-width:1220px;margin:0 auto;padding:.7rem 1.5rem;display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}
.tb-count{font-size:.82rem;color:var(--tan);margin-right:auto}
.tb-count b{color:var(--star)}
.tb-select,.tb-btn{border:1px solid var(--border);background:var(--burrow);color:var(--cream);border-radius:100px;padding:.5rem 1rem;font-size:.76rem;font-weight:600;transition:border-color .2s,transform .15s,box-shadow .2s}
.tb-select:hover,.tb-btn:hover{border-color:var(--border-hot)}
.tb-btn.primary{background:var(--grad);color:#1a0b2e;border:none;box-shadow:0 6px 18px rgba(157,91,240,.28);text-transform:uppercase;letter-spacing:.06em}
.tb-btn.primary:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(157,91,240,.5)}
.tb-btn.ghost:hover{color:var(--amber);border-color:var(--amber)}

main{max-width:1220px;margin:0 auto;padding:0 1.5rem 4rem}
.sec-head{margin:2.5rem 0 1.3rem}
.sec-head h2{font-size:clamp(1.5rem,4vw,2.2rem);color:var(--cream)}
.note{background:linear-gradient(160deg,var(--burrow),var(--den));border:1px solid var(--border);border-left:3px solid var(--violet);border-radius:var(--radius);padding:1rem 1.25rem;margin:1.5rem 0;font-size:.85rem;color:var(--tan)}
.note.amber{border-left-color:var(--amber)}
.note b{color:var(--cream)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:1.4rem}

/* map */
#map{height:min(60vh,520px);border-radius:var(--radius-lg);border:1px solid var(--border);overflow:hidden;background:var(--den);z-index:1}
.map-note{font-size:.78rem;color:var(--whisker);margin:.6rem 0 0;text-align:center}
.leaflet-container{background:#0d0a13;font-family:var(--fb)}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--burrow);color:var(--cream);border:1px solid var(--border-hot);box-shadow:var(--glow)}
.leaflet-popup-content{margin:.7rem .85rem;font-size:.82rem;line-height:1.45}
.leaflet-popup-content b{font-family:var(--fd);font-size:1rem}
.leaflet-popup-content .pp{color:var(--tan);display:block;margin:.15rem 0}
.leaflet-popup-content .ps{color:var(--star)}
.leaflet-popup-content a{color:var(--violet);font-weight:700}
.leaflet-container a.leaflet-popup-close-button{color:var(--tan)}
.leaflet-control-attribution{background:rgba(11,7,16,.7)!important;color:var(--whisker)!important}
.leaflet-control-attribution a{color:var(--plat2)!important}
.leaflet-bar a{background:var(--burrow);color:var(--cream);border-color:var(--border)}
.leaflet-bar a:hover{background:var(--ridge)}
.pin{width:22px;height:22px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid rgba(11,7,16,.7);box-shadow:0 3px 8px rgba(0,0,0,.5)}
.pin.default{background:var(--violet)}
.pin.rated{background:var(--star)}
.pin.home{background:#4ad3a0;border-radius:6px;transform:none;display:flex;align-items:center;justify-content:center;font-size:12px}

/* image is now clickable */
.card-media>img,.strip img{cursor:zoom-in}
img.img-fail{object-fit:contain;background:linear-gradient(145deg,var(--burrow),var(--den));padding:1rem}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;background:rgba(6,4,10,.92);backdrop-filter:blur(6px);padding:3.5rem 1rem}
.lightbox[hidden]{display:none}
.lb-figure{margin:0;max-width:min(1100px,94vw);max-height:88vh;display:flex;flex-direction:column;align-items:center;gap:.6rem}
.lb-img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:var(--radius);border:1px solid var(--border-hot);box-shadow:var(--glow),0 30px 60px rgba(0,0,0,.6)}
.lb-caption{color:var(--tan);font-size:.85rem;text-align:center}
.lb-btn{position:absolute;background:rgba(26,18,38,.85);border:1px solid var(--border-hot);color:var(--cream);width:3rem;height:3rem;border-radius:50%;font-size:1.6rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:transform .15s,background .2s}
.lb-btn:hover{background:var(--ridge);transform:scale(1.08)}
.lb-close{top:1.1rem;right:1.1rem}
.lb-prev{left:1.1rem;top:50%;transform:translateY(-50%)}
.lb-next{right:1.1rem;top:50%;transform:translateY(-50%)}
.lb-prev:hover,.lb-next:hover{transform:translateY(-50%) scale(1.08)}
@media(max-width:560px){.lb-prev{left:.4rem}.lb-next{right:.4rem}.lb-btn{width:2.5rem;height:2.5rem;font-size:1.3rem}}

/* card */
.card{position:relative;background:linear-gradient(165deg,var(--burrow),var(--den));border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:transform .28s,box-shadow .28s,border-color .28s}
.card:hover{border-color:var(--border-hot);box-shadow:var(--glow),0 24px 48px rgba(0,0,0,.5);transform:translateY(-4px)}
.card.rated{border-color:rgba(255,215,106,.45)}
.card.feat{grid-column:1/-1;flex-direction:row;flex-wrap:wrap}
.card-media{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--ridge)}
.card.feat .card-media{flex:1 1 460px;aspect-ratio:16/10;min-height:320px}
.card-media>img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.card:hover .card-media>img{transform:scale(1.05)}
.badge{position:absolute;top:.85rem;left:.85rem;z-index:2;display:flex;gap:.4rem;flex-wrap:wrap}
.chip-src{font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.32rem .7rem;border-radius:100px;background:rgba(11,7,16,.82);border:1px solid var(--border-hot);color:var(--plat);backdrop-filter:blur(6px)}
.chip-star{position:absolute;top:.85rem;right:.85rem;z-index:2;font-size:.72rem;font-weight:700;padding:.32rem .6rem;border-radius:100px;background:rgba(11,7,16,.82);border:1px solid var(--border);color:var(--star);backdrop-filter:blur(6px)}
.feat-flag{position:absolute;bottom:.85rem;left:.85rem;z-index:2;font-family:var(--fd);font-weight:900;font-size:.8rem;letter-spacing:.04em;padding:.4rem .9rem;border-radius:100px;background:var(--grad);color:#1a0b2e}
.card-body{padding:1.2rem 1.35rem 1.4rem;display:flex;flex-direction:column;gap:.55rem;flex:1}
.card.feat .card-body{flex:1 1 380px;justify-content:center}
.card-name{font-family:var(--fd);font-size:1.3rem;font-weight:700;color:var(--cream);line-height:1.15}
.card.feat .card-name{font-size:1.85rem}
.loc{font-size:.82rem;color:var(--tan)}
.loc .drive{color:var(--violet);font-weight:600}
.meta{display:flex;flex-wrap:wrap;gap:.4rem;margin:.1rem 0}
.tag{font-size:.68rem;font-weight:600;padding:.28rem .6rem;border-radius:8px;background:var(--ridge);border:1px solid var(--border);color:var(--plat2)}
.tag.warn{background:rgba(240,180,91,.12);border-color:rgba(240,180,91,.4);color:var(--amber)}
.strip{display:flex;gap:.4rem}
.strip img{flex:1;width:0;aspect-ratio:1;object-fit:cover;border-radius:8px;border:1px solid var(--border);transition:transform .3s,border-color .3s}
.strip img:hover{transform:scale(1.05);border-color:var(--border-hot)}
.desc{font-size:.85rem;color:var(--tan);line-height:1.55}

/* rating + notes controls */
.controls{margin-top:.4rem;border-top:1px solid var(--border);padding-top:.9rem;display:flex;flex-direction:column;gap:.6rem}
.rate-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.rate-label{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--whisker);font-weight:600}
.stars{display:inline-flex;gap:.15rem}
.stars .star{font-size:1.35rem;line-height:1;color:var(--whisker);transition:transform .12s,color .12s}
.stars .star.on{color:var(--star)}
.stars .star:hover{transform:scale(1.2)}
.rate-clear{font-size:.66rem;color:var(--whisker);text-decoration:underline;margin-left:.2rem}
.rate-clear:hover{color:var(--amber)}
.note-input{width:100%;min-height:2.4rem;resize:vertical;background:var(--void);border:1px solid var(--border);border-radius:10px;color:var(--cream);padding:.55rem .7rem;font-size:.82rem;line-height:1.45;transition:border-color .2s}
.note-input:focus{outline:none;border-color:var(--border-hot)}
.note-input::placeholder{color:var(--whisker)}
.card-actions{display:flex;justify-content:space-between;align-items:center;gap:.6rem}
.btn{display:inline-block;padding:.6rem 1.3rem;background:var(--grad);background-size:180% auto;color:#1a0b2e;border-radius:100px;font-weight:700;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;transition:transform .2s,box-shadow .2s,background-position .5s;box-shadow:0 6px 18px rgba(157,91,240,.28);white-space:nowrap}
.btn:hover{background-position:right center;transform:translateY(-2px);box-shadow:0 12px 30px rgba(157,91,240,.5)}
.price{font-family:var(--fd);font-weight:900;font-size:1.4rem;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.price small{font-family:var(--fb);font-weight:500;font-size:.66rem;color:var(--whisker);display:block;letter-spacing:.03em;-webkit-text-fill-color:var(--whisker)}

.empty{grid-column:1/-1;text-align:center;color:var(--whisker);padding:3rem 1rem;font-size:.95rem}

footer{border-top:1px solid var(--border);background:var(--den);padding:2.5rem 1.5rem;text-align:center;color:var(--whisker);font-size:.8rem}
footer .fn{font-family:var(--fd);font-weight:700;font-size:1.1rem;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:.4rem}
footer a{color:var(--plat2);text-decoration:underline}

/* toast */
.toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%) translateY(120%);background:var(--ridge);border:1px solid var(--border-hot);color:var(--cream);padding:.8rem 1.4rem;border-radius:100px;font-size:.85rem;font-weight:600;box-shadow:var(--glow);z-index:200;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.toast.show{transform:translateX(-50%) translateY(0)}

@media(max-width:640px){
  .card.feat{flex-direction:column}
  .card.feat .card-media{aspect-ratio:4/3;min-height:0}
  .tb-count{width:100%;margin-bottom:.3rem}
}
@media(prefers-reduced-motion:reduce){
  .hero-bg,.marquee-track,.grad-text{animation:none}
  .grad-text{color:var(--violet)}
}
