/* ============================================================
   DTA STOREFRONT — component styles.

   Ported from the approved prototype (shop.html inline styles + base.css
   shared components + the Madeline showcase inline styles), every selector
   scoped under .dta-storefront so the storefront's generic class names
   (.card / .detail / .chip / .sec …) cannot collide with the host Launch
   page or theme. Consumes --shell-*/--proto-* tokens only (no hardcoded
   brand hexes). Squared — no border-radius (--proto-radius: 0).
   ============================================================ */

.dta-storefront, .dta-storefront * , .dta-storefront *::before, .dta-storefront *::after { box-sizing: border-box; }
.dta-storefront {
	color: var(--shell-text-body);
	font-family: var(--shell-font-family-body);
	font-size: var(--proto-fs-body);
	font-weight: var(--proto-fw-body, 400);
	line-height: 1.6;
	width: min(var(--shell-content-max-width), 100%);
	margin-inline: auto;
	padding: 2.4rem 0 4rem;
}
.dta-storefront img { max-width: 100%; display: block; }
.dta-storefront a { color: inherit; text-decoration: none; }

/* ---------------- shared: eyebrow / buttons / section ---------------- */
.dta-storefront .eyebrow {
	font-family: var(--shell-font-family-body); font-size: var(--shell-eyebrow-size);
	letter-spacing: var(--shell-eyebrow-letter-spacing); text-transform: uppercase;
	color: var(--shell-accent-3); font-weight: 600; margin: 0 0 1rem;
}
.dta-storefront .btn {
	display: inline-block; font-family: var(--shell-font-family-body); font-size: var(--proto-fs-nav);
	letter-spacing: var(--shell-eyebrow-letter-spacing); text-transform: var(--proto-tt-nav);
	padding: var(--proto-btn-pad); border-radius: var(--proto-radius);
	background: var(--proto-btn-bg); color: var(--proto-btn-fg); border: 1px solid var(--proto-btn-bdr);
	cursor: pointer; transition: background .18s, color .18s;
}
.dta-storefront .btn:hover { background: var(--shell-accent); color: var(--shell-text-inverted); border-color: var(--shell-accent); }
.dta-storefront .btn--solid { background: var(--shell-accent); color: var(--shell-text-inverted); border-color: var(--shell-accent); }
.dta-storefront .btn--solid:hover { background: var(--shell-accent-hover); border-color: var(--shell-accent-hover); }

.dta-storefront .sec__head { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2rem; }
.dta-storefront .sec h2, .dta-storefront .dta-pairsec h2 {
	font-family: var(--shell-font-family-heading); font-size: var(--shell-h2-size);
	font-weight: var(--proto-fw-heading); letter-spacing: var(--shell-h2-letter-spacing);
	line-height: var(--proto-lh-heading); color: var(--shell-text-dark); margin: 0;
}

.dta-storefront .grid {
	display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--proto-card-min), 1fr));
	gap: var(--shell-grid-gap-standard);
}

/* ---------------- shared: cards ---------------- */
.dta-storefront .card__link { display: block; color: inherit; }
.dta-storefront .card__media {
	position: relative; aspect-ratio: var(--proto-card-ratio);
	background: var(--shell-surface-card); border: var(--proto-card-bdr);
	border-radius: var(--proto-radius); overflow: hidden;
}
.dta-storefront .card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s var(--proto-ease); }
.dta-storefront .card:hover .card__media img { transform: scale(var(--proto-card-zoom)); }
.dta-storefront .card__body { padding-top: var(--shell-card-padding); }
.dta-storefront .card h3 {
	font-family: var(--proto-font-card); font-size: var(--proto-fs-card); font-weight: var(--proto-fw-card);
	letter-spacing: var(--proto-ls-card); line-height: 1.32; color: var(--shell-text-dark); margin: 0 0 .3em;
}
.dta-storefront .card__meta { font-size: var(--proto-fs-small); color: var(--shell-text-body); margin: 0; }
.dta-storefront .card__flag {
	position: absolute; z-index: 2; top: .7rem; left: .7rem; font-family: var(--shell-font-family-body);
	font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; padding: .3rem .5rem;
	border-radius: var(--proto-radius); background: var(--proto-flag-bg); color: var(--proto-flag-fg);
}
.dta-storefront .card__flag--none { background: var(--shell-surface-light); color: var(--shell-text-muted); border: 1px solid var(--shell-hairline); }

/* ---------------- shared: chips ---------------- */
.dta-storefront .chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.dta-storefront .chip {
	font-family: var(--shell-font-family-body); font-size: var(--proto-fs-chip); letter-spacing: .04em;
	padding: .5rem 1rem; border: 1px solid var(--shell-hairline); border-radius: var(--proto-radius);
	background: var(--shell-surface-light); color: var(--shell-text-body); font-weight: 500; cursor: pointer; transition: all .15s;
}
.dta-storefront .chip em { font-style: normal; opacity: .55; margin-left: .3rem; font-size: .85em; color: var(--shell-text-muted); font-weight: 400; }
.dta-storefront .chip:hover { border-color: var(--shell-accent); color: var(--shell-accent); }
.dta-storefront .chip.is-on { background: var(--shell-accent); color: var(--shell-text-inverted); border-color: var(--shell-accent); }
.dta-storefront .chip.is-on em { opacity: .7; color: rgba(255,255,255,.8); }

/* ---------------- shared: crumbs ---------------- */
.dta-storefront .crumbs { font-size: var(--proto-fs-small); color: var(--shell-text-muted); margin-bottom: 1.6rem; }
.dta-storefront .crumbs a { color: var(--shell-accent); }
.dta-storefront .crumbs span { opacity: .5; margin: 0 .3rem; }
.dta-storefront .crumbs em { font-style: normal; color: var(--shell-text-dark); }

/* ============================================================
   BROWSE ([dta_inventory]) — from shop.html inline styles
   ============================================================ */
.dta-storefront .shophead { max-width: 60ch; margin-bottom: 2rem; }
.dta-storefront .shophead .eyebrow { margin-bottom: .8rem; }
.dta-storefront .shophead h1 { font-family: var(--shell-font-family-heading); font-weight: var(--proto-fw-heading);
	font-size: clamp(2rem, 4.5vw, 3.1rem); color: var(--shell-text-dark); line-height: 1.1; margin: 0 0 .6rem; }
.dta-storefront .shoplede { font-size: var(--proto-fs-lead); color: var(--shell-text-body); margin: 0; }
.dta-storefront .shophead--tight { margin-bottom: 1rem; }
.dta-storefront .shophead--tight h1 { margin-bottom: 0; }

.dta-storefront .shopbar { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; position: relative; margin: 0 0 1.8rem; }
.dta-storefront .viewtoggle { display: inline-flex; border: 1px solid var(--shell-hairline); background: var(--shell-surface-light); }
.dta-storefront .viewtoggle .vt { font: inherit; font-size: var(--proto-fs-small); cursor: pointer; border: 0;
	background: transparent; color: var(--shell-text-body); padding: .6rem 1rem; white-space: nowrap; }
.dta-storefront .viewtoggle .vt.is-on { background: var(--shell-accent); color: var(--shell-text-inverted); }

.dta-storefront .shopsearch { display: flex; align-items: center; gap: .4rem; flex: 1 1 240px; min-width: 190px;
	border: 1px solid var(--shell-hairline); background: var(--shell-surface-light); padding: .1rem .9rem; }
.dta-storefront .shopsearch__i { width: 18px; height: 18px; flex: 0 0 18px; fill: none; stroke: var(--shell-text-muted); stroke-width: 1.7; stroke-linecap: round; }
.dta-storefront .shopsearch input { flex: 1; min-width: 0; font: inherit; font-size: var(--proto-fs-small);
	border: 0; background: transparent; color: var(--shell-text-dark); padding: .62rem .2rem; outline: none; }

.dta-storefront .filterwrap { position: relative; }
.dta-storefront .filtbtn { display: inline-flex; align-items: center; gap: .45rem; font: inherit; font-size: var(--proto-fs-small);
	cursor: pointer; border: 1px solid var(--shell-hairline); background: var(--shell-surface-light);
	color: var(--shell-text-body); padding: .6rem 1rem; white-space: nowrap; }
.dta-storefront .filtbtn svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.dta-storefront .filtbtn:hover, .dta-storefront .filtbtn.is-open, .dta-storefront .filtbtn.is-active { border-color: var(--shell-accent); color: var(--shell-accent); }
.dta-storefront .filtbtn em { font-style: normal; color: var(--shell-accent); font-weight: 700; }

.dta-storefront .filterpop { position: absolute; top: calc(100% + 8px); right: 0; z-index: 30;
	width: min(360px, 88vw); background: var(--shell-surface-light); border: 1px solid var(--shell-hairline);
	box-shadow: 0 12px 34px rgba(0,0,0,.16); padding: 1.2rem 1.3rem; }
.dta-storefront .filterpop--wide { width: min(460px, 90vw); }
.dta-storefront .filterpop[hidden] { display: none; }
.dta-storefront .filterpop__sec { margin-bottom: 1.1rem; }
.dta-storefront .filterpop__sec:last-child { margin-bottom: 0; }
.dta-storefront .wizlbl { display: block; font-size: .66rem; letter-spacing: .16em; text-transform: uppercase;
	color: var(--shell-text-muted); font-weight: 500; margin-bottom: .55rem; }

.dta-storefront .catgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.4rem; width: 100%; }
/* Gallery grid: fixed four-per-row (Glenn: "a little smaller, four per row
   versus three") rather than the category grid's responsive auto-fill. */
.dta-storefront .catgrid--gallery { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) { .dta-storefront .catgrid--gallery { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .dta-storefront .catgrid--gallery { grid-template-columns: 1fr; } }
/* The Type axis has exactly three tiles — a three-up row rather than three
   tiles adrift in a four-column grid with an empty slot. */
.dta-storefront .catgrid--types { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .dta-storefront .catgrid--types { grid-template-columns: 1fr; } }
.dta-storefront .catgrid--needs { margin-bottom: 2.4rem; }
.dta-storefront .catgrid--needs .catcard__m { aspect-ratio: 4 / 3; }
.dta-storefront .catgrid__more { display: flex; justify-content: center; margin-top: 1.8rem; }
.dta-storefront .catcard { display: block; text-decoration: none; color: inherit;
	border: 1px solid var(--shell-hairline); background: var(--shell-surface-light); overflow: hidden;
	transition: border-color .18s, transform .18s; }
/* .catcard{display:block} is an author style and unconditionally beats the UA
   [hidden]{display:none} rule (see .dta-qf-nav .btn[hidden] above) — without this,
   the "View all categories" extra tiles would render immediately instead of staying
   hidden until the button reveals them. */
.dta-storefront .catcard[hidden] { display: none; }
.dta-storefront .catcard:hover { border-color: var(--shell-accent); transform: translateY(-2px); }
.dta-storefront .catcard__m { aspect-ratio: 16 / 10; background: var(--shell-surface-card); position: relative; overflow: hidden; }
.dta-storefront .catcard__m img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--proto-ease); }
.dta-storefront .catcard:hover .catcard__m img { transform: scale(1.05); }
.dta-storefront .catcard__m .ph { position: absolute; inset: 0; display: grid; place-items: center;
	font-family: var(--shell-font-family-heading); font-size: 3rem; color: var(--shell-text-muted); opacity: .4; }
.dta-storefront .catcard__b { padding: 1.1rem 1.2rem 1.3rem; }
.dta-storefront .catcard__b h3 { font-family: var(--shell-font-family-heading); font-weight: var(--proto-fw-heading);
	font-size: 1.5rem; color: var(--shell-text-dark); margin: 0 0 .25rem; }
.dta-storefront .catcard__b p { font-size: var(--proto-fs-small); color: var(--shell-text-body); margin: 0 0 .6rem; }
.dta-storefront .catcard__n { font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: var(--shell-accent); font-weight: 500; }

/* [dta_gallery] photo results. The grid is emitted as native g-media
   image-gallery markup so dta-lightbox.js binds it — but g-media.css only
   ships on pages carrying a real g-media SECTION, and the gallery page carries
   a shortcode, so THESE are the rules that actually apply. Both stylesheets
   set display:grid on the same element, so the two loaded together agree
   rather than fight; the column count here out-specifies g-media's
   .ssla-g-media--columns-four (0,3,0 vs 0,2,0) and is the one that lands. */
.dta-storefront .dta-photogrid .ssla-g-media-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.4rem; }
@media (max-width: 900px) { .dta-storefront .dta-photogrid .ssla-g-media-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .dta-storefront .dta-photogrid .ssla-g-media-grid { grid-template-columns: 1fr; } }
.dta-storefront .dta-photogrid .ssla-g-media-item { margin: 0; }
.dta-storefront .dta-photogrid .ssla-g-media-item-link { display: block; cursor: zoom-in; }
.dta-storefront .dta-photogrid .ssla-g-media-item-img { display: block; width: 100%; height: auto;
	aspect-ratio: 4 / 3; object-fit: cover; background: var(--shell-surface-card); }
.dta-storefront .dta-photogrid .ssla-g-media-caption { display: block; font-size: .68rem; letter-spacing: .1em;
	text-transform: uppercase; color: var(--shell-text-muted); margin: .5rem 0 0; }

.dta-storefront .entrysec { margin: 0 0 2.4rem; }
.dta-storefront .entrysec__h { font-size: .66rem; letter-spacing: .16em; text-transform: uppercase;
	color: var(--shell-text-muted); font-weight: 500; margin: 0 0 1rem; }
/* auto-FIT, not auto-fill: auto-fill keeps the empty tracks it can fit, so five
   cards in a 1200px row sat in a six-track grid at 186px each and stopped ~270px
   short of the right edge. auto-fit collapses the empty track and lets the cards
   stretch to fill the row. */
.dta-storefront .evrow { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
.dta-storefront .evcard { display: flex; flex-direction: column; align-items: flex-start; gap: .3rem; text-align: left;
	cursor: pointer; padding: 1.2rem 1.2rem 1.3rem; background: var(--shell-surface-light);
	border: 1px solid var(--shell-hairline); transition: border-color .18s, transform .18s; font: inherit; }
.dta-storefront .evcard:hover { border-color: var(--shell-accent); transform: translateY(-2px); }
.dta-storefront .evcard__i { width: 30px; height: 30px; margin-bottom: .5rem; }
.dta-storefront .evcard__i svg { width: 30px; height: 30px; fill: none; stroke: var(--shell-accent); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.dta-storefront .evcard b { font-family: var(--shell-font-family-heading); font-weight: var(--proto-fw-heading); font-size: 1.2rem; color: var(--shell-text-dark); line-height: 1.15; }
.dta-storefront .evcard span { font-size: var(--proto-fs-small); color: var(--shell-text-muted); }

.dta-storefront .addons { display: flex; flex-wrap: wrap; gap: .6rem; }
.dta-storefront .addon { font: inherit; font-size: var(--proto-fs-chip); letter-spacing: .03em; cursor: pointer;
	padding: .6rem 1.1rem; border: 1px solid var(--shell-hairline); background: var(--shell-surface-light);
	color: var(--shell-text-body); transition: all .15s; }
.dta-storefront .addon::before { content: "+ "; color: var(--shell-accent); font-weight: 600; }
.dta-storefront .addon:hover { border-color: var(--shell-accent); color: var(--shell-accent); }

.dta-storefront .crumb { font-size: .78rem; color: var(--shell-text-muted); margin-bottom: 1.4rem; }
.dta-storefront .crumb a { color: var(--shell-accent); }
.dta-storefront .crumb b { color: var(--shell-text-dark); }
.dta-storefront .crumb span { margin: 0 .4rem; color: var(--shell-hairline); }

.dta-storefront .rescount { font-size: var(--proto-fs-small); color: var(--shell-text-muted); margin: 0 0 1.2rem; }
.dta-storefront .rescount b { color: var(--shell-accent); }

.dta-storefront .resgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 1.3rem; }
.dta-storefront .rc { border: 1px solid var(--shell-hairline); background: var(--shell-surface-light); overflow: hidden; }
.dta-storefront .rc__link { text-decoration: none; color: inherit; display: block; }
.dta-storefront .rc__m { position: relative; aspect-ratio: 3 / 4; background: var(--shell-surface-card); overflow: hidden; }
.dta-storefront .rc__m img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--proto-ease); }
.dta-storefront .rc:hover .rc__m img { transform: scale(1.05); }
.dta-storefront .rc__m .ph { position: absolute; inset: 0; display: grid; place-items: center;
	font-family: var(--shell-font-family-heading); font-size: 2rem; color: var(--shell-text-muted); opacity: .5; }
.dta-storefront .pop { position: absolute; top: .5rem; left: .5rem; font-size: .58rem; letter-spacing: .1em; text-transform: uppercase;
	font-weight: 600; padding: .28rem .5rem; background: var(--shell-accent); color: var(--shell-text-inverted); }
.dta-storefront .pop.mid { background: var(--shell-surface-dark); }
.dta-storefront .rc__b { padding: .8rem .85rem 1rem; }
.dta-storefront .rc__b h4 { font-family: var(--proto-font-card); font-size: var(--proto-fs-card); font-weight: var(--proto-fw-card);
	color: var(--shell-text-dark); margin: 0 0 .25rem; line-height: 1.3; }
.dta-storefront .rc__meta { font-size: var(--proto-fs-small); color: var(--shell-text-muted); margin: 0 0 .5rem; }
.dta-storefront .resempty, .dta-storefront .empty { color: var(--shell-text-muted); padding: 2rem 0; }
.dta-storefront .empty a { color: var(--shell-accent); border-bottom: 1px solid currentColor; }

.dta-storefront .minis { display: flex; gap: .3rem; margin-top: .6rem; }
.dta-storefront .minis .mini { width: 18px; height: 18px; background-size: cover; background-position: center; border: 1px solid var(--shell-hairline); }
.dta-storefront .mini { width: 20px; height: 20px; background-size: cover; background-position: center; border: 1px solid var(--shell-hairline); display: inline-block; }

.dta-storefront .pairstrip { margin: 2.4rem 0 0; padding-top: 1.7rem; border-top: 1px solid var(--shell-hairline); }
.dta-storefront .pairstrip__h { font-family: var(--shell-font-family-heading); font-weight: var(--proto-fw-heading);
	font-size: 1.35rem; color: var(--shell-text-dark); margin: 0 0 .25rem; }
.dta-storefront .pairstrip__sub { font-size: .72rem; color: var(--shell-text-muted); margin: 0 0 1.15rem; }
.dta-storefront .pairstrip__sub b { color: var(--shell-text-body); }
.dta-storefront .pairstrip__row { display: grid; grid-template-columns: repeat(auto-fill, minmax(158px, 1fr)); gap: 1rem; }
.dta-storefront .pairmini { display: block; text-decoration: none; color: inherit; overflow: hidden;
	border: 1px solid var(--shell-hairline); background: var(--shell-surface-light); transition: border-color .18s, transform .18s; }
.dta-storefront .pairmini:hover { border-color: var(--shell-accent); transform: translateY(-2px); }
.dta-storefront .pairmini__m { aspect-ratio: 4 / 3; background: var(--shell-surface-card); overflow: hidden; }
.dta-storefront .pairmini__m img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--proto-ease); }
.dta-storefront .pairmini:hover .pairmini__m img { transform: scale(1.05); }
.dta-storefront .pairmini__m .ph { display: grid; place-items: center; height: 100%; font-family: var(--shell-font-family-heading); color: var(--shell-text-muted); opacity: .5; }
.dta-storefront .pairmini__b { padding: .6rem .7rem .75rem; }
.dta-storefront .pairmini__b b { display: block; font-family: var(--proto-font-card); font-size: var(--proto-fs-card);
	font-weight: var(--proto-fw-card); color: var(--shell-text-dark); line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dta-storefront .pairmini__b span { font-size: .68rem; color: var(--shell-text-muted); }

.dta-storefront .pager { display: flex; align-items: center; justify-content: center; gap: 1.1rem; margin: 2.2rem 0 0; }
.dta-storefront .pgbtn { font: inherit; font-size: var(--proto-fs-small); letter-spacing: .04em; cursor: pointer;
	padding: .55rem 1.3rem; border: 1px solid var(--shell-hairline); background: var(--shell-surface-light); color: var(--shell-text-body); transition: all .15s; }
.dta-storefront .pgbtn:hover:not([disabled]) { border-color: var(--shell-accent); color: var(--shell-accent); }
.dta-storefront .pgbtn[disabled] { opacity: .4; cursor: default; }
.dta-storefront .pgnow { font-size: var(--proto-fs-small); color: var(--shell-text-muted); letter-spacing: .06em; }

/* ============================================================
   PDP ([dta_pdp]) — detail / gallery / selection (base.css)
   ============================================================ */
.dta-storefront .detail { display: grid; grid-template-columns: var(--proto-detail-cols, 1fr 1fr); gap: clamp(2rem,5vw,4rem); align-items: start; }
.dta-storefront .detail__body h1 { font-family: var(--shell-font-family-heading); font-size: var(--shell-h2-size);
	font-weight: var(--proto-fw-heading); letter-spacing: var(--shell-h2-letter-spacing); line-height: var(--proto-lh-heading);
	color: var(--shell-text-dark); margin: 0 0 .6em; }
.dta-storefront .detail__note { font-size: var(--proto-fs-small); color: var(--shell-text-muted); background: var(--shell-surface-warm);
	border-left: 2px solid var(--shell-accent); padding: .75rem .9rem; margin: 0 0 1.6rem; }
.dta-storefront .detail__note code { font-family: ui-monospace, monospace; font-size: .92em; }
.dta-storefront .detail__label { font-family: var(--shell-font-family-body); font-size: var(--shell-eyebrow-size);
	letter-spacing: var(--shell-eyebrow-letter-spacing); text-transform: uppercase; color: var(--shell-text-muted); margin: 0 0 .6rem; }
.dta-storefront .detail__colour { font-size: var(--proto-fs-body); color: var(--shell-text-body); margin: 0 0 1.2rem; }
.dta-storefront .detail__colour strong { color: var(--shell-text-dark); }
.dta-storefront .sizes { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.8rem; }
.dta-storefront .size { font-family: var(--shell-font-family-body); font-size: var(--proto-fs-chip);
	padding: .55rem .9rem; border: 1px solid var(--shell-hairline); border-radius: var(--proto-radius);
	background: transparent; color: var(--shell-text-body); cursor: pointer; transition: all .15s; }
.dta-storefront .size:hover { border-color: var(--shell-accent); color: var(--shell-accent); }
.dta-storefront .size.is-on { background: var(--shell-accent); color: var(--shell-text-inverted); border-color: var(--shell-accent); }
.dta-storefront .detail__buy { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; }
.dta-storefront .qty { font-size: var(--proto-fs-small); color: var(--shell-text-muted); display: inline-flex; gap: .5rem; align-items: center; }
.dta-storefront .qty input { width: 68px; padding: .55rem .6rem; border: 1px solid var(--shell-hairline);
	border-radius: var(--proto-radius); background: var(--shell-bg); color: var(--shell-text-dark); font-family: var(--shell-font-family-body); }
.dta-storefront .detail__tags { display: flex; flex-wrap: wrap; gap: .4rem; margin: 1.8rem 0; }
.dta-storefront .detail__tags span { font-size: .7rem; letter-spacing: .06em; text-transform: uppercase;
	color: var(--shell-text-body); border: 1px solid var(--shell-hairline); border-radius: var(--proto-radius); padding: .25rem .5rem; font-weight: 500; }
.dta-storefront .pickhint { font-size: var(--proto-fs-small); color: var(--shell-text-muted); margin: -.3rem 0 .7rem; }
.dta-storefront .lbl-n { display: inline-block; margin-left: .4rem; font-family: var(--shell-font-family-body);
	font-size: .68rem; color: var(--shell-text-muted); border: 1px solid var(--shell-hairline); border-radius: 999px; padding: .05rem .4rem; letter-spacing: 0; }

.dta-storefront .gallery__main { position: relative; aspect-ratio: 4/3; background: var(--shell-surface-card);
	border: var(--proto-card-bdr); border-radius: var(--proto-radius); overflow: hidden; }
.dta-storefront .gallery__main img { width: 100%; height: 100%; object-fit: cover; }
.dta-storefront .gallery__main.is-lowres img { object-fit: contain; padding: 12%; image-rendering: -webkit-optimize-contrast; }
.dta-storefront .gallery__strip { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .9rem; max-height: 216px; overflow-y: auto; }
/* Chips live in the details column beside the "Color / finish" label. Sits
   tighter to that label than the gallery variant did to the image, and keeps
   its own scroll so a 112-color product cannot push the Add-to-quote button
   off the screen. */
.dta-storefront .gallery__strip--detail { margin: .55rem 0 1.3rem; max-height: 190px; }
.dta-storefront .sw { width: 58px; height: 58px; border-radius: var(--proto-radius); border: 1px solid var(--shell-hairline);
	background-size: cover; background-position: center; cursor: pointer; position: relative; padding: 0; transition: box-shadow .15s, transform .15s; }
.dta-storefront .sw:hover { transform: translateY(-2px); }
.dta-storefront .sw.is-on { box-shadow: 0 0 0 2px var(--shell-accent); border-color: transparent; }
.dta-storefront .sw span { position: absolute; inset: auto 0 0 0; font-size: 8px; letter-spacing: .04em;
	background: rgba(0,0,0,.55); color: #fff; padding: 2px 1px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; opacity: 0; transition: opacity .15s; }
.dta-storefront .sw:hover span, .dta-storefront .sw.is-on span { opacity: 1; }
.dta-storefront .sw--none { display: grid; place-items: center; padding: .2rem;
	background: repeating-linear-gradient(45deg, var(--shell-surface-card), var(--shell-surface-card) 6px, var(--shell-surface-warm) 6px, var(--shell-surface-warm) 12px); }
.dta-storefront .sw--none em { font-style: normal; font-size: .52rem; line-height: 1.15; text-align: center; color: var(--shell-text-muted); overflow: hidden; max-height: 100%; }
.dta-storefront .sw--none.is-on em { color: var(--shell-text-dark); }
.dta-storefront .gallery__note { font-size: var(--proto-fs-small); color: var(--shell-text-muted); margin: .7rem 0 0; }

/* no-photo state */
.dta-storefront .card__media.is-empty, .dta-storefront .gallery__main.is-empty {
	display: grid; place-items: center;
	background: repeating-linear-gradient(45deg, var(--shell-surface-card), var(--shell-surface-card) 12px, var(--shell-surface-warm) 12px, var(--shell-surface-warm) 24px);
}
.dta-storefront .card__media.is-empty span, .dta-storefront .gallery__main.is-empty span {
	font-family: var(--shell-font-family-heading); font-size: clamp(1.6rem, 4vw, 2.6rem); color: var(--shell-text-muted); opacity: .55; letter-spacing: .04em;
}
.dta-storefront .dta-related { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--proto-card-min), 1fr)); gap: var(--shell-grid-gap-standard); margin-top: 3rem; }

/* ============================================================
   SHOWCASE PDP — color-photo gallery / in-use band / lightbox
   ============================================================ */
.dta-storefront .detail__desc { font-size: var(--proto-fs-lead); color: var(--shell-text-body); max-width: 46ch; margin: 0 0 1.4rem; }
.dta-storefront .gallery__cap { display: flex; align-items: center; gap: .5rem; font-family: var(--shell-font-family-body);
	font-size: var(--proto-fs-small); letter-spacing: .04em; color: var(--shell-text-body); margin: .8rem 0 0; }
.dta-storefront .gallery__cap b { color: var(--shell-text-dark); font-weight: 600; }
.dta-storefront .tag { font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; color: var(--shell-text-muted);
	border: 1px solid var(--shell-hairline); padding: .15rem .45rem; }
.dta-storefront .btn--inaction { display: inline-flex; align-items: center; gap: .45rem; }
.dta-storefront .btn--inaction svg { width: 15px; height: 15px; }

.dta-storefront .inuse-below { margin: 2.4rem 0 0; }
.dta-storefront .inuse-below figure { margin: 0; }
.dta-storefront .inuse-below img { width: 100%; height: clamp(260px, 44vh, 460px); object-fit: cover; object-position: center 32%; display: block; border: 1px solid var(--shell-hairline); }
.dta-storefront .inuse-below figcaption { display: flex; align-items: center; gap: .5rem; margin: .8rem 0 0;
	font-family: var(--shell-font-family-body); font-size: var(--proto-fs-small); letter-spacing: .04em; color: var(--shell-text-body); }
.dta-storefront .inuse-below figcaption b { color: var(--shell-text-dark); font-weight: 600; }

/* In-use band, "banner" placement — full-bleed photo above the crumbs/detail
   area, adapted from the approved prototype's treatment A
   (product-madeline-kiwi.html .inuse-banner). */
.dta-storefront .inuse-banner { position: relative; margin: 0 0 1.6rem; }
.dta-storefront .inuse-banner figure { margin: 0; position: relative; }
.dta-storefront .inuse-banner img { width: 100%; height: clamp(220px, 40vh, 440px); object-fit: cover; object-position: center 32%; display: block; }
.dta-storefront .inuse-banner figcaption { position: absolute; left: 0; right: 0; bottom: 0;
	padding: 2.4rem 1.4rem .9rem; color: #fff;
	background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.62) 100%);
	font-family: var(--shell-font-family-body); font-size: .74rem; letter-spacing: .06em;
	display: flex; align-items: center; gap: .5rem; }
.dta-storefront .inuse-banner figcaption b { font-weight: 600; }
.dta-storefront .inuse-banner .tag { color: #fff; border-color: rgba(255,255,255,.55); }

.dta-storefront .dta-pairsec { margin: 3rem 0 0; padding-top: 2rem; border-top: 1px solid var(--shell-hairline); }

/* lightbox */
.dta-storefront .lbx { position: fixed; inset: 0; z-index: 300; display: none; place-items: center; padding: 24px; }
.dta-storefront .lbx.is-on { display: grid; }
.dta-storefront .lbx__scrim { position: absolute; inset: 0; background: rgba(16,12,10,.82); }
.dta-storefront .lbx__fig { position: relative; max-width: min(720px, 94vw); max-height: 88vh; }
.dta-storefront .lbx__fig img { max-width: 100%; max-height: 82vh; object-fit: contain; display: block; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.dta-storefront .lbx__cap { color: #fff; font-size: .85rem; text-align: center; margin-top: .8rem; letter-spacing: .02em; }
.dta-storefront .lbx__x { position: absolute; top: -42px; right: 0; background: transparent; border: 0; color: #fff; font-size: 1.8rem; cursor: pointer; line-height: 1; }
.dta-storefront .lbx__nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,.14);
	border: 0; color: #fff; width: 44px; height: 44px; font-size: 1.4rem; cursor: pointer; }
.dta-storefront .lbx__nav.prev { left: -58px; } .dta-storefront .lbx__nav.next { right: -58px; }
@media (max-width: 680px) { .dta-storefront .lbx__nav.prev { left: 4px; } .dta-storefront .lbx__nav.next { right: 4px; } }

/* ============================================================
   QUOTE ([dta_quote_cart]) — table + fields
   ============================================================ */
.dta-storefront .qt { width: 100%; border-collapse: collapse; font-size: var(--proto-fs-body); }
.dta-storefront .qt th { text-align: left; font-family: var(--shell-font-family-body); font-size: var(--shell-eyebrow-size);
	letter-spacing: var(--shell-eyebrow-letter-spacing); text-transform: uppercase; color: var(--shell-text-muted); font-weight: 500; padding: 0 .8rem .8rem; }
.dta-storefront .qt td { padding: .9rem .8rem; border-top: 1px solid var(--shell-hairline); vertical-align: middle; color: var(--shell-text-body); }
.dta-storefront .qt td strong { color: var(--shell-text-dark); font-weight: 500; }
.dta-storefront .qt__img { width: 72px; }
.dta-storefront .qt__img img { width: 64px; height: 64px; object-fit: cover; border-radius: var(--proto-radius); }
.dta-storefront .qt__foot { margin-top: 2rem; display: flex; gap: 1.5rem; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.dta-storefront .qt__foot .detail__note { margin: 0; flex: 1 1 340px; }
.dta-storefront .linkbtn { background: none; border: 0; color: var(--shell-text-muted); cursor: pointer;
	font-family: var(--shell-font-family-body); font-size: var(--proto-fs-small); border-bottom: 1px solid currentColor; padding: 0; }
.dta-storefront .linkbtn:hover { color: var(--shell-accent); }
.dta-storefront .f2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.dta-storefront .fld { display: block; margin-bottom: 1rem; }
.dta-storefront .fld span { display: block; font-size: var(--proto-fs-small); color: var(--shell-text-dark); margin-bottom: .35rem; }
.dta-storefront .fld input, .dta-storefront .fld textarea { width: 100%; padding: .7rem .8rem; border: 1px solid var(--shell-hairline);
	border-radius: var(--proto-radius); background: var(--shell-surface-light); color: var(--shell-text-dark);
	font-family: var(--shell-font-family-body); font-size: var(--proto-fs-body); accent-color: var(--shell-accent); }
.dta-storefront .fld input:focus, .dta-storefront .fld textarea:focus { outline: none; border-color: var(--shell-accent); }

/* ============================================================
   QUOTE INTAKE ([dta_quote_form])
   ============================================================ */
.dta-storefront.dta-quote-intake, .dta-storefront.dta-quote-intake * { box-sizing: border-box; }
.dta-storefront.dta-quote-intake { width: 100%; max-width: 1180px; margin: 0 auto; padding: clamp(2rem, 5vw, 4.5rem) clamp(1rem, 3vw, 2rem); }
.dta-storefront .dta-qf { border: 1px solid var(--shell-hairline); background: var(--shell-surface-light); padding: clamp(1rem, 3vw, 2rem); }

/* v0.4.12 — EMBEDDED in a g-contact form slot: drop the standalone page
   padding. The rule above is sized for /quote-cart/, where this form IS the
   page and needs its own gutter. Inside g-contact the section has already paid
   for that gutter (.ssla-g-contact-inner is 80px/48px), so the wrapper padding
   was pure double-spacing: measured on the DTA contact page at 1280px it cost
   64px above the form and 32px each side, squeezing the fields to 452px inside
   a 582px column. Zeroing it lifts the form 64px and hands those 64 horizontal
   pixels back to the inputs. The card's own padding stays — that is the
   breathing room INSIDE the box, not around it. */
.ssla-g-contact-form .dta-storefront.dta-quote-intake { padding: 0; }

/* v0.4.12 — the per-step <h2> repeats the stepper chip verbatim ("Your event"
   over a stepper already reading 1 YOUR EVENT), so it is two lines of 32px
   heading spent saying what the widget above it just said. Hidden VISUALLY
   rather than deleted: it stays a real heading in the a11y tree, giving each
   step a landmark that the <ol> progress list does not provide. */
.dta-storefront .dta-qf-step > h2 {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}
.dta-storefront .dta-qf-stepper { display: flex; gap: .5rem; margin: 0 0 2rem; padding: 0; list-style: none; }
.dta-storefront .dta-qf-stepper li { flex: 1; padding: .55rem .2rem .65rem; border-top: 3px solid var(--shell-hairline); color: var(--shell-text-muted); text-align: center; text-transform: uppercase; letter-spacing: .05em; font-size: .66rem; }
.dta-storefront .dta-qf-stepper li span { display: block; margin-bottom: .15rem; font-family: var(--shell-font-family-heading); font-size: 1.1rem; letter-spacing: 0; }
.dta-storefront .dta-qf-stepper li.is-on { border-color: var(--shell-accent); color: var(--shell-text-dark); }
.dta-storefront .dta-qf-stepper li.is-done { border-color: var(--shell-accent-3); color: var(--shell-text-dark); }
.dta-storefront .dta-qf-stepper li.is-done span::before { content: "✓ "; color: var(--shell-accent-3); }
.dta-storefront .dta-qf-step { display: none; }
.dta-storefront .dta-qf-step.is-on { display: block; animation: dta-qf-in .2s ease; }
@keyframes dta-qf-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
.dta-storefront .dta-qf-step h2 { margin: 0 0 .25rem; color: var(--shell-text-dark); font-family: var(--shell-font-family-heading); font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 500; }
.dta-storefront .dta-qf-lead { margin: 0 0 1.5rem; color: var(--shell-text-body); font-size: var(--proto-fs-small); }
.dta-storefront .dta-qf .fld b { color: var(--shell-accent); }
.dta-storefront .dta-qf .fld select { width: 100%; padding: .7rem .8rem; border: 1px solid var(--shell-hairline); border-radius: 0; background: var(--shell-surface-light); color: var(--shell-text-dark); font: inherit; }
.dta-storefront .dta-qf .fld input:focus, .dta-storefront .dta-qf .fld textarea:focus, .dta-storefront .dta-qf .fld select:focus { outline: 2px solid color-mix(in srgb, var(--shell-accent) 35%, transparent); outline-offset: 1px; border-color: var(--shell-accent); }
.dta-storefront .dta-qf-products { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; margin-bottom: 1.5rem; }
.dta-storefront .dta-qf-product { display: grid; grid-template-columns: minmax(0, 1fr) 64px; align-items: center; gap: .5rem; padding: .65rem .75rem; border: 1px solid var(--shell-hairline); background: var(--shell-surface-card); }
.dta-storefront .dta-qf-product.is-on { border-color: var(--shell-accent); background: var(--shell-surface-warm); }
.dta-storefront .dta-qf-product > label:first-child { display: flex; align-items: center; gap: .55rem; color: var(--shell-text-body); font-size: var(--proto-fs-small); cursor: pointer; }
.dta-storefront .dta-qf-product input[type="checkbox"] { width: 17px; height: 17px; accent-color: var(--shell-accent); }
.dta-storefront .dta-qf-qty { margin: 0; }
.dta-storefront .dta-qf-qty input { width: 100%; padding: .35rem; text-align: center; border: 1px solid var(--shell-hairline); border-radius: 0; background: var(--shell-surface-light); }
.dta-storefront .dta-qf-nav { display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; align-items: center; margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--shell-hairline); }
.dta-storefront .dta-qf-nav button:disabled { opacity: .55; cursor: not-allowed; }
/* .btn sets display:inline-block unconditionally, which beats the UA [hidden]{display:none}
   rule (author styles always win over UA styles regardless of specificity) — so Back/Continue/
   Send request all rendered at once instead of respecting data-qf-*'s hidden attribute/property. */
.dta-storefront .dta-qf-nav .btn[hidden] { display: none; }
.dta-storefront .dta-qf-error { min-height: 1.25em; margin-top: .75rem; color: #9b2c2c; font-size: var(--proto-fs-small); }
.dta-storefront .dta-qf-honey { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }
.dta-storefront .dta-qf-review-card { margin-bottom: .9rem; padding: 1rem 1.1rem; border: 1px solid var(--shell-hairline); background: var(--shell-surface-card); }
.dta-storefront .dta-qf-review-card h3 { margin: 0 0 .6rem; color: var(--shell-text-dark); font-family: var(--shell-font-family-heading); font-size: 1.15rem; font-weight: 500; }
.dta-storefront .dta-qf-review-card dl, .dta-storefront .dta-qf-review-card ul { margin: 0; padding: 0; list-style: none; }
.dta-storefront .dta-qf-review-card dl div, .dta-storefront .dta-qf-review-card li { display: flex; justify-content: space-between; gap: 1rem; padding: .35rem 0; border-bottom: 1px dashed var(--shell-hairline); font-size: var(--proto-fs-small); }
.dta-storefront .dta-qf-review-card dl div:last-child, .dta-storefront .dta-qf-review-card li:last-child { border-bottom: 0; }
.dta-storefront .dta-qf-review-card dt { color: var(--shell-text-body); }
.dta-storefront .dta-qf-review-card dd { margin: 0; color: var(--shell-text-dark); text-align: right; font-weight: 600; }
.dta-storefront .dta-qf-success { padding: clamp(1.25rem, 4vw, 2.25rem); border: 1px solid var(--shell-accent-3); background: var(--shell-surface-warm); }
.dta-storefront .dta-qf-success p { color: var(--shell-text-body); }
.dta-storefront .dta-qf-request-id { margin-bottom: 0; font-size: var(--proto-fs-small); overflow-wrap: anywhere; }

/* ---------------- quote-count badge (where mounted in-storefront) ---------------- */
.dta-storefront [data-quote-count] { display: inline-block; min-width: 1.35em; text-align: center;
	margin-left: .45rem; padding: .05em .35em; background: var(--shell-accent); color: var(--shell-text-inverted); font-size: .72em; line-height: 1.5; }
.dta-storefront [data-quote-count].is-empty { display: none; }

/* ---------------- toast (appended to <body>, so NOT scoped) ---------------- */
.dta-toast { position: fixed; left: 50%; bottom: 2rem; transform: translate(-50%, 1rem);
	background: var(--shell-surface-dark, #2F4D6A); color: #fff; padding: .8rem 1.3rem; font-family: var(--shell-font-family-body, "Montserrat", system-ui, sans-serif);
	font-size: .78rem; opacity: 0; pointer-events: none; transition: opacity .22s, transform .22s; z-index: 100; }
.dta-toast.is-on { opacity: 1; transform: translate(-50%, 0); }

/* ---------------- responsive ---------------- */
@media (max-width: 800px) { .dta-storefront .detail { grid-template-columns: 1fr; } .dta-storefront .f2 { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .dta-storefront .dta-qf-products { grid-template-columns: 1fr; } .dta-storefront .dta-qf-stepper li { font-size: .55rem; } }
