/* CW Upptagningsbokning — frontend
 *
 * The form is rendered inside pages built with Elementor, where the kit
 * stylesheet ( .elementor-kit-N button, .elementor-kit-N h4, … ) and the theme
 * stylesheet ( button { border: 1px solid #c36 } … ) beat plain single-class
 * selectors on specificity. Every rule below is therefore scoped with a
 * doubled root class and marked !important: among !important declarations
 * specificity still decides, so .cw-up.cw-up keeps this file ahead of anything
 * a theme or kit can emit. Keep both when adding rules.
 */

.cw-up.cw-up {
	--cw-up-accent: #0f766e;
	--cw-up-accent-dark: #115e59;
	--cw-up-accent-soft: #ccfbf1;
	--cw-up-ink: #0f172a;
	--cw-up-ink-soft: #64748b;
	--cw-up-line: #e2e8f0;
	--cw-up-bg: #ffffff;
	--cw-up-bg-soft: #f8fafc;
	--cw-up-error: #b91c1c;
	--cw-up-early: #16a34a;
	--cw-up-early-line: #bbf7d0;
	--cw-up-early-tint: #f1fef5;
	--cw-up-normal: #475569;
	--cw-up-late: #b91c1c;
	--cw-up-late-line: #fecaca;
	--cw-up-late-tint: #fff3f3;
	--cw-up-font: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

	display: block !important;
	max-width: 880px !important;
	margin: 0 auto !important;
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	color: var(--cw-up-ink) !important;
	font-family: var(--cw-up-font) !important;
	font-size: 16px !important;
	font-weight: 400 !important;
	font-style: normal !important;
	line-height: 1.5 !important;
	letter-spacing: normal !important;
	text-align: left !important;
	text-transform: none !important;
	text-shadow: none !important;
}

/* ---------------------------------------------------------------------------
 * Reset — strip theme/Elementor styling from every element the form uses.
 * Component rules below carry more classes, so they always win over this.
 * ------------------------------------------------------------------------ */

.cw-up.cw-up *,
.cw-up.cw-up *::before,
.cw-up.cw-up *::after {
	box-sizing: border-box !important;
}

.cw-up.cw-up [hidden] {
	display: none !important;
}

.cw-up.cw-up div,
.cw-up.cw-up span,
.cw-up.cw-up form,
.cw-up.cw-up fieldset,
.cw-up.cw-up legend,
.cw-up.cw-up label,
.cw-up.cw-up h1,
.cw-up.cw-up h2,
.cw-up.cw-up h3,
.cw-up.cw-up h4,
.cw-up.cw-up p,
.cw-up.cw-up ul,
.cw-up.cw-up ol,
.cw-up.cw-up li,
.cw-up.cw-up strong,
.cw-up.cw-up em {
	font-family: inherit !important;
	font-style: inherit !important;
	color: inherit !important;
	line-height: inherit !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	text-shadow: none !important;
	text-align: inherit !important;
	float: none !important;
	max-width: none !important;
}

.cw-up.cw-up form,
.cw-up.cw-up fieldset,
.cw-up.cw-up legend,
.cw-up.cw-up h1,
.cw-up.cw-up h2,
.cw-up.cw-up h3,
.cw-up.cw-up h4,
.cw-up.cw-up p,
.cw-up.cw-up ul,
.cw-up.cw-up ol {
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	box-shadow: none !important;
}

.cw-up.cw-up h1,
.cw-up.cw-up h2,
.cw-up.cw-up h3,
.cw-up.cw-up h4 {
	font-size: inherit !important;
	font-weight: 600 !important;
}

.cw-up.cw-up strong { font-weight: 600 !important; }
.cw-up.cw-up em { font-style: italic !important; }

.cw-up.cw-up fieldset { min-width: 0 !important; }
.cw-up.cw-up legend { display: block !important; width: auto !important; float: none !important; }

/* Some themes hang a custom control on label pseudo-elements. */
.cw-up.cw-up label::before,
.cw-up.cw-up label::after {
	content: none !important;
	display: none !important;
}

.cw-up.cw-up button,
.cw-up.cw-up input,
.cw-up.cw-up textarea {
	margin: 0 !important;
	font: inherit !important;
	font-family: var(--cw-up-font) !important;
	line-height: inherit !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	text-shadow: none !important;
	min-width: 0 !important;
	min-height: 0 !important;
	max-width: none !important;
	box-shadow: none !important;
	outline-offset: 2px !important;
	transform: none !important;
}

.cw-up.cw-up button {
	-webkit-appearance: none !important;
	appearance: none !important;
	display: inline-block !important;
	width: auto !important;
	height: auto !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	color: inherit !important;
	text-align: inherit !important;
	text-decoration: none !important;
	cursor: pointer !important;
	transition: none !important;
}

.cw-up.cw-up button:hover,
.cw-up.cw-up button:focus,
.cw-up.cw-up button:active {
	background: none !important;
	color: inherit !important;
	border-color: transparent !important;
	box-shadow: none !important;
	text-decoration: none !important;
}

/* Guard against themes that visually hide native checkboxes. */
.cw-up.cw-up input[type="checkbox"] {
	-webkit-appearance: checkbox !important;
	appearance: auto !important;
	position: static !important;
	opacity: 1 !important;
	visibility: visible !important;
	clip: auto !important;
	clip-path: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	padding: 0 !important;
}

.cw-up.cw-up a {
	color: var(--cw-up-accent) !important;
	text-decoration: underline !important;
	background: none !important;
	font-weight: inherit !important;
}
.cw-up.cw-up a:hover { color: var(--cw-up-accent-dark) !important; }

/* ---------------------------------------------------------------------------
 * Header
 * ------------------------------------------------------------------------ */

.cw-up.cw-up .cw-up__head { margin: 0 0 28px !important; }

.cw-up.cw-up .cw-up__title {
	font-size: 28px !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	margin: 0 0 12px !important;
	color: var(--cw-up-ink) !important;
}

.cw-up.cw-up .cw-up__intro { color: var(--cw-up-ink-soft) !important; line-height: 1.6 !important; }
.cw-up.cw-up .cw-up__intro p { margin: 0 0 10px !important; line-height: 1.6 !important; }
.cw-up.cw-up .cw-up__intro p:last-child { margin-bottom: 0 !important; }

.cw-up.cw-up .cw-up__weeks-summary {
	margin: 18px 0 0 !important;
	padding: 14px 16px !important;
	background: var(--cw-up-bg-soft) !important;
	border-left: 3px solid var(--cw-up-accent) !important;
	border-radius: 4px !important;
}
.cw-up.cw-up .cw-up__weeks-summary h3 {
	margin: 0 0 6px !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	letter-spacing: .04em !important;
	text-transform: uppercase !important;
	color: var(--cw-up-ink-soft) !important;
}
.cw-up.cw-up .cw-up__weeks-summary p { margin: 0 !important; font-weight: 500 !important; }
.cw-up.cw-up .cw-up__weeks-text p { margin: 0 0 8px !important; line-height: 1.6 !important; }
.cw-up.cw-up .cw-up__weeks-text p:last-child { margin-bottom: 0 !important; }

/* ---------------------------------------------------------------------------
 * Form shell
 * ------------------------------------------------------------------------ */

.cw-up.cw-up .cw-up__form { background: var(--cw-up-bg) !important; }
.cw-up.cw-up.is-loading { opacity: .65 !important; pointer-events: none !important; }

.cw-up.cw-up .cw-up__group {
	border: 1px solid var(--cw-up-line) !important;
	border-radius: 12px !important;
	padding: 22px 24px !important;
	margin: 0 0 20px !important;
	background: var(--cw-up-bg) !important;
}
.cw-up.cw-up .cw-up__group legend {
	padding: 0 6px !important;
	font-weight: 600 !important;
	font-size: 17px !important;
	color: var(--cw-up-ink) !important;
}
.cw-up.cw-up .cw-up__group-intro { margin: 0 0 14px !important; color: var(--cw-up-ink-soft) !important; }

.cw-up.cw-up .cw-up__help {
	margin: 0 0 16px !important;
	padding: 10px 14px !important;
	background: var(--cw-up-bg-soft) !important;
	border-radius: 8px !important;
	font-size: 14px !important;
	line-height: 1.6 !important;
	color: var(--cw-up-ink-soft) !important;
}
.cw-up.cw-up .cw-up__help p { margin: 0 0 6px !important; line-height: 1.6 !important; }
.cw-up.cw-up .cw-up__help p:last-child { margin-bottom: 0 !important; }

.cw-up.cw-up .cw-up__note { margin: 0 0 12px !important; font-size: 14px !important; color: var(--cw-up-ink-soft) !important; }

.cw-up.cw-up .cw-up__sub {
	font-size: 15px !important;
	font-weight: 600 !important;
	line-height: 1.4 !important;
	margin: 22px 0 10px !important;
	color: var(--cw-up-ink) !important;
}

.cw-up.cw-up .cw-up__grid { display: grid !important; gap: 16px !important; }
.cw-up.cw-up .cw-up__grid--2 { grid-template-columns: repeat( auto-fit, minmax( 240px, 1fr ) ) !important; }

/* ---------------------------------------------------------------------------
 * Fields
 * ------------------------------------------------------------------------ */

.cw-up.cw-up .cw-up__field { display: flex !important; flex-direction: column !important; gap: 6px !important; }
.cw-up.cw-up .cw-up__field label {
	display: block !important;
	margin: 0 !important;
	padding: 0 !important;
	font-weight: 500 !important;
	font-size: 14px !important;
	color: var(--cw-up-ink) !important;
}

.cw-up.cw-up .cw-up__field input[type="text"],
.cw-up.cw-up .cw-up__field input[type="email"],
.cw-up.cw-up .cw-up__field input[type="tel"],
.cw-up.cw-up .cw-up__field textarea {
	-webkit-appearance: none !important;
	appearance: none !important;
	display: block !important;
	width: 100% !important;
	height: auto !important;
	padding: 10px 12px !important;
	border: 1px solid var(--cw-up-line) !important;
	border-radius: 8px !important;
	background: var(--cw-up-bg) !important;
	background-image: none !important;
	color: var(--cw-up-ink) !important;
	font-size: 16px !important;
	line-height: 1.4 !important;
	box-shadow: none !important;
	transition: border-color .15s, box-shadow .15s !important;
}

.cw-up.cw-up .cw-up__field textarea { resize: vertical !important; min-height: 72px !important; }

.cw-up.cw-up .cw-up__field input:focus,
.cw-up.cw-up .cw-up__field textarea:focus {
	outline: 0 !important;
	border-color: var(--cw-up-accent) !important;
	box-shadow: 0 0 0 3px var(--cw-up-accent-soft) !important;
}

.cw-up.cw-up .cw-up__field.has-error input,
.cw-up.cw-up .cw-up__field.has-error textarea {
	border-color: var(--cw-up-error) !important;
}

.cw-up.cw-up .cw-up__error {
	margin: 0 !important;
	color: var(--cw-up-error) !important;
	font-size: 13px !important;
	display: none !important;
}
.cw-up.cw-up .cw-up__error.is-shown { display: block !important; }

/* ---------------------------------------------------------------------------
 * Week grid
 * ------------------------------------------------------------------------ */

.cw-up.cw-up .cw-up__weeks {
	display: grid !important;
	grid-template-columns: repeat( auto-fill, minmax( 120px, 1fr ) ) !important;
	gap: 8px !important;
	margin: 4px 0 10px !important;
}

.cw-up.cw-up button.cw-up__week {
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 2px !important;
	width: 100% !important;
	padding: 14px 8px !important;
	border: 1.5px solid var(--cw-up-line) !important;
	border-radius: 10px !important;
	background: var(--cw-up-bg) !important;
	color: var(--cw-up-ink) !important;
	font-size: 16px !important;
	text-align: center !important;
	cursor: pointer !important;
	transition: transform .08s, border-color .12s, background .12s, box-shadow .12s !important;
}
.cw-up.cw-up button.cw-up__week:hover {
	transform: translateY(-1px) !important;
	box-shadow: 0 2px 8px rgba(15,23,42,.08) !important;
}
.cw-up.cw-up button.cw-up__week:focus-visible {
	outline: 2px solid var(--cw-up-accent) !important;
	outline-offset: 2px !important;
}

.cw-up.cw-up .cw-up__week-num { font-size: 15px !important; font-weight: 700 !important; letter-spacing: .02em !important; color: var(--cw-up-ink) !important; }
.cw-up.cw-up .cw-up__week-range { font-size: 12px !important; font-weight: 400 !important; color: var(--cw-up-ink-soft) !important; }

.cw-up.cw-up button.cw-up__week--early { border-color: var(--cw-up-early-line) !important; background: var(--cw-up-early-tint) !important; }
.cw-up.cw-up button.cw-up__week--early .cw-up__week-num { color: var(--cw-up-early) !important; }
.cw-up.cw-up button.cw-up__week--normal { border-color: var(--cw-up-line) !important; background: var(--cw-up-bg) !important; }
.cw-up.cw-up button.cw-up__week--late { border-color: var(--cw-up-late-line) !important; background: var(--cw-up-late-tint) !important; }
.cw-up.cw-up button.cw-up__week--late .cw-up__week-num { color: var(--cw-up-late) !important; }

.cw-up.cw-up button.cw-up__week.is-selected {
	border-color: var(--cw-up-accent) !important;
	background: var(--cw-up-accent) !important;
	color: #fff !important;
	box-shadow: 0 4px 16px rgba(15,118,110,.25) !important;
}
.cw-up.cw-up button.cw-up__week.is-selected .cw-up__week-num,
.cw-up.cw-up button.cw-up__week.is-selected .cw-up__week-range { color: #fff !important; }

.cw-up.cw-up .cw-up__legend {
	display: flex !important;
	flex-wrap: wrap !important;
	gap: 14px !important;
	font-size: 13px !important;
	color: var(--cw-up-ink-soft) !important;
	margin-top: 10px !important;
}
.cw-up.cw-up .cw-up__legend-item { display: inline-flex !important; align-items: center !important; gap: 6px !important; }
.cw-up.cw-up .cw-up__dot { width: 10px !important; height: 10px !important; border-radius: 50% !important; display: inline-block !important; flex: 0 0 auto !important; }
.cw-up.cw-up .cw-up__dot--early { background: var(--cw-up-early) !important; }
.cw-up.cw-up .cw-up__dot--normal { background: var(--cw-up-normal) !important; }
.cw-up.cw-up .cw-up__dot--late { background: var(--cw-up-late) !important; }

.cw-up.cw-up .cw-up__empty { color: var(--cw-up-ink-soft) !important; font-style: italic !important; }

/* ---------------------------------------------------------------------------
 * Checkboxes
 * ------------------------------------------------------------------------ */

.cw-up.cw-up .cw-up__checks {
	display: grid !important;
	gap: 10px !important;
	grid-template-columns: repeat( auto-fit, minmax( 240px, 1fr ) ) !important;
	margin: 0 0 14px !important;
}
.cw-up.cw-up .cw-up__checks--stacked { grid-template-columns: 1fr !important; }

.cw-up.cw-up label.cw-up__check {
	display: flex !important;
	gap: 12px !important;
	align-items: flex-start !important;
	margin: 0 !important;
	padding: 12px 14px !important;
	border: 1px solid var(--cw-up-line) !important;
	border-radius: 10px !important;
	background: var(--cw-up-bg) !important;
	color: var(--cw-up-ink) !important;
	font-size: 16px !important;
	font-weight: 400 !important;
	cursor: pointer !important;
	transition: border-color .12s, background .12s !important;
}
.cw-up.cw-up label.cw-up__check:hover { border-color: var(--cw-up-accent) !important; }

.cw-up.cw-up .cw-up__check input[type="checkbox"],
.cw-up.cw-up .cw-up__consent input[type="checkbox"] {
	margin: 3px 0 0 !important;
	width: 18px !important;
	height: 18px !important;
	flex: 0 0 auto !important;
	accent-color: var(--cw-up-accent) !important;
	cursor: pointer !important;
}

.cw-up.cw-up .cw-up__check-body { display: flex !important; flex-direction: column !important; gap: 2px !important; }
.cw-up.cw-up .cw-up__check-label { font-weight: 500 !important; color: var(--cw-up-ink) !important; }
.cw-up.cw-up .cw-up__check-help { font-size: 13px !important; font-weight: 400 !important; color: var(--cw-up-ink-soft) !important; line-height: 1.4 !important; }

.cw-up.cw-up label.cw-up__consent {
	display: flex !important;
	gap: 10px !important;
	align-items: flex-start !important;
	margin: 12px 0 0 !important;
	padding: 0 !important;
	color: var(--cw-up-ink-soft) !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	cursor: pointer !important;
}

/* ---------------------------------------------------------------------------
 * Actions / confirmation
 * ------------------------------------------------------------------------ */

.cw-up.cw-up .cw-up__actions { margin-top: 22px !important; text-align: right !important; }

.cw-up.cw-up button.cw-up__btn {
	display: inline-block !important;
	width: auto !important;
	background: var(--cw-up-accent) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 10px !important;
	padding: 14px 28px !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
	text-align: center !important;
	cursor: pointer !important;
	transition: background .12s, transform .08s !important;
}
.cw-up.cw-up button.cw-up__btn:hover { background: var(--cw-up-accent-dark) !important; color: #fff !important; transform: translateY(-1px) !important; }
.cw-up.cw-up button.cw-up__btn:active { transform: translateY(0) !important; }
.cw-up.cw-up button.cw-up__btn:focus-visible { outline: 2px solid var(--cw-up-accent-dark) !important; outline-offset: 3px !important; }

.cw-up.cw-up .cw-up__done {
	padding: 28px !important;
	background: var(--cw-up-accent-soft) !important;
	border-radius: 12px !important;
	margin-top: 12px !important;
	color: var(--cw-up-ink) !important;
}
.cw-up.cw-up .cw-up__done h3 { margin: 0 0 8px !important; font-size: 20px !important; color: var(--cw-up-accent) !important; }
.cw-up.cw-up .cw-up__done p { margin: 0 0 8px !important; line-height: 1.6 !important; }
.cw-up.cw-up .cw-up__done p:last-child { margin-bottom: 0 !important; }

/* ---------------------------------------------------------------------------
 * Small screens
 * ------------------------------------------------------------------------ */

@media ( max-width: 600px ) {
	.cw-up.cw-up .cw-up__group { padding: 18px 16px !important; }
	.cw-up.cw-up .cw-up__title { font-size: 24px !important; }
	.cw-up.cw-up .cw-up__weeks { grid-template-columns: repeat( auto-fill, minmax( 104px, 1fr ) ) !important; }
	.cw-up.cw-up .cw-up__actions { text-align: center !important; }
	.cw-up.cw-up button.cw-up__btn { width: 100% !important; }
}
