/* Extend the existing plum, pink and illustrated-card storefront. */
input {font: inherit; color: inherit;}
input:focus-visible {outline: 3px solid #c25716; outline-offset: 4px;}
button:disabled {cursor: not-allowed;}
button.primary:disabled {background: #715365; color: white;}
.wide-button {width: 100%; justify-content: space-between; min-height: 48px;}
.primary .button-label, .primary #detailPrice {font-size: 1rem;}
.detail-grid {align-items: start;}
.detail-grid > img {height: auto;}
.detail-grid p {font-size: 1rem;}
.detail-grid label {font-size: 1rem;}
.detail-grid input {width: 100px; max-width: 100%; background: white; border: 1px solid var(--line); border-radius: 4px; min-height: 44px; padding: 9px 12px;}
.detail-grid select, .detail-grid textarea {font-size: 1rem;}
.detail-grid .edition-description {font-size: .875rem; margin-top: 10px;}
.message-meta {display: flex; align-items: start; gap: 14px; margin-top: 8px;}
.message-meta #messageHelp {font-size: .875rem; line-height: 1.5; margin: 0;}
.message-meta #messageCount {font-size: .875rem; white-space: nowrap; color: var(--muted);}
.bag-meta {color: var(--muted); font-size: .875rem;}
.row-info {min-width: 0;}
.row-info h3 {font-size: 1rem;}
.row-info p {font-size: .875rem;}
.saved-note {border-left: 2px solid #d79ab0; padding-left: 10px; margin: 10px 0 !important;}
.text-button {border: 0; background: transparent; text-decoration: underline; text-underline-offset: 4px; padding: 8px 0; font-size: .875rem; line-height: 1.5; text-align: left;}
.edit-card {padding: 3px 0;}
.quantity {gap: 10px; flex-wrap: wrap;}
.quantity button {width: 36px; height: 36px;}
.quantity .remove {font-size: .875rem;}
.quantity button:disabled {color: var(--muted); opacity: .55;}
.line-price {font-size: 1rem; white-space: nowrap;}
.cart-total {align-items: baseline; gap: 15px;}
.cart-total small, .review-subtotal small {font-size: .875rem; font-weight: 400;}
.continue-shopping {display: block; margin: 12px auto 2px; text-align: center;}
.preview-footnote {font-size: .875rem; color: var(--muted); text-align: center; margin: 12px 0 0; line-height: 1.5;}
#review {max-width: 1040px; padding: 42px;}
.dialog-close {position: absolute; right: 12px; top: 10px;}
.review-intro {margin: 14px 0 26px; color: var(--muted);}
.review-layout {display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(280px, 1fr); gap: 32px; align-items: start;}
.review-item {display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; gap: 14px; padding: 18px 0; border-bottom: 1px solid var(--line);}
.review-item:first-child {padding-top: 0;}
.review-item img {width: 72px; height: 82px; object-fit: contain;}
.review-item h3 {font-family: 'DM Sans', sans-serif; font-size: 1rem; font-weight: 500; line-height: 1.4;}
.review-item p {margin: 6px 0; font-size: .875rem; color: var(--muted);}
.review-item strong {font-size: 1rem; font-weight: 500; white-space: nowrap;}
.review-item blockquote {margin: 12px 0 0; padding-left: 10px; border-left: 2px solid #d79ab0; color: var(--muted); font-size: .875rem; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere;}
.review-summary {border: 1px solid #e5cbd5; padding: 24px; border-radius: 5px; background: #fff5f8;}
.review-summary > h3 {font-size: 1.75rem; margin-bottom: 20px;}
.review-totals {margin: 0; font-size: 1rem;}
.review-totals > div {display: flex; justify-content: space-between; gap: 16px; margin-bottom: 15px; line-height: 1.5;}
.review-totals dd {margin: 0; text-align: right;}
.review-totals .review-subtotal {padding-top: 18px; margin-top: 18px; border-top: 1px solid #e5cbd5; font-weight: 600; font-size: 1.125rem;}
.review-summary .checkout-note {padding: 16px; margin: 20px 0; background: #f7e0e9;}
.checkout-note p {margin: 8px 0 0; font-size: .875rem;}
.review-help {font-size: .875rem; color: var(--muted); margin: 16px 0 0;}
.checkout-error {border-left: 3px solid var(--accent); padding: 12px; background: #ffe5ec; margin: 16px 0 0; font-size: .875rem;}
#editBag {margin-top: 14px;}
.policy-links {display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 16px;}
.policy-links button {border: 0; background: none; padding: 0; text-align: left; text-decoration: underline; text-underline-offset: 4px; font-size: .875rem; line-height: 1.6;}
#policy, #order {max-width: 660px; padding: 42px; width: calc(100% - 32px);}
#policyBody {white-space: pre-line;}
#policy p, #order p {font-size: 1rem; line-height: 1.65; margin: 18px 0;}
#order h2 {font-size: clamp(1.75rem, 5vw, 2.75rem);}
.order-reference {overflow-wrap: anywhere; color: var(--muted); font-size: .875rem !important;}
.order-items {list-style: none; padding: 0;}
.order-items li {display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 1rem;}
.order-items li span:last-child {white-space: nowrap;}
.order-total {display: flex; justify-content: space-between; gap: 16px;}
.order-paid {font-weight: 600;}
[hidden] {display: none !important;}
/* Collection refresh: stronger colour, generous card fronts and useful filters. */
.announcement {font-size: .875rem;}
.announcement b, .logo small {font-size: .75rem;}
.eyebrow {font-size: .8125rem; line-height: 1.6;}
.hero {min-height: 520px;}
.hero h1 {font-size: clamp(3.7rem, 5.8vw, 5.8rem); letter-spacing: -.035em;}
.hero-copy {padding-top: 54px; padding-bottom: 48px;}
.hero-copy .hero-note {font-size: .875rem !important;}
.hero-gallery {background: #ebb1c3; padding: 38px; gap: 26px;}
.hero-gallery img {aspect-ratio: 2 / 3; object-fit: contain;}
.hero-gallery figcaption {font-size: .75rem; letter-spacing: .05em;}
.hero-side {margin-top: 100px !important;}
.edition {width: 92px; height: 92px; top: 22px; right: 32px;}
.edition em {font-size: 1.9rem;}
.catalog-filters {display: grid; grid-template-columns: minmax(220px, 1.6fr) repeat(3, minmax(135px, 1fr)); gap: 16px; background: #f8ecf0; border: 1px solid #e9d7df; padding: 22px; margin: 28px 0 24px; border-radius: 6px;}
.catalog-filters label {display: flex; flex-direction: column; gap: 9px; font-size: .875rem; font-weight: 500; min-width: 0;}
.catalog-filters input, .catalog-filters select {width: 100%; min-width: 0; min-height: 46px; border: 1px solid #ceb9c3; border-radius: 4px; padding: 11px 12px; background: white; font-size: 1rem; font-weight: 400;}
.catalog-filters input {font: inherit; font-size: 1rem;}
.shop-toolbar p, .format-disclaimer, .product small, .filterline {font-size: .875rem;}
.filterline {display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 40px;}
.products {gap: 32px 22px;}
.product-image {aspect-ratio: 3 / 4; padding: 20px; background: #f6dce5; border-radius: 4px;}
.product-image img {aspect-ratio: 2 / 3; object-fit: contain; border-radius: 1px; box-shadow: 2px 5px 10px #58283f19;}
.product:nth-child(4n+2) .product-image {background: #fae8ac;}
.product:nth-child(4n+3) .product-image {background: #dbe4f5;}
.product:nth-child(4n+4) .product-image {background: #e5ebdf;}
.product-image:hover img {transform: translateY(-3px) rotate(-1deg);}
.product h3 {line-height: 1.45;}
.tag {font-size: .75rem; padding: 6px 9px;}
.empty-results {padding: 48px 24px; background: #f8ecf0; text-align: center; border-radius: 5px;}
.empty-results p {margin: 16px 0 24px;}
.load-more-wrap {text-align: center; margin-top: 36px;}
.load-more {background: none; border: 1px solid var(--ink); padding: 15px 36px; border-radius: 4px; font-size: 1rem;}
.load-more:hover {background: var(--ink); color: white;}
.card-details {border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 12px 0; margin: 20px 0;}
.card-details p {margin: 5px 0; font-size: .875rem;}
.card-details span {display: block; font-size: .75rem; font-weight: 600; color: var(--ink); margin-bottom: 4px;}
.hero-copy .primary .hero-button-label {font-size: 14px;}
.hero-button-label b {font-weight: inherit;}
.occasion-directory {margin-top: 24px; border-top: 1px solid var(--line);}
.occasion-directory summary {cursor: pointer; padding: 20px 0 8px; font-size: .9375rem; font-weight: 500;}
.occasion-directory summary:focus-visible {outline: 3px solid #c25716; outline-offset: 4px;}
.occasion-groups {display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px 36px; padding: 24px 0 4px;}
.occasion-group h3 {font: 600 .9375rem 'DM Sans', sans-serif; line-height: 1.5; margin: 0 0 12px;}
.occasion-group ul {list-style: none; margin: 0; padding: 0;}
.occasion-group button {display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; min-height: 44px; border: 0; border-radius: 4px; background: transparent; padding: 9px 10px; text-align: left; font-size: .875rem;}
.occasion-group button:hover {background: #f8ecf0;}
.occasion-group button[aria-pressed=true] {background: var(--ink); color: white;}
.occasion-group small {font-size: .8125rem; opacity: .8;}
.sr-only {position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;}
.character-shortcut {display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 22px;}
.character-shortcut p {font-size: .875rem; margin: 0; color: var(--muted);}
.character-filter {border: 1px solid var(--ink); border-radius: 30px; background: #f4d18e; padding: 12px 18px; font-size: .9375rem;}
.character-filter[aria-pressed=true] {background: var(--ink); color: white;}
.character-filter span {margin-left: 10px;}
.artwork-preview {display: block; position: relative; aspect-ratio: 2 / 3; overflow: hidden; border-radius: 2px;}
.artwork-preview > img {display: block; width: 100%; height: 100%; object-fit: contain;}
.product-image {display: flex; align-items: center; justify-content: center;}
.product-image > .artwork-preview {height: 100%; width: auto; max-width: 100%; flex: 0 1 auto; box-shadow: 2px 5px 10px #58283f19;}
.product-image .artwork-preview > img {box-shadow: none;}
.detail-grid > .artwork-preview {width: 100%; max-width: 440px; margin: 15px auto 0;}
.cart-row > .artwork-preview {width: 70px; height: 105px; flex: 0 0 auto;}
.review-item > .artwork-preview {width: 72px; height: 108px;}
.composed-card {container-type: inline-size; background: var(--card-paper); color: var(--card-ink, #44273c);}
.palette-rose {--card-paper: #f7c9d9; --card-ink: #58213e;}
.palette-sky {--card-paper: #b8ddf5; --card-ink: #173d65;}
.palette-mint {--card-paper: #c4e8da; --card-ink: #244d41;}
.palette-butter {--card-paper: #f8dfa0; --card-ink: #673d25;}
.palette-lilac {--card-paper: #ddcef3; --card-ink: #503879;}
.palette-cream {--card-paper: #fff5e5; --card-ink: #56423d;}
.palette-mist {--card-paper: #e4eaf0; --card-ink: #3c4c62;}
.palette-sage {--card-paper: #dde8de; --card-ink: #385847;}
.front-greeting {position: absolute; z-index: 1; top: 7%; left: 7%; width: 86%; font: 400 9.5cqw/1.12 'DM Serif Display', Georgia, serif; text-align: center; overflow-wrap: break-word; text-wrap: balance;}
.long-greeting .front-greeting {font-size: 8.4cqw;}
.composed-card > img.character-illustration {position: absolute; left: 8%; bottom: 2%; width: 84%; height: 64%; object-fit: contain; box-shadow: none; border-radius: 0; transform: none;}
.composed-card.layout-caption > img.character-illustration {top: 2%; bottom: auto; height: 64%;}
.layout-caption .front-greeting {top: auto; bottom: 7%;}
.layout-postcard .front-greeting {top: 6%; left: 6%; width: 88%; border: 1px solid currentColor; border-radius: 3px; padding: 4%; font-size: 8.8cqw;}
.layout-postcard.long-greeting .front-greeting {font-size: 7.8cqw;}
.composed-card.layout-postcard > img.character-illustration {bottom: 1%; height: 61%;}
.detail-grid > img {aspect-ratio: 2 / 3; object-fit: contain; max-height: 660px;}
footer p, .footer-bottom {font-size: .875rem;}
@media (max-width: 1100px) {
  .catalog-filters {grid-template-columns: repeat(3, minmax(0, 1fr));}
  .catalog-filters .search-field {grid-column: 1 / -1;}
  .occasion-groups {grid-template-columns: repeat(2, minmax(0, 1fr));}
}
@media (max-width: 700px) {
  .hero h1 {font-size: clamp(3.3rem, 11vw, 4.5rem);}
  .hero-gallery {min-height: 380px; padding: 28px 9%;}
  .hero-side {margin-top: 65px !important;}
  .occasion-pills {flex-wrap: nowrap; overflow-x: auto; padding: 4px 1px 12px; scrollbar-width: thin;}
  .occasion-pills button {white-space: nowrap; font-size: .875rem;}
  .occasion-groups {grid-template-columns: 1fr; gap: 24px;}
  .character-shortcut {align-items: flex-start; flex-direction: column; gap: 12px;}
  .detail-grid > .artwork-preview {max-width: 260px;}
  .catalog-filters {grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 16px; gap: 14px;}
  .catalog-filters .search-field, .catalog-filters label[for=occasionFilter] {grid-column: 1 / -1;}
  .product-image {padding: 11px;}
  .product small {font-size: .8125rem;}
  .tag {font-size: .75rem; top: 5px; left: 5px; padding: 4px 6px;}
  .detail-grid > img {max-height: 390px;}
  .announcement {font-size: .75rem;}
}
@media (max-width: 820px) {
  #review {padding: 36px 24px 24px;}
  .review-layout {grid-template-columns: minmax(0, 1fr); gap: 24px;}
  .review-summary {padding: 22px;}
}
@media (max-width: 420px) {
  #policy, #order {padding: 36px 22px 24px;}
  .cart-row {gap: 10px;}
  .cart-row img {width: 48px; height: 62px;}
  .review-item {grid-template-columns: 52px minmax(0, 1fr); gap: 10px;}
  .review-item img {width: 52px; height: 66px;}
  .review-item > strong {grid-column: 2;}
  .cart-row > .artwork-preview {width: 48px; height: 72px;}
  .review-item > .artwork-preview {width: 52px; height: 78px;}
  .review-totals > div {gap: 10px;}
  .cart-total {font-size: 1.125rem;}
}
