@import url('https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@600;700;800&family=Libre+Franklin:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap');

:root{
  --navy:#16233F;
  --navy-deep:#0E1730;
  --red:#C41230;
  --paper:#F5F7F9;
  --paper-2:#E7ECF1;
  --ink:#1C2430;
  --ink-soft:#54606E;
  --brass:#9C7C34;
  --white:#FFFFFF;
  --line: rgba(22,35,63,0.16);
  --line-strong: rgba(22,35,63,0.32);
  --radius: 3px;
  --maxw: 1120px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Libre Franklin', sans-serif;
  font-weight:400;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block;}
a{color:inherit;}
h1,h2,h3,h4{
  font-family:'Big Shoulders Display', sans-serif;
  font-weight:800;
  letter-spacing:0.01em;
  line-height:0.98;
  margin:0 0 0.4em;
  color:var(--navy-deep);
}
h1{font-size:clamp(2.6rem, 7vw, 5.2rem);}
h2{font-size:clamp(1.9rem, 4.4vw, 3rem);}
h3{font-size:1.4rem; letter-spacing:0.02em;}
p{margin:0 0 1em;}
.container{max-width:var(--maxw); margin:0 auto; padding:0 28px;}
.tag{
  display:inline-block;
  font-family:'Libre Franklin', sans-serif;
  font-weight:600;
  font-size:0.72rem;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--red);
  background:none;
}

/* ---------- header / nav ---------- */
.site-header{
  border-bottom:2px solid var(--navy-deep);
  background:var(--paper);
  position:sticky; top:0; z-index:40;
}
.nav-row{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 28px; max-width:var(--maxw); margin:0 auto;
  gap:20px;
}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none;}
.brand svg, .brand img{height:42px; width:auto; display:block;}
.brand-word{font-family:'Big Shoulders Display'; font-weight:800; font-size:1.5rem; color:var(--navy-deep); letter-spacing:0.01em;}
.brand-sub{font-size:0.62rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--red); font-weight:600; margin-top:-2px;}
nav.primary{display:flex; gap:2px; align-items:center;}
nav.primary a{
  text-decoration:none;
  font-weight:600;
  font-size:0.86rem;
  letter-spacing:0.03em;
  color:var(--navy-deep);
  padding:9px 14px;
  border-radius:var(--radius);
}
nav.primary a:hover{background:var(--paper-2);}
nav.primary a.active{color:var(--red);}
.book-btn{
  background:var(--red); color:var(--white) !important;
  padding:10px 18px !important; border-radius:2px;
}
.book-btn:hover{background:#a30f27; }
.nav-toggle{display:none;}

/* ---------- hero ---------- */
.hero{
  position:relative;
  color:var(--white);
  background:var(--navy-deep);
  overflow:hidden;
  border-bottom:6px solid var(--red);
}
.hero-inner{
  position:relative; z-index:2;
  max-width:var(--maxw); margin:0 auto;
  padding:76px 28px 64px;
}
.hero-grid{
  display:grid; grid-template-columns:1fr 1.15fr; gap:48px; align-items:center;
}
.hero-logo-card{
  background:var(--white);
  padding:22px 22px 16px;
  display:flex; align-items:center; justify-content:center;
  border:1px solid rgba(255,255,255,0.5);
}
.hero-logo-card img{width:100%; height:auto; display:block;}
.hero .tag{color:#F0AEB4;}
.hero h1{color:var(--white); margin-top:10px;}
.hero-sub{font-size:1.1rem; max-width:520px; color:#D9DEE8; margin-top:14px;}
.hero-strip{
  display:flex; gap:0; margin-top:34px; flex-wrap:wrap;
  border-top:1px solid rgba(255,255,255,0.22);
}
.hero-fact{
  padding:16px 26px 0 0; margin-right:26px;
  border-right:1px solid rgba(255,255,255,0.2);
}
.hero-fact:last-child{border-right:none;}
.hero-fact .n{font-family:'Big Shoulders Display'; font-size:1.7rem; font-weight:700; color:var(--white); display:block;}
.hero-fact .l{font-size:0.72rem; letter-spacing:0.1em; text-transform:uppercase; color:#9AA6BC;}
@media (max-width:880px){
  .hero-grid{grid-template-columns:1fr;}
  .hero-logo-card{max-width:340px; margin:0 auto;}
}

/* ---------- ticket / boarding-pass panels ---------- */
.ticket{
  background:var(--white);
  border:1px solid var(--line-strong);
  position:relative;
}
.ticket-split{
  display:grid;
  grid-template-columns: 1fr 220px;
}
.perf-v{
  border-left:2px dashed var(--line-strong);
  position:relative;
}
.perf-v::before, .perf-v::after{
  content:'';
  position:absolute; left:-9px;
  width:18px; height:18px; border-radius:50%;
  background:var(--paper);
  border:1px solid var(--line-strong);
}
.perf-v::before{top:-9px;}
.perf-v::after{bottom:-9px;}
.ticket-main{padding:34px 38px;}
.ticket-stub{padding:34px 26px; background:var(--paper-2); display:flex; flex-direction:column; justify-content:space-between;}
.stub-code{font-family:'Big Shoulders Display'; font-size:2.6rem; font-weight:800; color:var(--navy-deep); line-height:1;}
.stub-line{font-size:0.72rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--ink-soft); margin-top:14px;}
.stub-line b{display:block; font-size:1rem; color:var(--ink); text-transform:none; letter-spacing:0; font-family:'Libre Franklin'; font-weight:700;}

/* ---------- sections ---------- */
section{padding:78px 0;}
.section-head{max-width:640px; margin-bottom:44px;}
.split-2{display:grid; grid-template-columns:1.05fr 0.95fr; gap:56px; align-items:center;}
.route-line{
  display:flex; align-items:center; gap:14px;
  font-family:'Big Shoulders Display'; font-weight:700; font-size:1.3rem;
  color:var(--navy-deep); margin:14px 0 26px;
}
.route-line .dash{flex:1; height:1px; background:repeating-linear-gradient(to right, var(--line-strong) 0 6px, transparent 6px 12px); position:relative;}
.route-line .dash::after{content:'\2708'; position:absolute; right:0; top:-11px; font-size:1rem; color:var(--red);}

.card-panel{
  border:1px solid var(--line);
  background:var(--white);
  padding:26px 26px;
}
.card-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:8px;}
.card-grid .card-panel{border:none;}

.spec-table{width:100%; border-collapse:collapse; margin-top:6px;}
.spec-table td{padding:10px 0; border-bottom:1px solid var(--line); font-size:0.95rem;}
.spec-table td:first-child{color:var(--ink-soft); font-weight:600; width:46%;}
.spec-table td:last-child{text-align:right; font-family:'Big Shoulders Display'; font-weight:700; font-size:1.05rem; color:var(--navy-deep);}

.btn{
  display:inline-block; text-decoration:none;
  font-weight:700; letter-spacing:0.02em;
  padding:14px 26px; border-radius:2px;
  border:1px solid var(--navy-deep);
}
.btn-primary{background:var(--red); border-color:var(--red); color:var(--white);}
.btn-primary:hover{background:#a30f27; border-color:#a30f27;}
.btn-outline{background:transparent; color:var(--navy-deep);}
.btn-outline:hover{background:var(--navy-deep); color:var(--white);}

.stamp{
  border:2px solid var(--red); color:var(--red);
  border-radius:50%;
  width:96px; height:96px;
  display:flex; align-items:center; justify-content:center; text-align:center;
  transform:rotate(-9deg);
  font-family:'Big Shoulders Display'; font-weight:800; font-size:0.78rem; letter-spacing:0.03em;
  line-height:1.15;
}

.band{background:var(--navy-deep); color:var(--white);}
.band h2{color:var(--white);}
.band .tag{color:#E9B7B7;}

footer.site-footer{
  background:var(--navy-deep); color:#CFC7AE;
  padding:56px 0 26px; margin-top:0;
  border-top:6px solid var(--red);
}
.foot-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:40px;}
footer.site-footer h4{color:var(--white); font-size:0.85rem; text-transform:uppercase; letter-spacing:0.1em; font-family:'Libre Franklin'; font-weight:700; margin-bottom:14px;}
footer.site-footer a{text-decoration:none; color:#CFC7AE; display:block; margin-bottom:8px; font-size:0.92rem;}
footer.site-footer a:hover{color:var(--white);}
.foot-bottom{
  display:flex; justify-content:space-between; align-items:center;
  border-top:1px solid rgba(255,255,255,0.15); margin-top:40px; padding-top:22px;
  font-size:0.78rem; color:#8C8471; flex-wrap:wrap; gap:10px;
}

/* ---------- gallery ---------- */
.gallery-grid{
  columns:3 260px; column-gap:14px;
}
.gallery-grid figure{
  margin:0 0 14px; break-inside:avoid;
  border:1px solid var(--line);
  background:var(--white); padding:8px 8px 12px;
}
.gallery-grid figcaption{font-size:0.78rem; color:var(--ink-soft); padding-top:8px; letter-spacing:0.02em;}
.video-wrap{border:1px solid var(--line); background:var(--white); padding:10px;}
.video-wrap video{width:100%; display:block; background:#000;}

/* ---------- testimonials ---------- */
.review{
  border:1px solid var(--line); background:var(--white);
  padding:28px 30px; margin-bottom:20px; position:relative;
}
.review .stars{color:var(--red); letter-spacing:2px; font-size:0.95rem; margin-bottom:10px;}
.review .who{margin-top:16px; font-weight:700; font-family:'Big Shoulders Display'; font-size:1.1rem; color:var(--navy-deep);}
.review .where{font-size:0.8rem; color:var(--ink-soft); text-transform:uppercase; letter-spacing:0.06em;}

/* ---------- forms ---------- */
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
.field{display:flex; flex-direction:column; gap:6px;}
.field.full{grid-column:1/-1;}
label{font-size:0.72rem; text-transform:uppercase; letter-spacing:0.09em; font-weight:700; color:var(--ink-soft);}
input, select, textarea{
  font-family:'Libre Franklin'; font-size:0.98rem;
  border:1px solid var(--line-strong); background:var(--white);
  padding:12px 12px; border-radius:2px; color:var(--ink);
}
input:focus, select:focus, textarea:focus{outline:2px solid var(--red); outline-offset:1px;}
textarea{resize:vertical; min-height:110px;}
.price-box{
  border-top:1px solid var(--line-strong); margin-top:20px; padding-top:16px;
}
.price-box .row{display:flex; justify-content:space-between; font-size:0.86rem; color:var(--ink-soft); margin-bottom:6px;}
.price-box .total{display:flex; justify-content:space-between; align-items:baseline; margin-top:10px; padding-top:10px; border-top:1px dashed var(--line-strong);}
.price-box .total .amt{font-family:'Big Shoulders Display'; font-size:1.9rem; font-weight:800; color:var(--navy-deep);}
.hidden{display:none !important;}
.spinner{
  width:26px; height:26px; border-radius:50%;
  border:3px solid var(--line-strong); border-top-color:var(--red);
  animation:spin 0.8s linear infinite; margin:0 auto 16px;
}
@keyframes spin{to{transform:rotate(360deg);}}
.barcode{height:44px; background:repeating-linear-gradient(90deg, var(--ink) 0 2px, transparent 2px 5px, var(--ink) 5px 6px, transparent 6px 10px); margin-top:18px;}
.pnr{
  font-family:'Big Shoulders Display'; font-weight:800; font-size:2.3rem; letter-spacing:0.04em; color:var(--navy-deep);
}
.hp{position:absolute; left:-9999px;}

@media (max-width:880px){
  .split-2{grid-template-columns:1fr; gap:34px;}
  .card-grid{grid-template-columns:1fr;}
  .ticket-split{grid-template-columns:1fr;}
  .perf-v{border-left:none; border-top:2px dashed var(--line-strong);}
  .perf-v::before,.perf-v::after{left:auto; top:-9px;}
  .perf-v::before{left:20px;}
  .perf-v::after{right:20px; left:auto;}
  .foot-grid{grid-template-columns:1fr; gap:26px;}
  .gallery-grid{columns:1 100%;}
  .form-grid{grid-template-columns:1fr;}
  nav.primary{display:none;}
}
