
.service-mode-panel{
  display:grid;gap:18px;padding:24px;margin:0 0 22px
}
.service-mode-heading{display:grid;gap:5px}
.service-mode-heading h2{margin:0;font-size:clamp(1.25rem,2vw,1.65rem);letter-spacing:-.02em}
.service-mode-heading p{margin:0;color:var(--muted);line-height:1.5}
.service-mode-switch{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;
  margin:0
}
.service-mode-card{
  position:relative;
  isolation:isolate;
  display:grid;
  gap:5px;
  min-height:128px;
  padding:18px 132px 18px 19px;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fff;
  color:var(--text);
  text-decoration:none;
  transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease,background .18s ease
}
.service-mode-card::before{
  content:"";
  position:absolute;
  z-index:-1;
  right:-34px;
  bottom:-46px;
  width:160px;
  height:160px;
  border-radius:50%;
  opacity:.45;
  transform:scale(.94);
  transition:transform .28s cubic-bezier(.22,.61,.36,1),opacity .22s ease
}
.service-mode-card:hover,.service-mode-card:focus-visible{
  transform:translateY(-1px);
  border-color:#9ebfe0;
  box-shadow:0 12px 32px rgba(22,28,60,.09)
}
.service-mode-card:hover::before,.service-mode-card:focus-visible::before{transform:scale(1.04);opacity:.68}
.service-mode-card:focus-visible{outline:3px solid rgba(92,169,222,.28);outline-offset:2px}
.service-mode-card.is-active{border-color:#6da9d8;background:#f8fbff;box-shadow:inset 0 0 0 1px rgba(109,169,216,.18)}
.service-mode-card strong{font-size:1rem}
.service-mode-card small{max-width:520px;color:var(--muted);line-height:1.4}
.service-mode-eyebrow{font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:.12em;color:#4978a5}

.service-mode-card--airport::before{background:radial-gradient(circle,#cce7fb 0%,rgba(204,231,251,0) 70%)}
.service-mode-card--tourism::before{background:radial-gradient(circle,#cdece3 0%,rgba(205,236,227,0) 70%)}

.service-mode-visual{
  position:absolute;
  right:20px;
  top:50%;
  display:grid;
  place-items:center;
  width:88px;
  height:88px;
  border-radius:24px;
  transform:translateY(-50%);
  pointer-events:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.72),0 12px 26px rgba(16,24,40,.08);
  transition:transform .28s cubic-bezier(.22,.61,.36,1),box-shadow .22s ease
}
.service-mode-card:hover .service-mode-visual,.service-mode-card:focus-visible .service-mode-visual{
  transform:translateY(-50%) scale(1.045);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 16px 30px rgba(16,24,40,.11)
}
.service-mode-visual-halo{
  position:absolute;
  inset:9px;
  border:1px solid currentColor;
  border-radius:19px;
  opacity:.12
}
.service-mode-visual svg{position:relative;width:64px;height:64px;overflow:visible}
.service-mode-visual--airport{color:#2f78ad;background:linear-gradient(145deg,#eef8ff 0%,#dceefe 100%)}
.service-mode-airport-runway,.service-mode-airport-runway-mark{
  fill:none;
  stroke:currentColor;
  stroke-linecap:round
}
.service-mode-airport-runway{stroke-width:3;opacity:.3}
.service-mode-airport-runway-mark{stroke-width:2.5;opacity:.22}
.service-mode-airport-plane{fill:currentColor;transform-origin:48px 44px;transition:transform .28s cubic-bezier(.22,.61,.36,1)}
.service-mode-airport-beacon{fill:#7fbbe2;opacity:.5}
.service-mode-card--airport:hover .service-mode-airport-plane,.service-mode-card--airport:focus-visible .service-mode-airport-plane{transform:translate(2px,-2px) rotate(-2deg)}

.service-mode-visual--tourism{color:#2f7f72;background:linear-gradient(145deg,#effaf7 0%,#dcefe9 100%)}
.service-mode-tourism-landscape{fill:currentColor;opacity:.14}
.service-mode-tourism-route{
  fill:none;
  stroke:currentColor;
  stroke-width:3.4;
  stroke-linecap:round;
  stroke-dasharray:1 9
}
.service-mode-tourism-start{fill:currentColor;opacity:.35}
.service-mode-tourism-pin{fill:currentColor;transform-origin:70px 34px;transition:transform .28s cubic-bezier(.22,.61,.36,1)}
.service-mode-tourism-pin-core{fill:#fff;opacity:.94}
.service-mode-card--tourism:hover .service-mode-tourism-pin,.service-mode-card--tourism:focus-visible .service-mode-tourism-pin{transform:translateY(-3px)}

.service-mode-card.is-active .service-mode-visual{box-shadow:inset 0 1px 0 rgba(255,255,255,.84),0 14px 30px rgba(54,117,164,.12)}

.tourism-page{display:grid;gap:22px}
.tourism-hero{
  display:grid;grid-template-columns:minmax(0,1.5fr) auto;gap:24px;align-items:end;
  padding:30px;border:1px solid #dce7f2;border-radius:24px;
  background:linear-gradient(135deg,#fbfdff 0%,#f3f8fd 100%)
}
.tourism-hero h1{max-width:800px;margin:6px 0 10px;font-size:clamp(2rem,4.5vw,4.1rem);line-height:.98;letter-spacing:-.045em}
.tourism-hero p{max-width:740px;margin:0;color:var(--muted);font-size:1.02rem;line-height:1.6}
.tourism-hero-service-switch{display:flex;align-items:center;gap:8px;padding:7px;border:1px solid #dbe5ef;border-radius:999px;background:#fff}
.tourism-hero-service-switch a,.tourism-hero-service-switch span{padding:9px 12px;border-radius:999px;font-size:.78rem;font-weight:850;white-space:nowrap}
.tourism-hero-service-switch a{color:var(--muted);text-decoration:none}
.tourism-hero-service-switch span{background:#161c3c;color:#fff}

.tourism-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:720px}
.tourism-progress>div{display:flex;align-items:center;gap:8px;color:#98a2b3;font-size:.8rem;font-weight:800}
.tourism-progress>div::after{content:"";height:2px;flex:1;background:#e5e9ef}
.tourism-progress>div:last-child::after{display:none}
.tourism-progress span{display:grid;place-items:center;width:28px;height:28px;border:1px solid #d0d5dd;border-radius:50%;background:#fff}
.tourism-progress .is-active{color:#161c3c}
.tourism-progress .is-active span{border-color:#161c3c;background:#161c3c;color:#fff}
.tourism-progress .is-active::after{background:#8db9dd}

.tourism-builder-card,.tourism-catalog-section,.tourism-itinerary-card,.tourism-results-section,.tourism-map-panel{
  border:1px solid var(--line);border-radius:20px;background:#fff
}
.tourism-builder-card,.tourism-catalog-section,.tourism-itinerary-card,.tourism-results-section{padding:24px}
.tourism-section-heading h2,.tourism-section-heading h3{margin:5px 0 7px}
.tourism-section-heading p{margin:0;color:var(--muted);line-height:1.5}
.tourism-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}

.tourism-start-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:22px}
.tourism-start-grid .full{grid-column:1/-1}
.tourism-stage-actions{display:flex;gap:10px;justify-content:flex-end;align-items:center;flex-wrap:wrap;margin-top:22px}

.tourism-builder-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;align-items:start}
.tourism-builder-main{display:grid;gap:18px;min-width:0}
.tourism-live-route-panel{
  position:sticky;top:94px;z-index:12;align-self:start;display:grid;gap:15px;
  max-height:calc(100vh - 112px);padding:18px;border:1px solid #d8e3ed;border-radius:20px;
  background:rgba(255,255,255,.97);box-shadow:0 18px 42px rgba(16,24,40,.11);
  backdrop-filter:blur(14px);overflow:hidden
}
.tourism-live-route-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.tourism-live-route-head h3{margin:4px 0 0;font-size:1.15rem;letter-spacing:-.02em}
.tourism-live-route-count{padding:5px 8px;border-radius:999px;background:#eef6fd;color:#315f82;font-size:.68rem;font-weight:850;white-space:nowrap}
.tourism-live-route-metrics{display:grid;grid-template-columns:1fr 1.2fr;gap:8px}
.tourism-live-route-metrics>div{display:grid;gap:3px;padding:11px 12px;border:1px solid #e3e9ef;border-radius:13px;background:#f8fafc}
.tourism-live-route-metrics span{font-size:.64rem;font-weight:850;text-transform:uppercase;letter-spacing:.05em;color:#667085}
.tourism-live-route-metrics strong{font-size:.98rem;color:#161c3c}
.tourism-live-route-timeline{display:grid;gap:0;min-height:0;overflow:auto;padding:2px 5px 2px 1px;scrollbar-width:thin}
.tourism-live-route-point{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;align-items:center;min-height:58px;padding:5px 0}
.tourism-live-route-point:not(:last-child)::after{content:"";position:absolute;left:20px;top:43px;bottom:-15px;width:2px;background:linear-gradient(#83b5db,#cbd8e4)}
.tourism-live-route-marker{position:relative;z-index:1;display:grid;place-items:center;width:40px;height:40px;border:2px solid #fff;border-radius:50%;background:#161c3c;color:#fff;box-shadow:0 0 0 1px #c9d7e4;font-size:.76rem;font-weight:900;overflow:hidden}
.tourism-live-route-marker svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tourism-live-route-marker.has-image{background:#dce8f2}
.tourism-live-route-marker.has-image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tourism-live-route-marker.has-image span{position:absolute;right:-1px;bottom:-1px;display:grid;place-items:center;width:18px;height:18px;border:2px solid #fff;border-radius:50%;background:#161c3c;color:#fff;font-size:.58rem}
.tourism-live-route-point.is-start .tourism-live-route-marker{background:#467faa}
.tourism-live-route-point.is-finish .tourism-live-route-marker{background:#0f766e}
.tourism-live-route-point-copy{display:grid;gap:2px;min-width:0}
.tourism-live-route-point-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem}
.tourism-live-route-point-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.7rem}
.tourism-live-route-status{padding:9px 10px;border-radius:11px;background:#f3f7fa;color:#52606d;font-size:.72rem;line-height:1.4}
.tourism-live-route-status.is-error{background:#fff7ed;color:#9a3412}
.tourism-live-route-expandable{display:contents}
.tourism-live-route-mobile-toggle{display:none}
.tourism-catalog-heading{align-items:center}
.tourism-map-toggle{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;white-space:nowrap}
.tourism-map-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tourism-map-panel{padding:16px;overflow:hidden}
.tourism-map-inline{margin-top:18px;border-color:#d8e5ef;background:#fbfdff;animation:tourismMapReveal .22s ease-out}
.tourism-map-inline[hidden]{display:none}
.tourism-map-copy h3{margin:4px 0}
.tourism-map-copy p{margin:0 0 12px;color:var(--muted);font-size:.86rem}
.tourism-map{height:360px;border-radius:15px;background:#edf3f8;overflow:hidden;display:grid;place-items:center;color:var(--muted)}
.tourism-map-status{margin-top:10px;padding:9px 11px;border-radius:10px;background:#f6f8fb;color:var(--muted);font-size:.78rem;line-height:1.4}
@keyframes tourismMapReveal{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.tourism-map-status.success{background:#ecfdf3;color:#067647}
.tourism-map-status.warning{background:#fffaeb;color:#b54708}
.tourism-map-status.error{background:#fef3f2;color:#b42318}

.tourism-search-box{display:grid;gap:6px;margin:18px 0}
.tourism-search-box input{width:100%;border:1px solid #cfd8e3;border-radius:14px;padding:14px 16px;font:inherit;background:#fff}
.tourism-search-box span{font-size:.76rem;color:var(--muted)}

.tourism-milestone-open{overflow:hidden}

.tourism-milestone-overlay{
  position:fixed;
  inset:0;
  z-index:1200;
  display:grid;
  place-items:center;
  padding:24px;
  background:rgba(15,23,42,.46);
  backdrop-filter:blur(7px);
  animation:tourismMilestoneBackdropIn .24s ease-out both
}
.tourism-milestone-suggestion{
  position:relative;
  isolation:isolate;
  display:grid;
  grid-template-columns:minmax(240px,320px) minmax(0,1fr);
  width:min(860px,calc(100vw - 48px));
  max-height:min(680px,calc(100vh - 48px));
  overflow:hidden;
  border:1px solid rgba(189,217,238,.9);
  border-radius:26px;
  background:linear-gradient(135deg,#ffffff 0%,#f2f8fd 100%);
  box-shadow:0 34px 90px rgba(15,23,42,.28);
  animation:tourismMilestonePopupIn .48s cubic-bezier(.2,.86,.24,1.06) both
}
.tourism-milestone-glow{
  position:absolute;
  z-index:-1;
  width:280px;
  height:280px;
  right:-90px;
  top:-120px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(121,183,225,.34) 0%,rgba(121,183,225,0) 70%);
  pointer-events:none
}
.tourism-milestone-media{position:relative;min-height:360px;background:#dce8f2;overflow:hidden}
.tourism-milestone-media img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.02);animation:tourismMilestoneImageIn .72s ease-out both}
.tourism-milestone-media.is-fallback::after,
.tourism-milestone-fallback{
  content:"P";
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  background:linear-gradient(135deg,#dce8f2,#eef5fa);
  color:#467faa;
  font-size:2.5rem;
  font-weight:900
}
.tourism-milestone-badge{
  position:absolute;
  left:16px;
  bottom:16px;
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:8px 12px;
  border:1px solid rgba(255,255,255,.6);
  border-radius:999px;
  background:rgba(22,28,60,.86);
  color:#fff;
  backdrop-filter:blur(9px);
  font-size:.72rem;
  font-weight:850;
  box-shadow:0 10px 22px rgba(16,24,40,.22)
}
.tourism-milestone-badge>span{font-size:.86rem}
.tourism-milestone-copy{
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  gap:11px;
  min-width:0;
  padding:34px 64px 34px 32px;
  overflow:auto
}
.tourism-milestone-copy .section-eyebrow{font-size:.72rem}
.tourism-milestone-copy h3{margin:0;font-size:clamp(1.45rem,3vw,2.1rem);line-height:1.05;letter-spacing:-.035em;color:#161c3c}
.tourism-milestone-copy p{margin:0;max-width:620px;color:#52606d;font-size:.92rem;line-height:1.55}
.tourism-milestone-impact{display:flex;gap:8px;flex-wrap:wrap;margin-top:3px}
.tourism-milestone-impact span{padding:7px 10px;border-radius:999px;background:#fff;border:1px solid #d7e5ef;color:#315f82;font-size:.72rem;font-weight:800}
.tourism-milestone-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:5px}
.tourism-milestone-add{min-width:180px}
.tourism-milestone-close{
  position:absolute;
  top:14px;
  right:14px;
  z-index:2;
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  padding:0;
  border:1px solid #d7e1ea;
  border-radius:50%;
  background:rgba(255,255,255,.94);
  color:#475467;
  font:inherit;
  font-size:1.25rem;
  line-height:1;
  cursor:pointer;
  box-shadow:0 7px 18px rgba(16,24,40,.1)
}
.tourism-milestone-close:hover,.tourism-milestone-close:focus-visible{background:#fff;color:#161c3c}
@keyframes tourismMilestoneBackdropIn{
  from{opacity:0}
  to{opacity:1}
}
@keyframes tourismMilestonePopupIn{
  0%{opacity:0;transform:translateY(28px) scale(.94)}
  70%{opacity:1;transform:translateY(-3px) scale(1.008)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes tourismMilestoneImageIn{
  from{opacity:.7;transform:scale(1.08)}
  to{opacity:1;transform:scale(1.02)}
}

.tourism-search-results{display:grid;gap:18px}
.tourism-search-results h3,.tourism-external-results h3{margin:0 0 10px;font-size:.9rem}
.tourism-place-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tourism-place-card{
  display:flex;flex-direction:column;border:1px solid #e0e6ed;border-radius:17px;overflow:hidden;background:#fff;min-width:0;
  opacity:0;transform:translateY(8px);
  animation:tourismCardIn .38s cubic-bezier(.22,.61,.36,1) forwards;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease
}
.tourism-place-grid .tourism-place-card:nth-child(2){animation-delay:.035s}
.tourism-place-grid .tourism-place-card:nth-child(3){animation-delay:.07s}
.tourism-place-grid .tourism-place-card:nth-child(4){animation-delay:.105s}
.tourism-place-grid .tourism-place-card:nth-child(5){animation-delay:.14s}
.tourism-place-grid .tourism-place-card:nth-child(6){animation-delay:.175s}
.tourism-place-grid .tourism-place-card:nth-child(n+7){animation-delay:.21s}
.tourism-place-card.is-selected{border-color:#8fbae0;background:#f8fbff}
.tourism-place-card.is-stable{opacity:1;transform:none;animation:none}
.tourism-place-media{width:100%;aspect-ratio:16/9;min-height:0;background:#eef3f8;overflow:hidden}
.tourism-place-media-action{
  display:block;
  padding:0;
  border:0;
  background:#eef3f8;
  color:inherit;
  font:inherit;
  cursor:pointer;
  text-align:inherit
}
.tourism-place-media-action:disabled{cursor:default}
.tourism-place-media-action:focus-visible{outline:3px solid rgba(92,169,222,.4);outline-offset:-3px}
.tourism-place-media img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transition:transform .3s cubic-bezier(.22,.61,.36,1)}
@keyframes tourismCardIn{to{opacity:1;transform:translateY(0)}}
@media (hover:hover) and (pointer:fine){
  .tourism-place-card:hover{
    transform:translateY(-3px);
    border-color:#b9cfe2;
    box-shadow:0 10px 24px rgba(20,34,55,.08)
  }
  .tourism-place-card:hover .tourism-place-media img{transform:scale(1.025)}
}
.tourism-place-card:focus-within{
  transform:translateY(-2px);
  border-color:#9fc3df;
  box-shadow:0 8px 20px rgba(20,34,55,.07)
}
.tourism-place-fallback,.tourism-vehicle-fallback{width:100%;height:100%;min-height:140px;display:grid;place-items:center;background:linear-gradient(140deg,#e9f0f7,#d9e6f1);color:#315f82;font-size:2rem;font-weight:900}
.tourism-place-copy{display:flex;flex:1;flex-direction:column;gap:7px;padding:14px;min-width:0}
.tourism-place-copy h3{margin:0;font-size:1rem}
.tourism-place-copy p{margin:0;color:var(--muted);font-size:.8rem;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tourism-place-meta{display:flex;gap:5px;flex-wrap:wrap}
.tourism-place-meta span{padding:3px 6px;border-radius:999px;background:#f2f4f7;color:#667085;font-size:.62rem;font-weight:800}
.tourism-place-footer{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-top:auto}
.tourism-place-footer>span{font-size:.72rem;color:var(--muted);font-weight:700}
.tourism-place-footer .btn{padding:8px 11px;font-size:.75rem}

.tourism-external-results{display:grid;gap:8px;padding-top:4px}
.tourism-external-result{width:100%;display:flex;justify-content:space-between;gap:12px;align-items:center;text-align:left;border:1px solid #e0e6ed;border-radius:13px;padding:12px 14px;background:#fff;color:var(--text);font:inherit;cursor:pointer}
.tourism-external-result:hover{border-color:#91bde2;background:#f8fbff}
.tourism-external-result>span:first-child{display:grid;gap:3px}
.tourism-external-result small{color:var(--muted)}
.tourism-external-badge{padding:5px 8px;border-radius:999px;background:#eef6fd;color:#315f82;font-size:.68rem;font-weight:800;white-space:nowrap}

.tourism-itinerary-list{display:grid;gap:9px;margin-top:16px}
.tourism-itinerary-stop{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:12px;align-items:start;padding:13px;border:1px solid #e2e8f0;border-radius:14px;background:#fbfcfe}
.tourism-stop-index{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#161c3c;color:#fff;font-weight:900}
.tourism-stop-main{display:grid;gap:4px;min-width:0}
.tourism-stop-main>small{color:var(--muted)}
.tourism-stop-main label{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:.74rem;color:var(--muted)}
.tourism-stop-main select{border:1px solid #ccd6e0;border-radius:9px;padding:6px 8px;background:#fff}
.tourism-stop-actions{display:flex;gap:5px}
.tourism-stop-actions button{width:32px;height:32px;border:1px solid #d0d5dd;border-radius:9px;background:#fff;color:#344054;font:inherit;font-weight:900;cursor:pointer}
.tourism-stop-actions button:disabled{opacity:.35;cursor:not-allowed}
.tourism-stop-actions button:last-child{color:#b42318}

.tourism-optimization-proposal{margin-top:14px;padding:14px;border:1px solid #b2ddff;border-radius:14px;background:#eff8ff}
.tourism-optimization-proposal p{margin:6px 0 0;color:#315f82;line-height:1.5}
.tourism-final-block,.tourism-suggestions-block{margin-top:16px;padding-top:16px;border-top:1px solid #edf0f4}
.tourism-check{display:flex;align-items:center;gap:9px;font-weight:800}
.tourism-check input{width:auto}
.tourism-final-block .field{margin-top:12px}

.tourism-suggestions-heading{align-items:center}
.tourism-suggestions-heading .muted{margin:5px 0 0;font-size:.78rem}
.tourism-auto-badge{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;padding:7px 10px;border:1px solid #cfe4f4;border-radius:999px;background:#f2f8fd;color:#315f82;font-size:.68rem;font-weight:850;white-space:nowrap}
.tourism-auto-badge>span{font-size:.8rem}
.tourism-suggestions-loading{display:flex;align-items:center;gap:10px;margin-top:11px;padding:13px 14px;border:1px solid #dce8f2;border-radius:13px;background:#fbfdff;color:#52606d;font-size:.8rem}
.tourism-suggestions-spinner{width:16px;height:16px;flex:0 0 auto;border:2px solid #cadbe8;border-top-color:#467faa;border-radius:50%;animation:tourismSuggestionSpin .7s linear infinite}
@keyframes tourismSuggestionSpin{to{transform:rotate(360deg)}}
.tourism-suggestions-empty{margin:11px 0 0;font-size:.8rem;line-height:1.5}
.tourism-suggestion-list{display:grid;gap:10px;margin-top:10px}
.tourism-suggestion{
  display:grid;
  grid-template-columns:112px minmax(0,1fr) auto;
  align-items:center;
  gap:0 14px;
  min-height:104px;
  overflow:hidden;
  border:1px solid #dce8f2;
  border-radius:15px;
  background:#fbfdff
}
.tourism-suggestion-media{
  position:relative;
  align-self:stretch;
  min-height:104px;
  padding:0;
  border:0;
  background:#eaf1f6;
  overflow:hidden
}
.tourism-suggestion-media-action{cursor:pointer}
.tourism-suggestion-media-action:focus-visible{outline:3px solid rgba(92,169,222,.4);outline-offset:-3px}
.tourism-suggestion-media img{display:block;width:100%;height:100%;object-fit:cover}
.tourism-suggestion-media.is-fallback::after,
.tourism-suggestion-fallback{
  content:"P";
  display:grid;
  place-items:center;
  position:absolute;
  inset:0;
  background:linear-gradient(135deg,#edf4f9,#dce8f2);
  color:#467faa;
  font-size:1.4rem;
  font-weight:900
}
.tourism-suggestion-copy{display:grid;gap:4px;min-width:0;padding:12px 0}
.tourism-suggestion-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.92rem;color:#161c3c}
.tourism-suggestion small{color:#315f82;font-weight:750;line-height:1.4}
.tourism-suggestion-add{margin-right:12px;white-space:nowrap}

.tourism-quote-recap{display:grid;grid-template-columns:2fr .5fr 2fr;gap:10px;margin:18px 0}
.tourism-quote-recap>div{display:grid;gap:4px;padding:12px;border:1px solid #e3e8ef;border-radius:12px;background:#fafbfc}
.tourism-quote-recap span{font-size:.67rem;text-transform:uppercase;font-weight:850;color:var(--muted)}
.tourism-offer-list{display:grid;gap:14px}
.tourism-offer-card{display:grid;grid-template-columns:230px minmax(0,1fr);border:1px solid #dce4ec;border-radius:18px;overflow:hidden;background:#fff}
.tourism-unavailable-note{padding:11px 12px;border:1px solid #e1e6ec;border-radius:12px;background:#f8fafc;color:#344054;font-size:.82rem;line-height:1.4}
.tourism-unavailable-note strong{font-weight:800}
.tourism-offer-media{background:#eef3f8;min-height:230px}
.tourism-offer-media img{width:100%;height:100%;object-fit:cover;display:block}
.tourism-offer-body{display:grid;gap:13px;padding:18px}
.tourism-offer-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.tourism-offer-head h3{margin:4px 0 0}
.tourism-rating{padding:6px 9px;border-radius:999px;background:#fffaeb;color:#b54708;font-weight:850;white-space:nowrap}
.tourism-offer-facts{display:flex;gap:7px;flex-wrap:wrap}
.tourism-offer-facts span{padding:5px 8px;border-radius:999px;background:#f2f4f7;color:#475467;font-size:.72rem;font-weight:750}
.tourism-price-stack{display:grid;gap:6px;padding-top:5px}
.tourism-price-stack>div{display:flex;justify-content:space-between;gap:12px}
.tourism-price-stack span{color:var(--muted)}
.tourism-price-stack .total{padding-top:9px;border-top:1px solid #e5e9ef;font-size:1.02rem}
.tourism-reserve-btn{justify-self:end}
.tourism-empty{padding:18px;border:1px dashed #cbd5df;border-radius:13px;color:var(--muted);text-align:center}
.tourism-empty-large{display:grid;gap:8px;place-items:center;padding:40px 20px}
.tourism-empty-large strong{color:var(--text)}
.tourism-payment-note{font-size:.82rem;color:var(--muted);line-height:1.5}

@media(max-width:1050px){
  .tourism-builder-layout{grid-template-columns:1fr}
  .tourism-live-route-panel{order:-1;top:94px;max-height:none;padding:14px 16px;gap:10px;border-radius:17px}
  .tourism-live-route-metrics{grid-template-columns:1fr 1fr}
  .tourism-live-route-timeline{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;padding:2px 2px 5px}
  .tourism-live-route-point{grid-template-columns:34px minmax(92px,1fr);gap:7px;min-width:145px;min-height:44px;padding:2px 0}
  .tourism-live-route-point:not(:last-child)::after{left:27px;top:17px;bottom:auto;width:calc(100% + 18px);height:2px}
  .tourism-live-route-marker{width:34px;height:34px}
  .tourism-live-route-marker.has-image span{width:16px;height:16px;font-size:.54rem}
  .tourism-live-route-point-copy small{display:none}
  .tourism-map{height:310px}
}
@media(max-width:760px){
  .tourism-live-route-panel{
    top:80px;
    grid-template-columns:minmax(0,1fr) auto;
    gap:6px 10px;
    padding:10px 12px;
    box-shadow:0 12px 28px rgba(16,24,40,.12);
    transition:padding .18s ease,box-shadow .18s ease
  }
  .tourism-live-route-panel .tourism-live-route-head{grid-column:1/-1;align-items:center}
  .tourism-live-route-panel:not(.is-mobile-expanded) .tourism-live-route-head .section-eyebrow{display:none}
  .tourism-live-route-panel .tourism-live-route-head h3{font-size:.96rem;margin:0}
  .tourism-live-route-panel .tourism-live-route-count{font-size:.62rem;padding:4px 7px}
  .tourism-live-route-panel .tourism-live-route-metrics{
    display:flex;
    align-items:center;
    gap:10px;
    min-width:0
  }
  .tourism-live-route-panel .tourism-live-route-metrics>div{
    display:flex;
    align-items:baseline;
    gap:4px;
    min-width:0;
    padding:0;
    border:0;
    background:transparent
  }
  .tourism-live-route-panel .tourism-live-route-metrics span{
    font-size:.55rem;
    letter-spacing:.035em
  }
  .tourism-live-route-panel .tourism-live-route-metrics strong{
    font-size:.78rem;
    white-space:nowrap
  }
  .tourism-live-route-mobile-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:flex-end;
    gap:4px;
    align-self:center;
    padding:5px 0 5px 8px;
    border:0;
    background:transparent;
    color:#315f82;
    font:inherit;
    font-size:.7rem;
    font-weight:850;
    cursor:pointer;
    white-space:nowrap
  }
  .tourism-live-route-mobile-toggle svg{
    width:16px;
    height:16px;
    fill:none;
    stroke:currentColor;
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round;
    transition:transform .18s ease
  }
  .tourism-live-route-panel.is-mobile-expanded{
    grid-template-columns:1fr;
    gap:10px;
    padding:12px 13px;
    max-height:calc(100vh - 96px)
  }
  .tourism-live-route-panel.is-mobile-expanded .tourism-live-route-mobile-toggle{
    justify-self:end
  }
  .tourism-live-route-panel.is-mobile-expanded .tourism-live-route-mobile-toggle svg{
    transform:rotate(180deg)
  }
  .tourism-live-route-panel:not(.is-mobile-expanded) .tourism-live-route-expandable{display:none}
  .tourism-live-route-panel.is-mobile-expanded .tourism-live-route-expandable{display:contents}
  .tourism-live-route-panel.is-mobile-expanded .tourism-live-route-metrics{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px
  }
  .tourism-live-route-panel.is-mobile-expanded .tourism-live-route-metrics>div{
    display:grid;
    gap:3px;
    padding:8px 9px;
    border:1px solid #e3e9ef;
    background:#f8fafc
  }
  .tourism-live-route-panel.is-mobile-expanded .tourism-live-route-metrics span{font-size:.64rem}
  .tourism-live-route-panel.is-mobile-expanded .tourism-live-route-metrics strong{font-size:.86rem}
  .tourism-live-route-status{font-size:.68rem}
  .service-mode-switch{grid-template-columns:1fr}
  .service-mode-card{min-height:116px;padding:17px 104px 17px 18px}
  .service-mode-visual{right:14px;width:74px;height:74px;border-radius:20px}
  .service-mode-visual-halo{inset:8px;border-radius:16px}
  .service-mode-visual svg{width:54px;height:54px}
  .tourism-hero{grid-template-columns:1fr;padding:22px}
  .tourism-hero h1{font-size:2.45rem}
  .tourism-hero-service-switch{justify-self:start;max-width:100%;overflow:auto}
  .tourism-progress{gap:5px}
  .tourism-progress strong{font-size:.7rem}
  .tourism-progress>div::after{display:none}
  .tourism-builder-card,.tourism-catalog-section,.tourism-itinerary-card,.tourism-results-section{padding:17px}
  .tourism-start-grid{grid-template-columns:1fr}
  .tourism-start-grid .full{grid-column:auto}
  .tourism-heading-row{flex-direction:column}
  .tourism-catalog-heading .tourism-map-toggle{align-self:flex-start}
  .tourism-place-grid{grid-template-columns:1fr}
  .tourism-milestone-overlay{padding:14px;align-items:center}
  .tourism-milestone-suggestion{
    grid-template-columns:1fr;
    width:min(100%,520px);
    max-height:calc(100vh - 28px);
    border-radius:22px
  }
  .tourism-milestone-media{min-height:210px;max-height:260px}
  .tourism-milestone-copy{padding:18px 48px 20px 18px;gap:8px}
  .tourism-milestone-copy h3{font-size:1.32rem}
  .tourism-milestone-copy p{font-size:.82rem}
  .tourism-milestone-actions{width:100%}
  .tourism-milestone-actions .btn{flex:1 1 150px;justify-content:center}
  .tourism-stage-actions{justify-content:stretch}
  .tourism-stage-actions .btn,.tourism-stage-actions a{flex:1 1 auto;text-align:center}
  .tourism-place-footer{align-items:flex-end}
  .tourism-itinerary-stop{grid-template-columns:32px minmax(0,1fr)}
  .tourism-stop-actions{grid-column:2;justify-content:flex-end}
  .tourism-stop-main label{align-items:flex-start;flex-direction:column}
  .tourism-quote-recap{grid-template-columns:1fr}
  .tourism-offer-card{grid-template-columns:1fr}
  .tourism-offer-media{min-height:190px;max-height:260px}
  .tourism-reserve-btn{width:100%}
  .tourism-suggestion{
    grid-template-columns:92px minmax(0,1fr);
    align-items:center;
    min-height:92px
  }
  .tourism-suggestion-media{min-height:92px}
  .tourism-suggestion-copy{padding:10px 10px 6px 0}
  .tourism-suggestion-add{grid-column:2;justify-self:start;margin:0 0 10px}
  .tourism-suggestions-heading{gap:10px}
  .tourism-auto-badge{align-self:flex-start}
}
@media(max-width:430px){
  .tourism-live-route-panel{top:78px;margin-inline:-2px}
  .tourism-live-route-panel:not(.is-mobile-expanded){padding:9px 10px}
  .tourism-live-route-panel:not(.is-mobile-expanded) .tourism-live-route-metrics{gap:7px}
  .tourism-live-route-panel:not(.is-mobile-expanded) .tourism-live-route-metrics span{display:none}
  .tourism-live-route-mobile-toggle{font-size:.66rem}
  .tourism-live-route-count{font-size:.62rem}
  .tourism-live-route-point{min-width:132px}
  .tourism-page{gap:15px}
  .tourism-hero{border-radius:18px}
  .tourism-hero h1{font-size:2.05rem}
  .tourism-builder-card,.tourism-catalog-section,.tourism-itinerary-card,.tourism-results-section{border-radius:16px;padding:14px}
  .tourism-map-panel{border-radius:16px;padding:10px}
  .tourism-map{height:245px}
  .tourism-place-copy{padding:12px}
  .tourism-place-footer{align-items:center}
  .tourism-external-result{align-items:flex-start}
  .tourism-external-badge{display:none}
  .tourism-itinerary-stop{grid-template-columns:30px minmax(0,1fr);gap:9px;padding:10px}
  .tourism-offer-body{padding:14px}
  .tourism-offer-head{flex-direction:column}
}


/* Phase 6 · Mi viaje */
.tourism-offer-flags{display:flex;gap:7px;flex-wrap:wrap;min-height:24px}
.trip-group-card{display:grid;gap:14px;margin:0 0 20px;padding:18px;border:1px solid #dbe5ef;border-radius:20px;background:#f9fbfd}
.trip-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:2px 2px 4px}
.trip-group-head h2{margin:4px 0 5px;font-size:1.08rem}
.trip-group-head p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.45}
.trip-group-list{margin:0}
.trip-complement-panel{border-color:#cfe0ee;background:linear-gradient(135deg,#fbfdff 0%,#f4f9fd 100%)}
.trip-complement-panel h3{margin:5px 0 7px}
.trip-complement-panel p{margin:0 0 14px;color:var(--muted);line-height:1.5}
.trip-complement-actions{display:flex;gap:8px;flex-wrap:wrap}

@media (max-width:720px){
  .trip-group-card{padding:13px;border-radius:16px}
  .trip-group-head{display:grid}
  .trip-group-head>.badge{justify-self:start}
  .trip-complement-actions{display:grid;grid-template-columns:1fr}
  .trip-complement-actions .btn{width:100%}
}


/* Phase 8 — consentimiento legal por mercado */
.tourism-terms-consent {
  margin: 18px 0;
  padding: 15px 17px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface-muted);
}

.tourism-terms-consent label {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  font-weight: 700;
  line-height: 1.45;
  cursor: pointer;
}

.tourism-terms-consent input {
  width: 18px;
  height: 18px;
  margin: 2px 0 0;
  accent-color: var(--primary-strong);
}

.tourism-terms-consent a {
  color: var(--primary-strong);
  text-underline-offset: 2px;
}

.tourism-terms-consent small {
  display: block;
  margin: 8px 0 0 30px;
  color: var(--muted);
  line-height: 1.45;
}

.tourism-terms-consent:has(input:checked) {
  border-color: #c7e8d7;
  background: #f6fcf8;
}

@media (max-width: 640px) {
  .tourism-terms-consent {
    padding: 13px 14px;
  }
}

@media (prefers-reduced-motion: reduce){
  .service-mode-card,
  .service-mode-card::before,
  .service-mode-visual,
  .service-mode-airport-plane,
  .service-mode-tourism-pin{transition:none}
  .tourism-map-inline{animation:none}
  .tourism-suggestions-spinner{animation:none}
  .tourism-milestone-overlay,
  .tourism-milestone-suggestion,
  .tourism-milestone-media img{animation:none}
  .tourism-place-card{
    opacity:1;
    transform:none;
    animation:none;
    transition:none
  }
  .tourism-place-media img{transition:none}
  .tourism-place-card:hover,
  .tourism-place-card:focus-within{transform:none}
  .tourism-place-card:hover .tourism-place-media img{transform:none}
}
