/* ==========================================================================
   Components shared by the pages
   ========================================================================== */
@layer components {
	/* Section titles
	   ========================================================================== */
	.main_title {
		margin-bottom: 30px;
		font-size: 16px;
		text-align: center;
	}
	.main_title span {
		display: block;
		width: 40px;
		height: 4px;
		margin: 0 auto 15px;
		background-color: var(--line);
		border-radius: 5px;
	}
	.main_title :is(h1, h2) {
		margin-top: 0;
		margin-bottom: 0;
		font-size: 28px;
		font-weight: 700;
		letter-spacing: -1px;
		color: var(--purple);
		text-transform: uppercase;
	}
	.main_title p {
		font-family: var(--font-accent);
		font-size: 20px;
		font-weight: 300;
	}
	@media (max-width: 767px) {
		.main_title { font-size: 14px; }
		.main_title :is(h1, h2) { font-size: 24px; }
		.main_title p { font-size: 16px; }
	}

	/* Buttons
	   ========================================================================== */
	.btn_1 {
		display: inline-block;
		padding: 7px 15px;
		font-family: inherit;
		font-size: 12px;
		font-weight: bold;
		color: #fff;
		background: var(--green);
		border: none;
		border-radius: 20px;
		cursor: pointer;
		transition: all .3s;
	}
	a.btn_1:hover,
	a.btn_1:focus {
		color: #fff;
	}
	.btn_1:hover { background: #333; }
	.btn_1.outline {
		padding: 5px 18px;
		color: var(--text);
		background: none;
		border: 2px solid var(--text);
	}
	.btn_1.medium {
		padding: 10px 25px;
		font-size: 14px;
	}
	.btn_1.outline:hover {
		color: #fff;
		background: var(--green);
		border-color: var(--green);
	}

	/* Home page
	   ========================================================================== */
	.box_home {
		position: relative;
		padding: 25px 25px 5px;
		text-align: center;
	}
	.box_home h3 { font-size: 20px; }
	.box_home i {
		font-size: 60px;
		color: var(--green);
	}

	.img_zoom {
		margin-top: 20px;
		overflow: hidden;
		text-align: center;
		border: 5px solid #fff;
		box-shadow: 0 0 5px 0 rgba(0, 0, 0, .1);
	}
	.img_zoom img { display: block; }
	.img_zoom a img {
		transform: scale(1.2);
		transition: all .7s ease;
	}
	.img_zoom a:hover img { transform: scale(1); }

	/* "The Rooms  from 150 EUR/night": the price sits at the right of the heading,
	   and drops below it on narrower screens. */
	.title_with_price {
		display: flex;
		flex-wrap: wrap;
		justify-content: space-between;
		align-items: baseline;
		column-gap: 10px;
	}
	.price_home { margin-left: auto; }
	.price_home em {
		margin-left: 4px;
		font-size: 11px;
		font-style: normal;
		font-weight: normal;
		color: #999;
	}
	@media (max-width: 991px) {
		.price_home {
			flex-basis: 100%;
			margin-top: 5px;
		}
	}
	/* Home "The Place / The Rooms / The Food": more room between the sections
	   once they stack on phones. */
	@media (max-width: 767px) {
		#rooms .cols > * + * { margin-top: 50px; }
	}

	/* Activities: round photo beside the text. The photo is taken out of the flow
	   so tall photos never stretch a short item. */
	#strip_activities ul {
		margin: 0;
		padding: 0 0 20px;
	}
	#strip_activities li {
		position: relative;
		min-height: 115px;
		margin-bottom: 20px;
		padding: 5px 0 10px 150px;
	}
	#strip_activities li:last-child { margin-bottom: 0; }
	#strip_activities li img {
		position: absolute;
		top: 0;
		left: 0;
	}
	@media (max-width: 480px) {
		#strip_activities li { padding-left: 100px; padding-bottom: 0; }
		#strip_activities li img { width: 80px; }
	}

	.img-circle { border-radius: 50%; }
	.img-circle.styled {
		border: 5px solid #fff;
		box-shadow: 0 0 5px 0 rgba(0, 0, 0, .1);
	}

	.social_widgets {
		padding-left: 55px; /* 70px from the old column edge, which sat 15px outside the grid track */
	}
	.social_widgets > * { margin-top: 30px; }

	/* Leaf border along the bottom of the hero and page headers */
	#general_decor {
		position: absolute;
		left: 0;
		bottom: 0;
		z-index: 9999;
		width: 100%;
		height: 45px;
		background: url(../img/pattern_3.png) repeat-x 0 0;
		background-image: image-set(url(../img/pattern_3.png) 1x, url(../img/pattern_3_2x.png) 2x);
	}

	/* Page header with a photo and title (Rooms, Contact)
	   ========================================================================== */
	.sub_header {
		position: relative;
		min-height: 470px;
		overflow: hidden;
		background: #fff no-repeat center / cover;
	}
	.sub_header#bg_room { background-image: url(../img/room_bg.jpg); }
	.sub_header_content {
		display: grid;
		align-items: center;
		height: 470px;
		background: url(../img/pattern_3.png) repeat-x center bottom;
		background-image: image-set(url(../img/pattern_3.png) 1x, url(../img/pattern_3_2x.png) 2x);
	}
	.sub_header_content > div {
		padding: 0 15%;
		font-size: 16px;
		color: #fff;
		text-align: center;
	}
	.sub_header_content h1 {
		margin-bottom: 0;
		padding-top: 40px;
		font-size: 48px;
		font-weight: bold;
		color: #fff;
		text-transform: uppercase;
	}
	.sub_header_content h1::before,
	.sub_header_content h1::after {
		content: '';
		display: inline-block;
		width: 50px;
		height: 1px;
		vertical-align: middle;
		background: rgba(255, 255, 255, .5);
	}
	.sub_header_content h1::before { margin-right: 10px; }
	.sub_header_content h1::after { margin-left: 10px; }
	@media (max-width: 768px) {
		.sub_header_content > div { padding: 0 10%; font-size: 14px; }
		.sub_header_content h1::before,
		.sub_header_content h1::after { width: 30px; }
	}
	@media (max-width: 767px) {
		.sub_header { height: 240px; min-height: 240px; }
		.sub_header_content { height: 240px; }
		.sub_header_content > div { padding: 20px 5% 0; font-size: 12px; }
		.sub_header_content h1 { padding-top: 15px; font-size: 20px; }
	}

	/* Breadcrumb */
	#position {
		position: relative;
		padding-top: 20px;
		font-size: 11px;
	}
	#position ul {
		display: flex;
		flex-wrap: wrap;
		gap: .28em; /* the width of the space between the old inline-block items */
		margin: 0;
		padding: 0;
		color: #888;
	}
	#position li {
		position: relative;
		margin-right: 3px;
		padding-right: 8px;
	}
	#position li::after {
		content: "\e9ee";
		position: absolute;
		top: 1px;
		right: 0;
		font-family: "fontello";
		font-style: normal;
		font-weight: normal;
	}
	#position li:last-child::after { content: ''; }
	#position li:first-child { padding-left: 20px; }
	#position li:first-child::before {
		content: "\eaf4";
		position: absolute;
		top: 1px;
		left: 0;
		font-family: "fontello";
		font-style: normal;
		font-weight: normal;
		color: #999;
	}

	/* Boxes
	   ========================================================================== */
	.bg_gray {
		padding: 30px 0 20px;
		background-color: #f9f9f9;
		border-block: 1px solid #f0f0f0;
	}
	.box_style_1,
	.box_style_2 {
		margin-bottom: 30px;
		padding: 20px 25px 5px;
		font-size: 13px;
		line-height: 20px;
		background-color: #fff;
		border: 5px solid #fbfbfc;
		border-radius: 5px;
		box-shadow: inset 0 0 0 1px #e0e5e9;
	}
	.box_style_1 h3 {
		margin: 0 0 20px;
		padding-bottom: 10px;
		font-size: 18px;
		border-bottom: 1px solid #e0e5e9;
	}
	.box_style_2 {
		padding-bottom: 20px;
		text-align: center;
	}
	.box_style_2 i {
		display: inline-block;
		margin-top: 10px;
		font-size: 52px;
	}
	.box_style_2 a.phone {
		display: block;
		margin-bottom: 20px;
		font-size: 26px;
	}

	ul.list_ok {
		margin: 0 0 20px;
		padding: 0;
		line-height: 22px;
	}
	ul.list_ok li {
		position: relative;
		padding-left: 25px;
	}
	ul.list_ok li::before {
		content: "\6c";
		position: absolute;
		top: 0;
		left: 0;
		font-family: "icon_set_1";
		font-size: 14px;
		font-style: normal;
		font-weight: bold;
		color: var(--green);
	}

	/* Rooms page
	   ========================================================================== */
	#single_tour_desc h3 {
		margin-top: 5px;
		font-size: 22px;
	}
	#single_tour_desc h4 {
		font-size: 18px;
		line-height: 20px;
	}

	/* Room features: evenly spread across the width */
	#single_room_feat ul {
		display: flex;
		margin: 25px 0 30px;
		padding: 0;
		border-bottom: 1px solid var(--line);
	}
	#single_room_feat li {
		flex: 1 1 auto;
		padding: 0 10px 20px;
		text-align: center;
		white-space: nowrap;
	}
	#single_room_feat li i {
		display: block;
		margin-bottom: 10px;
		font-size: 36px;
	}
	/* On phones the features sit in an even 2 x 2 grid, each centred in its cell,
	   and long labels wrap instead of pushing the last one onto a row of its own. */
	@media (max-width: 767px) {
		#single_room_feat ul {
			display: grid;
			grid-template-columns: repeat(2, minmax(0, 1fr));
			row-gap: 5px;
			margin-bottom: 10px;
		}
		#single_room_feat li {
			font-size: 12px;
			line-height: 16px;
			white-space: normal;
		}
	}

	#general_facilities ul {
		margin: 0;
		padding: 0 0 20px;
		line-height: 34px;
	}
	#general_facilities li {
		display: flex;
		align-items: flex-start;
	}
	#general_facilities li i {
		margin-right: 10px;
		font-size: 22px;
	}

	.table {
		width: 100%;
		max-width: 100%;
		margin-bottom: 20px;
	}
	.table td {
		padding: 8px;
		line-height: 1.42857143;
		vertical-align: top;
		border-top: 1px solid #ddd;
	}
	.table-striped tr:nth-of-type(odd) { background-color: #f9f9f9; }
	.table .price_cell { width: 100px; white-space: nowrap; }

	/* Error page */
	.error_page {
		min-height: 60vh;
		padding-top: 160px;
		padding-bottom: 60px;
	}
	@media (max-width: 767px) {
		.error_page { padding-bottom: 30px; }
	}

	/* Back to top button
	   ========================================================================== */
	#toTop {
		position: fixed;
		right: 10px;
		bottom: 10px;
		width: 40px;
		height: 40px;
		padding: 10px;
		font-size: 20px;
		line-height: 20px;
		color: #fff;
		text-align: center;
		background-color: rgba(0, 0, 0, .6);
		border: 0;
		opacity: 0;
		visibility: hidden;
		transition: opacity .4s, visibility .4s;
	}
	#toTop.visible {
		opacity: 1;
		visibility: visible;
	}
	#toTop::before {
		content: "\e899";
		font-family: "fontello";
		font-style: normal;
		font-weight: normal;
	}
}
