/* =========================================================================
   Travel World Map Manager — Frontend stylesheet.
   Mirrors the design preview 1:1 so the WordPress output is identical.
   Key behaviour: the filter column scrolls as ONE container so the layout
   adapts to any page height regardless of how many filters/items there are.
   ========================================================================= */

:root {
	--twm-primary: #0f172a;
	--twm-accent:  #2563eb;
	--twm-pin:     #ef4444;
	--twm-bg:      #f5f6f8;
	--twm-card:    #ffffff;
	--twm-line:    #e6e8ef;
	--twm-text:    #0f172a;
	--twm-muted:   #64748b;
	--twm-pin-size: 36px;
	--twm-chip-max: 320px;
}

.twm-app, .twm-app *, .twm-modal, .twm-modal * { box-sizing: border-box; }

/* ---------- App shell -------------------------------------------------- */
.twm-app {
	--twm-h: 640px;
	display: grid;
	gap: 14px;
	padding: 14px;
	background: var(--twm-bg);
	color: var(--twm-text);
	border-radius: 18px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	/* Fixed total height so the filter column knows how tall to be. */
	height: var(--twm-h);
	position: relative;
}
.twm-app.height-auto { height:100dvh; min-height:520px; }
.elementor-widget-shortcode:has(.twm-app.height-auto),
.elementor-widget-shortcode:has(.twm-app.height-auto) > .elementor-widget-container { margin-top:0!important; padding-top:0!important; }
.twm-app.corners-square { border-radius:0; }
.twm-app.pos-left   { grid-template-columns: 300px 1fr; }
.twm-app.pos-right  { grid-template-columns: 1fr 300px; }
.twm-app.pos-right  .twm-filters { order: 2; }
.twm-app.pos-top    { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
.twm-app.pos-bottom { grid-template-columns: 1fr; grid-template-rows: 1fr auto; }
.twm-app.pos-bottom .twm-filters { order: 2; }
.twm-app.pos-none   .twm-filters { display: none; }
.twm-app.pos-none   { grid-template-columns: 1fr; }

@media (min-width: 1100px) { .twm-app { --twm-h: min(75vh, 720px); } }
@media (max-width: 900px)  {
	.twm-app.pos-left,
	.twm-app.pos-right { grid-template-columns: 1fr; padding:8px; gap:0; }
	.twm-app.height-fixed { height:auto; }
	.twm-app.height-auto { height:100dvh; min-height:560px; grid-template-rows:minmax(0,1fr); }
	.twm-app .twm-filters { position:absolute; z-index:2100; inset:0 auto 0 0; width:min(88vw,370px); max-height:none; border-radius:0 16px 16px 0; transform:translateX(-105%); transition:transform .25s ease; }
	.twm-app.mobile-filters-open .twm-filters { transform:translateX(0); }
	.twm-app .twm-main { height:100%; gap:7px; }
	.twm-app .twm-canvas { border-radius:12px; }
}
.twm-filter-backdrop { display:none; }
@media(max-width:900px){.twm-filter-backdrop{position:absolute;z-index:2050;inset:0;border:0;background:rgba(15,23,42,.42);padding:0}.twm-app.mobile-filters-open .twm-filter-backdrop{display:block}}
.twm-loading { position:absolute; z-index:1000; inset:0; display:flex; align-items:center; justify-content:center; gap:10px; background:rgba(247,248,251,.9); color:#334155; font-weight:650; }
.twm-loading.is-hidden { display:none; }.twm-spinner { width:22px;height:22px;border:3px solid #cbd5e1;border-top-color:var(--twm-primary);border-radius:50%;animation:twm-spin .8s linear infinite; }@keyframes twm-spin{to{transform:rotate(360deg)}}

/* ---------- Filter column (single scroll) ------------------------------ */
.twm-filters {
	background: var(--twm-card);
	border: 1px solid var(--twm-line);
	border-radius: 16px;
	padding: 14px;
	box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 8px 24px rgba(15,23,42,.05);
	display: flex;
	flex-direction: column;
	gap: 14px;
	min-width: 0;
	min-height: 0;
	/* The ENTIRE filter column scrolls as one when the page is too short. */
	overflow-y: auto;
	overflow-x: hidden;
	overscroll-behavior: contain;
}
.twm-filters::-webkit-scrollbar      { width: 8px; }
.twm-filters::-webkit-scrollbar-thumb{ background: rgba(15,23,42,.18); border-radius: 8px; }
.twm-filters::-webkit-scrollbar-thumb:hover { background: rgba(15,23,42,.32); }

/* Search box. */
.twm-search { position: relative; }
.twm-search input {
	width: 100%;
	border: 1px solid var(--twm-line);
	border-radius: 999px;
	padding: 10px 14px 10px 38px;
	font-size: 14px;
	background: #fff;
	transition: border-color .15s;
}
.twm-search input:focus { outline: none; border-color: var(--twm-accent); }
.twm-search svg {
	position: absolute; left: 13px; top: 50%;
	transform: translateY(-50%); color: #94a3b8;
	width: 16px; height: 16px;
}

/* Filter group + collapsible title. */
.twm-fg__title {
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: .08em;
	color: var(--twm-muted);
	font-weight: 700;
	margin-bottom: 6px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	cursor: pointer;
	user-select: none;
}
.twm-fg__title::after {
	content: "";
	width: 8px; height: 8px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform .2s ease;
	margin-right: 2px;
	opacity: .55;
}
.twm-fg.is-collapsed .twm-fg__title::after          { transform: rotate(-45deg); }
.twm-fg.is-collapsed > .twm-chips,
.twm-fg.is-collapsed > .twm-filter-select           { display: none; }
.twm-fg.is-collapsed > .twm-fg__title               { margin-bottom: 0; }

/* Chips row. Inside the global filter scroll we keep wrapping freely. */
.twm-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	padding-right: 2px;
}

.twm-filter-select {
	width: 100%;
	padding: 8px 12px;
	border: 1px solid var(--twm-line);
	border-radius: 10px;
	font-size: 13px;
	background: #fff;
	color: #334155;
	cursor: pointer;
}
.twm-filter-select:focus { outline: none; border-color: var(--twm-accent); }

/* Continent block grouping (Country filter). */
.twm-chips.twm-by-continent           { display: block; }
.twm-continent-block                  { display: block; width: 100%; margin: 0 0 14px; }
.twm-continent-block:last-child       { margin-bottom: 0; }
.twm-continent-block .twm-chips       { display: flex; flex-direction: row; flex-wrap: wrap; gap: 8px; padding: 4px 0 4px 14px; }
.twm-continent-title {
	font-size: 10.5px;
	text-transform: uppercase;
	letter-spacing: .08em;
	color: var(--twm-muted);
	font-weight: 700;
	margin: 6px 0 4px;
	cursor: pointer;
	user-select: none;
	display: flex;
	align-items: center;
	gap: 6px;
}
.twm-continent-block:first-child .twm-continent-title { margin-top: 0; }
.twm-continent-title::before {
	content: "";
	width: 7px; height: 7px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform .2s ease;
	opacity: .55;
}
.twm-continent-block.is-collapsed .twm-continent-title::before { transform: rotate(-45deg); }
.twm-continent-block.is-collapsed > .twm-chips                 { display: none; }

/* Individual chip. */
.twm-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 11px 6px 8px;
	border: 1px solid var(--twm-line);
	background: #fff;
	color: #334155;
	border-radius: 999px;
	font-size: 12.5px;
	line-height: 1;
	cursor: pointer;
	transition: all .15s;
}
.twm-chip__icon       { width: 14px; height: 14px; display: inline-flex; align-items: center; justify-content: center; }
.twm-chip__icon svg   { width: 14px; height: 14px; }
.twm-chip[aria-pressed="true"] {
	background: var(--twm-color, var(--twm-primary));
	color: #fff;
	border-color: var(--twm-color, var(--twm-primary));
}
.twm-chip[aria-pressed="true"] .twm-chip__icon          { color: #fff; }
.twm-chip:not([aria-pressed="true"]) .twm-chip__icon    { color: var(--twm-color, #64748b); }
.twm-chip:hover { transform: translateY(-1px); }

/* Statistics. */
.twm-stats {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	margin-top: 4px;
}
.twm-stat        { background: #f8fafc; border: 1px solid var(--twm-line); border-radius: 12px; padding: 10px 12px; }
.twm-stat__num   { font-size: 20px; font-weight: 700; color: var(--twm-text); line-height: 1; }
.twm-stat__label { font-size: 11px; color: var(--twm-muted); margin-top: 4px; text-transform: uppercase; letter-spacing: .05em; }
.twm-world-progress{margin-top:10px}.twm-world-progress>div{display:flex;justify-content:space-between;font-size:12px;font-weight:700;color:#475569;margin-bottom:6px}.twm-world-progress i{display:block;height:9px;background:#e2e8f0;border-radius:99px;overflow:hidden}.twm-world-progress b{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--twm-primary),#22c55e);transition:width .5s ease}
.twm-filter-collapse{position:absolute!important;display:flex!important;align-items:center;justify-content:center;z-index:2300;left:313px;top:96px;transform:none;width:22px;height:44px;border:1px solid #cbd5e1;border-radius:0 8px 8px 0;background:#fff;color:#334155;font-size:18px;cursor:pointer;box-shadow:3px 2px 10px rgba(15,23,42,.14);transition:opacity .2s,left .2s,right .2s}.twm-filter-collapse:hover,.twm-filter-collapse:focus-visible{opacity:1!important}.twm-app.filters-collapsed.pos-left{grid-template-columns:0 1fr}.twm-app.filters-collapsed.pos-left>.twm-filters{opacity:0;pointer-events:none;overflow:hidden;padding:0;border:0}.twm-app.filters-collapsed .twm-filter-collapse{left:0;transform:none;opacity:.14}
.twm-app.pos-right .twm-filter-collapse{left:auto;right:313px;border-radius:10px 0 0 10px}.twm-app.filters-collapsed.pos-right{grid-template-columns:1fr 0}.twm-app.filters-collapsed.pos-right>.twm-filters{opacity:0;pointer-events:none;overflow:hidden;padding:0;border:0}.twm-app.filters-collapsed.pos-right .twm-filter-collapse{left:auto;right:0}.twm-app.pos-top .twm-filter-collapse,.twm-app.pos-bottom .twm-filter-collapse,.twm-app.pos-none .twm-filter-collapse{display:none!important}
@media(max-width:900px){.twm-filter-collapse{display:none!important}}
.twm-place-submit{max-width:980px;margin:24px auto;padding:clamp(18px,3vw,34px);background:#fff;border:1px solid #e2e8f0;border-radius:18px;box-shadow:0 18px 50px rgba(15,23,42,.08);color:#0f172a}.twm-place-submit h2{margin:0 0 22px}.twm-submit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.twm-submit-grid label{display:flex;flex-direction:column;gap:7px;font-weight:700}.twm-submit-grid label.wide{grid-column:1/-1}.twm-submit-grid input,.twm-submit-grid select,.twm-submit-grid textarea{width:100%;min-height:46px;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;font:inherit;background:#fff}.twm-submit-grid textarea{resize:vertical}.twm-submit-grid small{font-weight:400;color:#64748b}.twm-submit-button{margin-top:20px;min-height:48px;padding:0 24px;border:0;border-radius:11px;background:var(--twm-primary,#111827);color:#fff;font-weight:800;cursor:pointer}.twm-submit-notice{max-width:980px;margin:18px auto;padding:14px 18px;border-radius:10px;background:#eff6ff;color:#1e40af}.twm-submit-notice.is-success{background:#ecfdf5;color:#166534}.twm-submit-notice.is-error{background:#fef2f2;color:#991b1b}@media(max-width:680px){.twm-place-submit{margin:8px;padding:16px;border-radius:12px}.twm-submit-grid{grid-template-columns:1fr}.twm-submit-grid label.wide{grid-column:auto}.twm-submit-button{width:100%}}

/* Reset button. */
.twm-reset {
	background: transparent;
	border: 1px solid var(--twm-line);
	color: var(--twm-muted);
	border-radius: 999px;
	padding: 7px 13px;
	font-size: 12px;
	cursor: pointer;
	align-self: flex-start;
}
.twm-reset:hover { color: var(--twm-text); }

/* ---------- Main canvas ------------------------------------------------ */
.twm-main {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 10px;
	min-width: 0;
	min-height: 0;
}
.twm-topbar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}
.twm-topbar-actions { display:flex; align-items:center; gap:10px; }
.twm-fullscreen { width:36px;height:36px;border:1px solid var(--twm-line);border-radius:9px;background:#fff;color:#334155;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.06); }
.twm-fullscreen svg { width:18px;height:18px; }.twm-fullscreen:hover{background:#f8fafc}.twm-app.is-fullscreen .twm-fullscreen svg{transform:scale(.88)}
.twm-app:fullscreen,.twm-app.is-fullscreen-fallback{width:100vw!important;height:100dvh!important;max-width:none!important;margin:0!important;border-radius:0!important;}
.twm-app.is-fullscreen-fallback{position:fixed!important;z-index:999999!important;inset:0!important;}
.twm-mobile-tools { display:none; }
.twm-toggle {
	display: inline-flex;
	background: #fff;
	border: 1px solid var(--twm-line);
	border-radius: 999px;
	padding: 3px;
	box-shadow: 0 1px 2px rgba(15,23,42,.04);
}
.twm-toggle button {
	background: transparent;
	border: 0;
	padding: 8px 14px;
	font-size: 13px;
	border-radius: 999px;
	cursor: pointer;
	color: #475569;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 500;
}
.twm-toggle button[aria-pressed="true"] { background: var(--twm-primary); color: #fff; }
.twm-toggle button svg                  { width: 14px; height: 14px; }
.twm-count        { font-size: 13px; color: var(--twm-muted); }
.twm-count strong { color: var(--twm-text); font-weight: 700; }

.twm-canvas {
	position: relative;
	flex: 1;
	min-height: 0;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 8px 24px rgba(15,23,42,.05);
	background: #0b1220;
	border: 1px solid var(--twm-line);
}
.twm-2d, .twm-3d { position: absolute; inset: 0; transition: opacity .35s ease; }
.twm-2d.is-hidden, .twm-3d.is-hidden { opacity: 0; pointer-events: none; }

.twm-globe-zoom { position:absolute; z-index:900; top:10px; left:10px; display:none; flex-direction:column; border:2px solid rgba(0,0,0,.2); border-radius:4px; overflow:hidden; box-shadow:0 1px 5px rgba(0,0,0,.65); }
.twm-globe-zoom.is-visible { display:flex; }
.twm-globe-zoom button { width:30px; height:30px; padding:0; border:0; border-bottom:1px solid #ccc; background:#fff; color:#000; font:700 22px/30px Arial,sans-serif; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.twm-globe-zoom button:last-child { border-bottom:0; }.twm-globe-zoom button:hover { background:#f4f4f4; }

@media(max-width:900px){
	.twm-app{padding-top:max(8px,env(safe-area-inset-top))!important;padding-left:max(8px,env(safe-area-inset-left))!important;padding-right:max(8px,env(safe-area-inset-right))!important;padding-bottom:max(8px,env(safe-area-inset-bottom))!important}
	.twm-topbar{flex:0 0 auto;flex-wrap:nowrap;gap:6px;position:relative;z-index:20}.twm-toggle button{padding:7px 9px;font-size:11px;gap:4px}.twm-toggle button svg{width:13px;height:13px}.twm-count{display:none}.twm-fullscreen{width:34px;height:34px}
	.twm-mobile-tools{display:flex!important;flex:0 0 42px;gap:7px;align-items:center;position:relative;z-index:20;visibility:visible!important;opacity:1!important}.twm-mobile-search{height:42px;flex:1;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--twm-line);border-radius:11px;padding:0 12px}.twm-mobile-search svg{width:17px;height:17px;color:#64748b;flex:none}.twm-mobile-search input{width:100%;min-width:0;border:0!important;outline:0!important;box-shadow:none!important;background:transparent;font-size:14px;padding:0!important}.twm-mobile-filter-btn{height:42px;flex:none;border:1px solid var(--twm-line);border-radius:11px;background:#fff;color:#334155;display:flex;align-items:center;gap:6px;padding:0 12px;font-weight:650}.twm-mobile-filter-btn svg{width:18px;height:18px}
}

.twm-map-label-wrap { background:transparent !important; border:0 !important; width:auto !important; height:auto !important; }
.twm-map-label { display:inline-block; transform:translate(-50%,-50%); white-space:nowrap; pointer-events:none; text-shadow:0 1px 2px #fff,0 0 4px #fff; color:#172033; }
.twm-map-label--country { font-size:13px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.twm-map-label--city { font-size:11px; font-weight:650; color:#475569; }

/* Pure black & white map. */
.twm-app.bw .twm-2d .leaflet-tile-pane { filter: grayscale(100%) contrast(1.05); }
.twm-app .leaflet-control-attribution  { background: rgba(255,255,255,.85); }

/* ---------- Pins ------------------------------------------------------- */
.twm-pin-wrapper { background: transparent !important; border: 0 !important; }
.twm-pin {
	width:  var(--twm-pin-size);
	height: var(--twm-pin-size);
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--twm-color, var(--twm-pin));
	color: var(--twm-icon-color, #fff);
	border-radius: 50% 50% 50% 0;
	transform: rotate(-45deg) translateY(-3px);
	box-shadow: 0 6px 18px rgba(15,23,42,.35), 0 0 0 3px #fff;
	position: relative;
}
.twm-pin svg { position:relative;z-index:2;display:block!important;width:56%!important;height:56%!important;max-width:56%!important;max-height:56%!important;transform:rotate(45deg);color:var(--twm-icon-color,#fff)!important;overflow:visible; }
.twm-pin svg.twm-custom-svg,.twm-pin svg.twm-custom-svg *{fill:var(--twm-icon-color,#fff)!important;stroke:var(--twm-icon-color,#fff)!important;vector-effect:non-scaling-stroke}
.twm-pin::after {
	content: "";
	position: absolute; left: 50%; top: 50%;
	transform: translate(-50%,-50%) rotate(45deg);
	width:  calc(var(--twm-pin-size) * .35);
	height: calc(var(--twm-pin-size) * .35);
	background: rgba(255,255,255,.18);
	border-radius: 999px;
}

/* Cluster theme. */
.marker-cluster {
	background: rgba(15,23,42,.18) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	border-radius: 50% !important;
}
.marker-cluster div {
	width: 30px !important;
	height: 30px !important;
	margin: 0 !important;
	padding: 0 !important;
	background: var(--twm-primary) !important;
	color: #fff !important;
	font-weight: 700 !important;
	border: 3px solid #fff;
	border-radius: 50% !important;
	box-shadow: 0 6px 18px rgba(15,23,42,.25);
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	text-align: center !important;
	line-height: 1 !important;
	box-sizing: border-box !important;
}
.marker-cluster div span {
	display: block !important;
	margin: 0 !important;
	padding: 0 !important;
	line-height: 1 !important;
	text-align: center !important;
}

/* 3D globe HTML pins. */
.twm-globe-pin {
	position: relative;
	width: 14px; height: 14px;
	pointer-events: auto; cursor: pointer;
	transform: translate(-50%, -100%);
}
.twm-globe-pin__dot {
	display: block;
	width: 14px; height: 14px;
	background: var(--twm-color, #ef4444);
	border-radius: 50% 50% 50% 0;
	transform: rotate(-45deg);
	box-shadow: 0 0 0 2px #fff, 0 2px 8px rgba(0,0,0,.5);
}
.twm-globe-pin:hover .twm-globe-pin__dot { transform: rotate(-45deg) scale(1.25); transition: transform .15s; }
.twm-3d canvas { display: block; }

/* ---------- Detail card modal ----------------------------------------- */
.twm-modal {
	position: fixed; inset: 0;
	background: rgba(15,23,42,.6);
	backdrop-filter: blur(4px);
	display: flex; align-items: center; justify-content: center;
	padding: 16px; z-index: 9999;
	animation: twm-fade .2s ease;
}
@keyframes twm-fade  { from { opacity: 0; } to { opacity: 1; } }
@keyframes twm-slide { from { transform: translateY(20px); } to { transform: translateY(0); } }
.twm-card-modal {
	background: #fff;
	border-radius: 20px;
	max-width: 560px; width: 100%;
	overflow: hidden;
	box-shadow: 0 24px 80px rgba(15,23,42,.4);
	animation: twm-slide .25s ease;
}
.twm-card__cover           { position:relative; aspect-ratio: 16/9; background: #f1f5f9 center/cover no-repeat; }
.twm-card__logo { position:absolute; left:16px; bottom:16px; width:76px; height:76px; object-fit:contain; background:#fff; border-radius:12px; padding:8px; box-shadow:0 6px 20px rgba(15,23,42,.25); }
.twm-card__cover--map      { position: relative; }
.twm-card__cover--map .twm-mini { position: absolute; inset: 0; }
.twm-card__cover--map .twm-mini .leaflet-tile-pane { filter: grayscale(100%) contrast(1.05); }
.twm-mini__toggle {
	position: absolute; top: 10px; right: 10px;
	display: inline-flex;
	background: rgba(255,255,255,.92);
	border: 1px solid rgba(15,23,42,.08);
	border-radius: 999px;
	padding: 3px;
	backdrop-filter: blur(6px);
	z-index: 400;
}
.twm-mini__toggle button {
	background: transparent;
	border: 0;
	padding: 5px 10px;
	font-size: 11.5px;
	border-radius: 999px;
	cursor: pointer;
	color: #475569;
	font-weight: 500;
}
.twm-mini__toggle button[aria-pressed="true"] { background: var(--twm-primary, #0f172a); color: #fff; }

.twm-card__body { padding: 22px 24px 24px; display: flex; flex-direction: column; gap: 12px; }
.twm-card__cat {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 5px 11px;
	border-radius: 999px;
	background: var(--twm-color, #0f172a); color: #fff;
	font-size: 12px; font-weight: 600;
	align-self: flex-start;
}
.twm-card__cat svg { width: 12px; height: 12px; }
.twm-card__logo    { display: flex; align-items: center; justify-content: flex-start; }
.twm-card__logo img {
	width:  var(--twm-logo-size, 80px);
	height: var(--twm-logo-size, 80px);
	object-fit: contain;
	border-radius: 8px;
	background: #fff;
	padding: 4px;
}
.twm-card__title   { font-size: 24px; font-weight: 700; margin: 0; line-height: 1.2; text-wrap: pretty; color: var(--twm-text); }
.twm-card__rating{color:#f59e0b;font-size:21px;letter-spacing:2px;line-height:1}.twm-card__rating span{color:#d8dee8}
.twm-country-prompt{position:absolute;z-index:1800;left:50%;bottom:24px;transform:translateX(-50%);width:min(92%,420px)}.twm-country-prompt>div{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid var(--twm-line);border-radius:14px;box-shadow:0 12px 35px #0f172a30}.twm-country-prompt strong{flex:1}.twm-country-prompt a{background:var(--twm-primary);color:#fff;padding:8px 11px;border-radius:9px;text-decoration:none;font-size:12px}.twm-country-prompt button{border:0;background:transparent;font-size:20px;cursor:pointer}
.twm-card__meta    { display: flex; flex-wrap: wrap; gap: 10px; font-size: 13px; color: var(--twm-muted); }
.twm-card__meta span { display: inline-flex; align-items: center; gap: 4px; }
.twm-country-flag { display:inline-flex;align-items:center;justify-content:center;flex:0 0 30px;width:30px;min-width:30px;height:20px;margin-right:6px;line-height:1;vertical-align:middle;overflow:visible;border-radius:2px;background:#fff;box-shadow:0 0 0 1px rgba(15,23,42,.12); }
.twm-country-flag svg { display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;overflow:visible!important; }
.twm-country-flag img { display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;object-position:center; }
.twm-chip .twm-country-flag{flex:0 0 auto;width:auto;min-width:16px;max-width:23px;height:12px;margin:0;border-radius:1px;overflow:hidden;background:transparent;box-shadow:0 0 0 1px rgba(15,23,42,.14)}
.twm-chip .twm-country-flag svg,.twm-chip .twm-country-flag img{display:block!important;width:auto!important;height:12px!important;min-width:0!important;max-width:23px!important;object-fit:fill!important}
.twm-chip__icon:has(.twm-country-flag){width:auto;min-width:16px;max-width:23px;height:12px;flex:0 0 auto;overflow:visible}
.twm-card__html p:first-child{margin-top:0}.twm-card__html p:last-child{margin-bottom:0}.twm-card__html a{text-decoration:underline}
.twm-map-label .twm-country-flag { margin-right: 4px; }
.twm-card__excerpt { color: #334155; margin: 0; line-height: 1.6; }
.twm-card__gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.twm-card__gallery img { aspect-ratio: 1/1; object-fit: cover; width: 100%; border-radius: 8px; }
.twm-card__actions { display: flex; gap: 8px; margin-top: 6px; }
.twm-btn {
	background: var(--twm-primary);
	color: #fff;
	border: 0;
	border-radius: 999px;
	padding: 10px 18px;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
	display: inline-flex; align-items: center; gap: 6px;
}
.twm-btn--ghost { background: transparent; color: #475569; border: 1px solid var(--twm-line); }

/* ---------- Shortcode grids: trips + places --------------------------- */
.twm-trips-grid, .twm-places-grid {
	display: grid;
	grid-template-columns: repeat(var(--twm-cols, 3), minmax(0, 1fr));
	gap: 14px;
}
@media (max-width: 800px) { .twm-trips-grid, .twm-places-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 540px) { .twm-trips-grid, .twm-places-grid { grid-template-columns: 1fr; } }
.twm-trip-card, .twm-place-card {
	display: flex; flex-direction: column;
	background: #fff;
	border: 1px solid var(--twm-line);
	border-radius: 14px;
	overflow: hidden;
	text-decoration: none;
	color: inherit;
	transition: transform .15s;
}
.twm-trip-card:hover, .twm-place-card:hover { transform: translateY(-2px); }
.twm-trip-card__cover, .twm-place-card__cover { aspect-ratio: 16/10; background: #f1f5f9 center/cover no-repeat; }
.twm-trip-card__body,  .twm-place-card__body  { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 6px; }
.twm-trip-card__body h3, .twm-place-card__body h3 { margin: 0; font-size: 16px; line-height: 1.3; color: var(--twm-text); }
.twm-trip-card__dates, .twm-trip-card__excerpt, .twm-place-card__excerpt { color: #475569; font-size: 13px; line-height: 1.55; margin: 0; }
.twm-country-city-links{display:flex;flex-wrap:wrap;gap:8px}.twm-country-city-links a{display:inline-flex;padding:8px 12px;border:1px solid #dbe4ef;border-radius:999px;text-decoration:none;color:#334155;background:#fff;font-weight:650}.twm-country-city-links a:hover,.twm-country-city-links a[aria-current="page"]{background:#111827;color:#fff;border-color:#111827}
.twm-place-search{max-width:980px;margin:20px auto 0;padding:18px;background:#f8fafc;border:1px solid #dbe4ef;border-radius:16px}.twm-place-search label{display:block}.twm-place-search label>span{display:flex;gap:8px;margin-top:8px}.twm-place-search input{flex:1;min-width:0;min-height:46px;border:1px solid #cbd5e1;border-radius:10px;padding:9px 12px;font:inherit}.twm-place-search label button{border:0;border-radius:10px;padding:0 18px;background:#111827;color:#fff;font-weight:700}.twm-place-search-results{display:grid;gap:6px;margin-top:10px}.twm-place-search-result{text-align:left;padding:10px 12px;border:1px solid #dbe4ef;border-radius:9px;background:#fff;cursor:pointer}.twm-place-search-result:hover{background:#eff6ff}@media(max-width:680px){.twm-place-search{margin:8px}.twm-place-search label>span{align-items:stretch}.twm-place-search label button{padding:0 12px}}
