/* Daidalos kassa – UIkit 3, designsystemet i docs/09-DESIGNSYSTEM.md */

.daidalos-kassa {
	--d-green: #336600;
	--d-green-dark: #264d00;
	--d-ink: #1f1f1f;
	--d-muted: #5f5f5f;
	--d-rule: #d9d9d9;
	--d-panel: #eeeeec;
	--d-danger: #9b1c1c;
	--d-form-border: #8c8c8c;
	--d-serif: "Source Serif 4", "Iowan Old Style", Palatino, Georgia, serif;
	--d-sans: "Source Sans 3", "Segoe UI", Helvetica, Arial, sans-serif;

	max-width: 1120px;
	margin: 0 auto;
	color: var(--d-ink);
	font-family: var(--d-sans);
}

.daidalos-kassa *,
.daidalos-kassa *::before,
.daidalos-kassa *::after {
	box-sizing: border-box;
}

.daidalos-title {
	font-family: var(--d-serif);
	font-size: 1.75rem;
	font-weight: 600;
	margin: 1.5rem 0 1.25rem;
	padding-bottom: .5rem;
	border-bottom: 1px solid var(--d-rule);
}

.daidalos-h2 {
	font-family: var(--d-sans);
	font-size: 1.0625rem;
	font-weight: 600;
	letter-spacing: .01em;
	margin: 0 0 .875rem;
	padding-bottom: .5rem;
	border-bottom: 1px solid var(--d-rule);
}

/* ---------------------------------------------------------------- rutnät */

.daidalos-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1.5rem;
	align-items: start;
}

/* VirtueMarts fält har size-attribut som annars sätter en egen minsta bredd. */
.daidalos-col {
	min-width: 0;
}

.daidalos-kassa .uk-input,
.daidalos-kassa .uk-select,
.daidalos-kassa .uk-textarea {
	width: 100%;
	max-width: 100%;
}

@media (min-width: 960px) {
	/* Kunduppgifterna får 60 % och orderöversikten 40 %, så titlar och radsummor
	   får plats utan att radbrytas i onödan. */
	.daidalos-grid {
		grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
		gap: 2.5rem;
	}
}

.daidalos-block {
	margin: 0 0 1.5rem;
}

.daidalos-block:last-child {
	margin-bottom: 0;
}

/* ---------------------------------------------------------------- fält */

.daidalos-kassa .uk-input,
.daidalos-kassa .uk-select,
.daidalos-kassa .uk-textarea {
	min-height: 44px;
	border: 1px solid var(--d-form-border);
	border-radius: 0;
	background: #fff;
	color: var(--d-ink);
	font-family: var(--d-sans);
	font-size: 1rem;
	padding: 8px 10px;
}

.daidalos-kassa .uk-textarea {
	min-height: 96px;
}

.daidalos-kassa .uk-input:focus,
.daidalos-kassa .uk-select:focus,
.daidalos-kassa .uk-textarea:focus,
.daidalos-kassa .uk-checkbox:focus,
.daidalos-kassa .uk-radio:focus {
	outline: 3px solid var(--d-green);
	outline-offset: 1px;
	border-color: var(--d-green);
	box-shadow: none;
}

.daidalos-kassa .uk-form-label {
	display: block;
	margin-bottom: .25rem;
	font-size: .9375rem;
	font-weight: 600;
	color: var(--d-ink);
	font-family: var(--d-sans);
}

.daidalos-kassa .uk-margin {
	margin-bottom: .75rem;
}

/* Fältgruppen håller ihop adressraderna och tar bort dubbel luft mellan dem. */
.daidalos-fields {
	display: flex;
	flex-direction: column;
	gap: .5rem;
}

.daidalos-fields > * {
	margin-bottom: 0;
}

.daidalos-fields .uk-margin {
	margin-bottom: 0;
}

.daidalos-fields .uk-grid-small .uk-margin {
	margin-bottom: 0;
}

.daidalos-req {
	color: var(--d-danger);
	font-weight: 700;
}

.daidalos-help {
	margin-top: .25rem;
	font-size: .8125rem;
	color: var(--d-muted);
}

.daidalos-kassa .uk-checkbox,
.daidalos-kassa .uk-radio {
	width: 20px;
	height: 20px;
	margin-right: .5rem;
	vertical-align: -4px;
	accent-color: var(--d-green);
}

.daidalos-kassa input.uk-checkbox[type="radio"] {
	border-radius: 50%;
}

.daidalos-hidden {
	display: none !important;
}

/* ---------------------------------------------------------------- kundtyp */

.daidalos-type {
	display: flex;
	gap: .5rem;
	margin-bottom: 1.25rem;
}

.daidalos-type__option {
	flex: 1 1 0;
	display: flex;
	align-items: center;
	min-height: 44px;
	padding: .5rem .875rem;
	border: 1px solid var(--d-form-border);
	cursor: pointer;
	font-size: .9375rem;
}

.daidalos-type__option:has(input:checked) {
	border-color: var(--d-green);
	box-shadow: inset 0 0 0 1px var(--d-green);
	background: #f6f8f2;
}

/* Tangentbordsfokus får en ring i stället för att se ut som ett valt kort. */
.daidalos-type__option:has(input:focus-visible) {
	outline: 3px solid var(--d-green);
	outline-offset: 2px;
}

.daidalos-type__option input {
	flex: 0 0 auto;
}

.daidalos-firma {
	margin-top: .25rem;
	padding: 1rem;
	border-left: 3px solid var(--d-green);
	background: var(--d-panel);
}

.daidalos-orgnr[data-required="1"] .uk-form-label::after {
	content: " *";
	color: var(--d-danger);
}

/* ---------------------------------------------------------------- leverans */

.daidalos-check {
	display: flex;
	align-items: center;
	min-height: 44px;
	font-size: .9375rem;
	cursor: pointer;
}

.daidalos-st {
	margin-top: 1rem;
	padding: 1rem;
	border: 1px solid var(--d-rule);
}

.daidalos-ship {
	margin-top: 1rem;
	padding: .75rem 1rem;
	background: var(--d-panel);
	font-size: .9375rem;
}

/* Fraktmetoden väljs automatiskt av VirtueMart; valet visas som text. */
.daidalos-ship input[type="radio"] {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}

.daidalos-ship label {
	display: block;
	font-weight: 400;
	margin: 0;
}

/* ---------------------------------------------------------------- betalning */

.daidalos-pay {
	display: grid;
	gap: .5rem;
}

.daidalos-pay__option {
	display: flex;
	align-items: center;
	min-height: 48px;
	padding: .75rem 1rem;
	border: 1px solid var(--d-form-border);
	font-size: .9375rem;
}

.daidalos-pay__option:has(input:checked) {
	border-color: var(--d-green);
	box-shadow: inset 0 0 0 1px var(--d-green);
	background: #f6f8f2;
}

.daidalos-pay__option label {
	margin: 0;
	font-weight: 600;
	cursor: pointer;
}

.daidalos-pay__note {
	margin: .75rem 0 0;
	font-size: .875rem;
	color: var(--d-muted);
}

/* ---------------------------------------------------------------- kommentar */

.daidalos-details {
	border: 1px solid var(--d-rule);
}

.daidalos-summary {
	min-height: 44px;
	padding: .75rem 1rem;
	cursor: pointer;
	font-size: .9375rem;
	list-style: none;
}

.daidalos-summary::-webkit-details-marker {
	display: none;
}

summary.daidalos-summary::before {
	content: "+";
	display: inline-block;
	width: 1rem;
	margin-right: .5rem;
	color: var(--d-green);
	font-weight: 700;
}

details.daidalos-details[open] summary.daidalos-summary::before {
	content: "–";
}

.daidalos-details .uk-margin {
	margin: 0;
	padding: 0 1rem 1rem;
}

/* Utfällbara extra adressrader (c/o och adress 2) */
.daidalos-extra {
	margin-top: .5rem;
	border: 0;
	border-top: 1px solid var(--d-rule);
}

.daidalos-extra .daidalos-summary {
	padding: .5rem 0;
	color: var(--d-green-dark);
	font-weight: 600;
}

.daidalos-extra .uk-grid-small {
	margin-top: .25rem;
}

.daidalos-extra .uk-margin {
	padding: 0;
}

.daidalos-extra .uk-grid-small > * + * {
	padding-top: .5rem;
}

/* ---------------------------------------------------------------- översikt */

.daidalos-col--side {
	position: sticky;
	top: 1rem;
}

@media (max-width: 959px) {
	.daidalos-col--side,
	.daidalos-col--side .daidalos-summary {
		position: static;
	}
}

.daidalos-lines {
	list-style: none;
	margin: 0;
	padding: 0;
}

.daidalos-line {
	padding: .875rem 0;
	border-bottom: 1px solid var(--d-rule);
}

.daidalos-line__head {
	display: flex;
	gap: .875rem;
	align-items: flex-start;
}

/* Omslaget visas i sin helhet: fast ruta, contain och aldrig beskärning. */
.daidalos-line__media {
	flex: 0 0 auto;
	display: block;
	line-height: 0;
}

.daidalos-line__cover {
	display: block;
	width: 52px;
	height: auto;
	max-height: 78px;
	object-fit: contain;
	background: #f3efe4;
	border: 1px solid var(--d-rule);
}

.daidalos-line__name {
	flex: 1 1 auto;
	min-width: 0;
	font-family: var(--d-serif);
	font-size: 1rem;
	color: var(--d-ink);
	text-decoration: none;
	overflow-wrap: break-word;
}

.daidalos-line__name:hover,
.daidalos-line__name:focus {
	color: var(--d-green-dark);
	text-decoration: underline;
}

.daidalos-line__sum {
	flex: 0 0 auto;
	margin-left: auto;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
}

.daidalos-line__foot {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-top: .5rem;
}

.daidalos-qty {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--d-form-border);
}

.daidalos-qty__btn {
	width: 38px;
	height: 38px;
	border: 0;
	background: #fff;
	color: var(--d-green);
	font-size: 1.125rem;
	line-height: 1;
	cursor: pointer;
}

.daidalos-qty__btn:hover,
.daidalos-qty__btn:focus-visible {
	background: var(--d-panel);
	outline: 2px solid var(--d-green);
	outline-offset: -2px;
}

.daidalos-qty__input {
	width: 48px;
	height: 38px;
	border: 0;
	border-left: 1px solid var(--d-rule);
	border-right: 1px solid var(--d-rule);
	text-align: center;
	font-family: var(--d-sans);
	font-size: 1rem;
	background: #fff;
	color: var(--d-ink);
}

.daidalos-remove {
	min-height: 38px;
	padding: .25rem .5rem;
	border: 0;
	background: none;
	color: var(--d-muted);
	font-family: var(--d-sans);
	font-size: .875rem;
	text-decoration: underline;
	cursor: pointer;
}

.daidalos-remove:hover,
.daidalos-remove:focus-visible {
	color: var(--d-danger);
	outline: 2px solid var(--d-danger);
	outline-offset: 1px;
}

/* ---------------------------------------------------------------- rabatt */

.daidalos-coupon {
	margin: 1.25rem 0;
	padding: 1rem;
	background: var(--d-panel);
}

.daidalos-coupon__row {
	display: flex;
	gap: .5rem;
	margin-top: .25rem;
}

.daidalos-coupon__row .uk-input {
	flex: 1 1 auto;
}

.daidalos-coupon__active {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	margin: 0;
	font-size: .9375rem;
}

.daidalos-coupon__remove {
	color: var(--d-danger);
	font-size: .875rem;
}

.daidalos-coupon__remove:focus-visible {
	outline: 2px solid var(--d-danger);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------- summa */

.daidalos-totals {
	margin: 1rem 0 0;
	padding: 1rem 0 0;
	border-top: 1px solid var(--d-rule);
	font-size: .9375rem;
}

.daidalos-totals > div {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: .25rem 0;
}

.daidalos-totals dt {
	margin: 0;
	color: var(--d-muted);
}

.daidalos-totals dd {
	margin: 0;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.daidalos-totals__discount dd {
	color: var(--d-green-dark);
	font-weight: 600;
}

.daidalos-totals__sum {
	margin-top: .5rem;
	padding-top: .75rem;
	border-top: 1px solid var(--d-rule);
	font-size: 1.125rem;
}

.daidalos-totals__sum dt {
	color: var(--d-ink);
	font-weight: 600;
}

.daidalos-totals__sum dd {
	font-weight: 700;
}

/* ---------------------------------------------------------------- knappar */

.daidalos-cta {
	margin: 1.25rem 0 .75rem;
}

.daidalos-btn {
	min-height: 44px;
	border-radius: 0;
	font-family: var(--d-sans);
	font-size: 1rem;
	font-weight: 600;
	cursor: pointer;
}

.daidalos-btn--primary {
	width: 100%;
	padding: .75rem 1.25rem;
	border: 1px solid var(--d-green);
	background: var(--d-green);
	color: #fff;
}

.daidalos-btn--primary:hover,
.daidalos-btn--primary:focus-visible {
	background: var(--d-green-dark);
	border-color: var(--d-green-dark);
	outline: 3px solid var(--d-ink);
	outline-offset: 2px;
}

.daidalos-btn--ghost {
	padding: .5rem 1rem;
	border: 1px solid var(--d-form-border);
	background: #fff;
	color: var(--d-ink);
	white-space: nowrap;
}

.daidalos-btn--ghost:hover,
.daidalos-btn--ghost:focus-visible {
	border-color: var(--d-green);
	color: var(--d-green-dark);
	outline: 2px solid var(--d-green);
	outline-offset: 1px;
}

/* ---------------------------------------------------- kassan i sidmallen */

/* Kassan har ingen sidokolumn och ska börja nära sökfältet, framför allt i mobil. */
.d-checkout .d-page {
	padding-top: var(--d-space-2);
}

.d-checkout .daidalos-title {
	margin: 0 0 .75rem;
}

@media (max-width: 959px) {
	.d-checkout .d-page {
		padding-top: .75rem;
	}

	.d-checkout .daidalos-title {
		margin: 0 0 .5rem;
	}
}

/* ---------------------------------------------------------------- villkor */

.daidalos-tos {
	margin-top: 1rem;
	padding-top: 1rem;
	border-top: 1px solid var(--d-rule);
	font-size: .875rem;
}

.daidalos-tos__check {
	display: flex;
	align-items: flex-start;
	gap: .625rem;
	min-height: 44px;
	padding: .375rem 0;
	font-weight: 400;
	line-height: 1.35;
	cursor: pointer;
}

.daidalos-kassa .daidalos-tos__box {
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	margin: .1rem 0 0;
	border: 1px solid var(--d-form-border);
	cursor: pointer;
}

.daidalos-tos__link {
	margin: .25rem 0 0 2rem;
}

.daidalos-tos a,
.daidalos-modal a {
	color: var(--d-green-dark);
	text-decoration: underline;
}

.daidalos-modal iframe {
	width: 100%;
	height: 60vh;
	border: 1px solid var(--d-rule);
	background: #fff;
}

.daidalos-modal__fallback {
	margin: .75rem 0 0;
	font-size: .875rem;
	color: var(--d-muted);
}

/* ---------------------------------------------------------------- fel */

.daidalos-notice {
	margin: 0 0 1.5rem;
	padding: 1rem 1.25rem;
	border-left: 4px solid var(--d-danger);
	background: #fdf2f2;
	font-size: .9375rem;
}

.daidalos-notice p {
	margin: 0 0 .5rem;
}

.daidalos-notice p:last-child {
	margin-bottom: 0;
}

/* Felet är en egen rad under fältet och skjuter ned nästa etikett i stället för
   att lägga sig över den. */
.daidalos-fielderror {
	display: block;
	width: 100%;
	margin-top: .25rem;
	color: var(--d-danger);
	font-size: .875rem;
	line-height: 1.35;
}

.daidalos-kassa .uk-margin,
.daidalos-kassa .uk-form-controls {
	display: block;
}

.daidalos-fields .uk-grid {
	align-items: flex-start;
}

.daidalos-fields .uk-grid > * {
	min-width: 0;
}

.daidalos-kassa [aria-invalid="true"] {
	border-color: var(--d-danger) !important;
}

.daidalos-error summary,
.daidalos-error {
	color: var(--d-danger);
}

.daidalos-noscript {
	margin: 1rem 0;
	padding: .75rem 1rem;
	border-left: 4px solid var(--d-warning, #7a5a00);
	background: #fffaf0;
	font-size: .875rem;
}

/* Om VirtueMarts egen villkorstext någon gång renderas här ska den inte bli en tabell
   mitt i formuläret. Kryssrutan har klassen terms-of-service i VM:s markup och får
   därför inte träffas av regeln - därav det smala urvalet. */
#full-tos {
	display: none;
}

/* En tom modulrad över kassan gav 40 px död yta mellan sökfältet och rubriken. */
.d-checkout .d-section:has(.d-module > .d-custom:empty) {
	display: none;
}

/* Noten under slutknappen: vad som händer när kunden klickar. */
.daidalos-cta__note {
	margin: .5rem 0 0;
	font-family: var(--d-sans);
	font-size: .8125rem;
	color: var(--d-muted);
}

@media (max-width: 639px) {
	.daidalos-line__cover {
		width: 44px;
		max-height: 66px;
	}

	.daidalos-line__head {
		gap: .625rem;
	}

	.daidalos-line__foot {
		flex-wrap: wrap;
		gap: .5rem;
	}
}

/* ------------------------------------------------------- köpvillkor i modal */

/* Villkorstexten ritas i sidan och scrollar inne i modalen. Genom att overlays,
   dialog och innehåll ligger i egna lager kan inga fältfel hamna ovanpå. */
.uk-modal.daidalos-villkor-modal {
	z-index: 1200;
}

.daidalos-villkor-modal .uk-modal-dialog {
	width: calc(100% - 2rem);
	max-width: 760px;
	background: #fff;
	z-index: 1201;
}

.daidalos-villkor__body {
	max-height: min(68vh, 620px);
	overflow-y: auto;
	padding-right: .75rem;
	font-size: .9375rem;
	line-height: 1.6;
}

.daidalos-villkor__body:focus-visible {
	outline: 2px solid var(--d-green);
	outline-offset: 4px;
}

.daidalos-villkor__body h3,
.daidalos-villkor__body h4 {
	margin: 1.25rem 0 .5rem;
	font-family: var(--d-serif);
	font-size: 1.0625rem;
}

.daidalos-villkor__body h3:first-child {
	margin-top: 0;
}

.daidalos-villkor__body p,
.daidalos-villkor__body li {
	margin: 0 0 .75rem;
}

.daidalos-villkor__body ul {
	padding-left: 1.25rem;
}

.daidalos-modal__fallback {
	margin: 1rem 0 0;
	font-size: .875rem;
}

/* Egen sida utan JavaScript */
.daidalos-villkor-sida {
	max-width: 760px;
}

.daidalos-villkor-sida .daidalos-villkor__body {
	max-height: none;
	overflow: visible;
	padding-right: 0;
}

@media (max-width: 639px) {
	.daidalos-villkor-modal .uk-modal-dialog {
		margin: 1rem auto;
	}

	.daidalos-villkor__body {
		max-height: 62vh;
	}
}

/* --------------------------------------------------- antal: läge och status */

/* Knappen vid gränsen är stängd, inte bara overksam. */
.daidalos-qty__btn:disabled {
	opacity: .4;
	cursor: not-allowed;
}

.daidalos-qty__btn:disabled:hover {
	background: #fff;
	color: inherit;
}

/* Kort rad under orderraderna som säger att antalet uppdateras eller att det gick fel. */
.daidalos-qty__status {
	min-height: 1.25rem;
	margin: .5rem 0 0;
	font-family: var(--d-sans);
	font-size: .8125rem;
	line-height: 1.35;
	color: var(--d-muted);
}

.daidalos-qty__status--error {
	color: var(--d-danger);
	font-weight: 600;
}

.daidalos-lines[aria-busy="true"] .daidalos-line__sum {
	opacity: .6;
}

/* ------------------------------------------------- betalsätt: rad och logotyp */

/* Raden är en enda klickyta: etiketten fyller hela bredden och bär logotypen. */
.daidalos-pay__option {
	display: flex;
	align-items: center;
	gap: 0;
	/* Samma vänsterindrag som Privatperson/Företag, så radioknapparna står i linje. */
	padding: 0 0 0 .875rem;
}

.daidalos-pay__label {
	display: flex;
	align-items: center;
	flex: 1 1 auto;
	gap: .375rem;
	min-height: 48px;
	padding: .7rem .9rem .7rem 0;
	cursor: pointer;
}

.daidalos-pay__brand {
	display: inline-flex;
	align-items: center;
	gap: .625rem;
}

/* SVG:n skalas efter höjden och behåller sina proportioner (577,62 × 175,83). */
.daidalos-pay__logo {
	display: block;
	width: auto;
	height: 26px;
	max-width: 130px;
	flex: 0 0 auto;
}

.daidalos-pay__label .vmpayment_name {
	font-weight: 600;
}

@media (max-width: 639px) {
	.daidalos-pay__logo {
		height: 22px;
		max-width: 110px;
	}
}

/* Radioknappen i betalsättsraden: indraget kommer från raden, inte från marginal. */
.daidalos-pay__option > .uk-radio {
	margin-right: .5rem;
	margin-left: 0;
}

/* QR-koden kunde inte hämtas: visa förklaring, nytt försök och fakturavägen. */
.daidalos-swishpay__qrfail {
	display: flex;
	flex-direction: column;
	gap: .625rem;
	padding: 1rem;
	border: 1px solid var(--d-form-border);
	background: var(--d-panel);
	max-width: 22rem;
}

.daidalos-swishpay__qrfail[hidden] {
	display: none;
}

.daidalos-swishpay__qrfail-text {
	margin: 0;
	font-size: .9375rem;
	line-height: 1.45;
}

.daidalos-swishpay__qrfail form {
	margin: 0;
}

.daidalos-swishpay__qr.is-broken .daidalos-swishpay__hint--qr {
	display: none;
}

/* Automatiken pausad: betalningen är inte avvisad. */
.daidalos-swishpay__paused {
	margin: 1rem 0 0;
	padding: .875rem 1rem;
	border-left: 3px solid #b8860b;
	background: #fdf8e8;
	font-size: .9375rem;
	line-height: 1.5;
}

.daidalos-swishpay__paused[hidden] {
	display: none;
}
