/* sipcDTF — buy panels. Inherits the SIPÇ chrome palette via var()
   inside a .sipc-pane; degrades gracefully elsewhere. Structure here;
   visual sign-off is Nikki's. */
.sipcdtf-card {
	display: inline-block;
	min-width: 12rem;
	margin: 1.5rem 0;
	padding: 1rem 1.25rem;
	font-family: var(--mono, monospace);
	color: var(--violet, #1a1a1a);
	background: var(--panel, transparent);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
}
.sipcdtf-price {
	font-size: 1.5rem;
	line-height: 1.1;
	margin-bottom: .35rem;
}
.sipcdtf-stock {
	font-size: .85rem;
	letter-spacing: .04em;
	text-transform: uppercase;
	opacity: .8;
	margin-bottom: .9rem;
}
.sipcdtf-buy {
	font-family: var(--mono, monospace);
	font-size: .9rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--void, #fff);
	background: var(--violet, #1a1a1a);
	border: 1px solid var(--violet, #1a1a1a);
	padding: .55rem 1.1rem;
	border-radius: 2px;
	cursor: pointer;
	transition: opacity .15s ease;
}
.sipcdtf-buy:hover { opacity: .85; }
.sipcdtf-buy:disabled { opacity: .5; cursor: default; }
.sipcdtf-incart {
	font-size: .8rem;
	letter-spacing: .04em;
	text-transform: uppercase;
	opacity: .85;
	margin-top: .6rem;
}
.sipcdtf-card.is-soldout { opacity: .65; }
.sipcdtf-card.is-soldout .sipcdtf-buy {
	color: var(--violet, #1a1a1a);
	background: transparent;
}

/* ============================================================
   FLIPZ — one-of-one. The unsold card inherits .sipcdtf-card /
   -price / -buy free. These rules add the provenance line and the
   struck SOLD state: the Flip stays up as a spent record — dimmed,
   price struck, GONE stamped. The archive of Cy's eye, marked gone.
   Note: Flipz uses .is-sold; Dropz uses .is-soldout — different
   hooks by design, no clash.
   ============================================================ */
.sipcdtf-prov {
	font-size: .82rem;
	line-height: 1.4;
	letter-spacing: .02em;
	font-style: normal;
	opacity: .85;
	margin-bottom: .9rem;
	max-width: 22rem;
}
/* struck-sold — the whole card reads spent */
.sipcdtf-flipz.is-sold {
	opacity: .55;
}
.sipcdtf-flipz.is-sold .sipcdtf-price {
	text-decoration: line-through;
	text-decoration-thickness: 1px;
	opacity: .7;
}
.sipcdtf-flipz.is-sold .sipcdtf-prov {
	opacity: .6;
}
.sipcdtf-sold-mark {
	display: inline-block;
	font-size: .9rem;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--violet, #1a1a1a);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	padding: .4rem .9rem;
	margin-top: .3rem;
}

/* Basket page — the shell the paint layer fills. Same palette via var();
   degrades plainly outside a .sipc-pane. */
.sipcdtf-basket {
	font-family: var(--mono, monospace);
	color: var(--violet, #1a1a1a);
	margin: 1.5rem 0;
}
.sipcdtf-basket-empty {
	font-size: .9rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	opacity: .7;
	padding: 1rem 0;
}
.sipcdtf-basket-line {
	display: flex;
	align-items: baseline;
	gap: .75rem;
	padding: .7rem 0;
	border-bottom: 1px solid var(--violet, currentColor);
}
.sipcdtf-basket-line-title {
	flex: 1 1 auto;
	min-width: 0;
	overflow-wrap: anywhere;
}
.sipcdtf-basket-line-qty {
	flex: 0 0 auto;
	opacity: .8;
	letter-spacing: .04em;
}
.sipcdtf-basket-line-total {
	flex: 0 0 auto;
	text-align: right;
	min-width: 5rem;
}
.sipcdtf-basket-foot {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: .75rem;
	padding: 1rem 0 0;
}
.sipcdtf-basket-subtotal-label {
	font-size: .85rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	opacity: .8;
}
.sipcdtf-basket-subtotal {
	font-size: 1.5rem;
	line-height: 1.1;
}
.sipc-basket {
	font-family: var(--mono, monospace);
	text-decoration: none;
	color: inherit;
}

/* Basket line controls — qty stepper + remove, and the CHECKOUT action.
   Structure only; Nikki dresses the visual pass. The stepper and remove
   render on the basket page (editable); the checkout summary stays static. */
.sipcdtf-basket-line-qty {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
}
.sipcdtf-qty-btn {
	font-family: var(--mono, monospace);
	font-size: 1rem;
	line-height: 1;
	color: var(--violet, #1a1a1a);
	background: transparent;
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	width: 1.6rem;
	height: 1.6rem;
	padding: 0;
	cursor: pointer;
	transition: opacity .15s ease;
}
.sipcdtf-qty-btn:hover { opacity: .7; }
.sipcdtf-qty-btn:disabled { opacity: .4; cursor: default; }
.sipcdtf-qty-n {
	min-width: 1.5rem;
	text-align: center;
	letter-spacing: .04em;
}
.sipcdtf-basket-line-remove {
	flex: 0 0 auto;
	font-family: var(--mono, monospace);
	font-size: 1.1rem;
	line-height: 1;
	color: var(--violet, #1a1a1a);
	background: transparent;
	border: 1px solid transparent;
	border-radius: 2px;
	width: 1.6rem;
	height: 1.6rem;
	padding: 0;
	cursor: pointer;
	opacity: .7;
	transition: opacity .15s ease;
}
.sipcdtf-basket-line-remove:hover { opacity: 1; }
.sipcdtf-basket-line-remove:disabled { opacity: .4; cursor: default; }

/* CHECKOUT action under the subtotal. Inherits .sipcdtf-buy; as a link it
   needs the button display/decoration reset. */
.sipcdtf-basket-actions {
	margin-top: 1.2rem;
}
.sipcdtf-basket-checkout {
	display: inline-block;
	text-decoration: none;
}

/* Delivery picker now lives on the basket page (G). Mirrors the checkout
   deliver look without the fieldset chrome. Nikki dresses the visual pass. */
.sipcdtf-basket-deliver {
	font-family: var(--mono, monospace);
	color: var(--violet, #1a1a1a);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	padding: .9rem 1.1rem 1.1rem;
	margin: 1.2rem 0;
}
.sipcdtf-co-deliver-title {
	font-size: .8rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	opacity: .85;
	margin-bottom: .8rem;
}
.sipcdtf-basket-deliver label {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	margin-right: 1.25rem;
	text-transform: uppercase;
	font-size: .85rem;
	letter-spacing: .04em;
}
.sipcdtf-basket-deliver input[type="radio"] {
	accent-color: var(--violet, #1a1a1a);
}

/* Per-method arrangement note — basket picker and checkout confirmation. */
.sipcdtf-co-method-note {
	font-size: .82rem;
	letter-spacing: .03em;
	opacity: .8;
	margin-top: .6rem;
}

/* Read-only delivery confirmation at checkout (G). */
.sipcdtf-co-deliver-chosen {
	font-size: 1rem;
	letter-spacing: .05em;
	text-transform: uppercase;
}
.sipcdtf-co-deliver-missing {
	font-size: .85rem;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.sipcdtf-co-deliver-missing a {
	color: var(--violet, #1a1a1a);
	text-decoration: none;
	display: inline-block;
	margin-top: .5rem;
}

/* ============================================================
   CHECKOUT — form chrome. New block/form types must be styled
   explicitly or they fall through .sipc-pane to the Hair serif
   (the post-excerpt lesson). Everything mono + violet via var().
   ============================================================ */
.sipcdtf-checkout {
	font-family: var(--mono, monospace);
	color: var(--violet, #1a1a1a);
	margin: 1.5rem 0;
}
.sipcdtf-co-empty {
	font-size: .9rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	opacity: .7;
	padding: 1rem 0;
}
/* the summary reuses .sipcdtf-basket-* rules already defined above */
.sipcdtf-co-summary { margin-bottom: 1.5rem; }

/* fieldsets — DELIVERY / CONTACT / ADDRESS */
.sipcdtf-co-form fieldset {
	font-family: var(--mono, monospace);
	color: var(--violet, #1a1a1a);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	margin: 0 0 1.1rem;
	padding: .9rem 1.1rem 1.1rem;
}
.sipcdtf-co-form legend {
	font-size: .8rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	opacity: .85;
	padding: 0 .4rem;
}
.sipcdtf-co-form label {
	font-family: var(--mono, monospace);
	font-size: .9rem;
	letter-spacing: .03em;
	color: var(--violet, #1a1a1a);
	display: inline-flex;
	align-items: center;
	gap: .4rem;
}
/* delivery radios sit in a row, wrap on narrow */
.sipcdtf-co-deliver label {
	margin-right: 1.25rem;
	text-transform: uppercase;
	font-size: .85rem;
	letter-spacing: .04em;
}
.sipcdtf-co-form input[type="radio"] {
	accent-color: var(--violet, #1a1a1a);
}
/* contact + address fields stack with their labels */
.sipcdtf-co-contact label,
.sipcdtf-co-address legend { display: block; }
.sipcdtf-co-contact label { margin-bottom: .7rem; }
.sipcdtf-co-contact label span {
	display: block;
	font-size: .75rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	opacity: .8;
	margin-bottom: .25rem;
}
.sipcdtf-co-form input[type="text"],
.sipcdtf-co-form input[type="email"],
.sipcdtf-co-form textarea {
	font-family: var(--mono, monospace);
	font-size: .95rem;
	color: var(--violet, #1a1a1a);
	background: var(--void, transparent);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	padding: .45rem .6rem;
	width: 100%;
	max-width: 22rem;
	box-sizing: border-box;
}
.sipcdtf-co-form textarea { max-width: 28rem; resize: vertical; }
.sipcdtf-co-form input:focus,
.sipcdtf-co-form textarea:focus {
	outline: 1px solid var(--violet, currentColor);
	outline-offset: 1px;
}
/* totals preview — mirror the basket foot, mono + violet */
.sipcdtf-co-totals {
	margin: 1.1rem 0;
	border-top: 1px solid var(--violet, currentColor);
	padding-top: .9rem;
}
.sipcdtf-co-row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: .75rem;
	padding: .25rem 0;
	font-size: .9rem;
	letter-spacing: .04em;
}
.sipcdtf-co-row span:first-child {
	text-transform: uppercase;
	opacity: .8;
}
.sipcdtf-co-grand {
	font-size: 1.3rem;
	padding-top: .5rem;
	opacity: 1;
}
.sipcdtf-co-grand span:first-child { opacity: 1; }
/* inline error — voiced, mono, set off */
.sipcdtf-co-error {
	font-size: .85rem;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--violet, #1a1a1a);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	padding: .6rem .8rem;
	margin: 0 0 1rem;
}
.sipcdtf-co-pay { margin-top: .5rem; }

/* ============================================================
   NOTICE PAGE — standalone confirmation/cancel landing. Self-
   contained document (no theme header), so it sets its own pane.
   These rules apply when sipcdtf_render_notice emits its own page.
   ============================================================ */
.sipcdtf-notice-page {
	min-height: 100vh;
	margin: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--void, #0a0a0f);
	font-family: var(--mono, monospace);
}
.sipcdtf-notice-panel {
	max-width: 38rem;
	margin: 1.5rem;
	padding: 2.5rem 2rem;
	background: var(--panel, #12111a);
	border: 1px solid var(--violet, #9b8cff);
	border-radius: 2px;
	text-align: center;
}
.sipcdtf-notice-msg {
	font-family: var(--mono, monospace);
	font-size: 1.15rem;
	line-height: 1.5;
	letter-spacing: .03em;
	color: var(--violet, #9b8cff);
	margin: 0 0 1.6rem;
}
.sipcdtf-notice-back {
	display: inline-block;
	font-family: var(--mono, monospace);
	font-size: .85rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--void, #0a0a0f);
	background: var(--violet, #9b8cff);
	border: 1px solid var(--violet, #9b8cff);
	border-radius: 2px;
	padding: .55rem 1.1rem;
	text-decoration: none;
}
.sipcdtf-notice-back:hover { opacity: .85; }
/* ============================================================
   TIX — events. The card inherits .sipcdtf-card free; these rules add the
   floor line, the buyer's figure input (a NEW form control — skinned
   explicitly or it falls through .sipc-pane to the Hair default, the
   post-excerpt lesson), and the below-floor word. The .ics "add to
   calendar" link on the confirmation notice sits in the extra slot.
   ============================================================ */
.sipcdtf-tix-floor {
	font-size: .85rem;
	letter-spacing: .04em;
	text-transform: uppercase;
	opacity: .8;
	margin-bottom: .9rem;
}
.sipcdtf-tix-amount-label {
	display: flex;
	align-items: center;
	gap: .4rem;
	font-family: var(--mono, monospace);
	font-size: 1.1rem;
	color: var(--violet, #1a1a1a);
	margin-bottom: .9rem;
}
.sipcdtf-tix-amount-label span {
	font-size: .75rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	opacity: .8;
}
.sipcdtf-tix-amount {
	font-family: var(--mono, monospace);
	font-size: 1.1rem;
	color: var(--violet, #1a1a1a);
	background: var(--void, transparent);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	padding: .35rem .5rem;
	width: 6rem;
	box-sizing: border-box;
}
.sipcdtf-tix-amount:focus {
	outline: 1px solid var(--violet, currentColor);
	outline-offset: 1px;
}
.sipcdtf-tix-err {
	font-size: .82rem;
	letter-spacing: .03em;
	text-transform: uppercase;
	color: var(--violet, #1a1a1a);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	padding: .5rem .7rem;
	margin-top: .6rem;
}
.sipcdtf-basket-err {
	font-size: .82rem;
	letter-spacing: .03em;
	text-transform: uppercase;
	color: var(--violet, #1a1a1a);
	border: 1px solid var(--violet, currentColor);
	border-radius: 2px;
	padding: .5rem .7rem;
	margin-bottom: 1rem;
}
/* the .ics download on the confirmation notice — a button above BACK */
.sipcdtf-notice-extra { margin-bottom: 1rem; }
/* event summary on the confirmation — what the ticket is for, above the link */
.sipcdtf-notice-event {
	margin-bottom: 1.2rem;
	color: var(--violet, #9b8cff);
	font-family: var(--mono, monospace);
}
.sipcdtf-notice-event-title {
	font-size: 1.15rem;
	letter-spacing: .03em;
	margin-bottom: .35rem;
}
.sipcdtf-notice-event-when,
.sipcdtf-notice-event-where {
	font-size: 1rem;
	letter-spacing: .04em;
	line-height: 1.55;
}
