/* ============================================================
   Joyful Craft Space — Main Stylesheet
   Company: Joyful Craft Space
   Address: 〒150-0001, 3-18-7 Jingumae, Suite 402, Shibuya-ku, Tokyo
   Email: support@joyfulcraftspace.com
   ============================================================ */

:root {
  --primary:       #FF2D78;
  --primary-dark:  #CC1A5E;
  --secondary:     #8B1A5F;
  --dark:          #0D0D1A;
  --darker:        #07070F;
  --card:          #141428;
  --card-hover:    #1E1E40;
  --accent:        #FFD700;
  --accent-light:  #FFF0A0;
  --text:          #E8E8F0;
  --text-muted:    #8888AA;
  --border:        #2A2A50;
  --success:       #00C878;
  --warning:       #FFB800;
  --error:         #FF4444;
  --radius:        12px;
  --radius-lg:     20px;
  --radius-xl:     28px;
  --shadow:        0 4px 20px rgba(255,45,120,.15);
  --shadow-hover:  0 8px 40px rgba(255,45,120,.30);
  --gradient:      linear-gradient(135deg,#FF2D78 0%,#8B1A5F 100%);
  --gradient-dark: linear-gradient(135deg,#1A0A2E 0%,#0D0D1A 100%);
}

/* RESET */
*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; font-size:16px; -webkit-text-size-adjust:100%; }
body {
  font-family:'Open Sans',sans-serif;
  background-color:var(--dark);
  color:var(--text);
  line-height:1.65;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,h5,h6 {
  font-family:'Montserrat',sans-serif;
  font-weight:700;
  line-height:1.2;
  color:var(--text);
}
p { margin-bottom:1rem; }
p:last-child { margin-bottom:0; }
a { color:var(--primary); text-decoration:none; transition:color .3s ease; }
a:hover { color:var(--accent); }
img { max-width:100%; height:auto; display:block; }
ul,ol { padding-left:1.25rem; }
button { font-family:inherit; cursor:pointer; }
input,textarea,select { font-family:inherit; }

/* NOTICE BAR */
.notice-bar {
  background:var(--gradient);
  color:#fff;
  text-align:center;
  padding:.625rem 1rem;
  font-family:'Montserrat',sans-serif;
  font-weight:600;
  font-size:.875rem;
  letter-spacing:.02em;
}
.notice-bar a { color:var(--accent); text-decoration:none; }
.notice-bar a:hover { text-decoration:underline; }

/* HEADER */
.site-header {
  position:sticky; top:0; z-index:1000;
  background:rgba(13,13,26,.96);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
  padding:0 2rem;
}
.header-inner {
  max-width:1280px; margin:0 auto;
  display:flex; align-items:center;
  justify-content:space-between;
  height:70px; gap:1rem;
}
.logo {
  font-family:'Montserrat',sans-serif;
  font-weight:900; font-size:1.35rem;
  color:var(--text); text-decoration:none;
  display:flex; align-items:center; gap:.4rem;
  white-space:nowrap; flex-shrink:0;
}
.logo .cherry { font-size:1.5rem; line-height:1; }
.logo .logo-pulse { color:var(--accent); }
.logo .logo-sub { font-weight:400; font-size:.85rem; opacity:.65; letter-spacing:.1em; }
.main-nav {
  display:flex; align-items:center; gap:1.5rem;
  flex:1; justify-content:center;
}
.main-nav a {
  font-family:'Montserrat',sans-serif;
  font-weight:600; font-size:.8rem;
  color:var(--text-muted);
  text-transform:uppercase; letter-spacing:.06em;
  text-decoration:none; transition:color .3s;
  padding:.25rem 0; position:relative;
}
.main-nav a::after {
  content:''; position:absolute; bottom:-2px; left:0; right:0;
  height:2px; background:var(--primary);
  transform:scaleX(0); transition:transform .3s;
}
.main-nav a:hover,
.main-nav a.active { color:var(--primary); }
.main-nav a:hover::after,
.main-nav a.active::after { transform:scaleX(1); }
.nav-cta { flex-shrink:0; }

/* HAMBURGER */
.hamburger {
  display:none; flex-direction:column; gap:5px;
  cursor:pointer; background:none; border:none;
  padding:6px; border-radius:6px;
}
.hamburger span {
  display:block; width:24px; height:2px;
  background:var(--text); border-radius:2px; transition:all .3s;
}

/* MOBILE NAV */
.mobile-nav {
  display:none; position:fixed;
  top:70px; left:0; right:0;
  background:var(--card);
  border-bottom:1px solid var(--border);
  padding:1.5rem 2rem; z-index:999;
  flex-direction:column; gap:.75rem;
  box-shadow:0 10px 30px rgba(0,0,0,.5);
}
.mobile-nav.open { display:flex; }
.mobile-nav a {
  font-family:'Montserrat',sans-serif;
  font-weight:600; color:var(--text);
  padding:.625rem 0; border-bottom:1px solid var(--border);
  text-decoration:none; font-size:.95rem;
  transition:color .3s;
}
.mobile-nav a:hover { color:var(--primary); }
.mobile-nav a:last-of-type { border-bottom:none; }

/* BUTTONS */
.btn {
  display:inline-flex; align-items:center;
  justify-content:center; gap:.5rem;
  padding:.625rem 1.5rem; border-radius:50px;
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.875rem;
  text-transform:uppercase; letter-spacing:.06em;
  transition:all .3s ease; cursor:pointer;
  text-decoration:none; border:2px solid transparent;
  white-space:nowrap; line-height:1;
}
.btn-primary {
  background:var(--gradient); color:#fff;
  border-color:transparent;
  box-shadow:0 4px 18px rgba(255,45,120,.45);
}
.btn-primary:hover {
  transform:translateY(-2px);
  box-shadow:0 8px 28px rgba(255,45,120,.65);
  color:#fff;
}
.btn-outline {
  background:transparent;
  border-color:var(--primary);
  color:var(--primary);
}
.btn-outline:hover {
  background:var(--primary);
  color:#fff; transform:translateY(-2px);
}
.btn-accent {
  background:var(--accent); color:var(--dark);
  border-color:var(--accent);
}
.btn-accent:hover {
  background:var(--accent-light);
  transform:translateY(-2px); color:var(--dark);
}
.btn-ghost {
  background:rgba(255,255,255,.08);
  color:#fff; border-color:rgba(255,255,255,.2);
}
.btn-ghost:hover {
  background:rgba(255,255,255,.16);
  color:#fff; transform:translateY(-2px);
}
.btn-lg { padding:.9rem 2.5rem; font-size:1rem; }
.btn-sm { padding:.375rem .875rem; font-size:.75rem; }
.btn-block { width:100%; }
.btn:disabled {
  opacity:.5; cursor:not-allowed; transform:none !important;
  box-shadow:none !important;
}

/* LAYOUT */
.container { max-width:1280px; margin:0 auto; }
.container-md { max-width:900px; margin:0 auto; }
.container-sm { max-width:700px; margin:0 auto; }
.section { padding:5rem 2rem; }
.section-sm { padding:3rem 2rem; }
.section-xs { padding:2rem; }
.section-dark { background:var(--darker); }
.section-card { background:var(--card); }

/* HERO (full) */
.hero {
  position:relative; min-height:92vh;
  display:flex; align-items:center; overflow:hidden;
}
.hero-bg {
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  background-repeat:no-repeat;
}
.hero-overlay {
  position:absolute; inset:0;
  background:linear-gradient(
    140deg,
    rgba(7,7,15,.88) 0%,
    rgba(13,13,26,.75) 45%,
    rgba(139,26,95,.55) 100%
  );
}
.hero-content {
  position:relative; z-index:10;
  max-width:1280px; margin:0 auto;
  padding:5rem 2rem; width:100%;
}
.hero-badge {
  display:inline-block;
  background:var(--primary); color:#fff;
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.7rem;
  text-transform:uppercase; letter-spacing:.12em;
  padding:.35rem 1rem; border-radius:50px;
  margin-bottom:1.5rem;
}
.hero h1 {
  font-size:clamp(2.4rem,6vw,5.5rem);
  font-weight:900; color:#fff;
  margin-bottom:1.5rem; line-height:1.05;
  text-shadow:0 2px 24px rgba(0,0,0,.55);
}
.hero h1 .highlight { color:var(--primary); }
.hero h1 .accent    { color:var(--accent); }
.hero p {
  font-size:clamp(1rem,2vw,1.25rem);
  color:rgba(255,255,255,.82);
  max-width:600px; margin-bottom:2.5rem;
}
.hero-actions { display:flex; gap:1rem; flex-wrap:wrap; }
.hero-meta {
  margin-top:2rem;
  display:flex; gap:2rem; flex-wrap:wrap;
}
.hero-meta-item {
  display:flex; align-items:center; gap:.5rem;
  color:rgba(255,255,255,.65); font-size:.9rem;
}
.hero-meta-item .icon { font-size:1.1rem; color:var(--primary); }
.hero-stats {
  display:flex; gap:3rem; margin-top:4rem; flex-wrap:wrap;
}
.stat .stat-number {
  font-family:'Montserrat',sans-serif;
  font-weight:900; font-size:2.5rem; color:var(--primary);
  display:block; line-height:1;
}
.stat .stat-label {
  font-size:.8rem; color:rgba(255,255,255,.55);
  text-transform:uppercase; letter-spacing:.08em;
  margin-top:.25rem; display:block;
}

/* PAGE HERO (smaller) */
.page-hero {
  position:relative; padding:6rem 2rem 4rem;
  display:flex; align-items:center;
  overflow:hidden; min-height:380px;
}
.page-hero .hero-overlay {
  background:linear-gradient(135deg,rgba(7,7,15,.92) 0%,rgba(139,26,95,.72) 100%);
}
.page-hero-content {
  position:relative; z-index:10;
  max-width:1280px; margin:0 auto; width:100%;
}
.page-hero h1 {
  font-size:clamp(1.85rem,4vw,3.25rem);
  color:#fff; font-weight:900; margin-bottom:1rem;
}
.page-hero p {
  color:rgba(255,255,255,.78);
  max-width:620px; font-size:1.1rem; margin-bottom:0;
}
.breadcrumb {
  display:flex; align-items:center;
  gap:.5rem; flex-wrap:wrap;
  margin-bottom:1.25rem;
}
.breadcrumb a { color:var(--text-muted); font-size:.85rem; text-decoration:none; }
.breadcrumb a:hover { color:var(--primary); }
.breadcrumb .sep { color:var(--text-muted); font-size:.85rem; }
.breadcrumb .current { color:var(--primary); font-weight:600; font-size:.85rem; }

/* SECTION HEADERS */
.section-header { text-align:center; margin-bottom:3rem; }
.section-header h2 {
  font-size:clamp(1.7rem,4vw,2.6rem);
  color:#fff; margin-bottom:.75rem;
}
.section-header h2 .highlight { color:var(--primary); }
.section-header p { color:var(--text-muted); max-width:580px; margin:0 auto; font-size:.975rem; }
.divider {
  width:56px; height:4px; background:var(--gradient);
  border-radius:2px; margin:.75rem auto 0;
}

/* CARDS */
.card {
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  overflow:hidden; transition:all .3s ease;
}
.card:hover {
  transform:translateY(-5px);
  border-color:var(--primary);
  box-shadow:var(--shadow-hover);
}
.card-img {
  position:relative; overflow:hidden;
  aspect-ratio:16/9;
}
.card-img img {
  width:100%; height:100%; object-fit:cover;
  transition:transform .5s ease;
}
.card:hover .card-img img { transform:scale(1.06); }
.card-body { padding:1.5rem; }
.card-tag {
  display:inline-block;
  font-family:'Montserrat',sans-serif;
  font-size:.7rem; font-weight:700;
  text-transform:uppercase; letter-spacing:.1em;
  color:var(--primary); margin-bottom:.5rem;
}
.card-title {
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:1.1rem; color:#fff;
  margin-bottom:.5rem;
}
.card-text { color:var(--text-muted); font-size:.9rem; }
.card-price {
  font-family:'Montserrat',sans-serif;
  font-weight:800; font-size:1.5rem;
  color:var(--accent); margin:1rem 0 .5rem;
}
.card-footer {
  padding:1rem 1.5rem;
  border-top:1px solid var(--border);
  display:flex; align-items:center;
  justify-content:space-between; gap:1rem;
}

/* TICKET CARDS */
.ticket-card {
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-xl);
  padding:2rem; text-align:center;
  transition:all .3s ease; position:relative;
  display:flex; flex-direction:column;
}
.ticket-card:hover {
  transform:translateY(-6px);
  border-color:var(--primary);
  box-shadow:var(--shadow-hover);
}
.ticket-card.featured {
  border-color:var(--primary);
  background:linear-gradient(160deg,var(--card) 0%,rgba(255,45,120,.06) 100%);
}
.ticket-badge {
  position:absolute; top:-13px; left:50%;
  transform:translateX(-50%);
  background:var(--gradient); color:#fff;
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.7rem;
  text-transform:uppercase; letter-spacing:.1em;
  padding:.25rem .875rem; border-radius:50px;
  white-space:nowrap;
}
.ticket-type {
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.7rem;
  text-transform:uppercase; letter-spacing:.12em;
  color:var(--primary); margin-bottom:.5rem;
}
.ticket-name {
  font-family:'Montserrat',sans-serif;
  font-weight:800; font-size:1.45rem;
  color:#fff; margin-bottom:.5rem;
}
.ticket-price {
  font-family:'Montserrat',sans-serif;
  font-weight:900; font-size:2.8rem;
  color:var(--accent); line-height:1; margin:.5rem 0 .25rem;
}
.ticket-price-sub {
  color:var(--text-muted); font-size:.875rem; margin-bottom:1.5rem;
}
.ticket-features {
  list-style:none; padding:0; text-align:left;
  margin-bottom:1.5rem; flex:1;
}
.ticket-features li {
  display:flex; align-items:flex-start; gap:.5rem;
  color:var(--text-muted); font-size:.88rem;
  padding:.4rem 0; border-bottom:1px solid rgba(42,42,80,.5);
}
.ticket-features li:last-child { border-bottom:none; }
.ticket-features li .check { color:var(--success); font-weight:700; flex-shrink:0; }
.ticket-features li .cross { color:var(--error); font-weight:700; flex-shrink:0; }

/* GRIDS */
.grid { display:grid; gap:1.5rem; }
.grid-2 { grid-template-columns:repeat(2,1fr); }
.grid-3 { grid-template-columns:repeat(3,1fr); }
.grid-4 { grid-template-columns:repeat(4,1fr); }
.grid-auto { grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); }
.grid-auto-sm { grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }

/* COUNTDOWN */
.countdown {
  display:flex; gap:1.25rem;
  justify-content:center; flex-wrap:wrap;
  margin:2rem 0;
}
.countdown-item { text-align:center; }
.countdown-number {
  font-family:'Montserrat',sans-serif;
  font-weight:900; font-size:3rem; color:var(--primary);
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius);
  padding:.5rem .875rem; display:block;
  min-width:86px; line-height:1;
}
.countdown-label {
  font-size:.7rem; text-transform:uppercase;
  letter-spacing:.1em; color:var(--text-muted);
  margin-top:.5rem; display:block;
}

/* TRUST BAR */
.trust-bar {
  background:var(--card);
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  padding:1.5rem 2rem;
}
.trust-items {
  max-width:1280px; margin:0 auto;
  display:flex; align-items:center;
  justify-content:center; gap:3rem; flex-wrap:wrap;
}
.trust-item {
  display:flex; align-items:center; gap:.625rem;
  font-family:'Montserrat',sans-serif;
  font-weight:600; font-size:.825rem; color:var(--text-muted);
}
.trust-icon { font-size:1.4rem; }

/* AVAILABILITY */
.availability-bar {
  background:var(--border); border-radius:50px;
  height:7px; overflow:hidden; margin:.4rem 0;
}
.availability-fill {
  height:100%; border-radius:50px;
  background:var(--gradient); transition:width .5s ease;
}
.availability-label {
  font-size:.75rem; color:var(--text-muted);
  display:flex; justify-content:space-between;
}

/* ACCORDION / FAQ */
.accordion-item {
  border:1px solid var(--border);
  border-radius:var(--radius);
  margin-bottom:.625rem; overflow:hidden;
}
.accordion-btn {
  width:100%; background:var(--card); border:none;
  color:var(--text);
  font-family:'Montserrat',sans-serif;
  font-weight:600; font-size:.95rem;
  padding:1.125rem 1.375rem; text-align:left;
  cursor:pointer; display:flex;
  justify-content:space-between; align-items:center;
  gap:1rem; transition:background .3s;
}
.accordion-btn:hover { background:var(--card-hover); }
.accordion-btn .acc-icon {
  font-size:1.25rem; color:var(--primary);
  transition:transform .3s; flex-shrink:0;
}
.accordion-btn[aria-expanded="true"] .acc-icon { transform:rotate(45deg); }
.accordion-content {
  max-height:0; overflow:hidden;
  transition:max-height .35s ease, padding .35s;
  background:var(--darker); padding:0 1.375rem;
  color:var(--text-muted); font-size:.92rem; line-height:1.7;
}
.accordion-content.open { max-height:600px; padding:1.25rem 1.375rem; }

/* FORMS */
.form-group { margin-bottom:1.25rem; }
.form-label {
  display:block;
  font-family:'Montserrat',sans-serif;
  font-weight:600; font-size:.85rem;
  color:var(--text); margin-bottom:.45rem;
}
.form-input,
.form-select,
.form-textarea {
  width:100%; background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);
  color:var(--text); padding:.875rem 1rem;
  font-size:.95rem; transition:border-color .3s;
  appearance:none;
}
.form-input:focus,
.form-select:focus,
.form-textarea:focus {
  outline:none; border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(255,45,120,.14);
}
.form-input::placeholder,
.form-textarea::placeholder { color:var(--text-muted); }
.form-textarea { resize:vertical; min-height:120px; }
.form-select { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%238888AA' d='M1 1l5 5 5-5'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 1rem center; background-size:12px; padding-right:2.5rem; }
.form-note { font-size:.8rem; color:var(--text-muted); margin-top:.35rem; }
.form-error { font-size:.8rem; color:var(--error); margin-top:.35rem; }

/* REVIEW CARDS */
.review-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius-lg); padding:1.5rem;
  transition:border-color .3s;
}
.review-card:hover { border-color:var(--primary); }
.review-stars { color:var(--accent); font-size:1rem; margin-bottom:.625rem; letter-spacing:.05em; }
.review-text {
  color:var(--text-muted); font-size:.9rem;
  font-style:italic; line-height:1.7;
  margin-bottom:1rem;
}
.review-author { font-family:'Montserrat',sans-serif; font-weight:700; color:#fff; font-size:.875rem; }
.review-meta { color:var(--text-muted); font-size:.78rem; margin-top:.2rem; }

/* FEATURE CARDS */
.feature-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius-lg); padding:2rem;
  text-align:center; transition:all .3s;
}
.feature-card:hover { border-color:var(--primary); transform:translateY(-4px); }
.feature-icon { font-size:2.5rem; margin-bottom:1rem; display:block; }
.feature-title {
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:1rem; color:#fff;
  margin-bottom:.5rem;
}
.feature-text { color:var(--text-muted); font-size:.9rem; }

/* ARTIST CARDS */
.artist-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius-lg); overflow:hidden;
  transition:all .3s; text-align:center;
}
.artist-card:hover { border-color:var(--primary); transform:translateY(-5px); box-shadow:var(--shadow-hover); }
.artist-img { width:100%; aspect-ratio:1/1; object-fit:cover; }
.artist-body { padding:1.25rem; }
.artist-name {
  font-family:'Montserrat',sans-serif;
  font-weight:800; font-size:1rem; color:#fff;
  margin-bottom:.25rem;
}
.artist-genre { color:var(--primary); font-size:.8rem; font-weight:600; }
.artist-day { color:var(--text-muted); font-size:.78rem; margin-top:.25rem; }
.artist-headliner { border-color:var(--accent); }
.artist-headliner .artist-name { color:var(--accent); font-size:1.15rem; }

/* SCHEDULE TABLE */
.schedule-day { margin-bottom:3rem; }
.schedule-day-header {
  background:var(--gradient); color:#fff;
  padding:.875rem 1.5rem; border-radius:var(--radius) var(--radius) 0 0;
  font-family:'Montserrat',sans-serif; font-weight:800;
  font-size:1.05rem; letter-spacing:.03em;
}
.schedule-item {
  background:var(--card); border:1px solid var(--border);
  border-top:none; padding:1rem 1.5rem;
  display:flex; gap:1.5rem; align-items:flex-start;
  transition:background .3s;
}
.schedule-item:hover { background:var(--card-hover); }
.schedule-item:last-child { border-radius:0 0 var(--radius) var(--radius); }
.schedule-time {
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.825rem; color:var(--primary);
  min-width:80px; flex-shrink:0; margin-top:.15rem;
}
.schedule-artist { font-weight:600; color:#fff; font-size:.95rem; }
.schedule-stage { color:var(--text-muted); font-size:.8rem; margin-top:.2rem; }
.schedule-tag {
  display:inline-block; font-size:.7rem; font-weight:700;
  padding:.2rem .6rem; border-radius:50px; margin-left:.5rem;
  font-family:'Montserrat',sans-serif; text-transform:uppercase;
  letter-spacing:.08em;
}
.stage-main { background:rgba(255,45,120,.15); color:var(--primary); }
.stage-east { background:rgba(0,200,120,.15); color:var(--success); }
.stage-west { background:rgba(255,215,0,.15); color:var(--accent); }
.stage-acoustic { background:rgba(100,100,200,.15); color:#8888FF; }

/* TABS */
.tabs { display:flex; gap:.5rem; flex-wrap:wrap; margin-bottom:2rem; }
.tab-btn {
  background:var(--card); border:1px solid var(--border);
  color:var(--text-muted); padding:.625rem 1.25rem;
  border-radius:50px; cursor:pointer;
  font-family:'Montserrat',sans-serif;
  font-weight:600; font-size:.825rem;
  transition:all .3s; white-space:nowrap;
}
.tab-btn.active,
.tab-btn:hover {
  background:var(--primary); border-color:var(--primary);
  color:#fff;
}
.tab-panel { display:none; }
.tab-panel.active { display:block; }

/* NEWSLETTER */
.newsletter-section {
  background:linear-gradient(135deg,var(--card) 0%,rgba(255,45,120,.07) 100%);
  border:1px solid var(--border);
  border-radius:var(--radius-xl); padding:3rem;
  text-align:center;
}
.newsletter-form {
  display:flex; gap:1rem; max-width:500px;
  margin:1.5rem auto 0; flex-wrap:wrap;
}
.newsletter-form .form-input { flex:1; min-width:200px; }

/* SOCIAL LINKS */
.social-links { display:flex; gap:.625rem; }
.social-link {
  width:38px; height:38px;
  background:var(--card); border:1px solid var(--border);
  border-radius:50%; display:flex;
  align-items:center; justify-content:center;
  color:var(--text-muted); font-size:.95rem;
  text-decoration:none; transition:all .3s;
}
.social-link:hover {
  background:var(--primary); border-color:var(--primary);
  color:#fff; transform:translateY(-2px);
}

/* GALLERY */
.gallery-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:.75rem;
}
.gallery-item {
  position:relative; overflow:hidden;
  border-radius:var(--radius); aspect-ratio:4/3;
  cursor:pointer;
}
.gallery-item img {
  width:100%; height:100%; object-fit:cover;
  transition:transform .5s ease;
}
.gallery-item:hover img { transform:scale(1.08); }
.gallery-item::after {
  content:''; position:absolute; inset:0;
  background:rgba(255,45,120,0); transition:background .3s;
}
.gallery-item:hover::after { background:rgba(255,45,120,.15); }

/* PROCESS STEPS */
.steps { display:flex; gap:2rem; flex-wrap:wrap; position:relative; }
.step {
  flex:1; min-width:200px; text-align:center; position:relative;
}
.step-number {
  width:52px; height:52px; border-radius:50%;
  background:var(--gradient); color:#fff;
  font-family:'Montserrat',sans-serif;
  font-weight:900; font-size:1.25rem;
  display:flex; align-items:center; justify-content:center;
  margin:0 auto 1rem;
  box-shadow:0 4px 15px rgba(255,45,120,.4);
}
.step-title {
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:1rem; color:#fff;
  margin-bottom:.5rem;
}
.step-text { color:var(--text-muted); font-size:.875rem; }

/* TAGS & BADGES */
.tag {
  display:inline-block;
  background:rgba(255,45,120,.14);
  color:var(--primary); border:1px solid rgba(255,45,120,.28);
  font-size:.72rem; font-weight:700;
  padding:.22rem .7rem; border-radius:50px;
  font-family:'Montserrat',sans-serif;
  text-transform:uppercase; letter-spacing:.06em;
}
.tag-accent {
  background:rgba(255,215,0,.14); color:var(--accent);
  border-color:rgba(255,215,0,.28);
}
.tag-success {
  background:rgba(0,200,120,.14); color:var(--success);
  border-color:rgba(0,200,120,.28);
}
.tag-warning {
  background:rgba(255,184,0,.14); color:var(--warning);
  border-color:rgba(255,184,0,.28);
}
.tag-error {
  background:rgba(255,68,68,.14); color:var(--error);
  border-color:rgba(255,68,68,.28);
}
.badge {
  display:inline-flex; align-items:center; gap:.35rem;
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.75rem;
  padding:.35rem .875rem; border-radius:50px;
}
.badge-primary { background:var(--primary); color:#fff; }
.badge-accent { background:var(--accent); color:var(--dark); }
.badge-dark { background:var(--card); color:var(--text-muted); border:1px solid var(--border); }

/* INFO BOXES */
.info-box {
  background:rgba(255,45,120,.07); border:1px solid rgba(255,45,120,.25);
  border-radius:var(--radius); padding:1.25rem 1.5rem;
  display:flex; gap:1rem; align-items:flex-start;
}
.info-box .info-icon { font-size:1.4rem; flex-shrink:0; }
.info-box.warning {
  background:rgba(255,184,0,.07); border-color:rgba(255,184,0,.25);
}
.info-box.success {
  background:rgba(0,200,120,.07); border-color:rgba(0,200,120,.25);
}

/* PRICE TABLE */
.price-table { width:100%; border-collapse:collapse; font-size:.9rem; }
.price-table th {
  background:var(--card); color:#fff;
  font-family:'Montserrat',sans-serif;
  font-weight:700; padding:1rem 1.25rem;
  text-align:left; border-bottom:1px solid var(--border);
}
.price-table td {
  padding:.875rem 1.25rem; border-bottom:1px solid var(--border);
  color:var(--text-muted); vertical-align:middle;
}
.price-table tr:last-child td { border-bottom:none; }
.price-table tr:hover td { background:var(--card-hover); }
.price-table .price-col {
  font-family:'Montserrat',sans-serif;
  font-weight:800; color:var(--accent);
}

/* CTA SECTION */
.cta-section {
  background:linear-gradient(135deg,rgba(255,45,120,.12) 0%,rgba(139,26,95,.08) 100%);
  border:1px solid rgba(255,45,120,.2);
  border-radius:var(--radius-xl); padding:3.5rem;
  text-align:center;
}
.cta-section h2 { color:#fff; margin-bottom:1rem; }
.cta-section p { color:var(--text-muted); margin-bottom:2rem; max-width:540px; margin-left:auto; margin-right:auto; }
.cta-actions { display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; }

/* CONTACT CARD */
.contact-card {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius-lg); padding:2rem;
  display:flex; align-items:flex-start; gap:1.25rem;
  transition:border-color .3s;
}
.contact-card:hover { border-color:var(--primary); }
.contact-icon-wrap {
  width:52px; height:52px; background:rgba(255,45,120,.14);
  border-radius:var(--radius); display:flex;
  align-items:center; justify-content:center;
  font-size:1.4rem; flex-shrink:0;
}
.contact-card h3 {
  font-family:'Montserrat',sans-serif;
  font-size:1rem; font-weight:700; color:#fff;
  margin-bottom:.25rem;
}
.contact-card p { color:var(--text-muted); font-size:.9rem; margin-bottom:0; }
.contact-card a { color:var(--primary); }

/* POLICY PAGES */
.policy-content h2 {
  font-size:1.4rem; color:#fff;
  margin-top:2.5rem; margin-bottom:1rem;
  padding-bottom:.5rem;
  border-bottom:1px solid var(--border);
}
.policy-content h3 { font-size:1.1rem; color:#fff; margin-top:1.5rem; margin-bottom:.75rem; }
.policy-content p,
.policy-content li { color:var(--text-muted); font-size:.95rem; }
.policy-content ul,
.policy-content ol { margin:.75rem 0 1rem 1.25rem; }
.policy-content li { margin-bottom:.5rem; }

/* CHECKOUT */
.checkout-grid {
  display:grid; grid-template-columns:1fr 380px;
  gap:2rem; align-items:start;
}
.order-summary {
  background:var(--card); border:1px solid var(--border);
  border-radius:var(--radius-xl); padding:1.75rem;
  position:sticky; top:90px;
}
.order-summary h3 {
  font-family:'Montserrat',sans-serif;
  font-size:1.1rem; color:#fff; margin-bottom:1.25rem;
  padding-bottom:.875rem; border-bottom:1px solid var(--border);
}
.order-item {
  display:flex; justify-content:space-between;
  align-items:center; padding:.625rem 0;
  border-bottom:1px solid var(--border); font-size:.9rem;
}
.order-item:last-of-type { border-bottom:none; }
.order-item .item-name { color:var(--text-muted); }
.order-item .item-price {
  font-family:'Montserrat',sans-serif;
  font-weight:700; color:#fff;
}
.order-total {
  display:flex; justify-content:space-between;
  padding-top:.875rem; margin-top:.5rem;
  border-top:2px solid var(--border);
}
.order-total .total-label {
  font-family:'Montserrat',sans-serif;
  font-weight:700; color:#fff;
}
.order-total .total-price {
  font-family:'Montserrat',sans-serif;
  font-weight:900; font-size:1.5rem; color:var(--accent);
}

/* CONFIRMATION */
.success-icon {
  width:80px; height:80px; background:rgba(0,200,120,.15);
  border:2px solid var(--success); border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:2.5rem; margin:0 auto 1.5rem;
}

/* SECTION DIVIDER */
.section-divider {
  width:100%; height:1px;
  background:linear-gradient(90deg,transparent,var(--border),transparent);
  margin:4rem auto;
}

/* FOOTER */
.site-footer {
  background:var(--darker);
  border-top:1px solid var(--border);
  padding:4rem 2rem 2rem;
}
.footer-grid {
  max-width:1280px; margin:0 auto;
  display:grid;
  grid-template-columns:2fr 1fr 1fr 1fr;
  gap:3rem; margin-bottom:3rem;
}
.footer-brand .logo { margin-bottom:1rem; display:inline-flex; }
.footer-brand p { color:var(--text-muted); font-size:.875rem; max-width:310px; line-height:1.7; }
.footer-col h4 {
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.78rem;
  text-transform:uppercase; letter-spacing:.1em;
  color:var(--text); margin-bottom:1.125rem;
}
.footer-col ul { list-style:none; padding:0; }
.footer-col ul li { margin-bottom:.5rem; }
.footer-col ul li a {
  color:var(--text-muted); font-size:.875rem;
  text-decoration:none; transition:color .3s;
}
.footer-col ul li a:hover { color:var(--primary); }
.footer-bottom {
  max-width:1280px; margin:0 auto;
  border-top:1px solid var(--border); padding-top:1.5rem;
  display:flex; justify-content:space-between;
  align-items:center; flex-wrap:wrap; gap:1rem;
}
.footer-bottom p { color:var(--text-muted); font-size:.8rem; line-height:1.6; }
.footer-links { display:flex; gap:1.5rem; }
.footer-links a {
  color:var(--text-muted); font-size:.8rem;
  text-decoration:none; transition:color .3s;
}
.footer-links a:hover { color:var(--primary); }

/* UTILITIES */
.text-center  { text-align:center; }
.text-right   { text-align:right; }
.text-primary { color:var(--primary) !important; }
.text-accent  { color:var(--accent) !important; }
.text-muted   { color:var(--text-muted) !important; }
.text-white   { color:#fff !important; }
.text-success { color:var(--success) !important; }
.text-warning { color:var(--warning) !important; }
.fw-900 { font-weight:900; }
.fw-700 { font-weight:700; }
.fz-sm  { font-size:.875rem; }
.fz-xs  { font-size:.8rem; }
.d-flex { display:flex; }
.align-center { align-items:center; }
.justify-between { justify-content:space-between; }
.gap-1 { gap:.5rem; }
.gap-2 { gap:1rem; }
.gap-3 { gap:1.5rem; }
.mt-1 { margin-top:.5rem; }
.mt-2 { margin-top:1rem; }
.mt-3 { margin-top:1.5rem; }
.mt-4 { margin-top:2rem; }
.mb-0 { margin-bottom:0; }
.mb-1 { margin-bottom:.5rem; }
.mb-2 { margin-bottom:1rem; }
.mb-3 { margin-bottom:1.5rem; }
.mb-4 { margin-bottom:2rem; }
.pb-0 { padding-bottom:0; }
.w-full { width:100%; }
.rounded { border-radius:var(--radius); }
.rounded-lg { border-radius:var(--radius-lg); }

/* SOLD OUT */
.sold-out { opacity:.65; pointer-events:none; }
.sold-out-badge {
  background:var(--error); color:#fff;
  font-family:'Montserrat',sans-serif;
  font-weight:700; font-size:.7rem;
  padding:.2rem .6rem; border-radius:50px;
  text-transform:uppercase; letter-spacing:.06em;
}

/* IMAGE SECTIONS */
.img-section {
  position:relative; overflow:hidden;
  border-radius:var(--radius-lg); aspect-ratio:16/9;
}
.img-section img { width:100%; height:100%; object-fit:cover; }
.img-section-overlay {
  position:absolute; inset:0;
  background:linear-gradient(to top,rgba(7,7,15,.9) 0%,transparent 60%);
}
.img-section-content {
  position:absolute; bottom:0; left:0; right:0;
  padding:1.75rem;
}

/* SKIP LINK (accessibility) */
.skip-link {
  position:absolute; top:-50px; left:1rem;
  background:var(--primary); color:#fff;
  padding:.5rem 1rem; border-radius:var(--radius);
  font-weight:700; font-size:.875rem; z-index:9999;
  transition:top .3s;
}
.skip-link:focus { top:1rem; }

/* RESPONSIVE */
@media (max-width:1100px) {
  .grid-4    { grid-template-columns:repeat(2,1fr); }
  .footer-grid { grid-template-columns:1fr 1fr; }
  .checkout-grid { grid-template-columns:1fr; }
  .order-summary { position:static; }
}
@media (max-width:900px) {
  .grid-3 { grid-template-columns:repeat(2,1fr); }
  .main-nav,.nav-cta { display:none; }
  .hamburger { display:flex; }
  .hero { min-height:75vh; }
  .hero h1 { font-size:clamp(2rem,8vw,3.5rem); }
}
@media (max-width:640px) {
  .grid-2,.grid-3,.grid-4 { grid-template-columns:1fr; }
  .footer-grid { grid-template-columns:1fr; gap:2rem; }
  .footer-bottom { flex-direction:column; text-align:center; }
  .footer-links { flex-wrap:wrap; justify-content:center; }
  .hero-stats { gap:1.5rem; }
  .stat .stat-number { font-size:1.75rem; }
  .countdown-number { font-size:2rem; min-width:66px; padding:.5rem .625rem; }
  .trust-items { gap:1.25rem; }
  .newsletter-section { padding:2rem 1.25rem; }
  .newsletter-form { flex-direction:column; }
  .cta-section { padding:2.5rem 1.25rem; }
  .section { padding:3rem 1.25rem; }
  .section-sm { padding:2rem 1.25rem; }
  .page-hero { padding:4rem 1.25rem 2.5rem; }
  .hero-actions { flex-direction:column; }
  .hero-actions .btn { width:100%; }
  .steps { flex-direction:column; gap:1.5rem; }
  .tabs { gap:.375rem; }
  .tab-btn { font-size:.75rem; padding:.5rem 1rem; }
}
@media (max-width:360px) {
  .hero h1 { font-size:1.85rem; }
  .ticket-price { font-size:2.2rem; }
}
