/* The shared gala order (docs/preview-checkout.md). From 1200px a right column is reserved on every
   guest page from first paint, so the page never narrows when items change. Below it a slim bar
   appears once the order has an item, and opens the order as a sheet. Motion follows the gala
   motion language (dist/admin/motion.css): soft settle, gentle spring, 180 to 360ms. */
:root {
  --uc-ease:cubic-bezier(.2,.7,.2,1);
  --uc-spring:cubic-bezier(.34,1.36,.64,1);
  --uc-fade:180ms; --uc-open:300ms; --uc-draw:360ms;
  /* One inner padding for the card: header, rows, messages and totals share these left and right edges. */
  --uc-pad:20px; --uc-top:calc(80px + 20px);
  --uc-paper:#f4f0e6; --uc-ink:#211d38; --uc-muted:#655c6c; --uc-line:#ddd5c6; --uc-gold:#e5cb8c; --uc-gold-ink:#5e4817; --uc-link:#775b13;
}
@supports (transition-timing-function:linear(0,1)) { :root { --uc-spring:linear(0,.063 3%,.24 8%,.53 15.5%,.82 24%,.975 32%,1.045 41%,1.058 49%,1.034 61%,1.008 77%,1); } }
.uc-page-layout { display:contents; }

/* Page Add controls: a small settle on press, then their In your order state. */
/* In your order is a toggle (order-toggle.js). Both labels share one grid cell, so the control keeps its width.
   With a mouse or keyboard focus the label crossfades to Remove from order; on touch it stays In your order.
   Right after a press the confirmation stays until the pointer leaves or focus moves (ot-fresh). */
.ot-label { display:inline-grid; justify-items:center; align-items:center; }
.ot-label > span { grid-area:1/1; display:inline-flex; align-items:center; justify-content:center; gap:.4em; white-space:nowrap; transition:opacity var(--uc-fade) var(--uc-ease); }
.ot-label .gi { margin:0; }
.ot-rm { opacity:0; }
@media (hover:hover) { [aria-pressed=true]:not(.ot-fresh):hover .ot-in { opacity:0; } [aria-pressed=true]:not(.ot-fresh):hover .ot-rm { opacity:1; } }
[aria-pressed=true]:not(.ot-fresh):focus-visible .ot-in { opacity:0; }
[aria-pressed=true]:not(.ot-fresh):focus-visible .ot-rm { opacity:1; }
@media (prefers-reduced-motion:reduce) { .ot-label > span { transition:none; } }
.uc-still .ot-label > span { transition:none; }
.uc-press { animation:uc-press var(--uc-open) var(--uc-spring); }
@keyframes uc-press { from { transform:scale(.96); } to { transform:none; } }
.ticket-price-buy.is-in, #raffleTopBuy.is-in, [data-unified-raffle].is-in, [data-unified-event].is-in { background:transparent; color:var(--gold, #d5b653); box-shadow:inset 0 0 0 1px var(--gold, #d5b653); }

/* The card. */
.unified-checkout { color-scheme:light; color:var(--uc-ink); font:14px/1.55 'DM Sans',sans-serif; }
.unified-checkout[hidden] { display:none!important; }
.unified-checkout *, .unified-checkout *::before, .unified-checkout *::after { box-sizing:border-box; min-width:0; }
.uc-panel { background:var(--uc-paper); }
.uc-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:18px var(--uc-pad) 10px; }
.unified-checkout h2 { font:600 26px/1.15 'Cormorant Garamond',serif; margin:0; white-space:nowrap; color:var(--uc-ink); outline-offset:4px; }
.unified-checkout h2:focus:not(:focus-visible) { outline:0; }
.unified-checkout h3 { font-size:16px; }
.unified-checkout p { font-size:13px; line-height:1.55; margin:10px 0; color:var(--uc-muted); }
.uc-body { padding:0; overscroll-behavior:contain; scrollbar-width:none; }
.uc-body::-webkit-scrollbar { display:none; }
.unified-checkout button, .unified-checkout a { min-height:44px; min-width:44px; font:inherit; }
.unified-checkout a { display:inline-flex; align-items:center; color:var(--uc-link); }
.unified-checkout button { cursor:pointer; padding:10px 14px; border:1px solid #a88732; border-radius:999px; background:transparent; color:var(--uc-gold-ink); }
.unified-checkout .uc-primary { display:flex; align-items:center; justify-content:center; width:100%; background:var(--uc-gold); border-color:var(--uc-gold); color:#191626; font-weight:700; margin:12px 0 0; text-decoration:none; transition:transform var(--uc-fade) var(--uc-ease); }
.unified-checkout .uc-primary:active:not(:disabled) { transform:scale(.98); }
.unified-checkout button:disabled { opacity:.5; cursor:default; }
.unified-checkout :focus-visible { outline:3px solid #876414; outline-offset:3px; }
.uc-clear { margin-left:auto; display:flex; align-items:center; }
.uc-clear[hidden], .uc-clear [hidden] { display:none!important; }
.unified-checkout .uc-clear-start, .unified-checkout .uc-clear-ask button, .unified-checkout .uc-undo { border-color:transparent; border-radius:0; padding:10px 8px; color:var(--uc-link); text-decoration:underline; text-underline-offset:3px; }
.unified-checkout .uc-clear-start, .unified-checkout .uc-clear-ask .uc-clear-no { padding-right:0; }
/* Asking takes its own line under the title, so the title never wraps or collides. */
.uc-head.is-asking { flex-wrap:wrap; row-gap:0; }
.uc-head.is-asking .uc-clear { order:3; flex:1 0 100%; margin:-4px 0 -8px; }
.uc-head.is-asking .uc-clear-ask { flex:1 1 auto; }
.uc-head.is-asking .uc-clear-q { margin-right:auto; }
.uc-clear-ask { display:flex; align-items:center; gap:2px; animation:uc-fade var(--uc-fade) var(--uc-ease); }
.uc-clear-q { font-size:13px; font-weight:700; white-space:nowrap; margin-right:4px; }
.unified-checkout .uc-clear-ask .uc-clear-yes { color:#a3303e; font-weight:700; }
.uc-cleared:not([hidden]) { animation:uc-fade var(--uc-fade) var(--uc-ease); }
.unified-checkout .uc-cleared { display:flex; align-items:center; gap:0; margin:0 0 8px; color:var(--uc-ink); font-weight:600; }
.unified-checkout .uc-cleared[hidden] { display:none; }
/* Even spacing: 6px each side of the dot. Undo's own 8px side padding is pulled in to match, and the tap area stays 44px tall. */
.uc-cleared .uc-dot { margin:0 0 0 6px; color:var(--uc-muted); }
.unified-checkout .uc-cleared .uc-undo { margin-left:-2px; padding:10px 8px 10px 8px; }
.uc-close { width:44px; height:44px; padding:0!important; font-size:24px!important; line-height:1; border-color:transparent!important; }
.uc-grip { display:none; }
/* Back, on the steps after the order list. A quiet icon button at the top left; the title sits beside it. */
.uc-back[hidden] { display:none!important; }
.unified-checkout .uc-back { display:inline-flex; align-items:center; gap:2px; flex:0 0 auto; min-height:44px; margin:-6px 0 -6px -8px; padding:0 10px 0 6px; border-color:transparent; border-radius:999px; color:var(--uc-link); font-weight:600; transition:background var(--uc-fade) var(--uc-ease),transform var(--uc-fade) var(--uc-ease); }
.unified-checkout .uc-back:hover:not(:disabled) { background:#c6a85a26; }
.unified-checkout .uc-back:active:not(:disabled) { transform:scale(.97); }
.uc-back svg { flex:0 0 auto; }
.uc-head:has(.uc-back:not([hidden])) { justify-content:flex-start; }
.uc-head:has(.uc-back:not([hidden])) .uc-close { margin-left:auto; }
.uc-empty { padding:4px var(--uc-pad) 18px; }
.uc-empty:not([hidden]) { animation:uc-fade var(--uc-fade) var(--uc-ease); }
.uc-empty p { margin-top:0; }
/* Three compact pills on one line. The card's inner width is the lane minus the padding on both sides. Each link is a real 44px
   tall box; the visible 32px pill is drawn inside it by ::before, so the tap area is the box itself and nothing overflows. */
.uc-empty-links { display:flex; flex-wrap:nowrap; align-items:center; gap:8px; margin:0; padding:0; list-style:none; }
.uc-empty-links li { display:flex; flex:0 0 auto; }
.unified-checkout .uc-empty-links a, .unified-checkout .uc-empty-links .uc-pill { position:relative; display:inline-flex; align-items:center; gap:5px; background:transparent; color:var(--uc-link); justify-content:center; min-width:0; min-height:44px; padding:0 12px; border:0; border-radius:999px; text-decoration:none; font-size:14px; font-weight:600; line-height:1; white-space:nowrap; }
.uc-empty-links a::before, .uc-empty-links .uc-pill::before { content:""; position:absolute; inset:6px 0; border:1px solid #c9b58a; border-radius:999px; pointer-events:none; }
.unified-checkout .uc-empty-links a:focus-visible, .unified-checkout .uc-empty-links .uc-pill:focus-visible { outline:0; }
.unified-checkout .uc-empty-links a:focus-visible::before, .unified-checkout .uc-empty-links .uc-pill:focus-visible::before { outline:3px solid #876414; outline-offset:3px; }
.uc-pill-icon { flex:0 0 auto; }
/* Sections the cart's pills scroll to stop under the 80px header. */
#packages, #eventTicketCard { scroll-margin-top:100px; }

/* Add to your order: the same pills after the last row, for categories not yet in the order. They stay on one
   line; short labels take over when the full ones would wrap (fitMore), and wrapping is the last resort. */
.uc-more { padding:2px var(--uc-pad) 10px; }
.uc-more[hidden] { display:none; }
.unified-checkout .uc-more-label { margin:0; font-size:12.5px; line-height:1.4; color:var(--uc-muted); }
.uc-more-links.uc-empty-links { flex-wrap:wrap; row-gap:0; }
.uc-more-links.is-measuring { flex-wrap:nowrap; }
.uc-more-links li[hidden] { display:none; }
.uc-pill-short { display:none; }
.uc-more-links.is-short .uc-pill-long { display:none; }
.uc-more-links.is-short .uc-pill-short { display:inline; }
.uc-more-links.is-short { gap:6px; }
.unified-checkout .uc-more-links.is-short a, .unified-checkout .uc-more-links.is-short .uc-pill { padding:0 9px; gap:3px; }
.unified-checkout .uc-more-links.is-tight a, .unified-checkout .uc-more-links.is-tight .uc-pill { font-size:13px; }
.uc-more-links.is-tight a .uc-pill-icon { display:none; }
.uc-more-links li.is-entering, .uc-more-links li.is-leaving, .uc-more.is-entering, .uc-more.is-leaving { overflow:hidden; pointer-events:none; }
.uc-more-links li.is-entering { animation:uc-pill-in var(--uc-open) var(--uc-ease) both; }
.uc-more-links li.is-leaving { animation:uc-pill-out 260ms var(--uc-ease) forwards; }
.uc-more.is-entering { animation:uc-more-in var(--uc-open) var(--uc-ease) both; }
.uc-more.is-leaving { animation:uc-more-out 260ms var(--uc-ease) forwards; }
/* The flex gap stays while a pill collapses, so its right margin pulls the gap in with it. */
@keyframes uc-pill-in { from { max-width:0; margin-right:-8px; opacity:0; } to { max-width:240px; margin-right:0; opacity:1; } }
@keyframes uc-pill-out { from { max-width:240px; margin-right:0; opacity:1; } to { max-width:0; margin-right:-8px; opacity:0; } }
@keyframes uc-more-in { from { max-height:0; padding-block:0; opacity:0; } to { max-height:96px; opacity:1; } }
@keyframes uc-more-out { from { max-height:96px; opacity:1; } to { max-height:0; padding-block:0; opacity:0; } }

/* Rows: keyed, updated in place. A new row grows in, a removed row collapses out. */
.uc-rows { margin:0; padding:0; list-style:none; }
.uc-row { display:grid; grid-template-rows:1fr; outline-offset:-3px; }
.uc-row:focus:not(:focus-visible) { outline:0; }
.uc-row-inner { min-height:0; }
.uc-row.is-entering, .uc-row.is-leaving, .uc-pick.is-entering, .uc-pick.is-leaving { pointer-events:none; }
.uc-row.is-entering .uc-row-inner, .uc-row.is-leaving .uc-row-inner, .uc-pick.is-entering, .uc-pick.is-leaving { overflow:hidden; }
.uc-row.is-entering { animation:uc-grow var(--uc-open) var(--uc-ease) both; }
.uc-row.is-leaving { animation:uc-shrink 260ms var(--uc-ease) forwards; }
.uc-pick.is-entering { animation:uc-pick-in var(--uc-open) var(--uc-ease) both; }
.uc-pick.is-leaving { animation:uc-pick-out 260ms var(--uc-ease) forwards; }
@keyframes uc-pick-in { from { max-height:0; opacity:0; } to { max-height:48px; opacity:1; } }
@keyframes uc-pick-out { from { max-height:48px; opacity:1; } to { max-height:0; opacity:0; } }
@keyframes uc-grow { from { grid-template-rows:0fr; opacity:0; } to { grid-template-rows:1fr; opacity:1; } }
@keyframes uc-shrink { from { grid-template-rows:1fr; opacity:1; } to { grid-template-rows:0fr; opacity:0; } }
.uc-row-card { padding:12px var(--uc-pad); border-bottom:1px solid var(--uc-line); }
.uc-row-top { display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
.uc-row-line { display:flex; align-items:center; gap:12px; margin-block:-8px; min-height:44px; }
.uc-row-line > .uc-row-detail { flex:1 1 auto; }
.uc-picks + .uc-row-note + .uc-row-line, .uc-picks + .uc-row-note[hidden] + .uc-row-line { margin-top:2px; }
.uc-row:last-child .uc-row-card { border-bottom-color:transparent; }
.uc-row.uc-flash .uc-row-card { animation:uc-flash 1400ms var(--uc-ease); }
@keyframes uc-flash { 0%,30% { background:#e5cb8c73; } 100% { background:transparent; } }
.unified-checkout .uc-row-name { margin:0; font-size:15px; font-weight:700; color:var(--uc-ink); line-height:1.3; }
.unified-checkout .uc-row-detail { margin:2px 0 0; font-size:12.5px; line-height:1.4; }
.uc-row.is-warn .uc-row-detail { color:#a3303e; font-weight:700; }

/* The raffle row's basket lines: name, count and small −/+ with 44px tap targets. */
.uc-picks { margin:8px 0 0; padding:0 0 0 10px; list-style:none; border-left:2px solid var(--uc-gold); }
.uc-picks[hidden] { display:none; }
.uc-pick { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:44px; border-radius:8px; }
.uc-pick.uc-flash { animation:uc-flash 1400ms var(--uc-ease); }
.uc-pick-name { flex:1 1 auto; font-size:13.5px; color:var(--uc-ink); overflow-wrap:break-word; }
.uc-pick-step { display:inline-flex; align-items:center; flex:0 0 auto; margin-right:-8px; }
.uc-pick-qty { min-width:22px; text-align:center; font-weight:700; font-variant-numeric:tabular-nums; }
.uc-step-label { font-size:12.5px; color:var(--uc-muted); margin-right:-4px; white-space:nowrap; }
.uc-row-amount { flex:0 0 auto; text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.uc-row-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; flex:0 0 auto; margin-left:auto; }
.uc-picks ~ .uc-row-line .uc-row-actions { flex:1 1 auto; }
.uc-stepper { display:inline-flex; align-items:center; gap:4px; }
.unified-checkout .uc-stepper button, .unified-checkout .uc-pick-step button { position:relative; width:44px; height:44px; padding:0; border:0; font-size:17px; line-height:1; color:var(--uc-gold-ink); }
.unified-checkout .uc-stepper button::before, .unified-checkout .uc-pick-step button::before { content:''; position:absolute; inset:8px; border:1px solid #a88732; border-radius:50%; }
.uc-stepper { margin-left:-8px; }
.uc-step-label + .uc-stepper { margin-left:0; }

.uc-qty { display:inline-block; min-width:28px; text-align:center; font-weight:700; font-variant-numeric:tabular-nums; }
.unified-checkout .uc-remove { margin-left:auto; border-color:transparent; border-radius:0; padding:10px 0; text-decoration:underline; text-underline-offset:3px; color:var(--uc-link); }
.unified-checkout .uc-row-note { margin:12px 0 0; padding:8px 10px; border-radius:8px; background:#f8e8c7; color:#805000; font-weight:700; font-size:12.5px; }
.uc-row-note:not([hidden]) { animation:uc-fade var(--uc-fade) var(--uc-ease); }
/* Unplaced raffle tickets: one plain line, no box. Placing later is allowed, so nothing is wrong. */
.unified-checkout .uc-to-place { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:4px 0 0; min-height:44px; font-size:13.5px; color:var(--uc-ink); }
.unified-checkout .uc-to-place[hidden] { display:none; }
.uc-to-place:not([hidden]) { animation:uc-fade var(--uc-fade) var(--uc-ease); }
.uc-to-place-n { font-variant-numeric:tabular-nums; }
.unified-checkout .uc-to-place a { gap:5px; min-height:44px; font-weight:700; text-decoration:underline; text-underline-offset:3px; white-space:nowrap; }
.uc-picks:not([hidden]) + .uc-row-note[hidden] + .uc-to-place { margin-top:2px; }
/* An open raffle number's unplaced tickets: the same plain line, above the rows, even with an empty order. */
.unified-checkout .uc-number-place { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; column-gap:8px; margin:0; padding:4px var(--uc-pad); min-height:52px; border-bottom:1px solid var(--uc-line); font-size:13px; color:var(--uc-ink); }
.uc-number-place > span { white-space:nowrap; }
.unified-checkout .uc-number-place[hidden] { display:none; }
.uc-number-place:not([hidden]) { animation:uc-fade var(--uc-fade) var(--uc-ease); }
.uc-number-name { font-weight:700; }
.uc-number-n { font-variant-numeric:tabular-nums; }
.unified-checkout .uc-number-place a { gap:5px; min-height:44px; font-weight:700; text-decoration:underline; text-underline-offset:3px; white-space:nowrap; }

/* Numbers roll briefly when they change. */
.uc-roll { display:inline-block; animation:uc-roll 240ms var(--uc-ease); }
@keyframes uc-roll { from { opacity:0; transform:translateY(45%); } to { opacity:1; transform:none; } }
@keyframes uc-fade { from { opacity:0; } to { opacity:1; } }

/* Totals and Review order. */
.uc-foot { padding:12px var(--uc-pad) 18px; border-top:1px solid var(--uc-line); }
.uc-sum { margin:0; }
.uc-sum > div { display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
.uc-sum dt { font-weight:700; }
.uc-sum dt .uc-count { font-weight:400; color:var(--uc-muted); font-size:13px; }
.uc-sum dd { margin:0; font-size:20px; font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.unified-checkout .uc-fine { font-size:12px; margin:8px 0 0; text-align:center; }
.unified-checkout .uc-status { margin:6px 0 0; }
.uc-retry { margin-top:8px; }
.uc-messages { padding:0 var(--uc-pad); }
.unified-checkout .uc-messages p { margin:8px 0; }
.unified-checkout .uc-error { color:#a3303e; }
.uc-live { position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }

/* Review, contact and confirmation. */
.uc-step { padding:0 var(--uc-pad) 16px; }
.uc-step:not([hidden]), .uc-cart:not([hidden]) { animation:uc-fade var(--uc-fade) var(--uc-ease); }
.unified-checkout fieldset { border:0; padding:0; margin:0; min-width:0; }
.unified-checkout .uc-group { margin:14px 0; }
.unified-checkout legend { font-weight:800; padding:0; margin-bottom:4px; }
.uc-field { display:grid; gap:7px; margin:12px 0; font-size:13px; }
.uc-field input, .uc-field select { min-height:46px; width:100%; max-width:100%; padding:10px; border:1px solid #bcb0a1; border-radius:8px; background:#fffdf8; color:#292137; font:16px/1.4 'DM Sans',sans-serif; }
.uc-step [data-uc-action] { margin-top:8px; }
.uc-check { display:flex; align-items:flex-start; gap:10px; min-height:44px; padding:12px 0; cursor:pointer; }
.uc-check input { flex:0 0 24px; width:24px; height:24px; margin:0; }
.unified-checkout .uc-warning { color:#805000; background:#f8e8c7; border:1px solid #b98427; border-radius:8px; padding:12px; font-weight:700; }
.uc-included { padding:12px; background:#c6a85a19; border-radius:8px; }
.uc-review-picks ul, .uc-receipt-picks { margin:6px 0; padding:0; list-style:none; }
.uc-review-picks li, .uc-receipt-picks li { display:flex; justify-content:space-between; gap:12px; padding:4px 0; border-bottom:1px solid var(--uc-line); }
.uc-raffle-receipt { padding:12px; border-radius:10px; background:#c6a85a19; margin:12px 0; }
.unified-checkout .uc-receipt-place { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; column-gap:8px; color:var(--uc-ink); }
.unified-checkout .uc-receipt-place a { gap:5px; min-height:44px; font-weight:700; text-decoration:underline; text-underline-offset:3px; white-space:nowrap; }
.uc-raffle-number { font-size:18px; letter-spacing:.06em; color:var(--uc-ink); }
.uc-totals { margin:18px 0; }
.uc-totals > div { display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:6px 0; }
.uc-totals dt { flex:1; }
.uc-totals dd { margin:0; white-space:nowrap; font-variant-numeric:tabular-nums; }
.uc-total { border-top:1px solid #baa26866; font-weight:700; font-size:18px; }

/* 1200px and wider: a sticky right column, reserved on every guest page from first paint. */
@media (min-width:1200px) {
  .uc-page-layout { display:grid; grid-template-columns:minmax(0,1fr) var(--cart-lane); gap:var(--lane-gap); padding-inline:var(--frame-pad); align-items:start; }
  .uc-page-layout > main { min-width:0; padding-inline:0; }
  /* The card is fixed over the reserved lane (the frame's right padding and --cart-lane), just under the
     sticky 80px header, so it never scrolls under the header and the footer never pushes it up. Its
     title and the totals stay pinned; only the item list scrolls, with a soft fade where more is hidden. */
  .unified-checkout { position:fixed; z-index:4; top:var(--uc-top); right:var(--frame-pad); width:var(--cart-lane); min-height:236px; max-height:calc(100vh - var(--uc-top) - 20px); max-height:calc(100dvh - var(--uc-top) - 20px); display:flex; flex-direction:column; overflow:hidden; border-radius:20px; background:var(--uc-paper); border:1px solid #d6cbbd; box-shadow:0 14px 44px #0004; }
  .uc-panel { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; }
  .uc-body { flex:1 1 auto; min-height:0; overflow-y:auto; }
  .uc-body.is-more-above { -webkit-mask-image:linear-gradient(transparent,#000 28px); mask-image:linear-gradient(transparent,#000 28px); }
  .uc-body.is-more-below { -webkit-mask-image:linear-gradient(#000 calc(100% - 28px),transparent); mask-image:linear-gradient(#000 calc(100% - 28px),transparent); }
  .uc-body.is-more-above.is-more-below { -webkit-mask-image:linear-gradient(transparent,#000 28px,#000 calc(100% - 28px),transparent); mask-image:linear-gradient(transparent,#000 28px,#000 calc(100% - 28px),transparent); }
  .has-unified-checkout .site-footer { padding-right:calc(var(--frame-pad) + var(--cart-lane) + var(--lane-gap)); }
  .uc-bar, .uc-scrim, .uc-close { display:none!important; }
  .uc-page-layout .hero { grid-template-columns:minmax(0,1fr) clamp(260px,22vw,320px); gap:32px; }
  .uc-page-layout .hero-copy { min-width:0; container-type:inline-size; }
  .uc-page-layout .hero h1 { font-size:clamp(72px,20cqw,128px); }
  .uc-page-layout .hero .script { font-size:clamp(34px,8cqw,48px); }
  .uc-page-layout .hero-art { width:100%; max-width:320px; }
  .uc-page-layout .hero-actions { display:flex; flex-wrap:wrap; gap:10px; }
  .uc-page-layout .hero-actions .outline-btn { margin-left:0; }
  .uc-page-layout .support, .uc-page-layout .raffle-layout { grid-template-columns:minmax(0,1fr); }
  .uc-page-layout .tiers { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .uc-page-layout .tier { min-width:0; padding-left:14px; padding-right:14px; }
  .uc-page-layout .stardust-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .uc-page-layout #cart { position:relative; top:auto; width:100%; max-width:none; }
}

/* Below 1200px: a slim bar once there is an order; tapping it opens the order as a sheet. */
@media (max-width:1199px) {
  .unified-checkout { position:static; }
  body.uc-has-bar { padding-bottom:calc(84px + env(safe-area-inset-bottom)); }
  /* The open sheet locks the page behind it. iOS Safari ignores overflow on html for touch scrolling, so the
     body is pinned at its scroll offset (unified-checkout.js lockPage) and put back on close without a jump. */
  html.uc-sheet-open, html.uc-sheet-open body { overflow:hidden; }
  html.uc-sheet-open body { position:fixed; left:0; right:0; width:100%; }
  .uc-bar { position:fixed; z-index:80; left:0; right:0; bottom:0; padding:10px 16px calc(10px + env(safe-area-inset-bottom)); background:var(--uc-paper); border-top:1px solid #baa268; border-radius:18px 18px 0 0; box-shadow:0 -10px 30px #0004; transform:translateY(110%); visibility:hidden; transition:transform var(--uc-open) var(--uc-ease),visibility 0s linear var(--uc-open); }
  .has-order .uc-bar { transform:none; visibility:visible; transition:transform var(--uc-open) var(--uc-ease); }
  .has-order.is-open .uc-bar { transform:translateY(110%); }
  .unified-checkout .uc-bar-button { display:flex; align-items:center; gap:12px; width:100%; max-width:640px; margin:0 auto; min-height:52px; padding:4px 4px 4px 6px; border:0; border-radius:14px; color:var(--uc-ink); text-align:left; }
  .uc-bar-button.uc-pulse { animation:uc-pulse var(--uc-draw) var(--uc-spring); }
  @keyframes uc-pulse { 0% { transform:none; } 35% { transform:scale(1.025); } 100% { transform:none; } }
  .uc-bar-meta { display:grid; flex:1 1 auto; line-height:1.25; }
  .uc-bar-label { font-weight:700; font-size:14px; }
  .uc-bar-count { font-size:12.5px; color:var(--uc-muted); }
  .uc-bar-total { font-size:17px; font-variant-numeric:tabular-nums; white-space:nowrap; }
  .uc-bar-cta { flex:0 0 auto; display:inline-flex; align-items:center; min-height:44px; padding:0 16px; border-radius:999px; background:var(--uc-gold); color:#191626; font-weight:700; white-space:nowrap; }
  .uc-scrim { position:fixed; z-index:95; inset:0; background:#05051ab3; opacity:0; pointer-events:none; transition:opacity var(--uc-open) var(--uc-ease); }
  .is-open .uc-scrim { opacity:1; pointer-events:auto; }
  .uc-panel { position:fixed; z-index:96; left:0; right:0; bottom:0; margin:0 auto; width:100%; max-width:640px; max-height:min(88dvh,820px); display:flex; flex-direction:column; border-radius:20px 20px 0 0; box-shadow:0 -16px 50px #0006; padding-bottom:env(safe-area-inset-bottom); transform:translateY(105%); visibility:hidden; transition:transform var(--uc-open) var(--uc-ease),visibility 0s linear var(--uc-open); }
  .is-open .uc-panel { transform:none; visibility:visible; transition:transform var(--uc-open) var(--uc-ease); }
  .uc-panel.is-dragging { transition:none; }
  .uc-head { position:relative; padding-top:22px; touch-action:none; cursor:grab; }
  .uc-grip { display:block; position:absolute; top:8px; left:50%; width:40px; height:4px; margin-left:-20px; border-radius:4px; background:#cbbfa9; }
  .uc-body { flex:1 1 auto; min-height:0; overflow-y:auto; }
  .has-unified-checkout #cart:not(.support-panel) { position:relative!important; inset:auto!important; width:100%!important; max-height:none!important; border-radius:16px; z-index:1; transform:none!important; }
  .has-unified-checkout #cart:not(.support-panel) .wallet-body { display:block!important; height:auto!important; max-height:none!important; overflow:visible; }
  .has-unified-checkout #cart:not(.support-panel) .dock-handle { display:none!important; }
}
@media (max-width:420px) {
  .uc-bar { padding-left:12px; padding-right:12px; }
  .uc-bar-cta { padding:0 12px; }
  .uc-bar-total { font-size:16px; }
}
@media (prefers-reduced-motion:reduce) {
  .unified-checkout *, .unified-checkout *::before, .unified-checkout *::after, .uc-press { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}
/* The layout check (?check) turns motion off too. */
.uc-still .unified-checkout *, .uc-still .unified-checkout *::before, .uc-still .unified-checkout *::after, .uc-still .uc-press { animation:none!important; transition:none!important; }
/* The site is dark (color-scheme:dark in styles.css), so native inputs, selects and checkboxes would turn dark.
   The cream surfaces keep light controls. */
.unified-checkout, .wallet, .raffle-dialog, .event-panel, .numbered-dialog, .num-menu { color-scheme:light; }

/* The raffle page's "left to place" indicator (unified-checkout.js updatePlace). It never floats over the
   cards. From 1200px: a slim strip docked at the top of the basket grid, sticky under the 80px header and
   overlaying the grid's top edge, inside a wrapper that ends with the grid (its bottom padding keeps the
   stuck strip off the last row's steppers and off the footer). Below 1200px the order bar shows it. */
#basketGrid { scroll-margin-top:100px; }
#basketGrid:focus { outline:none; }
.uc-place-dots { display:inline-flex; gap:5px; }
.uc-place-dots i { width:8px; height:8px; border-radius:50%; box-shadow:inset 0 0 0 1.5px #8a7a4a; transition:background var(--uc-fade) var(--uc-ease),box-shadow var(--uc-fade) var(--uc-ease); }
.uc-place-dots i.is-on { background:var(--gold,#d5a900); box-shadow:none; }
.uc-place-count b { font-weight:700; }
.uc-place-done { display:none; align-items:center; gap:6px; font-weight:700; }
.is-done > .uc-place-done { display:inline-flex; }
.is-done > .uc-place-count { display:none; }
.uc-place-check { color:var(--gold,#d5a900); }
.uc-place-strip { display:none; }
@media (min-width:1200px) {
  .uc-place-wrap { padding-bottom:52px; }
  .uc-place-strip { position:sticky; z-index:3; top:80px; display:flex; align-items:center; justify-content:center; gap:12px; height:44px; margin-bottom:-44px; padding:0 16px; background:#08081e; border-bottom:1px solid var(--line,rgba(213,169,0,.28)); color:#f4f0e6; font:500 14px/1.2 'DM Sans',sans-serif; white-space:nowrap; opacity:0; visibility:hidden; transition:opacity var(--uc-fade) var(--uc-ease),visibility 0s linear var(--uc-fade); }
  .uc-place-strip.is-shown { opacity:1; visibility:visible; transition:opacity var(--uc-fade) var(--uc-ease); }
  .uc-place-strip[hidden] { display:none; }
}
.unified-checkout .uc-bar-place { display:inline-flex; align-items:center; gap:8px; font-size:12.5px; color:var(--uc-ink); white-space:nowrap; }
.unified-checkout .uc-bar-place .uc-place-dots i { width:7px; height:7px; box-shadow:inset 0 0 0 1.5px #a88732; }
.unified-checkout .uc-bar-place .uc-place-dots i.is-on { background:#a88732; }
.unified-checkout .uc-bar-place .uc-place-check { color:#775b13; }
.unified-checkout .uc-bar-place[hidden] { display:none; }
@media (prefers-reduced-motion:reduce) { .uc-place-strip, .uc-place-strip *, .uc-place-strip.is-shown { animation:none!important; transition:none!important; } }
.uc-still .uc-place-strip, .uc-still .uc-place-strip *, .uc-still .uc-place-strip.is-shown { animation:none!important; transition:none!important; }
