/* Loyalty (Page Lemon app template): Pennywort Bakery on Mill Lane, Ashcombe. The app's look is the shared kit (kit.css,
   never edited here); this file sets the brand tokens and the few layouts only this template has (prefix ly-). */
:root {
  --k-brand: #b4532a;
  --k-brand-ink: #ffffff;
  --k-brand-soft: #f6e4d8;
  --k-hero: #2a1d16;
  --k-hero-ink: #f8eedf;
  --k-gold: #e0a84a;
  --k-bg: #f7f1e8;
}
@media (prefers-color-scheme: dark) {
  :root { --k-brand: #e7804f; --k-brand-soft: rgba(231, 128, 79, .16); --k-hero: #2c211b; --k-bg: #121010; }
}

/* Member pages (2026-10-22 redesign): the bake house. Dough-coloured counter, flour-white paper, oven-brown rail, crust
   terracotta and a pennywort green; condensed capitals like the shop sign. The reservation is a bread tag tied to the bag,
   the coffee card a flour-paper stamp card with a tear-off scan. Axes on <body>: condensed, paper hero, rail-ink, ink tabs, wide. */
body.k-app:not(.k-public) {
  --k-bg: #eee3d0; --k-surface: #fffaf0; --k-surface-2: #f3e8d4; --k-line: rgba(70, 40, 18, .13); --k-line-strong: rgba(70, 40, 18, .3);
  --k-text: #2b1a10; --k-muted: #66503f; --k-faint: #6b5644;
  --k-hero: #2a1b13; --k-hero-ink: #f8eedf; --k-brand: #ad4f27; --k-brand-soft: #f4dcca;
  --ly-green: #3d6a44; --ly-green-soft: #dde8d0; --ly-twine: #b99a6a;
  background-image: radial-gradient(rgba(110, 70, 30, .09) 1px, transparent 1.4px); background-size: 20px 20px;
}
@media (prefers-color-scheme: dark) {
  body.k-app:not(.k-public) {
    --k-bg: #15100c; --k-surface: #221a14; --k-surface-2: #2d231b; --k-line: rgba(255, 235, 210, .1); --k-line-strong: rgba(255, 235, 210, .26);
    --k-text: #f6ebd9; --k-muted: #bfab94; --k-faint: #b3a089; --k-hero: #1c130e; --k-brand: #e9855a; --k-brand-ink: #26150c; --k-brand-soft: rgba(233, 133, 90, .16);
    --ly-green: #a6c795; --ly-green-soft: rgba(166, 199, 149, .14); --ly-twine: #8a7048;
    background-image: radial-gradient(rgba(255, 230, 190, .045) 1px, transparent 1.4px);
  }
}

/* ---------- member pages ---------- */
.k-pagehead .k-kicker::before { content: ""; display: inline-block; width: 18px; height: 3px; margin: 0 8px 3px 0; border-radius: 2px; background: var(--k-brand); }
.k-pagehead h1 { color: var(--k-text); }
.k-section-head h2, .k-panel-head h2 { color: var(--k-text); }
.k-section-head h2 { font-size: 1.375rem; }
.ly-pad { padding: 0 var(--k-2); }
.ly-rule { --k-c: var(--k-brand); margin-bottom: var(--k-5); }

/* The reservation as a bread tag: a reinforced hole, a stitched edge, the pick-up time in capitals */
.ly-tag { position: relative; padding: 48px var(--k-5) var(--k-5); border-radius: 22px 22px 14px 14px; border: 1.5px solid var(--k-line-strong); outline: 1.5px dashed var(--k-line-strong); outline-offset: -9px; box-shadow: none;
  -webkit-mask: radial-gradient(circle 11px at calc(100% - 38px) 28px, #0000 97%, #000); mask: radial-gradient(circle 11px at calc(100% - 38px) 28px, #0000 97%, #000); }
.ly-tag::after { content: ""; position: absolute; top: 12px; right: 22px; width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--k-line-strong); pointer-events: none; }
.ly-tag-for { position: absolute; top: 16px; left: 24px; font-size: var(--k-t-cap); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--k-muted); }
.ly-tag .k-live-time { font-family: var(--k-font-display); font-size: 1.5rem; font-weight: 700; letter-spacing: .01em; color: var(--k-brand); font-stretch: condensed; }
.ly-tag h3 { font-size: 1.875rem !important; line-height: 1.1; text-transform: uppercase; letter-spacing: .01em; }
.ly-tag .k-steps { margin-top: var(--k-4); }
.ly-memo:has([data-pl-field="memo"]:empty), .ly-memo:has([data-pl-field="details"]:empty) { display: none; }
.ly-live-btns { margin-top: var(--k-4); }

/* Tomorrow's bake: three loaves on a shelf (a row each on phones) */
.ly-shelf { display: grid; gap: var(--k-3); }
.ly-loaf { text-align: left; display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; grid-template-areas: "img name price" "img desc price"; gap: 2px 14px; align-items: center; padding: 10px 16px 10px 10px; border-radius: var(--k-r-l); background: var(--k-surface); box-shadow: var(--k-shadow-1); color: inherit; text-decoration: none; }
.ly-loaf:hover { box-shadow: var(--k-shadow-2); }
.ly-loaf img { grid-area: img; width: 64px; height: 64px; border-radius: 14px; object-fit: cover; }
.ly-loaf b { grid-area: name; font-family: var(--k-font-display); font-size: 1.1875rem; font-weight: 700; letter-spacing: .01em; text-transform: uppercase; line-height: 1.1; font-stretch: condensed; align-self: end; }
.ly-loaf span { grid-area: desc; color: var(--k-muted); font-size: var(--k-t-foot); line-height: 1.35; align-self: start; }
.ly-loaf i { grid-area: price; font-style: normal; font-weight: 800; color: var(--k-brand); font-variant-numeric: tabular-nums; }
@media (min-width: 720px) {
  .ly-shelf { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--k-4); }
  .ly-loaf { display: flex; flex-direction: column; align-items: stretch; gap: 4px; padding: 0 0 14px; overflow: hidden; }
  .ly-loaf img { width: 100%; height: auto; aspect-ratio: 1.15; border-radius: 0; }
  .ly-loaf b, .ly-loaf span { padding: 0 14px; align-self: stretch; }
  .ly-loaf b { margin-top: 8px; }
  .ly-loaf i { padding: 0 14px; font-size: 1.0625rem; }
}

/* The coffee card: flour paper, ten stamps in two rows, a tear-off line above the scan */
.ly-card, .ly-member, .ly-reward { border-radius: 14px; border: 1.5px solid var(--k-line-strong); box-shadow: none !important; padding-left: var(--k-6); padding-right: var(--k-6);
  -webkit-mask: radial-gradient(circle 6px at 0 12px, #0000 97%, #000) left / 51% 24px repeat-y, radial-gradient(circle 6px at 100% 12px, #0000 97%, #000) right / 51% 24px repeat-y;
  mask: radial-gradient(circle 6px at 0 12px, #0000 97%, #000) left / 51% 24px repeat-y, radial-gradient(circle 6px at 100% 12px, #0000 97%, #000) right / 51% 24px repeat-y; }
.ly-card .k-big, .ly-member .ly-mc-name { color: var(--k-text); }
.ly-member .ly-mc-name { font-family: var(--k-font-display); font-size: 2.5rem; font-weight: 700; text-transform: uppercase; letter-spacing: .01em; line-height: 1; margin-top: var(--k-5); font-stretch: condensed; }
.ly-card .k-big { font-size: 3.25rem; }
.ly-card .k-big small, .ly-member .k-note { color: var(--k-muted); }
.ly-card .k-note, .ly-member .k-note { color: var(--k-muted); opacity: 1; }
.ly-card .k-note a { color: var(--k-brand); font-weight: 700; }
.k-hero-card .k-dots, .ly-reward .k-dots { grid-template-columns: repeat(var(--k-dots, 5), minmax(0, 52px)); justify-content: space-between; gap: 10px; margin: var(--k-4) 0 var(--k-3); }
.ly-reward .k-dots.ly-ten { max-width: none; }
@media (min-width: 720px) { .ly-reward .k-dots.ly-ten[data-k-cols] { --k-dots: 10; } }
.k-hero-card .k-dots li, .ly-reward .k-dots li { border-radius: 10px; border: 1.5px dashed var(--k-line-strong); background: var(--k-surface-2); }
.k-hero-card .k-dots li.on, .ly-reward .k-dots li.on { border: 1.5px solid color-mix(in srgb, var(--k-brand) 35%, transparent); background: var(--k-surface-2); box-shadow: none; }
.k-hero-card .k-dots li.on::before, .ly-reward .k-dots li.on::before { width: 78%; height: 78%; background: var(--k-brand); transform: rotate(-7deg);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 18c0-5.5 4-10.5 9.500-10.500S21.500 12.500 21.500 18z'/%3E%3Cpath d='M8 13.500l1.800 2.500M12 11.500l1.300 4.500M16 13.500l-1 2.500'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 18c0-5.5 4-10.5 9.500-10.500S21.500 12.500 21.500 18z'/%3E%3Cpath d='M8 13.500l1.800 2.500M12 11.500l1.300 4.500M16 13.500l-1 2.500'/%3E%3C/svg%3E") center / contain no-repeat; }
.k-hero-card .k-dots li.on:nth-child(even)::before, .ly-reward .k-dots li.on:nth-child(even)::before { transform: rotate(5deg); }
.k-hero-card .k-dots li.k-free, .ly-reward .k-dots li.k-free { border: 2px dashed var(--ly-green); background: var(--ly-green-soft); box-shadow: none; }
.k-hero-card .k-dots li.k-free::before, .ly-reward .k-dots li.k-free::before { color: var(--ly-green); font-size: .625rem; background: none; -webkit-mask: none; mask: none; transform: none; width: auto; height: auto; }
.ly-card [data-pl-sign-in="scan"], .ly-member [data-pl-sign-in="scan"] { margin-top: var(--k-4); padding-top: var(--k-4); border-top: 2px dashed var(--k-line-strong); }
.ly-clubline { font-weight: 600; }
.ly-shop .k-kv { grid-template-columns: minmax(0, 5rem) minmax(0, 1fr); }
.ly-rules .k-row-title { font-size: 1.0625rem; }

/* Rewards, Bread Club */
.ly-reward-top { display: flex; align-items: center; gap: var(--k-3); }
.ly-reward-top > * + * { margin-top: 0; }
.ly-reward-top h2 { font-size: 1.625rem; text-transform: uppercase; letter-spacing: .01em; }
.ly-reward-top .k-muted { font-size: var(--k-t-sub); }
.ly-reward .k-dots { margin-top: var(--k-4); max-width: 420px; }
.ly-reward [data-pl-scan-counts] { margin-top: var(--k-3); }
.ly-reward [data-pl-scan-counts] li { background: var(--k-surface-2); color: var(--k-muted); }
.ly-reward > p { margin-top: var(--k-3); }
.ly-how { list-style: none; counter-reset: ly; margin: 0; padding: var(--k-2) var(--k-5) var(--k-4); display: grid; gap: var(--k-4); }
.ly-how li { counter-increment: ly; display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 0 14px; align-items: center; }
.ly-how li::before { content: counter(ly); grid-row: span 2; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--k-brand); color: var(--k-brand-ink); font-family: var(--k-font-display); font-size: 1.25rem; font-weight: 700; font-stretch: condensed; }
.ly-how b { font-size: 1.0625rem; }
.ly-how span { color: var(--k-muted); font-size: var(--k-t-sub); }
.ly-week { margin: var(--k-4) 0; padding: var(--k-3) var(--k-4); border-radius: var(--k-r-m); background: var(--ly-green-soft); color: var(--k-text); font-size: var(--k-t-sub); }
.ly-week-ready { margin-top: 4px; }
.ly-club > div > * + * { margin-top: var(--k-4); }
.ly-club .k-metrics b { color: var(--k-text); }
.ly-club .k-btn-block { margin-top: var(--k-4); }
.ly-so-far b { font-size: 2rem; }
.ly-so-far > * { min-width: 5rem; }
.ly-plans { grid-template-columns: 1fr !important; }
@media (min-width: 1024px) { .ly-plans { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
.ly-incl { margin-top: auto; height: auto; min-height: 44px; justify-content: center; font-size: var(--k-t-sub); }

/* Reservations as a table from 1024 px, two-line records on phones */
.ly-table { --k-cols: minmax(0, 3fr) minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1.5fr); }
.ly-table .k-td-main { font-family: var(--k-font-display); font-size: 1.1875rem; font-weight: 700; text-transform: uppercase; letter-spacing: .01em; font-stretch: condensed; }
.ly-table .k-td-main small { font-family: var(--k-font); font-size: var(--k-t-foot); text-transform: none; letter-spacing: 0; font-weight: 400; }
.ly-acts { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.ly-resv { flex-wrap: wrap; }
.ly-reply { display: flex; gap: 8px; align-items: flex-start; flex-basis: 100%; margin: 8px 0 0 54px; padding: 8px 10px; border-radius: var(--k-r-s); background: var(--ly-green-soft); font-size: var(--k-t-foot); }
.ly-reply:has([data-pl-field="reply"]:empty) { display: none; }
.ly-pick { margin-bottom: var(--k-2); }
.ly-pick .k-h3 { margin: 0 0 var(--k-3); }
.ly-pick .k-row-end b { color: var(--k-brand); }
.ly-bake-field { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
#order { scroll-margin-top: 72px; margin-top: var(--k-5); }
@media (min-width: 1024px) { #order { margin-top: 0; } }
.k-item-tag { background: var(--k-surface); color: var(--k-brand); box-shadow: var(--k-shadow-1); }
.k-row .k-row-title { white-space: normal; }
.k-perks li > span:last-child { min-width: 0; }

/* Change or cancel: only on reservations still to come (app.js sets data-ly-upcoming on each row) */
.ly-change { display: none; }
[data-ly-upcoming="yes"] .ly-change { display: inline-flex; }
[data-ly-upcoming="yes"] .ly-again { display: none; }

/* Scan blocks: the raw counts stay for screen readers; the rewards page shows the meter only */
.ly-card [data-pl-scan-counts], .ly-member [data-pl-scan-counts] { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ly-reward [data-pl-scan-show], .ly-reward [data-pl-wallet], .ly-reward [data-pl-scan-code], .ly-reward [data-pl-scan-status] { display: none !important; }
.ly-welcome-cta { margin-top: var(--k-5); }
.k-welcome .k-perks { margin-top: var(--k-5); }
.k-welcome-art img { object-position: center top; }
@media (max-width: 1023px) { .k-split .k-aside > .k-actions { display: none; } }
.k-foot { align-items: center; }

/* Public page */
.ly-hero { display: grid; gap: var(--k-6); padding-top: var(--k-4); }
.ly-hero h1 { font-size: var(--k-t-hero); font-weight: 800; letter-spacing: -.035em; line-height: 1.04; margin: var(--k-2) 0 var(--k-3); }
.ly-hero .k-kicker { display: flex; align-items: center; gap: 6px; }
.ly-hero .k-lead { max-width: 44ch; margin-bottom: var(--k-5); }
.ly-hero .k-help { margin-top: var(--k-3); }
.ly-hero-art { position: relative; margin: 0; }
.ly-hero-art img { width: 100%; aspect-ratio: 4 / 4.4; object-fit: cover; object-position: center top; border-radius: var(--k-r-xl); box-shadow: var(--k-shadow-2); }
.ly-float { position: absolute; left: 16px; right: 16px; bottom: 16px; display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: var(--k-r-l); background: var(--k-surface); box-shadow: var(--k-shadow-3); }
.ly-float b { display: block; font-size: var(--k-t-sub); }
.ly-float span span { color: var(--k-muted); font-size: var(--k-t-foot); }
.ly-steps ol { list-style: none; margin: 0; padding: 0; }
.ly-steps .k-card h3 { margin-top: var(--k-4); }
.ly-static { cursor: default; }
.ly-static:active { transform: none; }
.ly-note { margin-top: var(--k-4); }
.ly-cardpromo { display: grid; gap: var(--k-5); align-items: center; }
.ly-cardpromo h2 { font-size: var(--k-t-2); font-weight: 800; letter-spacing: -.03em; margin-bottom: var(--k-3); }
.ly-mt { margin-top: var(--k-5); }
.ly-visit .k-card h2 { font-size: var(--k-t-3); margin-bottom: var(--k-2); }
@media (min-width: 900px) {
  .ly-hero { grid-template-columns: 1.1fr 1fr; align-items: center; gap: 56px; padding-top: var(--k-6); }
  .ly-hero-art { max-width: 480px; justify-self: end; width: 100%; }
  .ly-float { left: -32px; right: auto; bottom: 40px; }
  .ly-menu { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ly-cardpromo { grid-template-columns: 1fr 1.1fr; gap: 56px; }
  .ly-visit { max-width: 640px; }
}

/* Privacy notice blanks */
.tip { padding: var(--k-3) var(--k-4); border-radius: var(--k-r-m); background: var(--k-warn-soft); color: var(--k-text); font-size: var(--k-t-sub); }
.blank { background: var(--k-warn-soft); border-radius: 4px; padding: 0 3px; }

@media (min-width: 1024px) { .ly-chg { grid-template-rows: auto 1fr; } .ly-chg > .ly-pick { grid-column: 1 / span 7; grid-row: 1; } .ly-chg > .ly-reqs { grid-column: 1 / span 7; grid-row: 2; } .ly-chg > .ly-form { grid-column: 8 / span 5; grid-row: 1 / span 2; } }

/* Shop-sign buttons: square-ish, condensed capitals (no pills) */
body.k-app:not(.k-public) .k-btn, body.k-app:not(.k-public) .k-again { border-radius: 8px; }
body.k-app:not(.k-public) .k-btn { font-family: var(--k-font-display); font-stretch: condensed; text-transform: uppercase; letter-spacing: .05em; font-size: 1rem; }
body.k-app:not(.k-public) .k-badge { border-radius: 6px; }

/* Home board: the shelf leads on desktop, then the tag and the card in one row, then the shop strip (phones keep source order: tag first) */
.ly-more { display: none; }
@media (min-width: 1024px) {
  .ly-home > .ly-shelf-sec { grid-column: 1 / -1; grid-row: 1; }
  .ly-home > .ly-next { grid-column: 1 / -1; grid-row: 2; }
  .ly-home > .ly-cardcell { grid-column: 1 / span 5; grid-row: 3; }
  .ly-home > .ly-shop { grid-column: 6 / -1; grid-row: 3; }
  .ly-home .ly-tag { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 0 var(--k-7); align-items: center; padding-top: 52px; }
  .ly-home .ly-tag > .k-live-top, .ly-home .ly-tag > h3, .ly-home .ly-tag > .ly-memo { grid-column: 1; }
  .ly-home .ly-tag > .k-steps { grid-column: 2; grid-row: 1 / span 2; align-self: end; margin: 0; }
  .ly-home .ly-tag > .ly-live-btns { grid-column: 2; grid-row: 3; margin: 0; }
  .ly-home .ly-tag h3 { font-size: 2.5rem !important; }
  .ly-home .ly-shelf { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--k-3); }
  .ly-more { display: flex; }
  .ly-home .ly-loaf img { aspect-ratio: 1.3; }
  .ly-home .ly-loaf b { font-size: 1.0625rem; }
  .ly-shop .k-kv { display: grid; grid-template-columns: 1fr; grid-auto-flow: row; gap: 4px 16px; }
}
.ly-cardcell > .ly-card { margin: 0; }
@media (max-width: 1023px) { .ly-home > .ly-cardcell { order: 0; } .k-pagehead-actions { flex-basis: 100%; } }

/* Round 2 */
.ly-rules .k-row { padding-left: var(--k-5); padding-right: var(--k-5); }
body.k-app:not(.k-public) .k-btn, body.k-app:not(.k-public) .k-again, body.k-app:not(.k-public) .k-account button, body.k-app:not(.k-public) .k-account .k-btn, body.k-app:not(.k-public) .k-account a { border-radius: 6px; }
body.k-app:not(.k-public) .k-badge, body.k-app:not(.k-public) .k-badge-state { border-radius: 6px !important; }
.k-row-sub { white-space: normal; }
.ly-club-stats > * { min-width: 0; padding: 0 10px; }
.ly-club-stats b { font-size: 1.5rem; }
.ly-loaf b { text-wrap: balance; }
@media (max-width: 719px) {
  .ly-reserve .k-items { grid-template-columns: 1fr; gap: var(--k-2); }
  .ly-reserve .k-item { display: grid; grid-template-columns: 88px minmax(0, 1fr); text-align: left; align-items: center; gap: 0 12px; padding: 8px; }
  .ly-reserve .k-item-art { width: 88px; aspect-ratio: 1; border-radius: 12px; overflow: hidden; }
  .ly-reserve .k-item-art img { width: 100%; height: 100%; object-fit: cover; }
  .ly-reserve .k-item-add { width: 44px; height: 44px; }
}
@media (min-width: 1024px) {
  .ly-home .ly-tag > .k-live-top { justify-content: flex-start; gap: var(--k-4); }
  .ly-home .ly-tag > .k-steps { margin-bottom: var(--k-4); }
  .ly-home > .ly-shop { align-self: stretch; }
}

/* Follow-up pass (kit v3): one type rule (condensed capitals for names and headings only; buttons and labels in the body
   sans, sentence case), the tag hole inside the stitching, bakery-toned status chips, Bought before beside the coffee card,
   Account on the four account parts. */
body.k-app:not(.k-public) .k-btn { font-family: var(--k-font); font-stretch: normal; text-transform: none; letter-spacing: 0; font-size: var(--k-t-sub); font-weight: 700; }
body.k-app:not(.k-public) .k-btn-lg { font-size: 1rem; }
.ly-tag { -webkit-mask: radial-gradient(circle 10px at calc(100% - 46px) 40px, #0000 97%, #000); mask: radial-gradient(circle 10px at calc(100% - 46px) 40px, #0000 97%, #000); }
.ly-tag::after { top: 25px; right: 31px; width: 30px; height: 30px; }
.ly-tag-for { top: 22px; left: 26px; }
.ly-tag .k-live-top { padding-right: 56px; }
body.k-app:not(.k-public) [data-k-state] .k-badge-state { background: #f1e3c8; color: #6a4515; }
body.k-app:not(.k-public) [data-k-state="active"] .k-badge-state { background: #f6d2a8; color: #7f3a0c; }
body.k-app:not(.k-public) [data-k-state="ok"] .k-badge-state { background: var(--ly-green-soft); color: #2f5636; }
body.k-app:not(.k-public) [data-k-state="done"] .k-badge-state { background: #e7ddd0; color: #5b4a3c; }
body.k-app:not(.k-public) [data-k-state="off"] .k-badge-state { background: transparent; color: var(--k-muted); box-shadow: inset 0 0 0 1px var(--k-line-strong); text-decoration: line-through; }
body.k-app:not(.k-public) [data-k-state] .k-badge-state::before { background: currentColor; }
@media (prefers-color-scheme: dark) {
  body.k-app:not(.k-public) [data-k-state] .k-badge-state { background: rgba(241, 210, 160, .14); color: #efd3a4; }
  body.k-app:not(.k-public) [data-k-state="active"] .k-badge-state { background: rgba(233, 133, 90, .2); color: #f3b18b; }
  body.k-app:not(.k-public) [data-k-state="ok"] .k-badge-state { background: var(--ly-green-soft); color: var(--ly-green); }
  body.k-app:not(.k-public) [data-k-state="done"] .k-badge-state { background: rgba(255, 235, 210, .08); color: var(--k-muted); }
}
.ly-recent .k-row { gap: var(--k-3); }
.ly-recent .k-row-title { font-family: var(--k-font-display); font-stretch: condensed; text-transform: uppercase; letter-spacing: .01em; font-size: 1.0625rem; }
.ly-recent .k-again { flex: none; }
.ly-recent .k-empty { padding: var(--k-4) var(--k-5); }
@media (min-width: 1024px) {
  .ly-home > .ly-cardcell { grid-row: 3 / span 2; }
  .ly-home > .ly-shop { align-self: start; }
  .ly-home > .ly-recent { grid-column: 6 / -1; grid-row: 4; align-self: start; }
  .ly-shop .k-kv { grid-template-columns: minmax(0, 5rem) minmax(0, 1fr); }
  .ly-acct { align-items: start; }
}
.ly-acct-more { gap: var(--k-3); }
.ly-acct-more > .k-help { margin: 0 var(--k-1); }

/* Round 2 (review): bake names in the sign capitals everywhere, a shorter phone Home, a reinforced tag hole, a phone
   reserve bar, dark avatar, stamps and bake tiles. */
.k-item-name, .k-sum b, .ly-pick .k-row-title { font-family: var(--k-font-display); font-stretch: condensed; text-transform: uppercase; letter-spacing: .01em; font-size: 1.0625rem; line-height: 1.15; }
.ly-tag::after { border: 5px solid color-mix(in srgb, var(--ly-twine) 60%, var(--k-surface)); top: 25px; right: 31px; width: 30px; height: 30px; }
@media (max-width: 719px) {
  .ly-recent .k-list > .k-row:nth-child(n+3) { display: none; }
  .ly-shop .k-kv dt:nth-of-type(3), .ly-shop .k-kv dd:nth-of-type(3) { display: none; }
  .ly-card-home [data-pl-wallet] { grid-template-columns: 1fr 1fr; }
  .ly-card-home [data-pl-wallet] button { min-height: 40px; font-size: .6875rem; padding: 0 6px; }
}
.k-sticky-cta b { font-family: var(--k-font); }
@media (prefers-color-scheme: dark) {
  body.k-app:not(.k-public) .k-top .k-avatar { background: var(--k-surface-2); color: var(--k-text); box-shadow: inset 0 0 0 1px var(--k-line-strong); }
  .k-hero-card .k-dots li:not(.on):not(.k-free), .ly-reward .k-dots li:not(.on):not(.k-free) { border-color: rgba(255, 235, 210, .34); }
  .ly-loaf img, .k-item-art img, .k-sum img { filter: brightness(.82) saturate(.9); }
}
@media (min-width: 1024px) { .ly-chg > .ly-know { grid-column: 1 / span 7; grid-row: 3; align-self: start; } .ly-chg > .ly-form { grid-row: 1 / span 3; } .ly-chg { grid-template-rows: auto auto 1fr; } }
.ly-know .k-kv { grid-template-columns: minmax(0, 6.5rem) minmax(0, 1fr); }
.ly-know .k-kv a { color: var(--k-brand); font-weight: 700; }

/* Round 3 (review): the live collection leads Home on desktop too, a cut-out tag hole, one stamp spacing, the sign-in
   part as one grouped card, the Club as a badge on the card. */
@media (min-width: 1024px) {
  .ly-home > .ly-next { grid-row: 1; }
  .ly-home > .ly-shelf-sec { grid-row: 2; }
}
.ly-tag::after { content: none; }
.ly-tag { -webkit-mask: radial-gradient(circle 9px at calc(100% - 46px) 40px, #0000 97%, #000); mask: radial-gradient(circle 9px at calc(100% - 46px) 40px, #0000 97%, #000); }
.ly-acct-signin { gap: 0; padding: 4px 0; border-radius: 14px; background: var(--k-surface); box-shadow: var(--k-shadow-1); overflow: hidden; }
.ly-acct-signin > * { margin: 0 !important; }
.ly-acct-signin > p:first-child, .ly-acct-signin ul, .ly-acct-signin > form > button { background: transparent !important; box-shadow: none !important; border-radius: 0 !important; border: 0 !important; }
.ly-acct-signin > * + * { border-top: 1px solid var(--k-line); }
.ly-acct-signin > h3 { padding: 14px 20px 4px; border-top: 1px solid var(--k-line); }
.ly-acct-signin > h3 + ul { border-top: 0; }
.ly-acct-signin ul li { padding-left: 20px; padding-right: 20px; }
.ly-club-badge { background: var(--ly-green-soft); color: var(--ly-green); letter-spacing: .04em; }

/* Round 4 (review): no tag hole at all, a compact coffee card and shop strip on phone Home (the full card is on Card). */
.ly-tag { -webkit-mask: none; mask: none; }
@media (max-width: 719px) {
  .ly-card-home .k-dots, .ly-card-home [data-pl-wallet], .ly-card-home .ly-clubline { display: none !important; }
  .ly-card-home .k-big { font-size: 2.5rem; }
  .ly-card-home [data-pl-sign-in="scan"] { margin-top: var(--k-3); padding-top: var(--k-3); }
  .ly-shop .k-kv dt:nth-of-type(2), .ly-shop .k-kv dd:nth-of-type(2) { display: none; }
  .ly-shop .k-panel-body { padding-top: var(--k-3); padding-bottom: var(--k-3); }
}
@media (prefers-color-scheme: dark) { .ly-loaf img, .k-item-art img, .k-sum img { filter: brightness(.74) sepia(.15); } }

/* Round 5 (review): the collection as a kraft bread tag with a reinforced string hole and inked stage stamps; the
   stamp grid back on phone Home. */
.ly-tag { background: #ecd6ae; border-color: rgba(90, 55, 20, .35); outline-color: rgba(90, 55, 20, .35); --k-muted: #5e4122; --k-text: #2b1a10; color: #2b1a10; }
.ly-tag::after { content: ""; position: absolute; top: 22px; right: 30px; width: 18px; height: 18px; border-radius: 50%; border: 0; background: var(--k-bg); box-shadow: inset 0 1px 3px rgba(0, 0, 0, .35), 0 0 0 5px #d9bb88, 0 0 0 6px rgba(90, 55, 20, .3); }
.ly-tag .k-live-top { padding-right: 52px; }
.ly-tag .k-steps { display: flex; flex-wrap: wrap; gap: 6px 8px; }
.ly-tag .k-steps li { padding: 4px 9px; border: 1.5px dashed rgba(90, 55, 20, .45); border-radius: 4px; font-size: .6875rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #6d4b26; }
.ly-tag .k-steps li::before, .ly-tag .k-steps li::after { content: none; display: none; }
.ly-tag .k-steps li.k-done { border-style: solid; border-color: var(--k-brand); color: var(--k-brand); }
.ly-tag .k-steps li.k-now { border-style: solid; border-color: var(--k-brand); background: var(--k-brand); color: #fff8ee; transform: rotate(-3deg); }
.ly-tag .k-btn-line { background: rgba(255, 250, 240, .55); }
@media (prefers-color-scheme: dark) {
  .ly-tag { background: #3a2a1b; border-color: rgba(255, 220, 170, .3); outline-color: rgba(255, 220, 170, .3); --k-muted: #d6bf9c; --k-text: #f6ebd9; color: #f6ebd9; }
  .ly-tag::after { box-shadow: inset 0 1px 3px rgba(0, 0, 0, .6), 0 0 0 5px #5a4228, 0 0 0 6px rgba(255, 220, 170, .25); }
  .ly-tag .k-steps li { border-color: rgba(255, 220, 170, .4); color: #d6bf9c; }
  .ly-tag .k-steps li.k-now { color: #26150c; }
  .ly-tag .k-btn-line { background: transparent; }
}
@media (max-width: 719px) { .ly-card-home .k-dots { display: grid !important; } }
@media (max-width: 420px) { .ly-tag .k-steps { gap: 5px; } .ly-tag .k-steps li { padding: 3px 6px; font-size: .625rem; letter-spacing: .05em; } }

/* Round 6 (review): the shop's own surfaces: an awning band under the sign, At the shop as a chalkboard, Bought before
   as a till receipt, status chips as ink stamps; the tag hole further inside the stitching. */
body.k-app:not(.k-public) .k-top { border-bottom: 8px solid transparent; border-image: repeating-linear-gradient(90deg, var(--k-brand) 0 22px, #f6ead6 22px 44px) 8; }
@media (prefers-color-scheme: dark) { body.k-app:not(.k-public) .k-top { border-image: repeating-linear-gradient(90deg, #8a3f1f 0 22px, #3a2a1b 22px 44px) 8; } }
.ly-tag::after { top: 30px; right: 40px; }
.ly-tag .k-live-top { padding-right: 64px; }
.ly-shop { background: #263029; color: #f1ead9; box-shadow: none; border: 6px solid #8a6a43; border-radius: 10px; }
.ly-shop .k-panel-head { border-bottom: 1px dashed rgba(241, 234, 217, .3); }
.ly-shop .k-panel-head h2 { color: #f1ead9; font-family: var(--k-font-display); font-stretch: condensed; text-transform: uppercase; letter-spacing: .04em; }
.ly-shop .k-panel-head a { color: #f3c27a; }
.ly-shop .k-kv dt { color: rgba(241, 234, 217, .7); }
.ly-shop .k-kv dd { color: #f1ead9; }
.ly-recent { background: #fffdf8; border-radius: 4px 4px 0 0; box-shadow: var(--k-shadow-1); padding-bottom: 10px;
  -webkit-mask: linear-gradient(#000 0 0) top / 100% calc(100% - 10px) no-repeat, conic-gradient(from -45deg at 50% 100%, #000 90deg, #0000 0) bottom / 14px 10px repeat-x;
  mask: linear-gradient(#000 0 0) top / 100% calc(100% - 10px) no-repeat, conic-gradient(from -45deg at 50% 100%, #000 90deg, #0000 0) bottom / 14px 10px repeat-x; }
.ly-recent .k-row-sub { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: .75rem; letter-spacing: .02em; }
.ly-recent .k-list > .k-row + .k-row { border-top: 1px dashed var(--k-line-strong); }
@media (prefers-color-scheme: dark) { .ly-recent { background: var(--k-surface); } }
body.k-app:not(.k-public) [data-k-state] .k-badge-state { border: 1.5px solid currentColor; border-radius: 3px !important; text-transform: uppercase; letter-spacing: .08em; font-size: .6875rem; font-weight: 800; background: transparent; }
body.k-app:not(.k-public) [data-k-state] .k-badge-state::before { display: none; }
body.k-app:not(.k-public) [data-k-state="active"] .k-badge-state, body.k-app:not(.k-public) [data-k-state="ok"] .k-badge-state { transform: rotate(-2deg); }

/* Round 7 (review): the tag's stages column as a tear-off stub on desktop, the status said once (the stamps; the chip only
   for a cancelled one), the Club line kept on phone Home. */
.ly-tag:is([data-k-state="new"], [data-k-state="active"], [data-k-state="ok"], [data-k-state="done"]) .k-live-top .k-badge-state { display: none; }
@media (min-width: 1024px) {
  .ly-home .ly-tag > .k-steps, .ly-home .ly-tag > .ly-live-btns { padding-left: var(--k-6); border-left: 2px dashed rgba(90, 55, 20, .35); align-self: stretch; }
  .ly-home .ly-tag > .k-steps { align-content: end; padding-bottom: var(--k-3); margin-bottom: 0; }
}
@media (max-width: 719px) { .ly-card-home .ly-clubline { display: block !important; } }

/* ---------- art direction 2026-10-25: the bakery paper bag ----------
   Flour paper, rye ink, crust red and one butter-yellow bag for tomorrow's loaf (printed bag stamp, twist tie, tear-off
   "collect by" stub); sage only as an accent; Fraunces (soft, wonky) for headings, bake names and prices, Work Sans
   for text. No chalkboard. Contrast: rye ink on butter 10.6, flour on crust 6.9, rye on flour 15.8, crust on flour 6.9;
   dark: #f6ebd9 on #1b1410 15.2, rye ink on butter (kept in dark) 10.6, #f08a5d on #1b1410 6.8. */
:root, .k-app[data-k-type] { --k-font-display: "Fraunces", Georgia, "Times New Roman", serif; --k-font-condensed: var(--k-font-display); --k-font: "Work Sans", "Helvetica Neue", Arial, sans-serif; --k-head-w: 650; --k-head-ls: -.015em; --ly-butter: #f7c948; --ly-rye: #2b1a12; --ly-crust: #963416; --ly-sage: #8ba888; }
body.k-app, body.k-app:not(.k-public) { --k-bg: #fbf4e6; --k-surface: #fffdf7; --k-surface-2: #f4ead6; --k-text: #2b1a12; --k-muted: #614a39; --k-faint: #6b5444; --k-brand: #9e3b1b; --k-brand-ink: #fbf4e6; --k-brand-soft: #f6e0d2; --k-hero: #2b1a12; --k-line: rgba(43, 26, 18, .12); --k-line-strong: rgba(43, 26, 18, .32); background-image: none; }
@media (prefers-color-scheme: dark) { body.k-app, body.k-app:not(.k-public) { --k-bg: #1b1410; --k-surface: #261d17; --k-surface-2: #31261e; --k-text: #f6ebd9; --k-muted: #c9b59d; --k-faint: #b9a68e; --k-brand: #f08a5d; --k-brand-ink: #2b1a12; --k-brand-soft: rgba(240, 138, 93, .16); --k-line: rgba(255, 235, 210, .11); --k-line-strong: rgba(255, 235, 210, .3); } }
.k-app { font-family: var(--k-font); }
.k-app :is(h1, h2, h3, .k-big, .ly-loaf b, .ly-loaf i) { font-family: var(--k-font-display); font-stretch: normal; text-transform: none !important; font-variation-settings: "SOFT" 100, "WONK" 1; }
.k-pagehead h1 { font-size: 2.5rem; font-weight: 700; letter-spacing: -.025em; line-height: 1; }
@media (min-width: 1024px) { .k-pagehead h1 { font-size: 3.5rem; } }
.k-section-head h2, .k-panel-head h2 { font-weight: 650; letter-spacing: -.01em; }
.k-app .k-btn { font-family: var(--k-font); font-weight: 600; }
/* top bar: crust awning stripes kept, in crust and flour */
/* the bag */
.ly-tag { background: var(--ly-butter) !important; color: var(--ly-rye) !important; --k-text: #2b1a12; --k-muted: #4d3518; border: 0 !important; outline: 0 !important; border-radius: 4px 4px 10px 10px !important; margin-top: 18px; overflow: visible; box-shadow: 0 18px 30px -18px rgba(43, 26, 18, .45), inset 0 -6px 0 rgba(43, 26, 18, .06);
  -webkit-mask: none !important; mask: none !important; }
.ly-tag::before { content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 14px; background: linear-gradient(135deg, var(--ly-butter) 50%, transparent 50%) 0 0 / 18px 14px repeat-x, linear-gradient(225deg, var(--ly-butter) 50%, transparent 50%) 9px 0 / 18px 14px repeat-x; }
.ly-tag::after { content: "PENNYWORT · MILL LANE · BAKED TODAY ·" !important; position: absolute; top: 18px; right: 18px; width: 92px; height: 92px; border-radius: 50%; border: 2px solid rgba(158, 59, 27, .55) !important; box-shadow: inset 0 0 0 5px var(--ly-butter), inset 0 0 0 6.5px rgba(158, 59, 27, .45) !important; background: none !important; color: rgba(158, 59, 27, .75); font: 700 .5625rem/1.25 var(--k-font); letter-spacing: .14em; text-align: center; display: grid; place-items: center; padding: 18px; transform: rotate(-12deg); pointer-events: none; }
.ly-tag-for { color: #4d3518 !important; }
.ly-tag .k-live-time { font-family: var(--k-font-display); color: var(--ly-crust) !important; font-weight: 700; }
.ly-tag h3 { font-weight: 700; letter-spacing: -.02em; font-size: 2.25rem !important; line-height: 1.02; }
.ly-tag .k-live-top { padding-right: 104px !important; }
.ly-tag .k-steps li { border-color: rgba(43, 26, 18, .4) !important; color: #4d3518 !important; }
.ly-tag .k-steps li.k-done { border-color: var(--ly-crust) !important; color: var(--ly-crust) !important; }
.ly-tag .k-steps li.k-now { background: var(--ly-crust) !important; border-color: var(--ly-crust) !important; color: #fbf4e6 !important; }
.ly-tag .k-btn-line { background: rgba(255, 253, 247, .7) !important; color: #2b1a12; box-shadow: inset 0 0 0 1.5px rgba(43, 26, 18, .4); }
.ly-tag .k-btn-ghost { color: var(--ly-crust); }
.ly-tag .ly-memo { color: #4d3518; }
/* the twist tie */
.ly-next .k-live { position: relative; }
.ly-next [data-pl-view="cards"] { position: relative; padding-top: 6px; }
.ly-next [data-pl-view="cards"]::before { content: ""; position: absolute; z-index: 1; top: -2px; left: 34px; width: 54px; height: 10px; border-radius: 5px; background: var(--ly-sage); box-shadow: 0 0 0 2px rgba(43, 26, 18, .25); transform: rotate(-8deg); pointer-events: none; }
.ly-next [data-pl-view="cards"]:has(> [data-pl-empty]:only-child)::before, .ly-next [data-pl-view="cards"]:not(:has(.ly-tag))::before { display: none; }
@media (min-width: 1024px) { .ly-home .ly-tag { padding: 56px 40px 32px !important; } .ly-home .ly-tag h3 { font-size: 3.25rem !important; } .ly-home .ly-tag > .k-steps, .ly-home .ly-tag > .ly-live-btns { border-left-color: rgba(43, 26, 18, .35) !important; } }
@media (max-width: 479px) { .ly-tag::after { width: 72px; height: 72px; padding: 12px; font-size: .5rem; top: 14px; right: 12px; } .ly-tag .k-live-top { padding-right: 78px !important; } .ly-tag h3 { font-size: 1.875rem !important; } }
@media (prefers-reduced-motion: no-preference) { .ly-tag[data-k-state="done"] .ly-live-btns { animation: ly-tear .6s ease-in both; } }
@keyframes ly-tear { to { transform: translateY(14px) rotate(2deg); opacity: .5; } }
/* the shelf: loaves on butter circles */
.ly-loaf { background: var(--k-surface); box-shadow: 0 0 0 1px var(--k-line); }
.ly-loaf img { background: radial-gradient(circle at 50% 56%, var(--ly-butter) 0 38%, transparent 38.5%), var(--k-surface-2); }
.ly-loaf b { font-weight: 650; letter-spacing: -.01em; font-size: 1.125rem; }
.ly-loaf i { font-weight: 700; color: var(--k-brand); }
@media (prefers-color-scheme: dark) { .ly-loaf img { background: radial-gradient(circle at 50% 56%, rgba(247, 201, 72, .3) 0 38%, transparent 38.5%), var(--k-surface-2); filter: none; } }
/* coffee card: flour paper, quiet wallet buttons */
.ly-card .k-big { font-weight: 700; }
.ly-card [data-pl-wallet] button, .k-scan [data-pl-wallet] button { background: transparent !important; color: var(--k-text) !important; border: 1.5px solid var(--k-line-strong) !important; min-height: 44px; }
/* at the shop: a flour paper card with a crust rule, no chalkboard */
.ly-shop { background: var(--k-surface) !important; color: var(--k-text) !important; border: 0 !important; box-shadow: 0 0 0 1px var(--k-line), inset 0 4px 0 var(--k-brand) !important; outline: 0 !important; }
.ly-shop :is(h2, dd, dt) { color: var(--k-text) !important; }
.ly-shop dt { color: var(--k-muted) !important; }
.ly-shop .k-panel-head { border-color: var(--k-line) !important; }
.ly-shop .k-panel-head a { color: var(--k-brand) !important; }
.ly-tag::before { top: -10px; height: 10px; background: linear-gradient(-45deg, var(--ly-butter) 7px, transparent 0) 0 100% / 14px 14px repeat-x, linear-gradient(45deg, var(--ly-butter) 7px, transparent 0) 0 100% / 14px 14px repeat-x; }
.ly-recent .k-row-title { text-transform: none; font-family: var(--k-font-display); font-weight: 600; letter-spacing: -.01em; }
@media (min-width: 1024px) { .ly-home .ly-tag > .k-steps { grid-row: 2 !important; align-self: end !important; } .ly-home .ly-tag > .ly-live-btns { grid-row: 3 !important; align-self: start; } }
@media (max-width: 479px) { .ly-tag::after { width: 64px; height: 64px; padding: 9px; font-size: .4375rem; top: -14px; right: 8px; background: var(--ly-butter) !important; } .ly-tag .k-live-top { padding-right: 56px !important; } .ly-tag-for { right: 76px; } }
/* public page: the hero is the butter-yellow bag front, full bleed */
.k-public .ly-hero, .ly-hero { position: relative; isolation: isolate; color: #2b1a12; --k-text: #2b1a12; --k-muted: #4d3518; padding-top: 40px; padding-bottom: 48px; }
.ly-hero::before { content: ""; position: absolute; z-index: -1; inset: 0 calc(50% - 50vw); background: var(--ly-butter); }
.ly-hero h1 { font-family: var(--k-font-display); font-weight: 700; font-size: clamp(3rem, 7.4vw, 6.75rem); line-height: .95; letter-spacing: -.035em; font-variation-settings: "SOFT" 100, "WONK" 1; }
.ly-hero .k-kicker, .ly-hero .k-lead, .ly-hero .k-help { color: #4d3518; }
.ly-hero .k-btn-line { color: #2b1a12; box-shadow: inset 0 0 0 1.5px rgba(43, 26, 18, .5); background: rgba(255, 253, 247, .5); }
.ly-hero .k-btn:not(.k-btn-line) { background: #9e3b1b; color: #fbf4e6; }
.ly-hero-art img { box-shadow: none; border-radius: 8px; aspect-ratio: 880 / 1100; object-position: center; }
@media (min-width: 900px) { .ly-hero { grid-template-columns: 1.25fr 1fr !important; } }
.ly-hero h1 { margin-bottom: 24px; }

/* review round 2 (2026-10-25) */
.ly-tag::after { color: var(--ly-crust) !important; border-color: var(--ly-crust) !important; }
@media (prefers-color-scheme: dark) { .ly-hero .ly-float { color: #f6ebd9; --k-muted: #c9b59d; --k-text: #f6ebd9; } }
.ly-card-home .k-dots { display: none !important; }
.ly-rewards-page .k-dots { display: none !important; }
.k-hero-card .k-dots li.on::before, .ly-reward .k-dots li.on::before { background: #963416; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9h11v5a5 5 0 0 1-5 5H9a5 5 0 0 1-5-5z'/%3E%3Cpath d='M15 11h2a2 2 0 0 1 0 4h-2M8 3.5c-.8 1 .8 1.8 0 3M11.5 3.5c-.8 1 .8 1.8 0 3'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9h11v5a5 5 0 0 1-5 5H9a5 5 0 0 1-5-5z'/%3E%3Cpath d='M15 11h2a2 2 0 0 1 0 4h-2M8 3.5c-.8 1 .8 1.8 0 3M11.5 3.5c-.8 1 .8 1.8 0 3'/%3E%3C/svg%3E") center / contain no-repeat; }
@media (prefers-color-scheme: dark) { .k-hero-card .k-dots li.on::before, .ly-reward .k-dots li.on::before { background: #f08a5d; } }
.ly-tag .ly-live-btns { border-top: 2px dashed rgba(43, 26, 18, .35); margin: 18px -24px -24px; padding: 30px 24px 18px; position: relative; background: rgba(255, 253, 247, .3); border-radius: 0 0 10px 10px; }
.ly-tag .ly-live-btns::before { content: "Tear-off stub · kept till 15:00"; position: absolute; top: 8px; left: 24px; font: 700 .6875rem/1 var(--k-font); letter-spacing: .1em; text-transform: uppercase; color: #4d3518; }
.ly-tag .ly-live-btns .k-btn-ghost { display: none; }
@media (min-width: 1024px) { .ly-home .ly-tag .ly-live-btns { margin: 0; border-top: 0; background: none; padding: 0; } .ly-home .ly-tag .ly-live-btns::before { content: none; } .ly-home .ly-tag { grid-template-columns: minmax(0, 1fr) minmax(0, 440px) !important; } }
.ly-tag { overflow: visible !important; }
@media (max-width: 479px) { .ly-tag::after { right: 14px !important; } }
.ly-next [data-pl-view="cards"]::before { top: 4px; }
.k-app :is(.k-item-name, .k-row-title, .k-td-main, .k-td-main b) { text-transform: none !important; font-family: var(--k-font-display); letter-spacing: -.01em; }
.k-app :is(.ly-again, .ly-change, .k-again) { background: var(--k-surface) !important; color: var(--k-brand) !important; box-shadow: inset 0 0 0 1.5px var(--k-brand) !important; border: 0 !important; }
.ly-clubline a { text-decoration: none; font-weight: 600; color: var(--k-brand); }
.k-public .k-hero-card, body:not(:has([data-pl-if])) .k-hero-card { background: var(--k-surface) !important; color: var(--k-text) !important; box-shadow: 0 0 0 1.5px var(--k-line-strong), 0 14px 28px -16px rgba(43, 26, 18, .35) !important; }
.k-public .k-hero-card .k-hero-top, .k-public .k-hero-card .k-big small { color: var(--k-muted); }
.k-public .ly-visit, .ly-visit { grid-column: 1 / -1; max-width: none; }
@media (prefers-color-scheme: dark) { .ly-loaf img, .k-item-art img, .k-sum img { filter: none !important; } }
@media (max-width: 479px) { .ly-form .k-pair { grid-template-columns: 1fr; } }
@media (max-width: 559px) { .ly-reserve .k-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .ly-reserve .k-item-desc { display: none; } .ly-reserve .k-item { grid-template-columns: minmax(0, 1fr); } .ly-reserve .k-item-art { width: 100%; } }
@media (max-width: 559px) { .k-tr.ly-resv { flex-wrap: wrap; } .k-tr.ly-resv .ly-acts { margin-left: 0; } }

/* ---------- review round 3 (2026-10-25) ---------- */
/* Home: a small strip of the nine cup stamps under the count (the big grid stays on Card) */
.ly-card-home .k-dots { display: grid !important; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 5px; margin: 10px 0 4px; }
.ly-card-home .k-dots li { min-height: 0; aspect-ratio: 1; border-radius: 6px; }
.ly-card-home [data-pl-wallet] { display: none !important; }
/* the ticket's right side is the tear-off stub on desktop */
@media (min-width: 1024px) {
  .ly-home .ly-tag { grid-template-columns: minmax(0, 1fr) minmax(0, 380px) !important; padding-right: 0 !important; padding-bottom: 0 !important; }
  .ly-home .ly-tag > .k-steps, .ly-home .ly-tag > .ly-live-btns { background: rgba(255, 253, 247, .32); border-left: 2px dashed rgba(43, 26, 18, .35) !important; padding-left: 28px !important; padding-right: 28px !important; margin: 0 !important; }
  .ly-home .ly-tag > .k-steps { grid-row: 1 / span 2 !important; align-self: stretch !important; align-content: end; padding-top: 112px !important; padding-bottom: 14px !important; position: relative; }
  .ly-home .ly-tag > .k-steps::before { content: "Kept till 15:00"; position: absolute; top: 58px; left: 28px; font: 700 1.75rem/1 var(--k-font-display); color: #2b1a12; font-variation-settings: "SOFT" 100, "WONK" 1; }
  .ly-home .ly-tag > .ly-live-btns { grid-row: 3 / span 2 !important; align-self: stretch !important; padding-bottom: 28px !important; }
  .ly-home .ly-tag::after { right: 28px; top: -22px; background: var(--ly-butter) !important; }
}
.ly-tag::after { font-size: .5rem !important; letter-spacing: .1em !important; padding: 20px !important; }
/* the public hero toast sits above the bag on phones, clear of the stub */
@media (max-width: 899px) { .ly-hero-art .ly-float { top: 14px; bottom: auto; left: 14px; right: auto; } }
.k-app :is(.k-sum, .k-sum *) { text-transform: none !important; }
.k-public .k-item-tag, .k-item-tag { font-size: .75rem; padding: 4px 9px; }
/* rewards: free coffee card shows the stamp strip too */
.ly-rewards-page .k-dots { display: grid !important; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 6px; margin-top: 12px; }
.ly-rewards-page .k-dots li { min-height: 0; aspect-ratio: 1; }

/* ---------- review round 4 (2026-10-25) ---------- */
/* the stamp text stays inside its ring */
.ly-tag::after { content: "PENNYWORT · BAKED TODAY ·" !important; font-size: .4375rem !important; padding: 16px !important; line-height: 1.35; }
@media (max-width: 479px) { .ly-tag::after { right: 18px !important; padding: 11px !important; font-size: .375rem !important; } }
/* the home stamp strip: FREE fits, slots a touch larger */
.ly-card-home .k-dots li.k-free::before, .ly-rewards-page .k-dots li.k-free::before { font-size: .4375rem !important; letter-spacing: 0; }
@media (max-width: 479px) { .ly-card-home .k-dots, .ly-rewards-page .k-dots { grid-template-columns: repeat(5, minmax(0, 44px)) !important; gap: 8px; } }
/* desktop ticket: tighter, pills on one line */
@media (min-width: 1024px) { .ly-home .ly-tag { padding-top: 44px !important; } .ly-home .ly-tag .k-steps { gap: 5px !important; } .ly-home .ly-tag .k-steps li { padding: 3px 7px !important; font-size: .625rem !important; letter-spacing: .05em !important; } }
/* the bag on the inner pages: Card and Rewards stamp cards are butter paper */
.ly-card:not(.ly-card-home), .ly-reward { background: var(--ly-butter) !important; color: #2b1a12 !important; --k-text: #2b1a12; --k-muted: #4d3518; --k-surface: #fbe7a6; --k-surface-2: #f2bf3a; }
.ly-card:not(.ly-card-home) .k-dots, .ly-reward .k-dots { gap: 10px; }
@media (min-width: 720px) { .ly-card:not(.ly-card-home) .k-dots { grid-template-columns: repeat(5, 52px) !important; justify-content: start; } }
/* reserve on phones: compact rows like Home (thumbnail, name, price, plus) */
@media (max-width: 559px) {
  .ly-reserve .k-items { grid-template-columns: minmax(0, 1fr) !important; gap: 8px !important; }
  .ly-reserve .k-item { display: grid !important; grid-template-columns: 64px minmax(0, 1fr) auto !important; align-items: center; gap: 12px; padding: 8px 12px 8px 8px; min-height: 80px; }
  .ly-reserve .k-item-art { width: 64px !important; height: 64px; aspect-ratio: 1 !important; border-radius: 12px; overflow: hidden; }
  .ly-reserve .k-item-art img { width: 100%; height: 100%; object-fit: cover; }
  .ly-reserve .k-item-tag { display: none; }
}
.ly-recent .k-row-title { font-size: 1rem; }
.ly-member { background: var(--ly-butter) !important; color: #2b1a12 !important; --k-text: #2b1a12; --k-muted: #4d3518; --k-surface: #fbe7a6; --k-surface-2: #f2bf3a; outline-color: rgba(43, 26, 18, .3) !important; }
.ly-member .k-dots li:not(.on):not(.k-free) { background: rgba(255, 253, 247, .45) !important; border-color: rgba(43, 26, 18, .35) !important; }
.ly-member .k-dots li.on { background: #fffdf7 !important; }
.ly-member [data-pl-wallet] button { color: #2b1a12 !important; border-color: rgba(43, 26, 18, .45) !important; }

/* ---------- final pass (2026-10-25) ---------- */
/* Change: Change it / Cancel it side by side; Cancel hides the "what instead" field */
.ly-req select[hidden] { display: none; }
.ly-seg { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; border-radius: 10px; background: var(--k-surface-2); }
.ly-seg button { min-height: 44px; border: 0; border-radius: 8px; background: transparent; font: 600 var(--k-t-sub)/1.2 var(--k-font); color: var(--k-muted); cursor: pointer; }
.ly-seg button[aria-checked="true"] { background: var(--k-surface); color: var(--k-text); box-shadow: var(--k-shadow-1); }
.ly-seg button[value="Cancel it"][aria-checked="true"] { color: var(--k-danger); box-shadow: inset 0 0 0 1.5px var(--k-danger); }
.ly-seg button:focus-visible { outline: 3px solid var(--k-brand); outline-offset: 1px; }
.ly-form:has(select[data-ly-seg] > option:first-child:checked) .ly-what { display: none; }

/* ---------- review round 5 (2026-10-25) ---------- */
/* 1. Dark: the stamp ticket keeps light-mode ink (rye on flour cells), the FREE cell and the Bread Club badge stay readable */
@media (prefers-color-scheme: dark) {
  .ly-member .k-dots li, .ly-reward .k-dots li { background: transparent !important; border: 1.5px solid #2b1a12 !important; box-shadow: none !important; }
  .ly-member .k-dots li.on, .ly-reward .k-dots li.on { background: #fffaf0 !important; border: 1.5px solid #2b1a12 !important; }
  .ly-member .k-dots li.on::before, .ly-reward .k-dots li.on::before { background: #2b1a12 !important; }
  .ly-member .k-dots li.k-free, .ly-reward .k-dots li.k-free { background: #fffaf0 !important; border: 2px dashed #2b1a12 !important; }
  .ly-member .k-dots li.k-free::before, .ly-reward .k-dots li.k-free::before { color: #2b1a12 !important; }
  .ly-member .k-badge.ly-club-badge { background: #cfe3cf !important; color: #2b1a12 !important; }
}
/* 2. Rewards: the cup tile is a flour-white tile with a rye icon on the butter ticket */
.ly-reward-top .k-tile-gold { background: #fffaf0; color: #2b1a12; box-shadow: inset 0 0 0 1.5px rgba(43, 26, 18, .35); }
/* 3. Reserve at 375: bake rows centre their content vertically */
.ly-reserve .k-item { align-items: center !important; }
.ly-reserve .k-item > * { align-self: center !important; }
/* 4. Public hero: two lines of headline at 1024 and up, in a wider text column */
@media (min-width: 1024px) {
  .ly-hero { grid-template-columns: 1.5fr 1fr !important; }
  .ly-hero h1 { font-size: min(7vw, 6.5rem); text-wrap: balance; }
}
/* 5. Public hero: the toast sits below the bag, clear of it (the sun disc now fits inside the drawing) */
@media (min-width: 900px) {
  .ly-hero-art { margin-bottom: 76px; }
  .ly-hero-art .ly-float { bottom: -76px; left: -32px; }
}
/* 6. Public bake shelf: picture tiles at 4:3 on desktop */
@media (min-width: 1024px) { .ly-menu .k-item-art { aspect-ratio: 4 / 3; } }
/* 7. Small text: wallet buttons and the Change or cancel chips at 14px */
.ly-card [data-pl-wallet] button, .ly-member [data-pl-wallet] button, .k-scan [data-pl-wallet] button,
.ly-card [data-pl-wallet] a, .ly-member [data-pl-wallet] a, .k-scan [data-pl-wallet] a { font-size: .875rem !important; }
.k-app .k-again.ly-change, .k-app .ly-change { font-size: .875rem !important; }
/* 8. Account at 375: the signed-in email wraps instead of truncating */
.ly-acct-signin, .ly-acct-signin * { overflow-wrap: anywhere; white-space: normal; text-overflow: clip; }
/* 9. Dark: picture tiles behind the drawings sit on a warm brown, not cream */
@media (prefers-color-scheme: dark) {
  .k-item-art, .ly-loaf img, .k-sum img { background-color: #3a2a20 !important; }
}
/* 10. Home ticket: the clock icon lines up with the kicker, no extra indent */
.ly-tag .k-live-top, .ly-tag .k-live-time { padding-left: 0; margin-left: 0; }
.ly-tag .k-live-time > .k-i { margin: 0; }
/* Home ticket time fits the ticket at 320 */
@media (max-width: 359px) { .ly-tag .k-live-time { font-size: 1.25rem; } }

/* Reserve summary: "Total" sits above the amount. */
.k-sum .ly-total { display: flex; flex-direction: column; align-items: flex-end; flex: none; line-height: 1.2; }
.k-sum .ly-total small { font-size: .75rem; color: var(--k-muted); }
