:root{
  --navy:#16325c; --red:#c8272c; --red-dark:#8f1c20; --gold:#d9a521;
  --cream:#faf5ea; --cream2:#fff8ea; --border:#eee0c4; --ink:#1a2a3a;
  --muted:#5b6b7a; --muted2:#3a4a5a;
}
body{margin:0;background:var(--cream);}
a{color:var(--red);text-decoration:none;}
a:hover{color:var(--red-dark);}
input:focus,select:focus{outline:2px solid var(--navy);}

@keyframes pulseBadge{0%,100%{transform:scale(1);}50%{transform:scale(1.06);}}
@keyframes floaty{0%,100%{transform:translateY(0);}50%{transform:translateY(-10px);}}
@keyframes slideFade{0%{opacity:0;}1%{opacity:1;}10%{opacity:1;}12%{opacity:0;}100%{opacity:0;}}
@keyframes ribbonL{0%{background-position:0 0;}100%{background-position:-108px 0;}}
@keyframes ribbonR{0%{background-position:0 0;}100%{background-position:108px 0;}}

.page{font-family:'Inter',sans-serif;color:var(--ink);width:100%;overflow-x:hidden;}

/* header / footer */
.site-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 5%;background:var(--cream);border-bottom:3px solid var(--navy);flex-wrap:wrap;position:sticky;top:0;z-index:50;}
.site-header__logo-link{display:flex;align-items:center;}
.site-header__logo{height:88px;width:auto;display:block;}
.site-nav{display:flex;align-items:center;gap:28px;flex-wrap:wrap;}
.nav-link{color:var(--navy);font-weight:600;font-size:15px;}
.btn-nav{background:var(--red);color:#fff;padding:10px 20px;border-radius:6px;font-weight:700;font-size:14px;white-space:nowrap;}
.btn-nav:hover{color:#fff;}

.site-footer{padding:36px 5%;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;background:var(--cream);border-top:1px solid var(--border);}
.site-footer__logo{height:34px;width:auto;display:block;}
.footer-copy{font-size:13.5px;color:var(--muted);}
.footer-link{font-size:13.5px;font-weight:700;}

/* section headers */
.eyebrow{font-weight:800;letter-spacing:.08em;font-size:13px;text-transform:uppercase;margin-bottom:8px;}
.eyebrow--red{color:var(--red);}
.eyebrow--navy{color:var(--navy);}
.section-header{text-align:center;margin-bottom:44px;}
.section-title{font-family:'Anton',sans-serif;font-size:clamp(28px,4vw,42px);color:var(--navy);text-transform:uppercase;margin:0 0 14px;}
.section-title--tight{margin:0;}
.section-sub{color:var(--muted);max-width:600px;margin:0 auto;font-size:16px;}

.mw-1280{max-width:1280px;margin:0 auto;}
.mw-1080{max-width:1080px;margin:0 auto;}
.mw-900{max-width:900px;margin:0 auto;}
.mw-760{max-width:760px;margin:0 auto;}
.mw-720{max-width:720px;margin:0 auto;}

/* badges */
.badge-pill{display:inline-block;font-weight:800;font-size:12px;letter-spacing:.08em;padding:5px 12px;border-radius:999px;margin-bottom:14px;text-transform:uppercase;}

/* tool page hero */
.tool-hero{padding:44px 5% 40px;text-align:center;}
.tool-hero h1{font-family:'Anton',sans-serif;font-size:clamp(30px,4.5vw,46px);margin:0;text-transform:uppercase;}
.tool-hero p{max-width:560px;margin:12px auto 0;font-size:16px;}
.tool-hero--navy{background:var(--navy);}
.tool-hero--navy h1{color:#fff;}
.tool-hero--navy p{color:#cfe0f5;}
.tool-hero--navy .badge-pill{background:var(--gold);color:var(--navy);}
.tool-hero--navy-dots{background:var(--navy);background-image:radial-gradient(rgba(255,255,255,.10) 1.5px, transparent 1.5px);background-size:26px 26px;}
.tool-hero--navy-dots h1{color:#fff;}
.tool-hero--navy-dots p{color:#cfe0f5;}
.tool-hero--navy-dots .badge-pill{background:var(--gold);color:var(--navy);}
.tool-hero--red{background:var(--red);}
.tool-hero--red h1{color:#fff;}
.tool-hero--red p{color:#ffe0d9;}
.tool-hero--red .badge-pill{background:var(--gold);color:#5a1a1a;}
.tool-hero--gold{background:var(--gold);}
.tool-hero--gold h1{color:var(--navy);}
.tool-hero--gold p{color:#5a4614;}
.tool-hero--gold .badge-pill{background:var(--navy);color:#fff;}

/* panels / forms */
.panel{background:#fff;border-radius:16px;border:2px solid var(--border);padding:32px;}
.panel--navy{background:var(--navy);color:#fff;border:none;}
.field{display:flex;flex-direction:column;gap:6px;font-size:13.5px;font-weight:700;color:var(--navy);}
.field input,.field select{padding:11px 12px;border-radius:8px;border:1.5px solid #d8cfa8;font-size:15px;}

.btn{border:none;border-radius:8px;font-weight:800;font-size:15px;cursor:pointer;}
.btn-navy{background:var(--navy);color:#fff;padding:13px 24px;}
.btn-gold{background:var(--gold);color:var(--navy);padding:14px 28px;border-radius:8px;font-weight:800;font-size:16px;}
.btn-outline-white{border:2px solid #fff;color:#fff;background:transparent;padding:12px 28px;border-radius:8px;font-weight:700;font-size:16px;}
.btn-outline-white:hover{color:#fff;}

/* affiliate banner */
.affiliate-wrap{padding:0 5%;margin:0 auto 60px;}
.affiliate-card{background:var(--cream2);border:2px solid var(--border);border-radius:14px;padding:22px 26px;display:flex;align-items:center;gap:20px;flex-wrap:wrap;}
.affiliate-tag{display:inline-block;background:var(--gold);color:var(--navy);font-size:11px;font-weight:800;padding:3px 10px;border-radius:999px;text-transform:uppercase;}
.affiliate-text{margin:0;font-size:14.5px;color:var(--muted2);flex:1;min-width:200px;}
.affiliate-cta{background:var(--navy);color:#fff;padding:10px 20px;border-radius:6px;font-weight:700;font-size:13.5px;white-space:nowrap;}
.affiliate-cta:hover{color:#fff;}

/* ---- Home page ---- */
.ribbon{height:10px;background:repeating-linear-gradient(-45deg,var(--red) 0 18px,#fff 18px 36px,var(--navy) 36px 54px);animation:ribbonL 6s linear infinite;}
.ribbon--thin{height:6px;background:repeating-linear-gradient(-45deg,var(--red) 0 14px,#fff 14px 28px,var(--navy) 28px 42px);animation:ribbonR 5s linear infinite;}

.hero-home{position:relative;overflow:hidden;padding:64px 5% 88px;text-align:center;}
.hero-home__bg{position:absolute;inset:0;z-index:0;}
.hero-home__slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:slideFade 24s infinite;}
.hero-home__overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,38,68,.62),rgba(22,50,92,.68) 60%,rgba(16,38,68,.71));}
.hero-home__content{position:relative;z-index:1;}
.hero-home__logo{width:min(680px,90%);height:auto;display:block;margin:0 auto 26px;filter:drop-shadow(0 14px 30px rgba(0,0,0,.5));animation:floaty 5s ease-in-out infinite;}
.hero-home__badge{background:var(--gold);color:var(--navy);animation:pulseBadge 2.2s ease-in-out infinite;}
.hero-home h1{font-family:'Anton',sans-serif;font-size:clamp(32px,4.6vw,54px);line-height:1.05;color:#fff;margin:0 auto 18px;text-transform:uppercase;max-width:780px;}
.hero-home p{font-size:18px;line-height:1.6;color:#e4ecf7;max-width:600px;margin:0 auto 30px;}
.hero-home__ctas{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;}

.section-pad{padding:76px 5%;}
.parks-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px;}
.park-card{position:relative;border-radius:14px;overflow:hidden;box-shadow:0 8px 20px rgba(22,50,92,.12);transition:transform .2s;}
.park-card:hover{transform:scale(1.03);}
.park-card__photo{width:100%;height:190px;object-fit:cover;display:block;background:#cfd8e3;}
.park-card__info{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;background:linear-gradient(0deg,rgba(0,0,0,.65),transparent);pointer-events:none;}
.park-card__name{color:#fff;font-weight:800;font-size:16px;}
.park-card__place{color:#e8d9a8;font-size:12.5px;font-weight:600;}
.park-card__badge{position:absolute;top:10px;right:10px;background:var(--red);color:#fff;font-size:11px;font-weight:800;padding:4px 10px;border-radius:999px;text-transform:uppercase;}

.tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:26px;}
.tool-card{display:flex;flex-direction:column;background:#fff;border-radius:14px;border:2px solid var(--border);padding:28px 24px;box-shadow:0 6px 18px rgba(22,50,92,.08);transition:transform .15s;}
.tool-card:hover{transform:translateY(-4px);box-shadow:0 12px 26px rgba(22,50,92,.14);}
.tool-card__icon{width:52px;height:52px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-family:'Anton',sans-serif;font-size:22px;margin-bottom:16px;}
.tool-card h3{font-size:19px;font-weight:800;color:var(--navy);margin:0 0 8px;}
.tool-card p{font-size:14.5px;color:var(--muted);line-height:1.5;margin:0 0 16px;flex:1;}
.tool-card__cta{color:var(--red);font-weight:700;font-size:14px;}

.deals-section{padding:70px 5%;background:var(--cream2);border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
.deals-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;}
.deal-card{background:#fff;border-radius:14px;overflow:hidden;border:2px solid var(--border);}
.deal-card__photo{width:100%;height:150px;background:#cfd8e3;display:flex;align-items:center;justify-content:center;color:#5b6b7a;font-size:13px;text-align:center;padding:12px;box-sizing:border-box;}
.deal-card__body{padding:20px;}
.deal-card h3{font-size:17px;font-weight:800;color:var(--navy);margin:0 0 8px;}
.deal-card p{font-size:14px;color:var(--muted);line-height:1.5;margin:0 0 16px;}

.about-section{padding:80px 5%;display:flex;gap:52px;align-items:center;flex-wrap:wrap;}
.about-photo{flex:1 1 380px;min-width:280px;max-width:520px;height:320px;border-radius:18px;object-fit:cover;display:block;background:#cfd8e3;}
.about-copy{flex:1 1 420px;min-width:280px;}

.newsletter{background:var(--navy);padding:56px 5%;text-align:center;}
.newsletter h3{font-family:'Anton',sans-serif;color:#fff;font-size:26px;margin:0 0 10px;text-transform:uppercase;}
.newsletter p{color:#cfe0f5;margin:0 0 22px;font-size:15px;}
.newsletter-form{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;max-width:460px;margin:0 auto;}
.newsletter-form input{flex:1 1 240px;padding:13px 16px;border-radius:8px;border:none;font-size:15px;}

/* ---- Trip Cost Calculator ---- */
.calc-section{padding:56px 5%;display:flex;gap:40px;flex-wrap:wrap;align-items:flex-start;}
.calc-form{flex:2 1 420px;min-width:280px;}
.fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
.result-panel{flex:1 1 280px;min-width:260px;position:sticky;top:100px;}
.result-panel .eyebrow{color:var(--gold);}
.result-total{font-family:'Anton',sans-serif;font-size:44px;margin-bottom:20px;}
.result-row{display:flex;justify-content:space-between;font-size:14.5px;padding:9px 0;border-top:1px solid rgba(255,255,255,.2);}
.result-row--last{border-bottom:1px solid rgba(255,255,255,.2);}
.result-note{font-size:12.5px;color:#cfe0f5;margin-top:16px;}

/* ---- Playlist Generator ---- */
.controls-panel{padding:56px 5% 20px;}
.controls-row{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-end;}
.controls-row .field{flex:1;min-width:180px;}
.playlist-wrap{padding:20px 5% 60px;}
.playlist-panel h2{font-family:'Anton',sans-serif;font-size:28px;margin:0 0 20px;text-transform:uppercase;}
.track-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid rgba(255,255,255,.15);}
.track-num{width:30px;height:30px;border-radius:8px;background:var(--gold);color:var(--navy);display:flex;align-items:center;justify-content:center;font-family:'Anton',sans-serif;font-size:14px;flex-shrink:0;}
.track-title{font-weight:700;font-size:15.5px;}
.track-mood{font-size:13px;color:#cfe0f5;}

/* ---- Key & Tempo Finder ---- */
.tool-columns{padding:56px 5% 20px;display:flex;gap:32px;flex-wrap:wrap;}
.tap-panel{flex:1 1 340px;min-width:280px;text-align:center;}
.tap-bpm{font-family:'Anton',sans-serif;font-size:64px;color:var(--navy);margin-bottom:6px;}
.tap-label{font-size:13.5px;color:var(--muted);margin-bottom:22px;}
.tap-button{width:160px;height:160px;border-radius:50%;background:var(--navy);color:#fff;border:none;font-family:'Anton',sans-serif;font-size:20px;cursor:pointer;text-transform:uppercase;box-shadow:0 8px 22px rgba(22,50,92,.3);}
.reset-link{margin-top:20px;background:none;border:none;color:var(--red);font-weight:700;font-size:14px;cursor:pointer;}
.capo-panel{flex:1 1 380px;min-width:280px;}
.capo-row{display:flex;justify-content:space-between;padding:9px 0;border-top:1px solid #f0e8d0;font-size:14.5px;}
.capo-row span:first-child{color:var(--muted);}
.capo-row span:last-child{font-weight:700;color:var(--navy);}

/* ---- State Song Trivia ---- */
.quiz-section{padding:56px 5% 20px;}
.quiz-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;}
.quiz-number{font-size:13px;font-weight:800;color:var(--red);text-transform:uppercase;letter-spacing:.05em;}
.quiz-score{font-size:13px;font-weight:800;color:var(--navy);}
.quiz-question{font-family:'Anton',sans-serif;font-size:24px;color:var(--navy);margin:0 0 26px;line-height:1.3;}
.choices{display:flex;flex-direction:column;gap:12px;}
.choice-btn{text-align:left;padding:14px 18px;border-radius:10px;font-size:15.5px;font-weight:600;cursor:pointer;background:var(--cream2);border:2px solid #d8cfa8;color:var(--navy);}
.choice-btn--correct{background:#e6f4ea;border-color:#2e7d4f;color:#1e5c37;}
.choice-btn--incorrect{background:#fbe7e7;border-color:var(--red);color:#8f1c20;}
.choice-btn--dim{opacity:.6;}
.quiz-footer{margin-top:22px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;}
.quiz-feedback{font-size:14.5px;color:var(--muted);}

/* ---- Setlist Builder ---- */
.setlist-section{padding:56px 5% 20px;}
.input-row{display:flex;gap:12px;margin-bottom:26px;flex-wrap:wrap;}
.input-row input{flex:1;min-width:200px;padding:13px 14px;border-radius:8px;border:1.5px solid #d8cfa8;font-size:15px;}
.song-list{display:flex;flex-direction:column;gap:10px;}
.song-row{display:flex;align-items:center;gap:12px;background:var(--cream2);border:2px solid var(--border);border-radius:10px;padding:12px 16px;}
.song-num{width:28px;height:28px;border-radius:8px;background:var(--gold);color:var(--navy);display:flex;align-items:center;justify-content:center;font-family:'Anton',sans-serif;font-size:13px;flex-shrink:0;}
.song-title{flex:1;font-weight:700;font-size:15px;color:var(--navy);}
.icon-btn{background:none;border:1.5px solid #d8cfa8;border-radius:6px;width:30px;height:30px;cursor:pointer;font-size:14px;color:var(--navy);}
.icon-btn--danger{border-color:var(--red);color:var(--red);}
.empty-state{text-align:center;color:var(--muted);font-size:14.5px;padding:20px 0;}
