/**
 * NEXUS Shop Toolkit – component styles.
 * Design tokens are defined with zero specificity so the NEXUS theme (or
 * any other theme) can override them on :root.
 */

:where(:root) {
	--nx-bg: #ffffff;
	--nx-surface: #ffffff;
	--nx-surface-2: #f5f5f7;
	--nx-text: #1d1d1f;
	--nx-muted: #6e6e73;
	--nx-line: #d2d2d7;
	--nx-accent: #0071e3;
	--nx-accent-hover: #0077ed;
	--nx-on-accent: #ffffff;
	--nx-success: #1a7f37;
	--nx-warning: #b25000;
	--nx-danger: #d70015;
	--nx-radius: 18px;
	--nx-radius-sm: 12px;
	--nx-shadow: 0 2px 12px rgba(0, 0, 0, .06);
}

@media (prefers-color-scheme: dark) {
	:where(:root:not([data-theme="light"])) {
		--nx-bg: #000000;
		--nx-surface: #1c1c1e;
		--nx-surface-2: #2c2c2e;
		--nx-text: #f5f5f7;
		--nx-muted: #a1a1a6;
		--nx-line: #38383a;
		--nx-accent: #2997ff;
		--nx-accent-hover: #47a6ff;
		--nx-success: #30d158;
		--nx-warning: #ff9f0a;
		--nx-danger: #ff453a;
		--nx-shadow: none;
	}
}

:where(:root[data-theme="dark"]) {
	--nx-bg: #000000;
	--nx-surface: #1c1c1e;
	--nx-surface-2: #2c2c2e;
	--nx-text: #f5f5f7;
	--nx-muted: #a1a1a6;
	--nx-line: #38383a;
	--nx-accent: #2997ff;
	--nx-accent-hover: #47a6ff;
	--nx-success: #30d158;
	--nx-warning: #ff9f0a;
	--nx-danger: #ff453a;
	--nx-shadow: none;
}

/* ---------- Utilities ---------- */
.nx-muted { color: var(--nx-muted); }
.nx-small { font-size: .875rem; }
.nx-lead { font-size: 1.1875rem; line-height: 1.5; color: var(--nx-muted); max-width: 46em; }
.nx-eyebrow { margin: 0 0 .25rem; font-size: .8125rem; font-weight: 600; letter-spacing: .02em; color: var(--nx-muted); }
.nx-hp { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; border: 0 !important; }
.nx-icon { flex-shrink: 0; vertical-align: middle; }

/* Mask icons (safe inside wp_kses output) */
.nx-i { display: inline-block; width: 1.1em; height: 1.1em; vertical-align: -.18em; background: currentColor; -webkit-mask: var(--nx-i) center / contain no-repeat; mask: var(--nx-i) center / contain no-repeat; }
.nx-i--check { --nx-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E"); }
.nx-i--truck { --nx-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.5h11v9h-11z'/%3E%3Cpath d='M13.5 9.5h4l3 3.2v2.8h-7'/%3E%3Ccircle cx='7' cy='17.5' r='1.8'/%3E%3Ccircle cx='17' cy='17.5' r='1.8'/%3E%3C/svg%3E"); }
.nx-i--doc { --nx-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8l-5-5Z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E"); }
.nx-i--return { --nx-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 14 4 9l5-5'/%3E%3Cpath d='M4 9h10.5a5.5 5.5 0 0 1 0 11H11'/%3E%3C/svg%3E"); }
.nx-i--external { --nx-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9'/%3E%3Cpath d='M18 14v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4'/%3E%3C/svg%3E"); }

/* ---------- Buttons ---------- */
.nx-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .4em;
	min-height: 44px; padding: .65em 1.35em;
	border: 0; border-radius: 980px;
	background: var(--nx-btn, #0071e3); color: var(--nx-on-accent) !important;
	font: inherit; font-size: 1.0625rem; font-weight: 500; line-height: 1.2; letter-spacing: -.01em;
	text-decoration: none !important; cursor: pointer;
	transition: background-color .2s ease, transform .1s ease, box-shadow .2s ease;
}
.nx-btn:hover { background: var(--nx-btn-hover, #0062c4); }
.nx-btn:active { transform: scale(.98); }
.nx-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--nx-accent) 45%, transparent); outline-offset: 2px; }
.nx-btn--small { min-height: 36px; padding: .45em 1.05em; font-size: .9375rem; }
.nx-btn--secondary { background: var(--nx-surface-2); color: var(--nx-text) !important; }
.nx-btn--secondary:hover { background: color-mix(in srgb, var(--nx-surface-2) 85%, var(--nx-text)); }
.nx-btn--danger { background: transparent; color: var(--nx-danger) !important; box-shadow: inset 0 0 0 1px currentColor; }
.nx-btn--danger:hover { background: color-mix(in srgb, var(--nx-danger) 10%, transparent); }
.nx-btn--confirm { background: var(--nx-text); color: var(--nx-bg) !important; }
.nx-btn--confirm:hover { background: color-mix(in srgb, var(--nx-text) 85%, var(--nx-accent)); }
.nx-link-btn { appearance: none; background: none; border: 0; padding: 0; color: var(--nx-accent); font: inherit; cursor: pointer; }
.nx-link-btn:hover { text-decoration: underline; }

/* ---------- Cards ---------- */
.nx-card {
	background: var(--nx-surface);
	border: 1px solid var(--nx-line);
	border-radius: var(--nx-radius);
	padding: clamp(1.25rem, 3vw, 2rem);
	box-shadow: var(--nx-shadow);
}
.nx-card + .nx-card { margin-top: 1rem; }
.nx-card__title { margin: 0 0 .75rem; font-size: 1.5rem; font-weight: 600; letter-spacing: -.02em; }
.nx-card--success { text-align: center; }
.nx-success-icon { width: 56px; height: 56px; display: block; margin: 0 auto 1rem; color: var(--nx-success); }
.nx-empty-state { text-align: center; padding: 3rem 1.5rem; }
.nx-empty-state h3 { margin: .5rem 0; font-size: 1.25rem; }
.nx-empty-state__icon { display: inline-flex; color: var(--nx-muted); }
.nx-alert { padding: .9rem 1.1rem; border-radius: var(--nx-radius-sm); margin-bottom: 1rem; }
.nx-alert--error { background: color-mix(in srgb, var(--nx-danger) 10%, transparent); color: var(--nx-danger); }

/* ---------- Badges ---------- */
.nx-badge { display: inline-flex; align-items: center; padding: .2em .7em; border-radius: 980px; font-size: .75rem; font-weight: 600; letter-spacing: .01em; background: var(--nx-surface-2); color: var(--nx-text); vertical-align: middle; margin: 0; }
.nx-badge--processing, .nx-badge--in-production, .nx-badge--req-review, .nx-badge--req-quoted { background: color-mix(in srgb, var(--nx-accent) 14%, transparent); color: var(--nx-accent); }
.nx-badge--shipped, .nx-badge--completed, .nx-badge--req-accepted, .nx-badge--req-done { background: color-mix(in srgb, var(--nx-success) 14%, transparent); color: var(--nx-success); }
.nx-badge--on-hold, .nx-badge--pending, .nx-badge--req-new { background: color-mix(in srgb, var(--nx-warning) 14%, transparent); color: var(--nx-warning); }
.nx-badge--cancelled, .nx-badge--failed, .nx-badge--refunded, .nx-badge--req-declined { background: color-mix(in srgb, var(--nx-danger) 12%, transparent); color: var(--nx-danger); }

/* ---------- Order status & timeline ---------- */
.nx-order-status { background: var(--nx-surface); border: 1px solid var(--nx-line); border-radius: var(--nx-radius); padding: clamp(1.25rem, 3vw, 2rem); margin: 0 0 2rem; box-shadow: var(--nx-shadow); }
.nx-order-status__title { margin: 0 0 1.5rem; font-size: clamp(1.75rem, 4vw, 2.25rem); font-weight: 700; letter-spacing: -.025em; line-height: 1.1; }
.nx-order-status__note { color: var(--nx-muted); margin: 1rem 0 0; }
.nx-order-status__actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--nx-line); }

.nx-timeline { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); position: relative; }
.nx-timeline__step { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: .45rem; padding: 0 .25rem; }
.nx-timeline__step::before { content: ""; position: absolute; top: 13px; left: -50%; width: 100%; height: 3px; background: var(--nx-line); border-radius: 3px; z-index: 0; }
.nx-timeline__step:first-child::before { display: none; }
.nx-timeline__step.is-done::before, .nx-timeline__step.is-current::before { background: var(--nx-accent); }
.nx-timeline__dot { position: relative; z-index: 1; width: 28px; height: 28px; border-radius: 50%; background: var(--nx-surface); box-shadow: inset 0 0 0 3px var(--nx-line); display: grid; place-items: center; }
.nx-timeline__step.is-done .nx-timeline__dot { background: var(--nx-accent); box-shadow: none; }
.nx-timeline__step.is-done .nx-timeline__dot::after { content: ""; width: 14px; height: 14px; background: var(--nx-on-accent); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat; }
.nx-timeline__step.is-current .nx-timeline__dot { box-shadow: inset 0 0 0 3px var(--nx-accent), 0 0 0 6px color-mix(in srgb, var(--nx-accent) 18%, transparent); }
.nx-timeline__step.is-current .nx-timeline__dot::after { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--nx-accent); animation: nx-pulse 1.8s ease-in-out infinite; }
.nx-timeline__label { font-size: .875rem; font-weight: 500; color: var(--nx-muted); }
.nx-timeline__step.is-done .nx-timeline__label, .nx-timeline__step.is-current .nx-timeline__label { color: var(--nx-text); }
.nx-timeline__step.is-current .nx-timeline__label { font-weight: 600; }
.nx-timeline__date { font-size: .75rem; color: var(--nx-muted); }
.nx-timeline--compact { margin-top: 1.25rem; }
.nx-timeline--compact .nx-timeline__label { font-size: .75rem; }
@keyframes nx-pulse { 50% { transform: scale(.6); opacity: .6; } }
@media (prefers-reduced-motion: reduce) { .nx-timeline__step.is-current .nx-timeline__dot::after { animation: none; } }
@media (max-width: 560px) {
	.nx-timeline:not(.nx-timeline--compact) { grid-template-columns: 1fr; gap: 0; }
	.nx-timeline:not(.nx-timeline--compact) .nx-timeline__step { flex-direction: row; text-align: left; gap: .9rem; padding: 0 0 1.1rem; }
	.nx-timeline:not(.nx-timeline--compact) .nx-timeline__step::before { top: auto; bottom: 100%; left: 12.5px; width: 3px; height: calc(100% - 28px); transform: translateY(14px); }
	.nx-timeline:not(.nx-timeline--compact) .nx-timeline__date { margin-left: auto; }
	.nx-timeline--compact .nx-timeline__label { font-size: .6875rem; }
}

.nx-shipment-list { margin-top: 1.5rem; }
.nx-shipment { display: flex; align-items: center; gap: .9rem; padding: .9rem 1rem; border-radius: var(--nx-radius-sm); background: var(--nx-surface-2); margin-bottom: .5rem; }
.nx-shipment__icon { width: 26px; height: 26px; color: var(--nx-accent); }
.nx-shipment__text { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.nx-shipment__text span { color: var(--nx-muted); font-size: .9375rem; overflow-wrap: anywhere; }

/* ---------- Account dashboard ---------- */
.nx-dashboard__hello { margin: 0 0 .25rem; font-size: clamp(2rem, 5vw, 2.75rem); font-weight: 700; letter-spacing: -.03em; line-height: 1.08; }
.nx-dashboard__head { margin-bottom: 1.75rem; }
.nx-last-order { margin-bottom: 1.5rem; }
.nx-last-order__head { display: flex; gap: 1rem; justify-content: space-between; align-items: flex-start; }
.nx-last-order__title { margin: 0 0 .25rem; font-size: 1.375rem; font-weight: 600; letter-spacing: -.02em; display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.nx-last-order__track { margin: 1.25rem 0 0; font-size: .9375rem; display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.nx-last-order__track .nx-i { color: var(--nx-accent); width: 1.3em; height: 1.3em; }
.nx-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr)); gap: .9rem; }
.nx-tile { display: flex; flex-direction: column; gap: .2rem; padding: 1.25rem; border-radius: var(--nx-radius); background: var(--nx-surface-2); color: var(--nx-text) !important; text-decoration: none !important; transition: transform .2s ease, background-color .2s ease; }
.nx-tile:hover { transform: translateY(-2px); background: color-mix(in srgb, var(--nx-surface-2) 92%, var(--nx-accent)); }
.nx-tile__icon { color: var(--nx-accent); margin-bottom: .6rem; }
.nx-tile__title { font-weight: 600; font-size: 1.0625rem; }
.nx-tile__text { color: var(--nx-muted); font-size: .875rem; }
.nx-dashboard__help { margin-top: 1.75rem; }

/* ---------- Wishlist ---------- */
.nx-wish { display: inline-flex; align-items: center; gap: .45rem; appearance: none; border: 0; background: none; color: var(--nx-text); font: inherit; font-size: .9375rem; cursor: pointer; padding: .35rem 0; text-decoration: none; }
.nx-wish .nx-icon { transition: transform .25s cubic-bezier(.3, 1.6, .5, 1), fill .2s ease, color .2s ease; }
.nx-wish:hover .nx-icon { transform: scale(1.12); }
.nx-wish.is-active { color: #ff375f; }
.nx-wish.is-active .nx-icon { fill: currentColor; }
.nx-wish.is-active span { color: var(--nx-text); }
.nx-wish--loop { position: absolute; top: .75rem; right: .75rem; z-index: 3; width: 40px; height: 40px; justify-content: center; border-radius: 50%; background: color-mix(in srgb, var(--nx-surface) 82%, transparent); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); padding: 0; }
.nx-wish--single { margin-top: .75rem; }

.nx-wishlist__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.nx-wishlist__item { display: grid; grid-template-columns: 88px 1fr auto; gap: 1rem; align-items: center; padding: .9rem; border: 1px solid var(--nx-line); border-radius: var(--nx-radius); background: var(--nx-surface); }
.nx-wishlist__image img { width: 88px; height: 88px; object-fit: cover; border-radius: var(--nx-radius-sm); display: block; background: var(--nx-surface-2); }
.nx-wishlist__body { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.nx-wishlist__name { font-weight: 600; color: var(--nx-text) !important; text-decoration: none !important; }
.nx-wishlist__stock.is-in-stock { color: var(--nx-success); }
.nx-wishlist__stock.is-out-of-stock { color: var(--nx-danger); }
.nx-wishlist__actions { display: flex; flex-direction: column; gap: .5rem; align-items: flex-end; }
@media (max-width: 560px) {
	.nx-wishlist__item { grid-template-columns: 72px 1fr; }
	.nx-wishlist__image img { width: 72px; height: 72px; }
	.nx-wishlist__actions { grid-column: 1 / -1; flex-direction: row; justify-content: space-between; align-items: center; }
}

/* ---------- Forms ---------- */
.nx-form { max-width: 720px; }
.nx-form__intro { color: var(--nx-muted); margin-top: 0; }
.nx-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
.nx-form__grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 640px) { .nx-form__grid, .nx-form__grid--3 { grid-template-columns: 1fr; } }
.nx-field { display: flex; flex-direction: column; gap: .35rem; margin: 0 0 1.1rem; }
.nx-field > label { font-weight: 500; font-size: .9375rem; }
.nx-field input[type="text"], .nx-field input[type="email"], .nx-field input[type="number"], .nx-field select, .nx-field textarea {
	width: 100%; min-height: 48px; padding: .75rem 1rem;
	border: 1px solid var(--nx-line); border-radius: var(--nx-radius-sm);
	background: var(--nx-surface); color: var(--nx-text); font: inherit; font-size: 1.0625rem;
	transition: border-color .2s ease, box-shadow .2s ease;
}
.nx-field textarea { min-height: 96px; resize: vertical; }
.nx-field input:focus, .nx-field select:focus, .nx-field textarea:focus { outline: 0; border-color: var(--nx-accent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--nx-accent) 20%, transparent); }
.nx-field__hint { font-size: .8125rem; color: var(--nx-muted); }
.nx-field__error { font-size: .875rem; color: var(--nx-danger); }
.nx-field.has-error input, .nx-field.has-error textarea { border-color: var(--nx-danger); }
.nx-field--check label { display: flex; gap: .6rem; align-items: flex-start; font-weight: 400; font-size: .9375rem; }
.nx-field--check input { margin-top: .2rem; width: 18px; height: 18px; accent-color: var(--nx-accent); flex-shrink: 0; }
.nx-form__actions { margin: 1.5rem 0 0; display: flex; gap: .75rem; flex-wrap: wrap; }
.nx-form__actions--split { justify-content: space-between; }
.nx-form__actions--split form { margin: 0; }
.nx-inline-form { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin: 0; }

.nx-upload { position: relative; }
.nx-upload__drop { display: flex !important; flex-direction: column; align-items: center; gap: .3rem; padding: 2rem 1rem; border: 2px dashed var(--nx-line); border-radius: var(--nx-radius); text-align: center; cursor: pointer; transition: border-color .2s ease, background-color .2s ease; }
.nx-upload__drop:hover, .nx-upload.is-dragover .nx-upload__drop { border-color: var(--nx-accent); background: color-mix(in srgb, var(--nx-accent) 6%, transparent); }
.nx-upload__icon { color: var(--nx-accent); }
.nx-upload__title { font-weight: 600; }
.nx-upload__hint { font-size: .8125rem; color: var(--nx-muted); font-weight: 400; }
.nx-upload__file { font-size: .9375rem; color: var(--nx-accent); font-weight: 500; }
.nx-upload__input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
.nx-upload__input:focus-visible + * , .nx-upload:focus-within .nx-upload__drop { border-color: var(--nx-accent); }

.nx-segmented { display: inline-flex; padding: 3px; border-radius: 10px; background: var(--nx-surface-2); }
.nx-segmented label { position: relative; }
.nx-segmented input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.nx-segmented span { display: block; padding: .4rem 1rem; border-radius: 8px; font-size: .9375rem; font-weight: 500; }
.nx-segmented input:checked + span { background: var(--nx-surface); box-shadow: 0 1px 4px rgba(0, 0, 0, .12); }
.nx-segmented input:focus-visible + span { outline: 2px solid var(--nx-accent); }

/* ---------- Withdrawal ---------- */
.nx-withdrawal { max-width: 720px; }
.nx-steps { list-style: none; display: flex; gap: 1.5rem; padding: 0; margin: 0 0 1.25rem; }
.nx-steps li { display: flex; align-items: center; gap: .5rem; color: var(--nx-muted); font-weight: 500; }
.nx-steps li span { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--nx-surface-2); font-size: .8125rem; }
.nx-steps li.is-current { color: var(--nx-text); }
.nx-steps li.is-current span { background: var(--nx-btn, #0071e3); color: #fff; }
.nx-steps li.is-done span { background: var(--nx-success); color: #fff; }
.nx-declaration { margin: 1rem 0; padding: 1rem 1.25rem; border-left: 3px solid var(--nx-accent); background: var(--nx-surface-2); border-radius: 0 var(--nx-radius-sm) var(--nx-radius-sm) 0; font-size: 1.0625rem; }
.nx-summary { display: grid; grid-template-columns: auto 1fr; gap: .25rem 1rem; }
.nx-summary dt { color: var(--nx-muted); }
.nx-summary dd { margin: 0; font-weight: 500; }

/* ---------- Requests ---------- */
.nx-requests__head { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.nx-requests__head p { margin: 0; }
.nx-request-list { list-style: none; margin: 0; padding: 0; }
.nx-request__head { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.nx-request__title { margin: 0; font-size: 1.125rem; }
.nx-request__reply { margin-top: 1rem; padding: 1rem; border-radius: var(--nx-radius-sm); background: var(--nx-surface-2); }
.nx-request__reply p:last-child { margin-bottom: 0; }

/* ---------- Privacy centre ---------- */
.nx-privacy-card { display: grid; grid-template-columns: 44px 1fr; gap: 1rem; align-items: start; }
.nx-privacy-card__icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--nx-surface-2); color: var(--nx-accent); }
.nx-privacy-card--danger .nx-privacy-card__icon { color: var(--nx-danger); }
.nx-privacy-card__body h3 { margin: .35rem 0 .35rem; font-size: 1.125rem; }
.nx-privacy-card__body p { margin: 0 0 .9rem; }

/* ---------- Product page ---------- */
.nx-price-info { margin: -.25rem 0 1.25rem; }
.nx-price-note { margin: 0 0 .5rem; font-size: .8125rem; color: var(--nx-muted); }
.nx-price-note a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.nx-price-note--loop { display: block; margin-top: .15rem; }
.nx-delivery { display: flex; align-items: center; gap: .5rem; margin: 0; font-size: .9375rem; color: var(--nx-success); }
.nx-custom-made { margin: .75rem 0 0; padding: .75rem 1rem; border-radius: var(--nx-radius-sm); background: color-mix(in srgb, var(--nx-warning) 10%, transparent); color: var(--nx-text); font-size: .875rem; }
.nx-safety__list { display: grid; grid-template-columns: minmax(140px, 220px) 1fr; gap: .75rem 1.5rem; margin: 0; }
.nx-safety__list dt { color: var(--nx-muted); font-weight: 500; }
.nx-safety__list dd { margin: 0; }
.nx-safety__warnings { margin: 0; padding-left: 1.1em; }
.nx-safety__warnings li { margin-bottom: .35rem; }
@media (max-width: 560px) { .nx-safety__list { grid-template-columns: 1fr; gap: .25rem; } .nx-safety__list dd { margin-bottom: .75rem; } }
.nx-personalize input { max-width: 360px; }

/* ---------- Checkout ---------- */
.nx-item-details { display: flex; flex-direction: column; gap: .1rem; margin-top: .3rem; font-size: .8125rem; font-weight: 400; color: var(--nx-muted); }
.nx-item-custom { color: var(--nx-warning); }
.nx-checkout-legal { font-size: .875rem; color: var(--nx-muted); margin: 0 0 1rem; }
.nx-checkout-legal p { margin: 0 0 .5rem; }
.nx-carrier-consent label { font-size: .875rem; font-weight: 400 !important; }

/* ---------- Two-click embeds ---------- */
.nx-embed { position: relative; margin: 1.5rem 0; border-radius: var(--nx-radius); overflow: hidden; background: var(--nx-surface-2); aspect-ratio: 16 / 9; display: grid; place-items: center; }
.nx-embed__notice { max-width: 520px; padding: 1.5rem; text-align: center; }
.nx-embed__title { font-weight: 600; font-size: 1.125rem; margin: 0 0 .5rem; }
.nx-embed__text { color: var(--nx-muted); font-size: .9375rem; margin: 0 0 1rem; }
.nx-embed__actions { display: flex; flex-direction: column; align-items: center; gap: .75rem; margin: 0; }
.nx-embed__always { font-size: .875rem; color: var(--nx-muted); display: flex; align-items: center; gap: .4rem; }
.nx-embed.is-loaded { display: block; aspect-ratio: auto; background: none; }
.nx-embed.is-loaded iframe { max-width: 100%; }

/* ---------- Tracking page ---------- */
.nx-tracking-page .track_order { margin-top: 1.5rem; }

/* Documents (invoice, cancellation invoices, e-invoice) in "My account" */
.nx-documents { margin: 32px 0; }
.nx-documents h2 { font-size: 21px; margin: 0 0 12px; }
.nx-documents__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.nx-documents__list a { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: 14px; background: var(--nx-surface-2); color: var(--nx-text); text-decoration: none; font-weight: 500; min-height: 48px; overflow-wrap: anywhere; border: 1px solid transparent; }
.nx-documents__list a:hover { border-color: var(--nx-line); }
.nx-documents__list svg { flex: none; color: var(--nx-accent); }
.nx-business-field[hidden] { display: none !important; }

/* 3D viewer --------------------------------------------------------- */
.nx3d { position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: var(--nx-radius); background: radial-gradient(120% 90% at 50% 20%, var(--nx-surface) 0%, var(--nx-surface-2) 100%); overflow: hidden; touch-action: none; }
.nx3d__canvas { display: block; width: 100%; height: 100%; cursor: grab; outline: none; }
.nx3d__canvas:active { cursor: grabbing; }
.nx3d__canvas:focus-visible { box-shadow: inset 0 0 0 3px var(--nx-accent); border-radius: var(--nx-radius); }

/* Print request: model preview + estimate */
.nx-model { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 24px; align-items: start; margin: 8px 0 24px; padding: 16px; border-radius: var(--nx-radius); background: var(--nx-surface-2); }
.nx-model[hidden] { display: none; }
.nx-model .nx3d { background: radial-gradient(120% 90% at 50% 20%, var(--nx-surface) 0%, var(--nx-surface) 60%, var(--nx-surface-2) 100%); }
.nx-model__title { font-weight: 600; font-size: 19px; margin: 4px 0 12px; }
.nx-model__facts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0 0 16px; }
.nx-model__facts div { background: var(--nx-surface); border-radius: var(--nx-radius-sm); padding: 10px 12px; }
.nx-model__facts dt { font-size: 12px; color: var(--nx-muted); margin: 0; }
.nx-model__facts dd { margin: 2px 0 0; font-weight: 600; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.nx-model__estimate { background: var(--nx-surface); border-radius: var(--nx-radius-sm); padding: 12px 14px; margin-bottom: 12px; }
.nx-model__estimate[hidden] { display: none; }
.nx-model__label { margin: 0; font-size: 12px; color: var(--nx-muted); }
.nx-model__price { margin: 2px 0 6px; font-size: 28px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
@media (max-width: 700px) {
	.nx-model { grid-template-columns: 1fr; padding: 12px; gap: 16px; }
}

/* Product page: View in 3D */
.nx-product-3d { margin: 12px 0 24px; }
.nx-product-3d__open { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 18px; border-radius: 980px; border: 1px solid var(--nx-line); background: var(--nx-surface); color: var(--nx-text); font: inherit; font-weight: 500; cursor: pointer; }
.nx-product-3d__open:hover { border-color: var(--nx-text); }
.nx-product-3d__open:focus-visible { outline: 3px solid var(--nx-accent); outline-offset: 2px; }
.nx-product-3d.is-open .nx-product-3d__open { display: none; }
.nx-product-3d.is-loading .nx-product-3d__open { opacity: .6; pointer-events: none; }
.nx-product-3d__stage { margin-top: 4px; }
.nx-product-3d__stage[hidden] { display: none; }
.nx-product-3d__hint { margin: 8px 0 0; }
.nx-product-3d:not(.is-open) .nx-product-3d__hint { display: none; }
.nx-product-3d__status:empty { display: none; }

/* Swatches ---------------------------------------------------------- */
.nx-swatch-wrap.has-swatches select { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }
.nx-swatches { display: flex; flex-wrap: wrap; gap: 10px; margin: 4px 0 2px; }
.nx-swatch { position: relative; font: inherit; cursor: pointer; color: var(--nx-text); background: var(--nx-surface); border: 1px solid var(--nx-line); transition: border-color .15s, box-shadow .15s; }
.nx-swatch:focus-visible { outline: 3px solid var(--nx-accent); outline-offset: 2px; }
.nx-swatch:disabled { opacity: .35; cursor: not-allowed; }
.nx-swatches--text .nx-swatch { min-height: 44px; padding: 8px 16px; border-radius: var(--nx-radius-sm); font-weight: 500; }
.nx-swatches--text .nx-swatch[aria-checked="true"] { border-color: var(--nx-accent); box-shadow: inset 0 0 0 1px var(--nx-accent); }
.nx-swatches--color .nx-swatch { width: 44px; height: 44px; padding: 5px; border-radius: 50%; }
.nx-swatch__dot { display: block; width: 100%; height: 100%; border-radius: 50%; background: var(--nx-swatch, #ccc); box-shadow: inset 0 0 0 1px rgba(128, 128, 128, .45); }
.nx-swatches--color .nx-swatch[aria-checked="true"] { border-color: var(--nx-text); box-shadow: 0 0 0 1px var(--nx-text); }
.nx-swatches--color .nx-swatch:disabled .nx-swatch__dot { background: linear-gradient(135deg, transparent 46%, var(--nx-muted) 47%, var(--nx-muted) 53%, transparent 54%), var(--nx-swatch, #ccc); }
.nx-swatches__hint { min-height: 1.4em; margin: 6px 0 0; }
.nx-swatches__hint:empty { min-height: 0; }

/* Production progress + photo */
.nx-progress { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; margin: 20px 0 6px; }
.nx-progress__item { background: var(--nx-surface-2); border-radius: var(--nx-radius-sm); padding: 12px 14px; }
.nx-progress__label { display: block; font-size: 12px; color: var(--nx-muted); }
.nx-progress__value { display: block; font-weight: 600; margin-top: 2px; }
.nx-order-photo { margin: 20px 0 0; }
.nx-order-photo img { display: block; width: 100%; max-width: 560px; height: auto; border-radius: var(--nx-radius); }
.nx-order-photo figcaption { margin-top: 6px; }

/* Gift cards in the account */
.nx-giftcards { margin: 32px 0; }
.nx-giftcards h2 { font-size: 21px; margin: 0 0 12px; }
.nx-giftcards__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.nx-giftcard { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 4px 16px; padding: 14px 16px; border-radius: var(--nx-radius); background: var(--nx-surface-2); }
.nx-giftcard__value { font-weight: 700; font-size: 19px; }
.nx-giftcard__code { font: 600 17px/1.3 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .06em; overflow-wrap: anywhere; background: none; }
.nx-giftcard__meta { grid-column: 1 / 3; }
.nx-giftcard__print { grid-row: 1 / 3; grid-column: 3; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border-radius: 980px; border: 1px solid var(--nx-line); color: var(--nx-text); text-decoration: none; font-weight: 500; white-space: nowrap; }
.nx-giftcard-fields { margin: 8px 0 16px; }
.nx-giftcard-fields .nx-field { margin: 0 0 12px; }
.nx-giftcard-fields input, .nx-giftcard-fields textarea { width: 100%; }
@media (max-width: 560px) {
	.nx-giftcard { grid-template-columns: 1fr; }
	.nx-giftcard__meta, .nx-giftcard__print { grid-column: 1; grid-row: auto; justify-self: start; }
}
.nx-gc-remove { font-size: 13px; margin-left: 4px; }

/* Reviews */
.nx-review-notice { display: flex; gap: 8px; align-items: flex-start; padding: 12px 14px; border-radius: var(--nx-radius-sm); background: var(--nx-surface-2); margin: 0 0 20px; }
.nx-review-notice svg { flex: none; margin-top: 2px; color: var(--nx-success); }
.nx-rate { display: inline-block; margin-top: 6px; }
.nx-progress__item--wide { grid-column: 1 / -1; }
.nx-bar { display: block; height: 6px; border-radius: 3px; background: var(--nx-line); margin-top: 8px; overflow: hidden; }
.nx-bar > span { display: block; height: 100%; border-radius: 3px; background: var(--nx-accent); transition: width .4s ease; }

/* Live preview of personalised text */
.nx-plate { --nx-plate: #1d1d1f; position: relative; display: flex; width: 100%; box-sizing: border-box; outline: 1px solid rgba(128, 128, 128, .25); outline-offset: -1px; align-items: center; justify-content: center; aspect-ratio: 20 / 9; max-width: 420px; margin: 4px 0 8px; padding: 0 6%; border-radius: 18px; background: linear-gradient(160deg, color-mix(in srgb, var(--nx-plate) 88%, #fff) 0%, var(--nx-plate) 60%, color-mix(in srgb, var(--nx-plate) 80%, #000) 100%); box-shadow: 0 10px 30px rgba(0, 0, 0, .12), inset 0 1px 0 rgba(255, 255, 255, .25); overflow: hidden; }
.nx-plate::after { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .035) 0 1px, transparent 1px 3px); pointer-events: none; }
.nx-plate__text { position: relative; font-weight: 800; font-size: clamp(28px, 8vw, 48px); letter-spacing: -.01em; line-height: 1; white-space: nowrap; color: color-mix(in srgb, var(--nx-plate) 15%, #fff); text-shadow: 0 2px 0 rgba(0, 0, 0, .25), 0 3px 6px rgba(0, 0, 0, .2); }
.nx-plate.is-empty .nx-plate__text { opacity: .45; }
.nx-plate.is-light .nx-plate__text { color: #1d1d1f; text-shadow: 0 1px 0 rgba(255, 255, 255, .6), 0 2px 5px rgba(0, 0, 0, .12); }
.nx-plate.is-light { box-shadow: 0 10px 30px rgba(0, 0, 0, .1), inset 0 0 0 1px rgba(0, 0, 0, .08); }

/* Back in stock */
.nx-bis { margin: 18px 0; padding: 16px 18px; border-radius: 16px; background: var(--nx-surface-2, #f5f5f7); }
.nx-bis[hidden] { display: none; }
.nx-bis__title { margin: 0 0 10px; font-size: 15px; }
.nx-bis__row { display: flex; flex-wrap: wrap; gap: 8px; }
.nx-bis__row input[type="email"] { flex: 1 1 200px; min-width: 0; min-height: 44px; padding: 8px 14px; border: 1px solid var(--nx-line, #d2d2d7); border-radius: 12px; background: var(--nx-bg, #fff); color: inherit; font-size: 16px; }
.nx-bis__row .nx-btn { flex: 0 0 auto; }
.nx-bis__note { margin: 8px 0 0; font-size: 12px; color: var(--nx-muted, #6e6e73); }
.nx-bis__ok { margin: 0 0 10px; color: var(--nx-success, #1a7f37); font-weight: 600; }
