/* =========================================================
   TripConnect — components.css
   Reusable UI components
   ========================================================= */

/* Grids */
.grid-4{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.grid-3{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.grid-2{ display:grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }

/* =========================
   Destination card (signature component)
   ========================= */
.dest-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow:hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow .2s ease, transform .2s ease;
  display:flex;
  flex-direction:column;
}
.dest-card:hover{ box-shadow: var(--shadow-md); transform: translateY(-3px); }
.dest-card .dest-art{
  height:150px;
  position:relative;
  overflow:hidden;
}
.dest-card .dest-art svg{ width:100%; height:100%; }
.dest-card .dest-tag{
  position:absolute;
  top:14px; left:14px;
  background: rgba(11,37,69,.55);
  backdrop-filter: blur(6px);
  color:#fff;
  font-size:12px;
  font-weight:700;
  padding:6px 12px;
  border-radius:999px;
}
.dest-card .dest-body{ padding: 18px 20px 22px; flex:1; display:flex; flex-direction:column; }
.dest-card h3{ font-size:19px; margin-bottom:2px; }
.dest-card .dest-sub{ font-size:13px; color: var(--slate-light); margin-bottom:16px; }
.compare-grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:8px;
  margin-top:auto;
}
.compare-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  padding: 9px 10px;
  border:1px solid var(--line);
  border-radius: 10px;
  font-size:13px;
  font-weight:600;
  color: var(--navy);
  background: var(--sky-2);
  transition: background .15s ease, border-color .15s ease;
}
.compare-item svg{ width:15px; height:15px; color: var(--azure); flex-shrink:0; }
.compare-item .compare-label{ display:flex; align-items:center; gap:6px; }
.compare-item .compare-link{
  font-size:12px;
  font-weight:700;
  color: var(--coral);
}
.compare-item:hover{ background:#fff; border-color: var(--coral); }

/* =========================
   Deal cards
   ========================= */
.deal-tabs{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:28px;
}
.deal-tab{
  padding:10px 20px;
  border-radius:999px;
  border:1.5px solid var(--line);
  background:#fff;
  font-weight:700;
  font-size:14px;
  color: var(--slate);
}
.deal-tab[aria-selected="true"]{
  background: var(--navy);
  color:#fff;
  border-color: var(--navy);
}
.deal-panel{ display:none; }
.deal-panel.is-active{ display:grid; }

.deal-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius: var(--radius-md);
  padding:20px;
  display:flex;
  flex-direction:column;
  gap:10px;
  box-shadow: var(--shadow-sm);
}
.deal-card .deal-route{
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-family: var(--font-display);
  font-weight:600;
  font-size:16px;
  color: var(--navy);
}
.deal-card .deal-route svg{ width:18px; height:18px; color: var(--coral); }
.deal-card .deal-meta{ font-size:13px; color: var(--slate-light); }
.deal-price{
  display:flex;
  align-items:baseline;
  gap:8px;
  margin-top:4px;
}
.deal-price .was{ font-size:14px; color: var(--slate-light); text-decoration: line-through; }
.deal-price .now{ font-size:24px; font-weight:700; color: var(--coral); font-family: var(--font-display); }
.deal-badge{
  display:inline-block;
  align-self:flex-start;
  background: var(--sky);
  color: var(--azure-dark);
  font-size:11px;
  font-weight:700;
  padding: 4px 10px;
  border-radius:999px;
}

/* =========================
   Testimonials
   ========================= */
.review-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius: var(--radius-md);
  padding:24px;
  box-shadow: var(--shadow-sm);
}
.review-stars{ display:flex; gap:3px; margin-bottom:14px; }
.review-stars svg{ width:16px; height:16px; color: var(--star); }
.review-card p{ font-size:15px; color: var(--navy); }
.review-person{
  display:flex;
  align-items:center;
  gap:12px;
  margin-top:16px;
}
.review-avatar{
  width:42px; height:42px;
  border-radius:50%;
  background: var(--sky);
  display:flex; align-items:center; justify-content:center;
  font-family: var(--font-display);
  font-weight:700;
  color: var(--azure-dark);
  flex-shrink:0;
}
.review-person strong{ display:block; font-size:14px; }
.review-person span{ font-size:12px; color: var(--slate-light); }

/* =========================
   FAQ accordion
   ========================= */
.accordion{ border-top:1px solid var(--line); }
.accordion-item{ border-bottom:1px solid var(--line); }
.accordion-trigger{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:20px 4px;
  background:none;
  border:none;
  text-align:left;
  font-family: var(--font-display);
  font-weight:600;
  font-size:16px;
  color: var(--navy);
}
.accordion-trigger svg{
  width:20px; height:20px;
  flex-shrink:0;
  color: var(--azure);
  transition: transform .2s ease;
}
.accordion-item.is-open .accordion-trigger svg{ transform: rotate(45deg); }
.accordion-panel{
  max-height:0;
  overflow:hidden;
  transition: max-height .25s ease;
}
.accordion-panel-inner{ padding: 0 4px 20px; }
.accordion-panel-inner p{ font-size:15px; margin-bottom:0; }

/* =========================
   Trust badges / why grid reuse
   ========================= */
.badge-row{ display:flex; gap:14px; flex-wrap:wrap; }
.trust-badge{
  display:flex;
  align-items:center;
  gap:8px;
  padding:10px 16px;
  border-radius:999px;
  background: var(--sky);
  font-size:13px;
  font-weight:700;
  color: var(--azure-dark);
}
.trust-badge svg{ width:16px; height:16px; }

/* =========================
   Generic forms (contact / insurance quote)
   ========================= */
.form-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 32px;
  box-shadow: var(--shadow-sm);
}
.form-row{ display:grid; grid-template-columns: 1fr 1fr; gap:16px; }
.form-group{ margin-bottom:18px; display:flex; flex-direction:column; gap:6px; }
.form-group label{ font-size:13px; font-weight:700; color: var(--navy); }
.form-group input, .form-group select, .form-group textarea{
  padding:13px 14px;
  border:1.5px solid var(--line);
  border-radius: var(--radius-sm);
  font-size:15px;
  background: var(--sky-2);
  color: var(--navy);
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus{
  outline:none; border-color: var(--azure); background:#fff;
}
.form-group textarea{ resize: vertical; min-height:120px; }
.form-note{ font-size:12px; color: var(--slate-light); margin-top:10px; }

/* =========================
   Pricing / eSIM cards
   ========================= */
.plan-card{
  background:#fff;
  border:1.5px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 26px;
  display:flex;
  flex-direction:column;
  gap:14px;
  box-shadow: var(--shadow-sm);
}
.plan-card.is-popular{ border-color: var(--coral); position:relative; }
.plan-card.is-popular::before{
  content:"Most popular";
  position:absolute;
  top:-13px; left:24px;
  background: var(--coral);
  color:#fff;
  font-size:11px;
  font-weight:700;
  padding:5px 12px;
  border-radius:999px;
}
.plan-card h3{ font-size:20px; margin-bottom:0; }
.plan-price{ font-family: var(--font-display); font-size:32px; font-weight:700; color: var(--navy); }
.plan-price span{ font-size:14px; font-weight:500; color: var(--slate-light); }
.plan-list li{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:14px;
  color: var(--slate);
  padding: 6px 0;
}
.plan-list svg{ width:16px; height:16px; color: var(--success); flex-shrink:0; }

/* =========================
   Category chips (tours)
   ========================= */
.chip-row{ display:flex; gap:10px; flex-wrap:wrap; }
.chip{
  padding:9px 18px;
  border-radius:999px;
  border:1.5px solid var(--line);
  background:#fff;
  font-size:14px;
  font-weight:600;
  color: var(--slate);
}
.chip.is-active{ background: var(--azure); border-color: var(--azure); color:#fff; }

/* Airline / partner logo strip on flights page */
.airline-row{
  display:grid;
  grid-template-columns: repeat(6,1fr);
  gap:16px;
}
.airline-chip{
  border:1px solid var(--line);
  border-radius: var(--radius-sm);
  padding:16px 10px;
  text-align:center;
  font-size:13px;
  font-weight:700;
  color: var(--slate);
  background: var(--sky-2);
}

/* Tour card */
.tour-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow:hidden;
  box-shadow: var(--shadow-sm);
  display:flex;
  flex-direction:column;
}
.tour-card .tour-art{ height:170px; }
.tour-card .tour-art svg{ width:100%; height:100%; }
.tour-card .tour-body{ padding:18px 20px 22px; display:flex; flex-direction:column; flex:1; }
.tour-card h3{ font-size:17px; }
.tour-meta{ display:flex; gap:14px; font-size:13px; color: var(--slate-light); margin-bottom:14px; }
.tour-meta span{ display:flex; align-items:center; gap:5px; }
.tour-meta svg{ width:14px; height:14px; }
.tour-footer{
  margin-top:auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.tour-footer .price{ font-family: var(--font-display); font-weight:700; color: var(--navy); font-size:18px; }
.tour-footer .price span{ font-size:12px; color: var(--slate-light); font-weight:400; }

/* Insurance benefit list */
.benefit-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:22px; }
.benefit-card{
  background:#fff; border:1px solid var(--line); border-radius: var(--radius-md);
  padding:24px; display:flex; gap:16px; align-items:flex-start;
}
.benefit-card .icon-badge{ width:44px; height:44px; border-radius:12px; background: var(--sky); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.benefit-card .icon-badge svg{ width:22px; height:22px; color: var(--azure); }
.benefit-card h3{ font-size:16px; margin-bottom:4px; }
.benefit-card p{ font-size:14px; margin-bottom:0; }

/* 404 */
.error-page{
  min-height: 60vh;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding: 90px 0;
}
.error-page .code{
  font-family: var(--font-display);
  font-weight:700;
  font-size: 96px;
  color: var(--sky);
  -webkit-text-stroke: 2px var(--azure);
  line-height:1;
}

/* About page */
.value-grid{ display:grid; grid-template-columns: repeat(4,1fr); gap:20px; }
.value-card{ text-align:center; padding:20px; }
.timeline{ border-left:2px solid var(--line); padding-left:24px; display:flex; flex-direction:column; gap:28px; }
.timeline-item{ position:relative; }
.timeline-item::before{
  content:""; position:absolute; left:-30px; top:4px;
  width:10px; height:10px; border-radius:50%; background: var(--coral);
}
.timeline-item h3{ font-size:16px; margin-bottom:4px; }
.timeline-item span{ font-size:13px; color: var(--azure); font-weight:700; }
