/* ============================================================
 *  Pluffie Components
 *  Knoppen, badges, cards, tags, formulieren.
 * ============================================================ */

/* Knoppen */

.pluffie-btn,
.pluffie-btn:link,
.pluffie-btn:visited {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--pluffie-space-2xs);
	padding: 0.85rem 1.5rem;
	font-family: var(--pluffie-font-body);
	font-size: var(--pluffie-fs-xs);
	font-weight: var(--pluffie-fw-bold);
	line-height: 1;
	text-decoration: none;
	border-radius: var(--pluffie-radius-pill);
	border: 2px solid transparent;
	cursor: pointer;
	transition: transform var(--pluffie-transition-fast), box-shadow var(--pluffie-transition-base), background var(--pluffie-transition-base);
	will-change: transform;
}

.pluffie-btn:hover,
.pluffie-btn:focus-visible {
	transform: translateY(-2px);
	box-shadow: var(--pluffie-shadow-hover);
}

.pluffie-btn:active {
	transform: translateY(0);
}

.pluffie-btn--primary {
	background: var(--pluffie-accent);
	color: var(--pluffie-white);
	box-shadow: 0 6px 18px rgba(197, 111, 69, 0.28);
}

.pluffie-btn--primary:hover {
	background: var(--pluffie-accent-dark);
	color: var(--pluffie-white);
	box-shadow: 0 10px 26px rgba(197, 111, 69, 0.34);
}

.pluffie-btn--secondary {
	background: var(--pluffie-peach);
	color: var(--pluffie-accent-dark);
}

.pluffie-btn--secondary:hover {
	background: var(--pluffie-peach-dark);
	color: var(--pluffie-fg);
}

.pluffie-btn--ghost {
	background: transparent;
	color: var(--pluffie-fg);
	border-color: var(--pluffie-border);
}

.pluffie-btn--ghost:hover {
	background: var(--pluffie-bg-card);
	color: var(--pluffie-accent-dark);
	border-color: var(--pluffie-accent);
}

/* Crème knop: primaire actie op donkere secties */
.pluffie-btn--cream {
	background: var(--pluffie-bg-card);
	color: var(--pluffie-fg);
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
}

.pluffie-btn--cream:hover {
	background: var(--pluffie-white);
	color: var(--pluffie-accent-dark);
}

/* Outline-licht: secundaire actie op donkere secties */
.pluffie-btn--outline-light {
	background: transparent;
	color: var(--pluffie-on-dark);
	border-color: var(--pluffie-dark-border);
}

.pluffie-btn--outline-light:hover {
	background: rgba(251, 246, 239, 0.1);
	color: var(--pluffie-on-dark);
	border-color: var(--pluffie-on-dark);
}

.pluffie-btn--lg {
	padding: 1.1rem 2rem;
	font-size: var(--pluffie-fs-sm);
}

.pluffie-btn--sm {
	padding: 0.6rem 1.1rem;
	font-size: var(--pluffie-fs-2xs);
}

/* Badges en tags */

.pluffie-badge {
	display: inline-flex;
	align-items: center;
	gap: var(--pluffie-space-3xs);
	padding: 0.3rem 0.75rem;
	font-size: var(--pluffie-fs-2xs);
	font-weight: var(--pluffie-fw-bold);
	border-radius: var(--pluffie-radius-pill);
	background: var(--pluffie-peach-light);
	color: var(--pluffie-mokka-dark);
}

.pluffie-badge--sage   { background: var(--pluffie-sage-light);   color: var(--pluffie-sage-dark); }
.pluffie-badge--sky    { background: var(--pluffie-sky-light);    color: var(--pluffie-sky-dark); }
.pluffie-badge--butter { background: var(--pluffie-butter-light); color: var(--pluffie-butter-dark); }
.pluffie-badge--lilac  { background: var(--pluffie-lilac-light);  color: var(--pluffie-lilac-dark); }
.pluffie-badge--mokka  { background: var(--pluffie-mokka-50);     color: var(--pluffie-mokka-dark); }

/* Karakter-tags: gekleurd per karakter */
.pluffie-karakter-tag {
	display: inline-flex;
	align-items: center;
	gap: var(--pluffie-space-2xs);
	padding: 0.4rem 0.9rem;
	font-family: var(--pluffie-font-display);
	font-size: var(--pluffie-fs-2xs);
	font-weight: var(--pluffie-fw-semibold);
	border-radius: var(--pluffie-radius-pill);
	background: var(--pluffie-soft-white);
	color: var(--pluffie-mokka-dark);
	border: 2px solid var(--pluffie-border);
}

.pluffie-karakter-tag[data-karakter="de-dappere"]    { background: rgba(232, 168, 87, 0.12);  border-color: var(--pluffie-karakter-dappere); }
.pluffie-karakter-tag[data-karakter="de-rustige"]    { background: rgba(191, 215, 232, 0.18); border-color: var(--pluffie-karakter-rustige); }
.pluffie-karakter-tag[data-karakter="de-luisteraar"] { background: rgba(217, 201, 224, 0.18); border-color: var(--pluffie-karakter-luisteraar); }
.pluffie-karakter-tag[data-karakter="de-wijze"]      { background: rgba(201, 217, 192, 0.18); border-color: var(--pluffie-karakter-wijze); }

/* Cards */

.pluffie-card {
	background: var(--pluffie-soft-white);
	border-radius: var(--pluffie-radius-lg);
	padding: var(--pluffie-space-lg);
	box-shadow: var(--pluffie-shadow-soft);
	transition: transform var(--pluffie-transition-base), box-shadow var(--pluffie-transition-base);
}

.pluffie-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--pluffie-shadow-hover);
}

/* Productkaart specifiek */

.pluffie-product-card {
	display: flex;
	flex-direction: column;
	background: var(--pluffie-soft-white);
	border-radius: var(--pluffie-radius-lg);
	overflow: hidden;
	box-shadow: var(--pluffie-shadow-soft);
	transition: transform var(--pluffie-transition-base), box-shadow var(--pluffie-transition-base);
	text-decoration: none;
	color: inherit;
}

.pluffie-product-card:hover {
	transform: translateY(-6px) rotate(-1deg);
	box-shadow: var(--pluffie-shadow-hover);
}

.pluffie-product-card__media {
	position: relative;
	aspect-ratio: 1 / 1;
	background: var(--pluffie-peach-light);
	overflow: hidden;
}

.pluffie-product-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0;
	transition: transform var(--pluffie-transition-slow);
}

.pluffie-product-card:hover .pluffie-product-card__media img {
	transform: scale(1.05);
}

.pluffie-product-card__body {
	padding: var(--pluffie-space-md);
	display: flex;
	flex-direction: column;
	gap: var(--pluffie-space-2xs);
}

.pluffie-product-card__naam {
	font-family: var(--pluffie-font-display);
	font-size: var(--pluffie-fs-md);
	font-weight: var(--pluffie-fw-bold);
	color: var(--pluffie-mokka-dark);
	margin: 0;
	text-decoration: none;
}

.pluffie-product-card__oneliner {
	font-size: var(--pluffie-fs-2xs);
	color: var(--pluffie-text-muted);
	margin: 0;
}

.pluffie-product-card__price {
	font-family: var(--pluffie-font-display);
	font-weight: var(--pluffie-fw-semibold);
	color: var(--pluffie-mokka);
}

/* Formulieren */

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="url"],
input[type="password"],
input[type="search"],
textarea,
select {
	width: 100%;
	padding: 0.85rem 1.1rem;
	background: var(--pluffie-soft-white);
	border: 2px solid var(--pluffie-border);
	border-radius: var(--pluffie-radius-md);
	font-family: var(--pluffie-font-body);
	font-size: var(--pluffie-fs-xs);
	color: var(--pluffie-text);
	transition: border-color var(--pluffie-transition-base), box-shadow var(--pluffie-transition-base);
}

input:focus,
textarea:focus,
select:focus {
	border-color: var(--pluffie-mokka);
	outline: none;
	box-shadow: var(--pluffie-shadow-glow);
}

label {
	display: block;
	margin-bottom: var(--pluffie-space-2xs);
	font-weight: var(--pluffie-fw-semibold);
	color: var(--pluffie-mokka-dark);
}

/* Loader / wiggle animatie voor speelse touches */

@keyframes pluffie-wiggle {
	0%, 100% { transform: rotate(0deg); }
	25%      { transform: rotate(-3deg); }
	75%      { transform: rotate(3deg); }
}

.pluffie-wiggle:hover {
	animation: pluffie-wiggle 0.5s ease-in-out;
}

@keyframes pluffie-float {
	0%, 100% { transform: translateY(0); }
	50%      { transform: translateY(-6px); }
}

.pluffie-float {
	animation: pluffie-float 3s ease-in-out infinite;
}

/* Footer-logo (hoogte instelbaar via Site-inhoud > Algemeen) */
.pluffie-site-footer__brand .pluffie-logo img,
.pluffie-site-footer .pluffie-logo img {
	max-height: var(--pluffie-logo-h-footer, 48px);
	width: auto;
	height: auto;
}

/* Betaalmethode-iconen (globaal: PDP, checkout, footer) */
.pluffie-pay {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0 0 var(--pluffie-space-md);
}
.pluffie-pay__item {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 46px;
	height: 30px;
	padding: 0 8px;
	background: var(--pluffie-bg-card);
	border: 1px solid var(--pluffie-border-soft);
	border-radius: 8px;
	font-family: var(--pluffie-font-display);
	font-weight: var(--pluffie-fw-bold);
	font-size: 0.72rem;
	line-height: 1;
}
.pluffie-pay__item--ideal { color: #cc0066; }
.pluffie-pay__item--visa { color: #1a1f71; letter-spacing: 0.5px; }
.pluffie-pay__item--paypal { color: #003087; }
.pluffie-pay__item--klarna { background: #ffb3c7; color: #17120f; border-color: #ffb3c7; }
.pluffie-pay__item--applepay { color: #111; }
.pluffie-pay__item--bancontact { color: #005498; font-size: 0.6rem; }
.pluffie-pay__item--mc { padding: 0 6px; }
.pluffie-pay__item--mc svg { display: block; }
