/* Stable text logo: hide the broken oversized smoking-mark SVG. */
.header-logo__img {
  display: none !important;
}

/* The favicon must stay in the browser tab, never inside the page header. */
.site-icon[src*="kituen_favi.svg"] {
	display: none !important;
}

.header-logo__link {
  align-items: center;
  display: inline-flex !important;
  text-decoration: none;
}

.tt-text-logo,
.header-logo__link::after {
  color: #000;
  font-size: clamp(24px, 3vw, 38px);
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1.2;
  white-space: nowrap;
}

.header-logo__link::after {
  content: "東京喫煙ナビ";
}

.header-logo__link:has(.tt-text-logo)::after {
  content: none;
}

a.categoryList[href^="https://night.tobacco.tokyo.jp"] {
  display: none !important;
}

/* Route widgets */
#nav_menu-5,
#nav_menu-8 {
  display: none !important;
}

#nav_menu-5 .widgettitle,
#nav_menu-8 .widgettitle,
.tt-subway-group-widget > .widgettitle,
.tt-metro-route-widget .widgettitle,
#tag_cloud-2 .widgettitle {
  padding: 0;
}

.tt-metro-route-widget {
  border-left: 4px solid var(--tt-route-color, #f25c8a);
}

.tt-subway-group-widget {
  border-left: 4px solid #243b6b;
}

.tt-subway-group-toei {
  border-left-color: #1499a6;
}

.tt-jr-group-widget {
  border-left-color: #168447;
}

.tt-subway-group-widget > .widgettitle {
  position: relative;
}

.tt-subway-group-widget > .widgettitle::before {
  align-items: center;
  background: #243b6b;
  border-radius: 50%;
  color: #fff;
  content: '\1F687';
  display: inline-flex;
  font-size: 14px;
  height: 25px;
  justify-content: center;
  left: 10px;
  line-height: 1;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 25px;
  z-index: 1;
}

.tt-subway-group-toei > .widgettitle::before {
  background: #1499a6;
}

.tt-jr-group-widget > .widgettitle::before {
  background: #168447;
  content: 'JR';
  font-family: Arial, sans-serif !important;
  font-size: 10px;
  font-weight: 800;
}

.tt-subway-group-widget > .widgettitle .tt-route-toggle {
  padding-left: 44px;
}

.tt-subway-group-routes {
  padding: 8px 0 2px 10px;
}

.tt-subway-group-routes .tt-metro-route-widget {
  margin-bottom: 8px;
}

/* Compact route badges matching the Yamanote/Chuo title icons. */
.tt-metro-route-widget .widgettitle {
  position: relative;
}

.tt-metro-route-widget .widgettitle::before {
  align-items: center;
  background: var(--tt-route-color, #f25c8a);
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px var(--tt-route-color, #f25c8a);
  color: #fff;
  content: attr(data-route-code);
  display: inline-flex;
  font-family: Arial, sans-serif !important;
  font-size: 11px;
  font-weight: 700;
  height: 21px;
  justify-content: center;
  left: 11px;
  line-height: 1;
  padding: 0;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 21px;
  z-index: 1;
}

.tt-metro-route-widget .tt-route-toggle {
  padding-left: 43px;
}

.tt-route-toggle {
  align-items: center;
  background: transparent;
  border: 0;
  color: inherit;
  cursor: pointer;
  display: flex;
  font: inherit;
  font-weight: inherit;
  justify-content: space-between;
  padding: 12px 14px;
  text-align: left;
  width: 100%;
}

.tt-route-toggle:focus-visible {
  outline: 3px solid rgba(242, 92, 138, 0.35);
  outline-offset: -3px;
}

.tt-route-icon {
  border-bottom: 2px solid currentColor;
  border-right: 2px solid currentColor;
  display: block;
  flex: 0 0 auto;
  height: 9px;
  margin-left: 10px;
  transform: rotate(45deg) translateY(-2px);
  transition: transform 0.2s ease;
  width: 9px;
}

.tt-route-open .tt-route-icon {
  transform: rotate(225deg) translate(-2px, -2px);
}

#nav_menu-5 [hidden],
#nav_menu-8 [hidden],
.tt-subway-group-widget [hidden],
.tt-metro-route-widget [hidden],
#tag_cloud-2 [hidden] {
  display: none !important;
}

/* Use a static profile link instead of the third-party X/Twitter widget. */
.tt-twitter-static-link {
  margin: 0;
  text-align: center;
}

.tt-twitter-static-link a {
  background: #222;
  border-radius: 999px;
  color: #fff;
  display: inline-block;
  font-weight: 700;
  margin: 12px 0;
  padding: 10px 20px;
}

.tt-twitter-static-link,
.widget:has(a[href*="twitter.com/TobaccoTokyo"]),
.widget:has(a[href*="x.com/TobaccoTokyo"]) {
  display: none !important;
}

/* Unified map of all currently published facilities. */
/*
 * The map section is inserted immediately after the hero at DOM ready.
 * Reserve the same space in the initial render so the article list does not
 * jump down when the map markup arrives. The selector stops matching as soon
 * as .tt-home-map is inserted, replacing this spacer in the same frame.
 */
body.home .header-image + #content::before {
  content: "";
  display: block;
  height: 710px;
}

.tt-unified-map {
  margin: 28px auto;
  max-width: 1180px;
  padding: 0 18px;
}

.tt-unified-map-title {
  font-size: 1.45rem;
  margin: 0 0 14px;
  text-align: center;
}

.tt-home-nearby-button {
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: min(100%, 620px);
  min-height: 56px;
  margin: 0 auto 20px;
  padding: 13px 20px;
  border: 0;
  border-radius: 999px;
  box-shadow: 0 8px 22px rgba(210, 48, 98, 0.24);
  color: #fff !important;
  background: linear-gradient(135deg, #e83d76, #c91f5d);
  font: inherit;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.4;
  text-shadow: 0 1px 1px rgba(99, 0, 34, 0.24);
  cursor: pointer;
}

.tt-home-nearby-button span {
  color: inherit !important;
}

.tt-home-nearby-button:not(:disabled) {
  display: flex;
}

.tt-home-nearby-button:disabled {
  display: flex;
  opacity: 0.68;
  cursor: wait;
}

.tt-unified-map-frame {
  background: #eef1f3;
  border: 0;
  display: block;
  height: 520px;
  overflow: hidden;
  position: relative;
  width: 100%;
}

.taxonomy-description .tt-unified-map-frame {
  height: 480px;
}

.tt-station-map-top {
  margin-top: 0;
  max-width: none;
  padding: 0;
}

.tt-archive-map-top {
  margin: 0 0 24px;
}

.tt-archive-map-top .tt-unified-map-frame,
.tt-archive-map-top .tt-map-placeholder {
  height: 520px;
}

.tt-station-map-top .tt-unified-map-frame,
.tt-station-map-top .tt-map-placeholder {
  height: 460px;
}

.tt-detail-map {
  margin: 30px 0;
  padding: 0;
}

.tt-detail-map .tt-unified-map-frame,
.tt-detail-map .tt-map-placeholder {
  height: 420px;
}

.tt-map-placeholder {
  align-items: center;
  background-color: #f7f8f9;
  background-image:
    linear-gradient(rgba(220, 225, 229, 0.55) 1px, transparent 1px),
    linear-gradient(90deg, rgba(220, 225, 229, 0.55) 1px, transparent 1px);
  background-size: 34px 34px;
  border: 1px solid #e1e4e7;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  height: 520px;
  justify-content: center;
  overflow: hidden;
  position: relative;
  width: 100%;
}

.taxonomy-description .tt-map-placeholder {
  height: 480px;
}

.tt-map-load-button {
  background: #f25c8a;
  border: 0;
  border-radius: 999px;
  box-shadow: 0 7px 18px rgba(184, 45, 88, 0.2);
  color: #fff;
  cursor: pointer;
  font-size: 1rem;
  font-weight: 700;
  min-width: 180px;
  padding: 14px 24px;
}

.tt-map-load-button:hover {
  background: #df4778;
}

.tt-map-load-button:focus-visible {
  outline: 3px solid rgba(242, 92, 138, 0.35);
  outline-offset: 3px;
}

.tt-map-load-button:disabled {
  cursor: wait;
  opacity: 0.8;
}

.tt-map-load-note {
  color: #667078;
  font-size: 0.84rem;
  margin-top: 11px;
}

.tt-map-error .tt-map-load-note {
  color: #a91f55;
  font-weight: 700;
}

.tt-map-legend {
  background: rgba(255, 255, 255, 0.94);
  border-radius: 5px;
  bottom: 28px;
  box-shadow: 0 1px 5px rgba(0, 0, 0, 0.18);
  display: flex;
  flex-wrap: wrap;
  font-size: 11px;
  gap: 7px 10px;
  left: 10px;
  max-width: calc(100% - 65px);
  padding: 7px 9px;
  position: absolute;
  z-index: 2;
}

.tt-map-legend span {
  align-items: center;
  display: inline-flex;
  white-space: nowrap;
}

.tt-map-dot {
  border: 1px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.16);
  display: inline-block;
  height: 9px;
  margin-right: 4px;
  width: 9px;
}

.tt-map-dot-smoking {
  background: #4e342e;
}

.tt-map-dot-cafe {
  background: #ff5252;
}

.tt-map-dot-restaurant {
  background: #f57c00;
}

.tt-map-dot-shop {
  background: #558b2f;
}

.tt-map-dot-convenience {
  background: #1976d2;
}

.tt-map-filter-restaurant-icon,
.tt-map-filter-convenience-icon {
  align-items: center;
  display: inline-flex;
  font-size: 23px;
  justify-content: center;
  line-height: 1;
}

.tt-map-popup {
  color: #30343a;
  font-size: 13px;
  line-height: 1.5;
  min-width: 190px;
}

.tt-map-popup-title {
  display: block;
  font-size: 14px;
  line-height: 1.4;
  margin-bottom: 5px;
}

.tt-map-popup-category {
  color: #d94275;
  font-size: 12px;
  font-weight: 700;
  margin-bottom: 4px;
}

.tt-map-popup-address {
  color: #626b72;
  margin-bottom: 9px;
}

.tt-map-popup-link {
  background: #f25c8a;
  border-radius: 999px;
  color: #fff !important;
  display: inline-block;
  font-weight: 700;
  padding: 7px 13px;
  text-decoration: none !important;
}

.tt-map-popup-link:hover {
  background: #df4778;
}

.tt-unified-map-frame .maplibregl-popup-content {
  border-radius: 7px;
  padding: 14px;
}

.tt-location-control button {
  align-items: center;
  background: #fff !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
  display: flex;
  gap: 5px;
  height: 34px !important;
  justify-content: center;
  margin: 0 !important;
  min-height: 34px !important;
  min-width: 76px !important;
  padding: 0 8px !important;
  width: auto !important;
}

.tt-location-icon {
  border: 2px solid #4b5560;
  border-radius: 50%;
  box-sizing: border-box;
  display: block;
  height: 14px;
  position: relative;
  width: 14px;
}

.tt-location-icon::after {
  background: #4b5560;
  border: 2px solid #fff;
  border-radius: 50%;
  box-sizing: border-box;
  content: '';
  height: 8px;
  left: 1px;
  position: absolute;
  top: 1px;
  width: 8px;
}

.tt-location-label {
  color: #343a40;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}

.tt-location-loading .tt-location-icon {
  animation: tt-location-pulse 0.9s ease-in-out infinite alternate;
}

.tt-current-location-marker {
  background: #1677ff;
  border: 3px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.32), 0 2px 7px rgba(0, 0, 0, 0.3);
  height: 15px;
  width: 15px;
}

.tt-map-location-status {
  background: rgba(32, 39, 45, 0.92);
  border-radius: 5px;
  color: #fff;
  font-size: 12px;
  left: 50%;
  max-width: calc(100% - 32px);
  padding: 8px 12px;
  position: absolute;
  text-align: center;
  top: 12px;
  transform: translateX(-50%);
  z-index: 4;
}

@keyframes tt-location-pulse {
  from { opacity: 0.45; }
  to { opacity: 1; }
}

/* Facility cards: image, title, nearest access and tobacco labels only. */
.tt-facility-card .sidelong_tag__wrap,
.tt-facility-card > .cat-name {
  display: none !important;
}

.tt-facility-card .cardtype__article-info {
  min-height: 0;
}

.tt-facility-card .cardtype__article-info h2 {
  display: -webkit-box;
  min-height: 2.8em;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.tt-business-type-chip,
.tt-business-type {
  background: #fff0f5;
  border: 1px solid #ef9eb8;
  border-radius: 999px;
  color: #9b3156;
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.4;
  padding: 2px 9px;
}

.tt-facility-card .tt-business-type-chip {
  margin: 0 0 6px;
}

.tt-facility-card .sidelong_access__wrap {
  display: block;
  margin-bottom: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tt-facility-card .smoking__genre {
  display: inline-block;
  margin: 3px 4px 0 0;
}

.tt-facility-card .tt-tobacco-fallback {
  background: #f25c8a;
  color: #fff;
}

.tt-facility-placeholder,
.tt-detail-placeholder {
  align-items: center;
  background: #f4f5f6;
  color: #56606a;
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: 0;
  text-align: center;
}

.tt-facility-placeholder {
  aspect-ratio: 26 / 15;
  width: 100%;
}

.tt-detail-placeholder {
  min-height: 300px;
  width: 100%;
}

.tt-facility-placeholder-icon {
  display: block;
  margin-bottom: 10px;
  width: 54px;
}

.tt-facility-placeholder-icon svg {
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 3;
  width: 100%;
}

.tt-facility-placeholder-label {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
}

.tt-facility-placeholder-restaurant,
.tt-detail-placeholder {
  background: #fff4ed;
  color: #a65016;
}

.tt-facility-placeholder-cafe {
  background: #fff1f5;
  color: #a72f58;
}

.tt-facility-placeholder-smoking {
  background: #f2efee;
  color: #4e342e;
}

.tt-facility-placeholder-shop {
  background: #f2f7ee;
  color: #456e26;
}

/* Required facility details for the new restaurant category. */
.tt-restaurant-facility-info {
  margin: 0 0 28px;
  padding: 20px;
  border: 1px solid #f3b5c8;
  border-radius: 10px;
  background: #fff8fb;
}

.tt-restaurant-facility-info h2 {
  margin: 0 0 14px;
  font-size: 1.25rem;
}

.tt-restaurant-facility-info dl {
  display: grid;
  grid-template-columns: minmax(7em, auto) 1fr;
  gap: 10px 16px;
  margin: 0;
}

.tt-restaurant-facility-info dt {
  font-weight: 700;
}

.tt-restaurant-facility-info dd {
  margin: 0;
}

.tt-restaurant-facility-info .link__map {
  display: inline-block;
  margin-left: .5em;
}

.tt-generic-photo-note {
  margin: 14px 0 0;
  color: #666;
  font-size: .82rem;
}

@media (max-width: 600px) {
	.tt-location-control button {
		min-width: 70px !important;
		padding: 0 6px !important;
	}

	.tt-location-label {
		font-size: 11px;
	}

	.tt-detail-placeholder {
		min-height: 210px;
	}
  .tt-restaurant-facility-info {
    padding: 16px;
  }

  .tt-restaurant-facility-info dl {
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .tt-restaurant-facility-info dd + dt {
    margin-top: 8px;
  }
}

/* Restored sidebar banner */
.tobacco-tokyo-fasoul-banner {
  position: relative;
  margin-bottom: 24px;
}

.tt-ad-label {
  position: absolute;
  left: 7px;
  top: 7px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 2px 7px;
  border: 1px solid rgba(255, 255, 255, 0.75);
  border-radius: 4px;
  color: #fff;
  background: rgba(0, 0, 0, 0.72);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.06em;
}

.tobacco-tokyo-fasoul-banner a,
.tobacco-tokyo-fasoul-banner picture,
.tobacco-tokyo-fasoul-banner img {
  display: block;
  width: 100%;
}

.tobacco-tokyo-fasoul-banner img {
  height: auto;
}

/* Home map category filters, moved from the old archive navigation. */
.tt-map-filter-controls {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 0 0 14px;
}

.tt-map-filter-controls .categoryList {
  align-items: center;
  background: #fff;
  border: 1px solid #dfe3e6;
  border-radius: 7px;
  box-shadow: none;
  color: #30343a;
  cursor: pointer;
  display: flex;
  flex-direction: row;
  gap: 8px;
  justify-content: center;
  margin: 0;
  min-height: 52px;
  padding: 8px 10px;
  width: auto;
}

.tt-map-filter-controls .categoryList:hover,
.tt-map-filter-controls .categoryList.is-active {
  background: #fff0f5;
  border-color: #f25c8a;
  color: #b82d58;
}

.tt-map-filter-controls .categoryListImg,
.tt-map-filter-all-icon {
  display: block;
  flex: 0 0 auto;
  height: 25px;
  object-fit: contain;
  width: 25px;
}

.tt-map-filter-emoji {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 25px;
  width: 25px;
  height: 25px;
  font-size: 19px;
  line-height: 1;
}

.tt-map-filter-all-icon {
  align-items: center;
  border: 2px solid currentColor;
  border-radius: 50%;
  color: #f25c8a;
  display: inline-flex;
  font-size: 11px;
  justify-content: center;
}

.tt-map-filter-controls .categoryListTit {
  font-size: 13px;
  font-weight: 700;
  line-height: 1.35;
  margin: 0;
}

.tt-home-columns-title {
  font-size: 1.4rem;
  margin: 28px 0 16px;
  text-align: center;
}

.tt-home-columns {
  display: block !important;
}

.tt-home-columns-more {
  display: table;
  margin: 20px auto 32px;
  padding: 10px 22px;
  border: 1px solid #e95d85;
  border-radius: 999px;
  color: #b82d58;
  background: #fff;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
}

#tag_cloud-2 {
  display: none !important;
}

.tt-archive-station-filter {
  margin-top: 18px;
}

.tt-nearby-filter-button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  width: 100%;
  min-height: 48px;
  margin: 0 0 14px;
  padding: 10px 15px;
  border: 0;
  border-radius: 8px;
  color: #fff;
  background: #e95d85;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.tt-nearby-filter-button:disabled {
  opacity: 0.78;
  cursor: wait;
}

.tt-archive-route-groups {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.tt-archive-route-group {
  margin: 0 !important;
  border: 1px solid #e4e6e8 !important;
  border-radius: 8px !important;
  overflow: visible !important;
}

.tt-archive-route-group > .widgettitle {
  margin: 0 !important;
}

.tt-archive-route-group .tt-subway-group-routes {
  max-height: 430px;
  overflow-y: auto;
  padding: 8px;
  background: #fff;
}

.tt-nearby-results {
  margin: 0 0 24px;
  padding: 20px;
  border: 1px solid #f1ced9;
  border-radius: 10px;
  background: #fff;
}

.tt-nearby-results h2 {
  margin: 0 0 14px;
  font-size: 1.25rem;
}

.tt-nearby-map {
  margin: 0 0 20px;
  padding: 0;
}

.tt-nearby-map .tt-unified-map-frame,
.tt-nearby-map .tt-map-placeholder {
  height: 430px;
}

.tt-nearby-results__list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tt-nearby-results__list a {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 11px 13px;
  border: 1px solid #eceff1;
  border-radius: 7px;
  color: #222;
  background: #fff;
  text-decoration: none;
}

.tt-nearby-results__list a:hover {
  border-color: #e95d85;
  background: #fff7fa;
}

.tt-nearby-results__list span {
  color: #667078;
  font-size: 12px;
}

.tt-nearby-results__restore {
  display: table;
  margin: 16px auto 0;
  padding: 8px 16px;
  border: 1px solid #c7cbd0;
  border-radius: 999px;
  color: #444;
  background: #fff;
  font: inherit;
  font-size: 13px;
  cursor: pointer;
}

body.tt-nearby-active #main > .cardtype,
body.tt-nearby-active #main > .pagination {
  display: none !important;
}

.tt-mobile-menu-open,
.tt-mobile-menu {
  display: none;
}

@media (max-width: 767px) {
  body.tt-facility-detail .prnx_box {
    display: none !important;
  }

  .header {
    position: relative;
  }

  .header-logo {
    align-items: center;
    display: flex !important;
    height: 62px;
    justify-content: center;
    margin: 0 48px !important;
    padding: 0 !important;
    width: auto !important;
  }

  .header-logo__link {
    align-items: center;
    height: 62px;
    justify-content: center;
    margin: 0 auto !important;
    padding: 0 !important;
    transform: none !important;
  }

  .tt-text-logo,
  .header-logo__link::after {
    font-size: 26px;
    line-height: 1;
  }

  .header-search {
    height: 62px !important;
    position: absolute !important;
    right: 0 !important;
    top: 0 !important;
    width: 48px !important;
  }

  .tt-mobile-menu-open {
    position: fixed;
    left: 6px;
    top: 7px;
    z-index: 100000;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    color: #222;
    background: rgba(255, 255, 255, 0.94);
    cursor: pointer;
  }

  body.admin-bar .tt-mobile-menu-open {
    top: 53px;
  }

  .tt-mobile-menu-open__icon {
    display: grid;
    gap: 5px;
    width: 22px;
  }

  .tt-mobile-menu-open__icon i {
    display: block;
    height: 2px;
    border-radius: 2px;
    background: currentColor;
  }

  .tt-mobile-menu:not([hidden]) {
    position: fixed;
    inset: 0;
    z-index: 100004;
    display: block;
  }

  .tt-mobile-menu__backdrop {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: rgba(0, 0, 0, 0.5);
  }

  .tt-mobile-menu__panel {
    position: absolute;
    inset: 0 auto 0 0;
    width: min(88vw, 370px);
    padding: 0 14px calc(24px + env(safe-area-inset-bottom, 0px));
    overflow-y: auto;
    color: #222;
    background: #fff;
    box-shadow: 6px 0 28px rgba(0, 0, 0, 0.24);
  }

  .tt-mobile-menu__header {
    position: sticky;
    top: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 62px;
    border-bottom: 1px solid #eceff1;
    background: #fff;
  }

  .tt-mobile-menu__header strong {
    font-size: 18px;
  }

  .tt-mobile-menu__close {
    width: 42px;
    height: 42px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    color: #555;
    background: #f3f4f5;
    font: inherit;
    font-size: 27px;
    line-height: 40px;
    cursor: pointer;
  }

  .tt-mobile-menu__primary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    padding: 16px 0;
  }

  .tt-mobile-menu__primary a,
  .tt-mobile-menu__secondary a {
    display: flex;
    align-items: center;
    min-height: 43px;
    padding: 8px 11px;
    border: 1px solid #e5e7e9;
    border-radius: 7px;
    color: #222;
    background: #fff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
  }

  .tt-mobile-menu__routes .tt-subway-group-widget {
    margin: 0 0 10px !important;
  }

  .tt-mobile-menu__routes .tt-subway-group-routes {
    max-height: none;
  }

  .tt-mobile-menu__routes:empty {
    display: none;
  }

  .tt-home-route-finder {
    margin: 24px 0 28px;
    padding: 20px 14px 14px;
    border: 1px solid #eceff1;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 4px 16px rgba(30, 34, 40, 0.08);
  }

  .tt-home-route-finder__title {
    margin: 0 !important;
    color: #222;
    font-size: 24px !important;
    font-weight: 800;
    line-height: 1.35;
    text-align: center;
  }

  .tt-home-route-finder__lead {
    margin: 6px 0 15px;
    color: #666;
    font-size: 13px;
    line-height: 1.5;
    text-align: center;
  }

  .tt-home-route-finder__groups > .tt-subway-group-widget {
    margin: 0 0 10px !important;
    border-top: 1px solid #e5e7e9;
    border-right: 1px solid #e5e7e9;
    border-bottom: 1px solid #e5e7e9;
    border-radius: 7px;
    background: #fff;
  }

  .tt-home-route-finder__groups > .tt-subway-group-widget:last-child {
    margin-bottom: 0 !important;
  }

  .tt-home-route-finder__groups .tt-subway-group-routes {
    max-height: none;
  }

  .tt-mobile-menu__secondary {
    display: grid;
    gap: 7px;
    padding-top: 8px;
  }

  html.tt-mobile-menu-opened {
    overflow: hidden;
  }

  body.home .header-image + #content::before {
    height: 516px;
  }

  .tt-route-toggle {
    padding: 11px 12px;
  }

  .tt-metro-route-widget .widgettitle::before {
    left: 14px;
  }

  .tt-subway-group-widget > .widgettitle::before {
    left: 13px;
  }

  .tt-subway-group-widget > .widgettitle .tt-route-toggle {
    padding-left: 49px;
  }

  .tt-metro-route-widget .tt-route-toggle {
    padding-left: 48px;
  }

  #tag_cloud-2 .widgettitle {
    position: relative;
  }

  #tag_cloud-2 .widgettitle::before {
    left: 15px !important;
    line-height: 1 !important;
    margin: 0 !important;
    position: absolute !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 20px;
    z-index: 1;
  }

  #tag_cloud-2 .tt-route-toggle {
    align-items: center;
    padding-left: 48px;
  }

  #tag_cloud-2 .tt-route-toggle > span:first-child,
  .tt-subway-group-widget > .widgettitle .tt-route-toggle > span:first-child,
  .tt-metro-route-widget .tt-route-toggle > span:first-child {
    min-width: 0;
    white-space: nowrap;
  }

  .tt-facility-card .cardtype__article-info h2 {
    min-height: 0;
  }

  .tt-unified-map {
    margin: 20px auto;
    padding: 0 12px;
  }

  .tt-station-map-top {
    margin-top: 0;
    padding: 0;
  }

  .tt-station-map-top .tt-unified-map-title {
    font-size: 1.15rem;
    padding: 0 12px;
  }

  .tt-map-filter-controls {
    gap: 8px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0 0 12px;
  }

  .tt-map-filter-controls .categoryList {
    min-height: 46px;
    padding: 7px 8px;
  }

  .tt-map-filter-controls .categoryListImg,
  .tt-map-filter-all-icon {
    height: 22px;
    width: 22px;
  }

  .tt-map-filter-emoji {
    flex-basis: 22px;
    width: 22px;
    height: 22px;
    font-size: 17px;
  }

  .tobacco-tokyo-fasoul-banner {
    margin: 0 auto 18px;
    max-width: 420px;
  }

  .tt-fasoul-inline-mobile {
    width: calc(100% - 24px);
    margin: 4px auto 18px;
    border: 0 !important;
  }

  .sidebar .widget_search {
    display: none !important;
  }

  body.home .tt-home-columns .cardtype {
    display: grid;
    gap: 10px;
  }

  body.home .tt-home-columns .cardtype__article {
    width: 100% !important;
    min-height: 0;
    margin: 0 !important;
  }

  body.home .tt-home-columns .cardtype__article:nth-of-type(n+4) {
    display: none !important;
  }

  body.home .tt-home-columns .cardtype__link {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr);
    min-height: 78px;
  }

  body.home .tt-home-columns .cardtype__img {
    height: 78px !important;
    min-height: 78px !important;
    margin: 0 !important;
    overflow: hidden;
  }

  body.home .tt-home-columns .cardtype__img img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 78px !important;
    max-height: none !important;
    object-fit: cover !important;
    object-position: center !important;
  }

  body.home .tt-home-columns .cardtype__article-info {
    padding: 8px 9px !important;
  }

  body.home .tt-home-columns .cardtype__article-info h2 {
    display: -webkit-box;
    margin: 0;
    overflow: hidden;
    font-size: 13px !important;
    line-height: 1.45;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
  }

  body.home .tt-home-columns .cardtype_add_article__wrap,
  body.home .tt-home-columns .cat-name {
    display: none !important;
  }

  .tt-archive-route-groups {
    grid-template-columns: 1fr;
  }

  .tt-archive-route-group .tt-subway-group-routes {
    max-height: none;
  }

  .tt-nearby-results {
    margin-right: 0;
    margin-left: 0;
    padding: 15px 12px;
  }

  .tt-home-nearby-button {
    gap: 8px;
    min-height: 58px;
    margin-bottom: 16px;
    padding: 11px 10px;
    font-size: 17px;
    font-weight: 800;
    line-height: 1.4;
  }

  .tt-nearby-map .tt-unified-map-frame,
  .tt-nearby-map .tt-map-placeholder {
    height: 380px;
  }

  .footer .widget_recent_entries,
  .footer .widget_recent_entries ~ .ft_widget {
    display: none !important;
  }

  .tobacco-tokyo-fasoul-banner img {
    aspect-ratio: 3 / 1;
    object-fit: cover;
  }

  .tt-unified-map-frame,
  .taxonomy-description .tt-unified-map-frame,
  .tt-map-placeholder,
  .taxonomy-description .tt-map-placeholder {
    height: 420px;
  }

  .tt-map-legend {
    bottom: 24px;
    gap: 5px 8px;
    left: 8px;
    padding: 6px 7px;
  }
}

/* Mobile Home Screen install entry point. */
.tt-pwa-install,
.tt-pwa-install-guide {
  display: none;
}

@media (max-width: 767px) {
  .tt-pwa-install:not([hidden]) {
    position: fixed;
    right: 12px;
    bottom: calc(14px + env(safe-area-inset-bottom, 0px));
    z-index: 100000;
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 5px;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.97);
    box-shadow: 0 5px 20px rgba(0, 0, 0, 0.18);
  }

  .tt-pwa-install__action,
  .tt-pwa-install__dismiss,
  .tt-pwa-install-guide__close,
  .tt-pwa-install-guide__done {
    appearance: none;
    border: 0;
    font: inherit;
    cursor: pointer;
  }

  .tt-pwa-install__action {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 4px 8px 4px 4px;
    color: #222;
    background: transparent;
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
  }

  .tt-pwa-install__action img {
    width: 32px;
    height: 32px;
    border-radius: 8px;
  }

  .tt-pwa-install__dismiss {
    width: 34px;
    height: 34px;
    padding: 0;
    border-radius: 50%;
    color: #777;
    background: transparent;
    font-size: 23px;
    line-height: 32px;
  }

  .tt-pwa-install-guide:not([hidden]) {
    position: fixed;
    inset: 0;
    z-index: 100001;
    display: flex;
    align-items: flex-end;
    justify-content: center;
  }

  .tt-pwa-install-guide__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.52);
  }

  .tt-pwa-install-guide__panel {
    position: relative;
    width: min(100% - 24px, 430px);
    margin: 0 12px calc(12px + env(safe-area-inset-bottom, 0px));
    padding: 26px 22px 20px;
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 10px 45px rgba(0, 0, 0, 0.3);
    text-align: center;
  }

  .tt-pwa-install-guide__panel > img {
    width: 64px;
    height: 64px;
    border-radius: 15px;
  }

  .tt-pwa-install-guide__panel h2 {
    margin: 14px 0 10px;
    color: #222;
    font-size: 17px;
    line-height: 1.45;
  }

  .tt-pwa-install-guide__panel p {
    margin: 0 0 18px;
    color: #555;
    font-size: 14px;
    line-height: 1.8;
  }

  .tt-pwa-install-guide__close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 38px;
    height: 38px;
    padding: 0;
    border-radius: 50%;
    color: #666;
    background: #f3f3f3;
    font-size: 25px;
    line-height: 36px;
  }

  .tt-pwa-install-guide__done {
    width: 100%;
    min-height: 46px;
    border-radius: 10px;
    color: #fff;
    background: #e95d85;
    font-size: 15px;
    font-weight: 700;
  }

  html.tt-pwa-guide-open {
    overflow: hidden;
  }
}
