/* hobbywerkstattwien.at – Ergänzungen zum Elementor-Layout */

html {
	scroll-behavior: smooth;
}

/* ---------- Preistabellen (Text-Editor-Widgets mit CSS-Klasse "hw-preise") ---------- */
.hw-preise table {
	width: 100%;
	border-collapse: collapse;
	margin: 0;
	border: 0;
}
.hw-preise th,
.hw-preise td {
	padding: 0.6em 0.4em;
	border: 0;
	border-bottom: 1px solid #e6e2dd;
	text-align: left;
	vertical-align: top;
	line-height: 1.4;
}
.hw-preise th {
	padding-top: 0;
	font-size: 0.75em;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #7a7570;
}
.hw-preise td {
	font-size: 0.95em;
}
.hw-preise td:nth-child(2),
.hw-preise th:nth-child(2) {
	color: #7a7570;
	white-space: nowrap;
	width: 1%;
	padding-left: 0.8em;
}
.hw-preise td:last-child,
.hw-preise th:last-child {
	text-align: right;
	white-space: nowrap;
	font-weight: 600;
	width: 1%;
	padding-left: 0.8em;
}
.hw-preise tbody tr:last-child td {
	border-bottom: 0;
	padding-bottom: 0;
}
.hw-preise small {
	display: block;
	font-size: 0.85em;
	font-weight: 400;
	color: #7a7570;
}
/* Hello Elementor streift Tabellenzeilen (reset.css) – hier neutralisiert */
.hw-preise tr:nth-child(odd) > td,
.hw-preise tbody > tr:nth-child(odd) > th {
	background-color: transparent;
}

/* ---------- Rechtstexte ---------- */
.hw-legal h2 {
	margin-top: 1.6em;
	font-size: 1.4em;
}
.hw-legal h3 {
	margin-top: 1.2em;
	font-size: 1.1em;
}

/* ---------- Kontaktformular (Fluent Forms) ---------- */
.fluentform .ff-el-group {
	margin-bottom: 18px;
}
.fluentform .ff-el-input--label label {
	font-weight: 500;
	color: #282624;
}
.fluentform .ff-el-form-control {
	width: 100%;
	background: #fff;
	border: 1px solid #d9d4ce;
	border-radius: 8px;
	padding: 12px 14px;
	font-family: inherit;
	font-size: 16px;
	color: #282624;
	box-shadow: none;
}
.fluentform .ff-el-form-control:focus {
	border-color: #e84e0f;
	outline: none;
	box-shadow: 0 0 0 3px rgba(232, 78, 15, 0.15);
}
.fluentform .ff-btn-submit {
	background: #e84e0f;
	color: #fff;
	border: 0;
	border-radius: 8px;
	padding: 14px 26px;
	font-family: inherit;
	font-size: 16px;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.2s;
}
.fluentform .ff-btn-submit:hover,
.fluentform .ff-btn-submit:focus {
	background: #282624;
	color: #fff;
}
.fluentform .ff-el-tc,
.fluentform .ff-el-tc label,
.fluentform .ff_t_c {
	font-size: 14px;
	color: #7a7570;
}
.fluentform .ff-message-success {
	border-radius: 12px;
	border: 1px solid #e6e2dd;
	background: #fff;
	padding: 20px 24px;
}

/* ---------- Header / Footer (Hello Elementor) ---------- */
.site-header {
	border-bottom: 1px solid #e6e2dd;
}
.site-header .site-navigation-dropdown {
	background: #fff;
	box-shadow: 0 12px 24px rgba(0, 0, 0, 0.08);
}
.site-header .site-navigation-dropdown a {
	padding: 14px 20px;
}
.site-footer .site-navigation a:hover {
	color: #fff;
}
.site-footer .copyright p {
	margin: 0;
}

/* ---------- Aktions-Laufband (temporär: Text-Editor-Widget mit CSS-Klasse "hw-promo") ----------
   Der Text wird im Elementor-Editor gepflegt; site.js baut daraus das endlose Laufband
   (im Editor selbst bleibt es ein statischer gelber Balken). */
.elementor-widget.hw-promo {
	--hw-promo-yellow: #f7c600;
	--hw-promo-dark: #282624;
	margin: 0;
	background: var(--hw-promo-yellow);
	overflow: hidden;
}
.elementor-widget.hw-promo::before,
.elementor-widget.hw-promo::after {
	content: "";
	display: block;
	height: 12px;
	background: repeating-linear-gradient(45deg, var(--hw-promo-dark) 0 18px, var(--hw-promo-yellow) 18px 36px);
}
.elementor-widget.hw-promo p,
.elementor-widget.hw-promo .hw-promo-track span {
	display: inline-block;
	margin: 0;
	padding: 0.6rem 1.75rem;
	color: var(--hw-promo-dark);
	font-weight: 800;
	font-size: 1.5rem;
	line-height: 1.2;
	letter-spacing: 0.02em;
	white-space: nowrap;
}
.elementor-widget.hw-promo .hw-promo-wrap {
	overflow: hidden;
	white-space: nowrap;
}
.elementor-widget.hw-promo .hw-promo-track {
	display: inline-flex;
	align-items: center;
	white-space: nowrap;
	animation: hw-promo-scroll 40s linear infinite;
	will-change: transform;
}
.elementor-widget.hw-promo .hw-promo-track span::after {
	content: "🔧";
	padding-left: 3.5rem;
}
/* Text nur für Screenreader (das Laufband selbst ist aria-hidden) */
.elementor-widget.hw-promo .hw-promo-sr {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
@media (min-width: 768px) {
	.elementor-widget.hw-promo p,
	.elementor-widget.hw-promo .hw-promo-track span {
		font-size: 2rem;
	}
}
@keyframes hw-promo-scroll {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
	.elementor-widget.hw-promo .hw-promo-track {
		animation: none;
	}
}

/* ---------- 360°-Panorama (HTML-Widget: <div class="hw-pano" data-src=… data-src-small=… data-title=…>) ----------
   Viewer: Pannellum (pannellum.js/.css im selben Ordner), Aufbau und Nachladen in site.js – wie auf schrauberecke.at.
   Im Elementor-Editor bleibt nur das Vorschaubild (background-image aus dem style-Attribut) stehen. */
.hw-pano {
	position: relative;
	display: block;
	width: 100%;
	height: 320px;
	border-radius: 12px;
	overflow: hidden;
	background: #1d1b19 center / cover no-repeat;
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
	touch-action: pan-y; /* seitlich wischen = drehen, senkrecht wischen = Seite scrollen */
	color: #fff;
	font-size: 14px;
	line-height: 1.4;
}
@media (min-width: 768px) {
	.hw-pano {
		height: 450px;
	}
}
.hw-pano:fullscreen {
	height: 100%;
	border-radius: 0;
}
.hw-pano .hw-pano-view {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
}
.hw-pano .pnlm-container {
	background: transparent;
}
.hw-pano .pnlm-controls-container,
.hw-pano .pnlm-load-box {
	display: none !important;
}
.hw-pano-loading {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 3;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 12px;
	padding: 16px;
	text-align: center;
	background: rgba(29, 27, 25, 0.6);
	transition: opacity 0.3s;
}
.hw-pano-loading.is-hidden {
	opacity: 0;
	pointer-events: none;
}
.hw-pano-spinner {
	width: 32px;
	height: 32px;
	border: 3px solid rgba(255, 255, 255, 0.3);
	border-top-color: #fff;
	border-radius: 50%;
	animation: hw-pano-spin 0.8s linear infinite;
}
@keyframes hw-pano-spin {
	to { transform: rotate(360deg); }
}
.hw-pano-title,
.hw-pano-hint {
	position: absolute;
	left: 16px;
	z-index: 4;
	padding: 6px 12px;
	border-radius: 999px;
	background: rgba(40, 38, 36, 0.72);
	white-space: nowrap;
	pointer-events: none;
}
.hw-pano-title {
	top: 16px;
	font-weight: 500;
}
.hw-pano-hint {
	bottom: 16px;
	font-size: 12px;
}
.hw-pano-hint-mobile {
	display: none;
}
@media (hover: none) and (pointer: coarse) {
	.hw-pano-hint-desktop { display: none; }
	.hw-pano-hint-mobile { display: inline; }
}
/* Spezifität bewusst höher als das globale Button-Styling des Elementor-Kits (.elementor-kit-9 button) */
.hw-pano .hw-pano-fullscreen {
	position: absolute;
	right: 16px;
	bottom: 16px;
	z-index: 4;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	min-width: 0;
	height: 40px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #e84e0f;
	color: #fff;
	font-size: 0;
	line-height: 1;
	box-shadow: none;
	cursor: pointer;
	transition: background 0.2s, color 0.2s;
}
.hw-pano .hw-pano-fullscreen svg {
	flex: none;
	width: 20px;
	height: 20px;
}
.hw-pano .hw-pano-fullscreen:focus {
	background: #e84e0f;
	color: #fff;
	outline: none;
}
.hw-pano .hw-pano-fullscreen:hover,
.hw-pano .hw-pano-fullscreen:focus-visible {
	background: #fff;
	color: #282624;
	outline: 2px solid #fff;
	outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
	.hw-pano-spinner {
		animation: none;
	}
}

/* ---------- Leistungs-Kacheln: einheitliches Bildformat (Werkstattfotos sind teils Hochformat) ---------- */
#leistungen .elementor-image-box-img img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/* ---------- Google Maps mit Zwei-Klick-Lösung (HTML-Widget: <div class="hw-map" data-src=… data-title=…>) ----------
   Vorschaubild vom eigenen Server; erst nach Klick wird die Karte (iframe) von Google geladen (Logik in site.js). */
.hw-map {
	position: relative;
	display: block;
	width: 100%;
	/* Höhe über padding-bottom (425/589) statt aspect-ratio: In Elementors Spalten mit flex-wrap (Tablet/Handy)
	   bekommt der Widget-Rahmen mit aspect-ratio sonst Höhe 0 und die Karte überlappt die Nachbarn. */
	height: 0;
	padding-bottom: 72.16%;
	border-radius: 12px;
	overflow: hidden;
	background: #e6e2dd;
	box-shadow: 0 10px 28px rgba(0, 0, 0, 0.12);
	cursor: pointer;
}
.hw-map > img {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.hw-map::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background: rgba(40, 38, 36, 0.35);
	transition: background 0.2s;
}
.hw-map:hover::before {
	background: rgba(40, 38, 36, 0.45);
}
/* Spezifität bewusst höher als das globale Button-Styling des Elementor-Kits (.elementor-kit-9 button) */
.hw-map .hw-map-load {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	width: auto;
	min-width: 0;
	max-width: 90%;
	margin: 0;
	padding: 18px 28px;
	border: 0;
	border-radius: 12px;
	background: rgba(232, 78, 15, 0.88);
	color: #fff;
	font-family: inherit;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.3;
	text-align: center;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
	backdrop-filter: blur(4px);
	cursor: pointer;
	transition: background 0.2s;
}
.hw-map .hw-map-load svg {
	flex: none;
	width: 28px;
	height: 28px;
}
.hw-map .hw-map-load small {
	display: block;
	font-size: 12px;
	font-weight: 400;
	opacity: 0.9;
}
.hw-map .hw-map-load:focus {
	background: rgba(232, 78, 15, 0.88);
	color: #fff;
	outline: none;
}
.hw-map:hover .hw-map-load,
.hw-map .hw-map-load:hover {
	background: #e84e0f;
	color: #fff;
}
.hw-map .hw-map-load:focus-visible {
	background: #e84e0f;
	color: #fff;
	outline: 2px solid #fff;
	outline-offset: 2px;
}
.hw-map iframe {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}
.hw-map.is-loaded {
	cursor: default;
}
.hw-map:fullscreen {
	height: 100%;
	padding-bottom: 0;
}
/* Handy/Tablet: feste Höhe statt Prozent – Elementor-Spalten brechen dort um (flex-wrap), und Chrome rechnet die
   Prozent-Höhe im Größenpass mit unbestimmter Breite = 0, der Karten-Container würde die Nachbarn überlappen. */
@media (max-width: 767px) {
	.hw-map { height: 260px; padding-bottom: 0; }
}
@media (min-width: 768px) and (max-width: 1024px) {
	.hw-map { height: 360px; padding-bottom: 0; }
}
.hw-map.is-loaded::before,
.hw-map.is-loaded > img,
.hw-map.is-loaded .hw-map-load {
	display: none;
}

/* ---------- Hinweis im Kontaktformular, solange reCAPTCHA (Cookie-Banner: Marketing) nicht erlaubt ist ---------- */
.fluentform .hw-consent-note {
	margin: 0 0 16px;
	padding: 12px 14px;
	border: 1px solid #f1c9b5;
	border-radius: 8px;
	background: #fff4ee;
	color: #282624;
	font-size: 14px;
	line-height: 1.5;
}
.fluentform .hw-consent-note .hw-consent-allow {
	display: block;
	margin: 8px 0;
	padding: 8px 14px;
	border: 1px solid #e84e0f;
	border-radius: 6px;
	background: #e84e0f;
	color: #fff;
	font: inherit;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.3;
	cursor: pointer;
}
.fluentform .hw-consent-note .hw-consent-allow:hover,
.fluentform .hw-consent-note .hw-consent-allow:focus-visible {
	background: #282624;
	border-color: #282624;
	color: #fff;
}
.fluentform .hw-consent-note .hw-consent-allow[disabled] {
	opacity: 0.6;
	cursor: wait;
}
.fluentform form.hw-needs-consent .ff-btn-submit[disabled] {
	opacity: 0.45;
	cursor: not-allowed;
}
/* Complianz: „Cookie-Einstellungen“-Reiter nicht über das Laufband/den Vollbild-Button legen */
#cmplz-manage-consent .cmplz-manage-consent {
	font-family: inherit;
}
/* Complianz-Banner: Linkfarbe kommt aus der Banner-Einstellung (colorpalette_text.hyperlink). Der Cookie-Hinweis ist
   auf "keiner" gestellt und fällt in der Dokumentenzeile auf die Datenschutzseite zurück → Slot ausblenden, sonst
   steht zweimal "Datenschutz" nebeneinander. */
.cmplz-cookiebanner .cmplz-documents .cmplz-link.cookie-statement {
	display: none !important;
}

/* ---------- FAQ (Elementor Nested Accordion, CSS-Klasse "hw-faq") ---------- */
.hw-faq .e-n-accordion-item {
	background: #fff;
	border: 1px solid #e6e2dd;
	border-radius: 12px;
	margin-bottom: 10px;
	overflow: hidden;
}
.hw-faq .e-n-accordion-item-title {
	padding: 16px 18px;
	font-weight: 600;
	font-size: 17px;
	line-height: 1.35;
	color: #282624;
	cursor: pointer;
}
.hw-faq .e-n-accordion-item-title:hover,
.hw-faq .e-n-accordion-item[open] > .e-n-accordion-item-title {
	color: #e84e0f;
}
.hw-faq .e-n-accordion-item-title-icon {
	color: #e84e0f;
}
.hw-faq .e-n-accordion-item > .e-con {
	padding: 0 18px 18px;
	color: #3d3a37;
}
.hw-faq .e-n-accordion-item p { margin: 0 0 0.6em; }
.hw-faq .e-n-accordion-item p:last-child { margin-bottom: 0; }

/* ---------- Blog (WordPress-Bordmittel, Hello-Elementor-Archiv und Beitrag) ---------- */
.blog .site-main,
.archive .site-main,
.single-post .site-main {
	max-width: 860px;
	margin: 0 auto;
	padding: 48px 24px 72px;
}
.blog .page-header .entry-title,
.archive .page-header .entry-title {
	font-size: 34px;
	margin-bottom: 8px;
}
.blog .archive-description,
.archive .archive-description {
	color: #7a7570;
	margin: 0 0 24px;
}
.blog .page-content .post,
.archive .page-content .post {
	background: #fff;
	border: 1px solid #e6e2dd;
	border-radius: 16px;
	padding: 24px;
	margin-bottom: 20px;
}
.blog .page-content .post .entry-title,
.archive .page-content .post .entry-title {
	font-size: 24px;
	margin: 0 0 12px;
}
.blog .page-content .post .entry-title a,
.archive .page-content .post .entry-title a {
	color: #282624;
	text-decoration: none;
}
.blog .page-content .post .entry-title a:hover,
.archive .page-content .post .entry-title a:hover {
	color: #e84e0f;
}
.blog .page-content .post img,
.archive .page-content .post img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 320px;
	object-fit: cover;
	border-radius: 12px;
	margin: 0 0 14px;
}
.single-post .page-header .entry-title {
	font-size: 34px;
	line-height: 1.2;
	margin-bottom: 20px;
}
.single-post .page-content {
	font-size: 17px;
	line-height: 1.7;
}
.single-post .page-content h2 {
	font-size: 24px;
	margin: 1.6em 0 0.6em;
}
.single-post .page-content ol,
.single-post .page-content ul {
	padding-left: 1.4em;
}
.single-post .page-content li { margin-bottom: 0.4em; }
.single-post .page-content img { border-radius: 12px; }
.pagination { display: flex; justify-content: space-between; margin-top: 24px; }
@media (max-width: 767px) {
	.blog .page-header .entry-title,
	.archive .page-header .entry-title,
	.single-post .page-header .entry-title { font-size: 28px; }
	.hw-faq .e-n-accordion-item-title { font-size: 16px; padding: 14px 16px; }
}

/* Blog: Datum/Kategorie und Weiterlesen */
.hw-post-meta {
	color: #7a7570;
	font-size: 14px;
	margin: 0 0 10px;
}
.hw-post-meta a { color: #e84e0f; text-decoration: none; }
.hw-more { margin: 10px 0 0; }
.hw-more a { color: #e84e0f; font-weight: 600; text-decoration: none; }
.hw-more a:hover { text-decoration: underline; }
.single-post .page-content .hw-post-meta { margin: -8px 0 20px; }

/* ---------- Footer: Kontaktzeile mit Icons (Copyright-Text im Kit, Site Settings → Footer) ---------- */
.site-footer .copyright .hw-footer-contact {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px 26px;
	margin: 0 0 12px;
	font-size: 15px;
	font-weight: 500;
}
.site-footer .copyright .hw-fc {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: #fff;
	text-decoration: none;
}
.site-footer .copyright .hw-fc:hover { color: #e84e0f; }
.site-footer .copyright .hw-fc::before {
	content: "";
	flex: none;
	width: 18px;
	height: 18px;
	background: center / contain no-repeat;
}
.site-footer .copyright .hw-fc-phone::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e84e0f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.8 19.8 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.12 4.18 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
}
.site-footer .copyright .hw-fc-pin::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e84e0f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}
.site-footer .copyright .hw-fc-clock::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e84e0f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E");
}
@media (max-width: 600px) {
	.site-footer .copyright .hw-footer-contact { flex-direction: column; align-items: center; gap: 10px; }
}

/* ---------- Milchglas-Karte (Container mit CSS-Klasse "hw-glass", z. B. linke Kontakt-Spalte) ---------- */
.e-con.hw-glass {
	-webkit-backdrop-filter: blur(12px) saturate(120%);
	backdrop-filter: blur(12px) saturate(120%);
	box-shadow: 0 8px 28px rgba(40, 38, 36, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.7);
}
