/* Self-hosted, open-license families. Only a chosen sample needs its font file. */
@font-face { font-family: 'CWJ Roboto'; src: url('fonts/roboto.ttf') format('truetype'); font-style: normal; font-weight: 100 900; font-display: swap; }
@font-face { font-family: 'CWJ Open Sans'; src: url('fonts/opensans.ttf') format('truetype'); font-style: normal; font-weight: 300 800; font-display: swap; }
@font-face { font-family: 'CWJ Lato'; src: url('fonts/lato.ttf') format('truetype'); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: 'CWJ Montserrat'; src: url('fonts/montserrat.ttf') format('truetype'); font-style: normal; font-weight: 100 900; font-display: swap; }
@font-face { font-family: 'CWJ Oswald'; src: url('fonts/oswald.ttf') format('truetype'); font-style: normal; font-weight: 200 700; font-display: swap; }
@font-face { font-family: 'CWJ Playfair Display'; src: url('fonts/playfair.ttf') format('truetype'); font-style: normal; font-weight: 400 900; font-display: swap; }
@font-face { font-family: 'CWJ Dancing Script'; src: url('fonts/dancing.ttf') format('truetype'); font-style: normal; font-weight: 400 700; font-display: swap; }

/* Scoped to the builder, including its real start panel in the Woo summary. */
.cwj-builder {
  --cwj-ink: #302333;
  --cwj-muted: #6b5c6c;
  --cwj-plum: #673b65;
  --cwj-plum-dark: #492847;
  --cwj-rose: #f8e7ed;
  --cwj-cream: #fffaf5;
  --cwj-border: #dfd4de;
  --cwj-error: #9c2337;
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  margin: 1.5rem 0;
  color: var(--cwj-ink);
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.55;
  text-align: left;
}
.cwj-builder *, .cwj-builder *::before, .cwj-builder *::after { box-sizing: border-box; }
.cwj-builder [hidden], .cwj-builder-zoom[hidden] { display: none !important; }
.cwj-builder h2, .cwj-builder h3, .cwj-builder h4, .cwj-builder h5 { color: var(--cwj-ink); line-height: 1.25; letter-spacing: -.015em; }
.cwj-builder h2 { margin: 0 0 .55rem; font-size: clamp(1.4rem, 2.6vw, 1.85rem); }
.cwj-builder h3, .cwj-builder legend { margin: 0 0 .55rem; font-size: 1.2rem; font-weight: 700; }
.cwj-builder h4 { margin: 0 0 .3rem; font-size: 1.1rem; }
.cwj-builder h5 { margin: 0; font-size: .95rem; }
.cwj-builder p { margin: 0 0 .8rem; }
.cwj-builder small { display: block; color: var(--cwj-muted); font-size: .82rem; line-height: 1.5; }
.cwj-builder fieldset { min-width: 0; padding: 0; margin: 0; border: 0; }
.cwj-builder legend { float: none; width: 100%; padding: 0; }
.cwj-builder .cwj-builder__eyebrow { margin: 0 0 .35rem; color: var(--cwj-plum); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.cwj-builder .cwj-builder__lead { color: var(--cwj-muted); font-size: .9rem; }
.cwj-builder__badge, .cwj-builder__step-number { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 1.7rem; height: 1.7rem; border-radius: 50%; background: var(--cwj-plum); color: #fff; font-size: .85rem; font-weight: 700; vertical-align: middle; }
.cwj-builder__badge { margin-right: .4rem; }
.cwj-builder .cwj-builder__optional, .cwj-builder .cwj-builder__required { color: var(--cwj-muted); font-size: .77rem; font-weight: 400; letter-spacing: 0; }
.cwj-builder h3 .cwj-builder__optional { display: inline-block; padding: .22rem .6rem; margin-left: .4rem; background: #f2ebf2; border-radius: 1rem; vertical-align: middle; }
.cwj-builder__start { margin: 0 0 2rem; padding: 1.3rem; border: 1px solid var(--cwj-border); border-radius: 1rem; background: #fff; }
.cwj-builder-summary-slot:empty { display: none; }
.cwj-builder-summary-slot.is-active { width: 100%; margin-top: 1.25rem; }
.summary .cwj-builder-summary-slot .cwj-builder__start { width: 100%; margin: 0; padding: 1.2rem; }
.cwj-builder .cwj-builder__progress { margin: 1.1rem 0 1.3rem; }
.cwj-builder__progress ol { display: flex; gap: .45rem; list-style: none; padding: 0; margin: 0; }
.cwj-builder__progress li { flex: 1 1 0; min-width: 0; padding: 0; margin: 0; }
.cwj-builder__progress button { display: flex; align-items: flex-start; gap: .4rem; width: 100%; min-height: 64px; padding: .55rem .35rem; border: 1px solid var(--cwj-border); border-radius: .6rem; background: #fcfafc; color: var(--cwj-ink); font: inherit; font-size: .78rem; font-weight: 600; line-height: 1.35; text-align: left; cursor: pointer; }
.cwj-builder__progress .cwj-builder__step-number { width: 1.35rem; height: 1.35rem; font-size: .72rem; background: #e8dfe8; color: var(--cwj-plum-dark); }
.cwj-builder__progress small { margin-top: .2rem; font-size: .67rem; font-weight: 400; overflow-wrap: anywhere; }
.cwj-builder__progress button[aria-current='step'] { border-color: var(--cwj-plum); background: #f7eff5; }
.cwj-builder__progress button[aria-current='step'] .cwj-builder__step-number { background: var(--cwj-plum); color: #fff; }
.cwj-builder [data-cwj-step], .cwj-builder [data-cwj-details] { scroll-margin-top: 1.5rem; }
.cwj-builder__section { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--cwj-border); }
.cwj-builder__section-heading > p { margin-left: 2.2rem; color: var(--cwj-muted); font-size: .92rem; }
.cwj-builder__collection { margin-top: 1.7rem; }
.cwj-builder .cwj-builder__collection-help, .cwj-builder .cwj-builder__empty { color: var(--cwj-muted); font-size: .88rem; }
.cwj-builder .cwj-builder__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(175px, 1fr)); gap: .85rem; margin-top: .9rem; align-items: start; }
.cwj-builder .cwj-builder__grid:empty { display: none; }
.cwj-builder__choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; margin-top: .45rem; }
.cwj-builder__choice { display: flex; align-items: flex-start; gap: .65rem; padding: .8rem; margin: 0; border: 1px solid var(--cwj-border); border-radius: .65rem; background: #fff; cursor: pointer; line-height: 1.4; }
.cwj-builder__choice > span { min-width: 0; display: block; }
.cwj-builder__choice strong { display: block; font-size: .9rem; margin-bottom: .2rem; }
.cwj-builder__choice small { font-size: .75rem; }
.cwj-builder__choice [data-cwj-stuffing-price] { margin-top: .35rem; font-weight: 600; color: var(--cwj-plum-dark); }
.cwj-builder__choice.is-selected { border-color: var(--cwj-plum); background: #fffaf8; box-shadow: 0 0 0 1px var(--cwj-plum); }
.cwj-builder [data-cwj-card] { min-width: 0; overflow: hidden; border: 1px solid var(--cwj-border); border-radius: .8rem; background: #fff; transition: border-color .15s ease, box-shadow .15s ease; }
.cwj-builder [data-cwj-card].is-selected { border-color: var(--cwj-plum); box-shadow: 0 0 0 1px var(--cwj-plum); }
.cwj-builder [data-cwj-card].has-error { border-color: var(--cwj-error); box-shadow: 0 0 0 1px var(--cwj-error); }
.cwj-builder [data-cwj-zoom] { display: block; width: 100%; padding: .65rem; margin: 0; border: 0; border-bottom: 1px solid var(--cwj-border); border-radius: 0; background: var(--cwj-cream); color: var(--cwj-plum-dark); cursor: zoom-in; box-shadow: none; }
.cwj-builder [data-cwj-zoom] img { display: block; width: 100%; height: 145px; object-fit: contain; margin: 0 auto; border-radius: .3rem; }
.cwj-builder [data-cwj-zoom]::after { content: 'View larger'; display: block; width: fit-content; margin: .4rem 0 0 auto; font-size: .7rem; line-height: 1.3; font-weight: 600; }
.cwj-builder [data-cwj-card] > .cwj-builder__choice { padding: .8rem .75rem .4rem; border: 0; border-radius: 0; background: transparent; box-shadow: none; font-size: .86rem; font-weight: 600; }
.cwj-builder [data-cwj-price] { display: block; margin: .3rem .75rem .6rem; color: var(--cwj-plum-dark); font-size: .9rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.cwj-builder [data-cwj-status] { margin: .4rem .75rem .65rem; color: var(--cwj-muted); font-size: .75rem; line-height: 1.4; }
.cwj-builder [data-cwj-status]:empty { display: none; }
.cwj-builder [data-cwj-card].has-error [data-cwj-status] { color: var(--cwj-error); }
.cwj-builder .cwj-builder__edit-link { display: block; width: calc(100% - 1.5rem); min-height: 44px; padding: .3rem 0 .55rem; margin: 0 .75rem; border: 0; background: none; color: var(--cwj-plum-dark); text-align: left; text-decoration: underline; text-underline-offset: .18em; font: inherit; font-size: .78rem; font-weight: 600; cursor: pointer; }
.cwj-builder__panels { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.cwj-builder [data-cwj-details] { width: 100%; min-width: 0; margin-top: 1.15rem; padding: 1.3rem; border: 1px solid #cbb4c6; border-radius: .9rem; background: #fffcfa; }
.cwj-builder [data-cwj-details].has-error { border-color: var(--cwj-error); }
.cwj-builder__detail-header { display: flex; align-items: center; gap: .85rem; margin: 0 0 1.2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--cwj-border); }
.cwj-builder__detail-header > img { flex: 0 0 auto; width: 64px; height: 64px; object-fit: contain; border: 1px solid var(--cwj-border); border-radius: .5rem; background: #fff; }
.cwj-builder__detail-header > div { flex: 1 1 auto; min-width: 0; }
.cwj-builder__detail-header h4 { overflow-wrap: anywhere; }
.cwj-builder__detail-header .cwj-builder__text-button { margin-left: auto; flex: 0 0 auto; }
.cwj-builder .cwj-builder__editor { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 1.5rem; align-items: start; }
.cwj-builder__fields { min-width: 0; }
.cwj-builder__fields:only-child { grid-column: 1 / -1; }
.cwj-builder__attributes, .cwj-builder__style-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .85rem; }
.cwj-builder__field { margin-bottom: 1rem; min-width: 0; }
.cwj-builder__field > label { display: block; margin: 0 0 .35rem; color: var(--cwj-ink); font-size: .88rem; font-weight: 600; }
.cwj-builder__field small { margin-top: .35rem; }
.cwj-builder .cwj-builder__detail-help { color: var(--cwj-muted); font-size: .88rem; }
.cwj-builder input[type='checkbox'], .cwj-builder input[type='radio'] { appearance: auto; -webkit-appearance: auto; flex: 0 0 auto; width: 1.05rem; height: 1.05rem; margin: .12rem 0 0; accent-color: var(--cwj-plum); cursor: pointer; }
.cwj-builder select, .cwj-builder textarea, .cwj-builder input[type='text'] { display: block; width: 100%; max-width: 100%; min-height: 44px; padding: .65rem .75rem; margin: 0; border: 1px solid #bdadbb; border-radius: .5rem; background-color: #fff; color: var(--cwj-ink); font: inherit; font-size: 1rem; line-height: 1.4; }
.cwj-builder select { padding-right: 1.75rem; }
.cwj-builder textarea { min-height: 105px; resize: vertical; }
.cwj-builder input[type='file'] { display: block; max-width: 100%; width: 100%; padding: .5rem; border: 1px solid var(--cwj-border); border-radius: .5rem; background: #fff; margin-top: .45rem; color: var(--cwj-muted); font: inherit; font-size: .85rem; font-weight: 400; line-height: 1.4; }
.cwj-builder input[type='file']::file-selector-button { min-height: 44px; margin: 0 .5rem .15rem 0; padding: .5rem .75rem; border: 1px solid var(--cwj-border); border-radius: .4rem; background: #fbf6f9; color: var(--cwj-plum-dark); font: inherit; font-weight: 600; cursor: pointer; }
.cwj-builder input:disabled, .cwj-builder select:disabled, .cwj-builder textarea:disabled { cursor: not-allowed; opacity: .65; }
.cwj-builder :is(input, select, textarea, button, h3, h4):focus-visible, .cwj-builder-zoom button:focus-visible { outline: 3px solid #2f6876; outline-offset: 3px; }
.cwj-builder__color-picker { display: flex; align-items: center; gap: .65rem; min-height: 44px; }
.cwj-builder .cwj-builder__color-picker input[type='color'] { width: 52px; min-width: 52px; height: 44px; min-height: 44px; padding: 3px; border: 1px solid #bdadbb; border-radius: .5rem; background: #fff; cursor: pointer; }
.cwj-builder [data-cwj-color-value] { font: .8rem/1.3 ui-monospace, monospace; overflow-wrap: anywhere; }
.cwj-builder__palette { display: flex; flex-wrap: wrap; gap: .3rem; margin: -.2rem 0 1rem; }
.cwj-builder [data-cwj-swatch] { display: grid; place-items: center; width: 44px; height: 44px; padding: 5px; border: 2px solid transparent; border-radius: 50%; background: transparent; cursor: pointer; }
.cwj-builder [data-cwj-swatch] span { width: 28px; height: 28px; border: 1px solid #998e99; border-radius: 50%; background: var(--cwj-swatch); }
.cwj-builder [data-cwj-swatch][aria-pressed='true'] { border-color: var(--cwj-plum); }
.cwj-builder .cwj-builder__fee { margin: .25rem 0; color: var(--cwj-muted); font-size: .82rem; }
.cwj-builder__samples { min-width: 0; padding: 1.1rem; border: 1px solid var(--cwj-border); border-radius: .75rem; background: #fff; }
.cwj-builder__sample-heading { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: .4rem; margin-bottom: .7rem; }
.cwj-builder [data-cwj-font-label] { color: var(--cwj-muted); font-size: .76rem; }
.cwj-builder [data-cwj-preview] { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 150px; padding: 1.25rem; margin: 0 0 .7rem; border: 1px solid var(--cwj-border); border-radius: .6rem; background: #f5f1f5; }
.cwj-builder [data-cwj-preview].is-dark { background: #302b35; }
.cwj-builder [data-cwj-preview-text] { display: block; max-width: 100%; color: #241b2a; text-align: center; font-family: 'CWJ Roboto', Arial, sans-serif; font-size: clamp(1.8rem, 3vw, 2.5rem); font-weight: 400; font-style: normal; font-synthesis: none; line-height: 1.3; white-space: pre-wrap; overflow-wrap: anywhere; }
.cwj-builder__artwork { margin: 1.2rem 0 0; padding-top: 1rem; border-top: 1px solid var(--cwj-border); }
.cwj-builder__artwork figcaption { margin: 0 0 .55rem; color: var(--cwj-ink); font-size: .9rem; font-weight: 600; }
.cwj-builder [data-cwj-preview-upload] { display: block; width: auto; max-width: 100%; max-height: 180px; margin: .5rem auto; object-fit: contain; border-radius: .35rem; }
.cwj-builder [data-cwj-artwork-name] { overflow-wrap: anywhere; }
.cwj-builder .cwj-builder__panel-status { margin: 1rem 0 0; color: var(--cwj-muted); font-size: .83rem; }
.cwj-builder [data-cwj-details].has-error .cwj-builder__panel-status { color: var(--cwj-error); }
.cwj-builder__actions { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem 1rem; margin-top: 1.15rem; }
.cwj-builder .cwj-builder__button { min-height: 44px; padding: .65rem 1.1rem; border: 1px solid var(--cwj-plum); border-radius: .55rem; background: var(--cwj-plum); color: #fff; font: inherit; font-size: .87rem; font-weight: 600; line-height: 1.45; text-align: center; cursor: pointer; }
.cwj-builder .cwj-builder__button:hover { background: var(--cwj-plum-dark); }
.cwj-builder .cwj-builder__text-button { min-height: 44px; padding: .45rem .15rem; border: 0; background: none; color: var(--cwj-plum-dark); font: inherit; font-size: .82rem; line-height: 1.4; text-decoration: underline; text-underline-offset: .18em; cursor: pointer; }
.cwj-builder__live { margin-top: 1rem; padding-top: .9rem; border-top: 1px solid var(--cwj-border); }
.cwj-builder .cwj-builder__live h3 { font-size: .94rem; }
.cwj-builder__live ul { list-style: none; margin: 0; padding: 0; }
.cwj-builder__live li { display: flex; justify-content: space-between; gap: .7rem; margin: .28rem 0; padding: 0; font-size: .8rem; }
.cwj-builder__live li > span:first-child { overflow-wrap: anywhere; }
.cwj-builder__live li > span:last-child { flex: 0 0 auto; font-variant-numeric: tabular-nums; }
.cwj-builder .cwj-builder__live-total { display: flex; align-items: baseline; justify-content: space-between; gap: .7rem; margin: .6rem 0 .35rem; padding-top: .65rem; border-top: 1px dashed var(--cwj-border); font-size: .85rem; }
.cwj-builder__live-total strong { font-size: 1.3rem; color: var(--cwj-plum-dark); }
.cwj-builder [data-cwj-summary-state] { font-size: .75rem; }
.cwj-builder [data-cwj-rights-wrap] { margin: 1.1rem 0; padding: 1rem; border: 1px solid var(--cwj-border); border-radius: .7rem; background: #fff; }
.cwj-builder [data-cwj-rights-wrap] label { display: flex; align-items: flex-start; gap: .65rem; font-size: .88rem; line-height: 1.5; }
.cwj-builder [data-cwj-errors] { margin: 1rem 0; padding: 1rem 1.2rem; border: 1px solid #d9a0ab; border-left: 4px solid var(--cwj-error); border-radius: .6rem; color: #771b2a; background: #fff3f4; font-size: .9rem; }
.cwj-builder [data-cwj-errors] p { margin: 0 0 .5rem; font-weight: 700; }
.cwj-builder [data-cwj-errors] ul { margin: 0; padding: 0 0 0 1.25rem; }
.cwj-builder [data-cwj-errors] li { margin: .25rem 0; }
.cwj-builder__summary { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.25rem; margin-top: 1rem; padding: 1.15rem 1.25rem; border: 1px solid #dbc3d6; border-radius: .9rem; background: var(--cwj-rose); }
.cwj-builder .cwj-builder__summary p { margin: 0; }
.cwj-builder__summary strong { display: block; font-size: 1.3rem; color: var(--cwj-plum-dark); }
.cwj-builder [data-cwj-unit], .cwj-builder [data-cwj-total] { font-variant-numeric: tabular-nums; }
.cwj-builder__summary small { width: 100%; }
.cwj-builder .cwj-builder__help { margin-top: .7rem; color: var(--cwj-muted); font-size: .87rem; }
.cwj-builder-zoom { box-sizing: border-box; width: min(92vw, 850px); max-width: 92vw; max-height: 92dvh; padding: 1rem; border: 1px solid #dfd4de; border-radius: 1rem; background: #fffaf5; color: #302333; box-shadow: 0 20px 80px #20122055; }
.cwj-builder-zoom::backdrop { background: #221525bf; }
.cwj-builder-zoom__close { display: block; min-height: 44px; margin: 0 0 .75rem auto; padding: .5rem 1rem; border: 1px solid #673b65; border-radius: .5rem; background: #673b65; color: #fff; font: inherit; font-size: .95rem; line-height: 1.4; cursor: pointer; }
.cwj-builder-zoom__image { display: block; width: 100%; max-height: 70dvh; object-fit: contain; margin: 0 auto; }
.cwj-builder-zoom__caption { margin: .75rem 0 0; text-align: center; font: 600 1rem/1.4 system-ui, sans-serif; }
.cwj-builder-zoom[open] { position: fixed; inset: 0; z-index: 100000; margin: auto; }
/* Preserve the WooCommerce form and clear its floated gallery/summary columns. */
.cwj-builder-form-wrap { clear: both; width: 100%; padding-top: 1px; }
.cwj-builder-form-wrap > form.cart, .cwj-builder-form-wrap .single_variation_wrap, .cwj-builder-form-wrap .woocommerce-variation-add-to-cart { width: 100%; }
@media (min-width: 960px) { .cwj-builder-summary-slot .cwj-builder__choices { grid-template-columns: 1fr 1fr; } }
@media (max-width: 700px) {
  .cwj-builder .cwj-builder__editor { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .cwj-builder [data-cwj-details] { padding: 1rem; }
  .cwj-builder .cwj-builder__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
  .cwj-builder__section-heading > p { margin-left: 0; }
  .cwj-builder__start { padding: 1rem; }
  .cwj-builder [data-cwj-zoom] img { height: 135px; }
}
@media (max-width: 400px) {
  .cwj-builder__choices { grid-template-columns: 1fr; }
  .cwj-builder__style-fields, .cwj-builder__attributes { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .cwj-builder .cwj-builder__progress button { flex-direction: column; gap: .35rem; font-size: .73rem; }
  .cwj-builder__detail-header { flex-wrap: wrap; gap: .65rem; }
  .cwj-builder__detail-header > img { width: 48px; height: 48px; }
  .cwj-builder__detail-header > div { flex-basis: calc(100% - 70px); }
  .cwj-builder__detail-header .cwj-builder__text-button { margin-left: 0; }
  .cwj-builder [data-cwj-zoom] img { height: 105px; }
  .cwj-builder__summary { padding: 1rem; }
}
@media (prefers-reduced-motion: reduce) { .cwj-builder *, .cwj-builder-zoom { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }
@media (forced-colors: active) { .cwj-builder [data-cwj-card].is-selected, .cwj-builder__choice.is-selected, .cwj-builder [data-cwj-swatch][aria-pressed='true'] { outline: 2px solid Highlight; } }
