/* Pickleball United — component styles. Prefix pku-. Mobile first; sections size against
   the .pku-main container (container queries), so a section looks right at any column width. */

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; background: var(--canvas); color: var(--ink); font-family: var(--font-sans); font-size: 17px; line-height: 1.6; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
.pku-on-dark :focus-visible { outline-color: var(--focus-on-dark); }
.pku-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.pku-skip { position: absolute; left: 16px; top: -80px; z-index: 50; background: var(--ink); color: var(--ball); padding: 12px 16px; border-radius: var(--radius-md); font-weight: 600; text-decoration: none; }
.pku-skip:focus { top: 16px; }

/* ---------- site shell: mobile top bar, desktop sidebar ---------- */
.pku-site { min-height: 100vh; }
.pku-site > .pku-sidebar { display: none; }
@media (min-width: 1200px) {
  .pku-site { display: grid; grid-template-columns: 320px minmax(0, 1fr); background: linear-gradient(90deg, var(--ball) 320px, transparent 320px); }
  .pku-site > .pku-topbar { display: none; }
  .pku-site > .pku-sidebar { display: flex; position: sticky; top: 0; align-self: start; max-height: 100vh; overflow-y: auto; }
}
.pku-main { container: main / inline-size; min-width: 0; }

/* ---------- type ---------- */
.pku-display { margin: 0; font-family: var(--font-display); font-stretch: 75%; font-weight: 800; text-transform: uppercase; letter-spacing: -0.005em; text-wrap: balance; }
.pku-h-hero { font-size: clamp(60px, 11.2cqi, 128px); line-height: 0.86; letter-spacing: -0.01em; }
.pku-h-section { font-size: clamp(46px, 7.6cqi, 88px); line-height: 0.88; }
.pku-h-card { font-size: clamp(36px, 3.9cqi, 44px); line-height: 0.92; }
.pku-h-title { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: clamp(24px, 2.5cqi, 28px); line-height: 1.05; letter-spacing: -0.01em; text-wrap: balance; }
.pku-lead { margin: 0; font-size: clamp(19px, 2.15cqi, 24px); line-height: 1.4; font-weight: 500; letter-spacing: -0.01em; text-wrap: pretty; }
.pku-meta { font-size: 15px; line-height: 1.3; font-weight: 600; }
.pku-hl { color: var(--ball); }
.pku-note { display: inline-flex; align-items: flex-end; gap: 8px; margin: 0; font-family: var(--font-hand); font-weight: 600; font-size: 22px; line-height: 1.15; transform: rotate(-3deg); transform-origin: left center; }
.pku-on-dark .pku-note { color: var(--ball); }
.pku-note .pku-i { width: 56px; height: 36px; flex: none; }

/* ---------- grounds and layout ---------- */
.pku-section { position: relative; padding-block: clamp(56px, 8.5cqi, 96px); }
.pku-wrap { width: 100%; max-width: 1180px; margin-inline: auto; padding-inline: clamp(16px, 5cqi, 64px); }
.pku-on-dark { color: var(--on-court); }
.pku-ground-court { background: var(--court); }
.pku-ground-ink { background: var(--ink); }
.pku-ground-paper { background: var(--paper); }
.pku-ground-white { background: var(--white); }
.pku-ground-canvas { background: var(--canvas); }
.pku-head { display: grid; gap: 16px; margin-bottom: clamp(32px, 5cqi, 56px); }
.pku-head .pku-lead { max-width: 34ch; color: var(--body); }
.pku-on-dark .pku-head .pku-lead { color: var(--on-court-mute); }
.pku-head__link { justify-self: start; }
@container main (min-width: 900px) {
  .pku-head { grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); column-gap: 48px; align-items: end; }
  .pku-head .pku-lead { justify-self: end; }
  .pku-head__link { justify-self: end; }
}
.pku-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }

/* ---------- icons (CSS masks, colour = currentColor) ---------- */
.pku-i { display: inline-block; width: 20px; height: 20px; flex: none; background: currentColor; -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }

/* ---------- buttons ---------- */
.pku-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 14px 22px 13px; border: 2px solid var(--ink); border-radius: var(--radius-md); background: var(--white); color: var(--ink); font-family: var(--font-display); font-stretch: 75%; font-weight: 700; font-size: 20px; line-height: 1; letter-spacing: 0.01em; text-transform: uppercase; text-decoration: none; cursor: pointer; transition: background-color .15s ease, color .15s ease, border-color .15s ease, transform .1s ease; }
.pku-btn .pku-i { width: 20px; height: 20px; transition: transform .15s ease; }
.pku-btn:hover { background: var(--ink); color: var(--ball); }
.pku-btn:hover .pku-i--arrow { transform: translateX(3px); }
.pku-btn:active { transform: scale(.98); }
.pku-btn--ball { background: var(--ball); }
.pku-btn--ink { background: var(--ink); color: var(--ball); }
.pku-btn--ink:hover { background: var(--court-raised); }
.pku-btn--sm { min-height: 44px; padding: 11px 16px 10px; font-size: 18px; }
.pku-btn--block { width: 100%; }
.pku-on-dark .pku-btn { border-color: var(--ball); }
.pku-on-dark .pku-btn--ball:hover { background: var(--white); border-color: var(--white); }
.pku-on-dark .pku-btn--ghost { background: transparent; color: var(--on-court); border-color: var(--on-court); }
.pku-on-dark .pku-btn--ghost:hover { background: var(--on-court); color: var(--ink); }
.pku-link { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 5px; text-decoration-color: var(--ball); }
.pku-link:hover { text-decoration-color: currentColor; }
.pku-link .pku-i { width: 18px; height: 18px; }

/* ---------- tags ---------- */
.pku-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.pku-tag, .pku-terms a { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 4px 12px; border: 1.5px solid transparent; border-radius: var(--radius-pill); background: var(--white); color: var(--ink); font: 600 14px/1.2 var(--font-sans); white-space: nowrap; }
.pku-tag .pku-i { width: 16px; height: 16px; }
.pku-tag--social { background: var(--tag-social); }
.pku-tag--shuffle { background: var(--tag-shuffle); }
.pku-tag--level { background: var(--tag-level); }
.pku-tag--learn { background: var(--tag-learn); }
.pku-tag--clinic { background: var(--white); border-color: var(--ink); }
.pku-tag--new { background: var(--ink); color: var(--ball); }
.pku-tag--quiet, .pku-terms a { background: var(--canvas); }
.pku-tag--place { background: transparent; border-color: currentColor; color: inherit; }

/* ---------- language switcher (Polylang dropdown) ---------- */
.pku-lang { position: relative; display: inline-flex; align-items: center; justify-self: start; color: inherit; }
.pku-lang select { appearance: none; -webkit-appearance: none; min-height: 44px; padding: 10px 36px 10px 16px; border: 2px solid currentColor; border-radius: var(--radius-md); background: transparent; color: inherit; font: 600 15px/1.2 var(--font-sans); cursor: pointer; }
.pku-lang select option { color: var(--ink); background: var(--white); }
.pku-lang .pku-i { position: absolute; pointer-events: none; }
.pku-lang .pku-i--chev { right: 12px; width: 18px; height: 18px; }

/* ---------- sidebar (desktop) and menu panel (phone) ---------- */
.pku-sidebar { display: flex; flex-direction: column; gap: 28px; width: 320px; min-height: 100vh; padding: 28px 32px 24px; background: var(--ball); color: var(--ink); }
.pku-sidebar__logo { display: block; width: 100%; max-width: 256px; }
.pku-sidebar__logo img { display: block; width: 100%; height: auto; }
.pku-sidebar .pku-lang { align-self: flex-start; }
.pku-sidebar .pku-actions { flex-direction: column; align-items: stretch; gap: 14px; }
.pku-sidebar .pku-note { color: var(--ink); align-self: center; font-size: 20px; }
.pku-sidebar__legal { margin: 0; font-size: 13px; line-height: 1.4; }
.pku-nav { margin: 0; padding: 0; list-style: none; }
.pku-nav li { --pku-navline: color-mix(in srgb, var(--ink) 40%, transparent); background: linear-gradient(90deg, var(--pku-navline) 62%, transparent 0) left bottom / 16px 2px repeat-x; }
.pku-nav li:hover, .pku-nav li:focus-within { --pku-navline: var(--ink); }
.pku-nav a { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0 12px; text-decoration: none; font-family: var(--font-display); font-stretch: 75%; font-weight: 800; font-size: 44px; line-height: 0.95; text-transform: uppercase; }
.pku-arrow { --b-h: 14px; --b-r: -14deg; --b-sq: 0.86; --b-d: 0.9s; position: relative; display: block; width: 40px; height: 40px; flex: none; }
.pku-arrow::before { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: var(--radius-pill); background: url("data:image/webp;base64,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") center / contain no-repeat; transform-origin: 50% 100%; }
.pku-arrow::after { content: ""; position: absolute; left: 6px; right: 6px; bottom: -5px; height: 6px; border-radius: 50%; background: color-mix(in srgb, var(--ink) 45%, transparent); opacity: 0; transform-origin: 50% 50%; }
.pku-arrow .pku-i { display: none; }
.pku-nav li:nth-child(2) .pku-arrow { --b-h: 18px; --b-r: 16deg; --b-d: 0.8s; }
.pku-nav li:nth-child(3) .pku-arrow { --b-h: 11px; --b-r: -24deg; --b-d: 1s; }
.pku-nav li:nth-child(4) .pku-arrow { --b-h: 20px; --b-r: 10deg; --b-d: 0.85s; }
.pku-nav li:nth-child(5) .pku-arrow { --b-h: 15px; --b-r: -30deg; --b-d: 0.95s; }
@keyframes pku-ball-bounce {
  0%, 100% { transform: translateY(0) rotate(0deg) scale(1, 1); animation-timing-function: cubic-bezier(.3, 0, .6, 1); }
  10% { transform: translateY(0) rotate(0deg) scale(1.14, var(--b-sq)); animation-timing-function: cubic-bezier(.15, .7, .35, 1); }
  45% { transform: translateY(calc(var(--b-h) * -1)) rotate(var(--b-r)) scale(.95, 1.06); animation-timing-function: cubic-bezier(.6, 0, .85, .35); }
  78% { transform: translateY(0) rotate(0deg) scale(1.1, .88); animation-timing-function: cubic-bezier(.2, .6, .4, 1); }
  88% { transform: translateY(calc(var(--b-h) * -0.25)) rotate(calc(var(--b-r) * -0.2)) scale(1, 1); animation-timing-function: cubic-bezier(.6, 0, .85, .35); }
}
@keyframes pku-ball-shadow {
  0%, 100% { transform: scaleX(1); opacity: .45; }
  10% { transform: scaleX(1.15); opacity: .55; }
  45% { transform: scaleX(.5); opacity: .15; }
  78% { transform: scaleX(1.12); opacity: .55; }
  88% { transform: scaleX(.85); opacity: .35; }
}
/* Without the theme script the ball bounces on hover; with it (html.pku-js) the script starts each bounce with a new random height, spin and speed, and lets the last bounce land before it stops. */
html:not(.pku-js) .pku-nav a:hover .pku-arrow::before, html:not(.pku-js) .pku-nav a:focus-visible .pku-arrow::before, .pku-arrow.is-bouncing::before { animation: pku-ball-bounce var(--b-d) infinite; }
html:not(.pku-js) .pku-nav a:hover .pku-arrow::after, html:not(.pku-js) .pku-nav a:focus-visible .pku-arrow::after, .pku-arrow.is-bouncing::after { animation: pku-ball-shadow var(--b-d) infinite; }
/* The current page's ball has no ring: it turns slowly, like the ball art, and hands over to the bounce while it bounces. */
.pku-nav a[aria-current="page"] .pku-arrow:not(.is-bouncing)::before { transform-origin: 50% 50%; animation: pku-ballart-spin 12s linear infinite; }
@media (prefers-reduced-motion: reduce) { .pku-arrow::before, .pku-arrow::after { animation: none !important; } }
.pku-menu { display: flex; width: 100%; min-height: 100%; }
.pku-menu__bar { display: flex; align-items: center; justify-content: space-between; }
.pku-menu__bar img { width: auto; height: 56px; }
.pku-menu .pku-nav a { font-size: 46px; }

/* ---------- mobile top bar ---------- */
.pku-topbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 12px; padding: 10px 16px; background: var(--ball); color: var(--ink); }
.pku-topbar__logo { display: flex; align-items: center; min-height: 44px; }
.pku-topbar__logo img { display: block; width: auto; height: 40px; }
.pku-topbar .pku-lang { margin-left: auto; }
.pku-iconbtn { display: grid; place-items: center; width: 48px; height: 48px; flex: none; border: 0; border-radius: var(--radius-md); background: var(--ink); color: var(--ball); cursor: pointer; }
.pku-iconbtn .pku-i { width: 24px; height: 24px; }

/* ---------- 1 · intro / special event ---------- */
.pku-intro { overflow: hidden; }
.pku-intro__title { position: relative; z-index: 1; margin-bottom: clamp(20px, 3cqi, 36px); }
.pku-intro__media { position: relative; margin: 0; }
.pku-intro__media > img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-lg); }
.pku-sticker { position: absolute; top: -22px; right: 14px; display: grid; place-items: center; width: 116px; height: 116px; padding: 14px; border-radius: 50%; background: var(--ball); color: var(--ink); text-align: center; font-family: var(--font-display); font-stretch: 75%; font-weight: 800; font-size: 21px; line-height: 0.95; text-transform: uppercase; transform: rotate(10deg); box-shadow: 0 0 0 6px var(--court); }
.pku-sticker small { display: block; font-size: 15px; }
.pku-intro__media > .pku-sticker--badge { width: 116px; height: 116px; aspect-ratio: 1; padding: 0; border-radius: 50%; background: var(--court); object-fit: contain; transform: rotate(-8deg); transition: transform .4s cubic-bezier(.3, 1.4, .5, 1); }
.pku-intro__media:hover > .pku-sticker--badge { transform: rotate(4deg) scale(1.04); }
.pku-intro__body { display: grid; gap: 28px; margin-top: clamp(28px, 4cqi, 48px); }
.pku-intro__body .pku-actions .pku-btn { flex: 1 1 220px; }
.pku-scrollcue { position: absolute; right: 18px; top: 50%; display: none; flex-direction: column; align-items: center; gap: 12px; color: var(--on-court-mute); text-decoration: none; font: 600 14px/1 var(--font-sans); }
.pku-scrollcue span { writing-mode: vertical-rl; }
.pku-scrollcue i { position: relative; width: 22px; height: 64px; border: 2px solid currentColor; border-radius: var(--radius-pill); }
.pku-scrollcue i::after { content: ""; position: absolute; left: 50%; top: 6px; width: 10px; height: 10px; margin-left: -5px; border-radius: 50%; background: var(--ring); animation: pku-drop 1.8s ease-in-out infinite; }
@keyframes pku-drop { 0% { transform: translateY(0); opacity: 0; } 20% { opacity: 1; } 80% { transform: translateY(36px); opacity: 1; } 100% { transform: translateY(40px); opacity: 0; } }
@container main (min-width: 720px) {
  .pku-intro__media > img { aspect-ratio: 16 / 8; }
  .pku-sticker { width: 148px; height: 148px; font-size: 27px; top: -40px; right: 40px; }
  .pku-intro__media > .pku-sticker--badge { width: 148px; height: 148px; }
  .pku-sticker small { font-size: 18px; }
}
@container main (min-width: 900px) {
  .pku-intro__body { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); column-gap: 56px; align-items: start; }
  .pku-intro__body .pku-actions { flex-direction: column; align-items: stretch; }
  .pku-intro__body .pku-actions .pku-btn { flex: none; }
  .pku-scrollcue { display: flex; }
}

/* ---------- 2 · polaroid wall ---------- */
.pku-polaroids { overflow: hidden; }
.pku-wall { display: flex; gap: 16px; margin: 0; padding: 20px 16px 40px; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.pku-wall::-webkit-scrollbar { display: none; }
.pku-polaroid { position: relative; flex: none; width: 74%; max-width: 300px; scroll-snap-align: center; transition: transform .25s ease, rotate .25s ease; }
.pku-polaroid figure { margin: 0; padding: 12px 12px 0; border-radius: var(--radius-xs); background: var(--white); box-shadow: var(--shadow-polaroid); }
.pku-polaroid img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: var(--radius-xs); }
.pku-polaroid figcaption { display: grid; gap: 2px; padding: 12px 4px 18px; font-family: var(--font-hand); }
.pku-polaroid__title { font-weight: 600; font-size: 22px; line-height: 1.15; }
.pku-polaroid__text { font-size: 17px; line-height: 1.3; color: var(--body); }
.pku-polaroid:nth-child(odd)::before { content: ""; position: absolute; z-index: 1; top: -6px; left: 50%; width: 92px; height: 26px; margin-left: -46px; background: color-mix(in srgb, var(--ball) 70%, transparent); transform: rotate(-4deg); }
.pku-polaroid:nth-child(6n+1) { rotate: -3deg; }
.pku-polaroid:nth-child(6n+2) { rotate: 2deg; }
.pku-polaroid:nth-child(6n+3) { rotate: -1.5deg; }
.pku-polaroid:nth-child(6n+4) { rotate: 3deg; }
.pku-polaroid:nth-child(6n+5) { rotate: -2.5deg; }
.pku-polaroid:nth-child(6n) { rotate: 1.5deg; }
.pku-polaroid:hover { rotate: 0deg; transform: scale(1.04); z-index: 5; }
@container main (min-width: 720px) {
  .pku-wall { flex-wrap: wrap; justify-content: center; overflow: visible; padding: 24px clamp(16px, 5cqi, 64px) 48px; gap: 0; }
  .pku-polaroid { width: 31%; margin: 0 -1% 24px; }
  .pku-polaroid:nth-child(even) { transform: translateY(28px); }
  .pku-polaroid:nth-child(even):hover { transform: translateY(28px) scale(1.04); }
}
@container main (min-width: 1080px) {
  .pku-wall { flex-wrap: nowrap; max-width: 1280px; margin-inline: auto; padding-bottom: 72px; }
  .pku-polaroid { width: 18.5%; margin: 0 -1.2%; }
  .pku-polaroid:nth-child(6n+1) { rotate: -6deg; transform: translateY(36px); }
  .pku-polaroid:nth-child(6n+2) { rotate: 4deg; transform: translateY(-6px); }
  .pku-polaroid:nth-child(6n+3) { rotate: -2deg; transform: translateY(58px); }
  .pku-polaroid:nth-child(6n+4) { rotate: 6deg; transform: translateY(8px); }
  .pku-polaroid:nth-child(6n+5) { rotate: -4deg; transform: translateY(44px); }
  .pku-polaroid:nth-child(6n) { rotate: 3deg; transform: translateY(-4px); }
  .pku-polaroid:hover { rotate: 0deg; transform: translateY(16px) scale(1.06); }
}

/* ---------- 3 · session types (categories) ---------- */
.pku-sessions { padding-bottom: 0; }
.pku-sessions__stage { padding-bottom: clamp(56px, 8.5cqi, 96px); background: linear-gradient(to bottom, transparent 0 200px, var(--ink) 200px); }
/* The grid is twelve columns wide and each card spans a share of it, so the
   number of cards decides the layout: four across as before, thirds for three,
   five or six, halves for two, and the full width for one. */
.pku-sessions__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(16px, 2.2cqi, 24px); margin: 0; padding: 0; list-style: none; }
.pku-sessions__grid > li { grid-column: span 12; display: grid; container: pku-session / inline-size; }
@container main (min-width: 600px) { .pku-sessions__grid > li { grid-column: span 6; } }
@container main (min-width: 1000px) {
  .pku-sessions__grid:has(> :nth-child(3):last-child) > li,
  .pku-sessions__grid:has(> :nth-child(5):last-child) > li,
  .pku-sessions__grid:has(> :nth-child(6):last-child) > li { grid-column: span 4; }
  .pku-sessions__grid:has(> :nth-child(5):last-child) > :nth-child(4) { grid-column: 3 / span 4; }
  .pku-sessions__grid:has(> :nth-child(2):last-child) > li { grid-column: span 6; }
  .pku-sessions__grid:has(> :only-child) > li { grid-column: span 12; }
}
@container main (min-width: 1080px) { .pku-sessions__grid > li { grid-column: span 3; } }
.pku-session { --pku-media: 4 / 3.4; display: flex; flex-direction: column; height: 100%; overflow: hidden; border-radius: var(--radius-lg); background: var(--tag-social); color: var(--ink); transition: transform .2s ease, box-shadow .2s ease; }
.pku-session:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.pku-session--shuffle { background: var(--tag-shuffle); }
.pku-session--level { background: var(--tag-level); }
.pku-session--learn { background: var(--tag-learn); }
.pku-session__media { flex: none; position: relative; aspect-ratio: var(--pku-media); background: var(--court); }
.pku-session__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pku-session__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(14,15,12,0.88) 0%, rgba(14,15,12,0.35) 45%, rgba(14,15,12,0) 70%); }
.pku-session__over { position: absolute; z-index: 1; left: 0; right: 0; bottom: 0; display: grid; gap: 12px; padding: 20px; color: var(--on-court); }
.pku-session__body { display: flex; flex-direction: column; gap: 20px; flex: 1; padding: 22px 22px 24px; }
.pku-session__body p { margin: 0; }
.pku-session__body > p { font-size: 16px; line-height: 1.55; }
.pku-slots { display: grid; margin: 0; padding: 0; list-style: none; }
.pku-slot { display: grid; gap: 7px; align-content: start; padding: 14px 0; background: linear-gradient(90deg, var(--ink) 62%, transparent 0) left top / 12px 1.5px repeat-x; }
.pku-slot:last-child { padding-bottom: 0; }
.pku-slot__row { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; font-size: 15px; line-height: 1.35; }
.pku-slot__row .pku-i { width: 18px; height: 18px; }
/* In a narrow card the place line is a two-column grid, so a long place name
   wraps under itself and the Indoor/Outdoor pill lines up with it instead of
   leaving the pin stranded on a line of its own. */
.pku-slot__row + .pku-slot__row { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 6px; align-items: start; }
.pku-slot__row + .pku-slot__row > .pku-i { margin-top: 2px; }
.pku-slot__row + .pku-slot__row > .pku-tag { grid-column: 2; justify-self: start; }
.pku-slot__row a { font-weight: 600; text-underline-offset: 3px; }
.pku-slot .pku-tag { min-height: 24px; padding: 2px 8px; gap: 5px; font-size: 12.5px; }
.pku-slot .pku-tag .pku-i { width: 14px; height: 14px; }
.pku-session .pku-btn { margin-top: auto; align-self: stretch; }
/* A card that gets a wide share of the grid takes a cinematic photo, roomier
   padding and its times side by side, instead of one squeezed column. */
@container pku-session (min-width: 380px) {
  .pku-session { --pku-media: 16 / 9; }
  .pku-session__over { gap: 14px; padding: 24px 26px; }
  .pku-session__body { gap: 24px; padding: 26px 26px 28px; }
  .pku-session__body > p { max-width: 48ch; font-size: 17px; }
  .pku-slots { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); column-gap: 28px; }
  .pku-slots:has(> :nth-child(4)) { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
  .pku-slot:last-child { padding-bottom: 14px; }
  .pku-slot__row + .pku-slot__row { display: flex; }
  .pku-slot .pku-tag { font-size: 13px; padding: 2px 9px; }
  .pku-session .pku-btn { align-self: start; }
}
/* One card on its own turns on its side, so the photo stays a photo. */
@container pku-session (min-width: 680px) {
  .pku-session { flex-direction: row; }
  .pku-session__media { width: 40%; aspect-ratio: auto; }
  .pku-session__body { flex: 1; padding: 30px 32px 32px; }
}
.pku-onrequest { display: grid; gap: 16px; align-items: center; margin-top: clamp(16px, 2.2cqi, 24px); padding: 24px; border-radius: var(--radius-lg); background: var(--court-raised); color: var(--on-court); }
.pku-onrequest p { margin: 0; color: var(--on-court-mute); }
.pku-onrequest .pku-h-title { color: var(--on-court); }
.pku-onrequest .pku-tag--clinic { border-color: var(--white); }
@container main (min-width: 720px) { .pku-onrequest { grid-template-columns: auto minmax(0, 1fr) auto; gap: 24px; padding: 24px 28px; } }

/* ---------- 4 · reviews (Strong Testimonials view) ---------- */
.pku-reviews__list { display: grid; gap: 28px; margin: 0; padding: 0; list-style: none; }
.pku-review { --rv-bg: var(--white); position: relative; display: grid; gap: 18px; align-content: start; margin: 0 0 18px; padding: clamp(24px, 3cqi, 36px); border-radius: var(--radius-lg); background: var(--rv-bg); }
.pku-review::after { content: ""; position: absolute; left: 44px; bottom: -18px; border-style: solid; border-width: 18px 22px 0 0; border-color: var(--rv-bg) transparent transparent transparent; }
/* Bubbles take the colour of the reviewer's session tag (pku-review--social|shuffle|level|learn); without one they take the four tag colours in turn */
.pku-reviews__list > li:nth-child(4n+1) .pku-review { --rv-bg: var(--tag-social); }
.pku-reviews__list > li:nth-child(4n+2) .pku-review { --rv-bg: var(--tag-shuffle); }
.pku-reviews__list > li:nth-child(4n+3) .pku-review { --rv-bg: var(--tag-level); }
.pku-reviews__list > li:nth-child(4n+4) .pku-review { --rv-bg: var(--tag-learn); }
.pku-reviews__list > li .pku-review.pku-review--social { --rv-bg: var(--tag-social); }
.pku-reviews__list > li .pku-review.pku-review--shuffle { --rv-bg: var(--tag-shuffle); }
.pku-reviews__list > li .pku-review.pku-review--level { --rv-bg: var(--tag-level); }
.pku-reviews__list > li .pku-review.pku-review--learn { --rv-bg: var(--tag-learn); }
.pku-review blockquote { margin: 0; font-size: 19px; line-height: 1.55; text-wrap: pretty; }
.pku-reviews__list > li:first-child blockquote { font-family: var(--font-display); font-weight: 700; font-size: clamp(24px, 2.7cqi, 32px); line-height: 1.15; letter-spacing: -0.01em; }
.pku-review__mark { height: 0.62em; font-family: var(--font-display); font-weight: 800; font-size: 96px; line-height: 0.9; }
.pku-stars { display: flex; gap: 2px; }
.pku-stars .pku-i { width: 18px; height: 18px; }
.pku-review cite { font-style: normal; font-size: 15px; line-height: 1.3; font-weight: 600; }
.pku-review cite span { display: block; font-weight: 400; color: var(--body); }
.pku-review cite span { color: color-mix(in srgb, var(--ink) 72%, transparent); }
@container main (min-width: 900px) {
  .pku-reviews__list { grid-template-columns: 1.35fr 1fr 1fr; gap: 24px; align-items: start; }
  .pku-reviews__list > li:nth-child(2) { margin-top: 56px; }
  .pku-reviews__list > li:nth-child(3) { margin-top: 20px; }
}

/* more than three reviews: one sideways strip, moved by the arrows, by swiping or with the keyboard */
.pku-reviews__list:has(> li:nth-child(4)) { display: flex; gap: 24px; align-items: flex-start; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
.pku-reviews__list:has(> li:nth-child(4))::-webkit-scrollbar { display: none; }
.pku-reviews__list:has(> li:nth-child(4)) > li { flex: 0 0 85%; min-width: 0; margin-top: 0; scroll-snap-align: start; }
.pku-reviews__list:focus-visible { outline-offset: 6px; }
@container main (min-width: 640px) { .pku-reviews__list:has(> li:nth-child(4)) > li { flex-basis: calc((100% - 24px) / 2); } }
@container main (min-width: 900px) {
  .pku-reviews__list:has(> li:nth-child(4)) > li { flex-basis: calc((100% - 48px) / 3); }
  .pku-reviews__list:has(> li:nth-child(4)) > li:nth-child(3n+2) { margin-top: 56px; }
  .pku-reviews__list:has(> li:nth-child(4)) > li:nth-child(3n) { margin-top: 20px; }
}
.pku-reviews__nav { display: none; justify-content: flex-end; gap: 12px; margin-top: 8px; }
.pku-reviews:has(.pku-reviews__list > li:nth-child(4)) .pku-reviews__nav { display: flex; }
.pku-iconbtn:disabled { opacity: 0.3; cursor: default; }
.pku-i--back { transform: scaleX(-1); }
@media (prefers-reduced-motion: reduce) { .pku-reviews__list { scroll-behavior: auto; } }

/* ---------- 5 · call to action ---------- */
.pku-cta { overflow: hidden; padding-block: clamp(72px, 11cqi, 128px) 230px; }
.pku-cta__inner { position: relative; z-index: 1; display: grid; gap: 28px; max-width: 640px; }
.pku-cta__inner p { margin: 0; color: var(--on-court-mute); }
.pku-cta .pku-h-section { font-size: clamp(56px, 9.4cqi, 112px); }
.pku-cta .pku-note { margin-top: 4px; }
.pku-ballart { position: absolute; right: -90px; bottom: -150px; width: 340px; height: 340px; pointer-events: none; }
.pku-ballart { object-fit: contain; animation: pku-ballart-spin 90s linear infinite; }
@keyframes pku-ballart-spin { to { transform: rotate(360deg); } }
@container main (min-width: 900px) {
  .pku-cta { padding-bottom: clamp(72px, 11cqi, 128px); }
  .pku-cta__inner { max-width: min(560px, 58cqi); }
  .pku-ballart { right: -10cqi; top: 50%; bottom: auto; width: min(520px, 46cqi); height: min(520px, 46cqi); margin-top: max(-260px, -23cqi); }
}

/* ---------- 6 · locations ---------- */
.pku-locations__grid { display: grid; gap: 24px; }
@container main (min-width: 960px) { .pku-locations__grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 32px; align-items: start; } .pku-map { position: sticky; top: 24px; } }
.pku-map { margin: 0; overflow: hidden; border-radius: var(--radius-lg); background: var(--canvas); }
.pku-map svg { display: block; width: 100%; height: auto; }
.pku-map figcaption { padding: 10px 16px 12px; font-size: 13px; color: var(--mute); }
.pku-map .land { fill: var(--canvas); } .pku-map .park { fill: var(--map-park); } .pku-map .water { fill: var(--map-water); } .pku-map .road { stroke: var(--white); fill: none; stroke-linecap: round; }
.pku-map .rail { stroke: var(--field); fill: none; stroke-dasharray: 6 5; stroke-width: 2; }
.pku-map .town { fill: var(--body); font: 700 15px var(--font-sans); letter-spacing: .02em; }
.pku-map .pin-o { fill: var(--ink); } .pku-map .pin-i { fill: var(--ball); } .pku-map .pin-n { fill: var(--ball); font: 800 16px var(--font-sans); text-anchor: middle; }
.pku-map .pin-l { fill: var(--ink); font: 700 14px var(--font-sans); }
.pku-map .pin-lb { fill: var(--white); }
.pku-places { display: grid; gap: 16px; margin: 0; padding: 0; list-style: none; }
.pku-place { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 4px 16px; padding: 22px; border-radius: var(--radius-lg); background: var(--canvas); }
.pku-place__n { grid-row: span 3; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--ink); color: var(--ball); font: 800 18px/1 var(--font-sans); }
.pku-place__head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.pku-place address { font-style: normal; font-size: 15px; line-height: 1.5; }
.pku-place address a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; font-weight: 600; text-underline-offset: 4px; }
.pku-place address .pku-i { width: 18px; height: 18px; }
.pku-times { display: grid; gap: 8px; margin: 6px 0 0; padding: 12px 0 0; list-style: none; background: linear-gradient(90deg, var(--field) 62%, transparent 0) left top / 12px 1.5px repeat-x; }
.pku-times li { display: grid; grid-template-columns: 148px minmax(0, 1fr); align-items: center; gap: 8px; font-size: 15px; line-height: 1.3; }
.pku-times b { font-weight: 600; }
.pku-times .pku-tag { justify-self: start; min-height: 24px; padding: 2px 9px; font-size: 13px; }
@container main (max-width: 420px) { .pku-place { grid-template-columns: 1fr; padding: 20px; } .pku-place__n { grid-row: auto; width: 36px; height: 36px; font-size: 16px; } }

/* ---------- 7 · news (Query Loop) ---------- */
/* Counted like the session grid: three across, halves for two or four posts. */
.pku-posts { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 20px; margin: 0; padding: 0; list-style: none; }
.pku-posts > li { grid-column: span 6; display: grid; }
@container main (min-width: 720px) {
  .pku-posts > li { grid-column: span 3; }
}
@container main (min-width: 1000px) {
  .pku-posts { gap: 24px; }
  .pku-posts > li { grid-column: span 2; }
  .pku-posts:has(> :only-child) > li,
  .pku-posts:has(> :nth-child(2):last-child) > li,
  .pku-posts:has(> :nth-child(4):last-child) > li { grid-column: span 3; }
  .pku-posts:has(> :nth-child(5):last-child) > :nth-child(4) { grid-column: 2 / span 2; }
}
.pku-post { display: flex; flex-direction: column; height: 100%; overflow: hidden; border-radius: var(--radius-lg); background: var(--white); transition: transform .2s ease, box-shadow .2s ease; }
.pku-post:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.pku-post img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.pku-post__body { display: flex; flex-direction: column; gap: 12px; flex: 1; padding: 22px 24px 26px; }
.pku-post__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; color: var(--mute); font-size: 14px; font-weight: 600; }
.pku-post__body p { margin: 0; color: var(--body); }
.pku-post__body .pku-h-title a { text-decoration: none; }
.pku-post__body .pku-h-title a:hover { text-decoration: underline; text-decoration-color: var(--ball); text-decoration-thickness: 3px; text-underline-offset: 4px; }
.pku-post .pku-link { margin-top: auto; padding-top: 6px; }

/* ---------- 8 · event sign-up form (Forminator, design style "None") ---------- */
.pku-formcard { container: formcard / inline-size; max-width: 780px; margin-inline: auto; padding: clamp(28px, 5cqi, 56px) clamp(20px, 5cqi, 56px); border-radius: var(--radius-lg); background: var(--white); color: var(--ink); }
.pku-formcard__head { display: grid; gap: 12px; margin-bottom: 28px; text-align: center; justify-items: center; }
.pku-formcard__head p { margin: 0; color: var(--body); max-width: 44ch; }
.pku-formcard .pku-h-section { font-size: clamp(42px, 6cqi, 68px); }
.pku-form { display: grid; gap: 28px; }
@container formcard (min-width: 640px) { .pku-form { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 20px; } .pku-field--full { grid-column: 1 / -1; } }
.pku-field { display: grid; gap: 10px; align-content: start; margin: 0; padding: 0; border: 0; min-width: 0; }
.pku-field > label, .pku-field > legend { padding: 0; font: 600 15px/1.2 var(--font-sans); }
.pku-field > legend { margin-bottom: 10px; }
.pku-control { position: relative; display: flex; align-items: center; }
.pku-control > .pku-i { position: absolute; left: 14px; color: var(--body); pointer-events: none; }
.pku-control > .pku-i--chev { left: auto; right: 14px; }
.pku-input { width: 100%; min-height: 52px; padding: 12px 14px 12px 46px; border: 2px solid var(--field); border-radius: var(--radius-md); background: var(--white); color: var(--ink); font: 400 17px/1.3 var(--font-sans); appearance: none; -webkit-appearance: none; }
.pku-input::placeholder { color: var(--mute); }
select.pku-input { padding-right: 44px; cursor: pointer; }
.pku-input:hover { border-color: var(--ink); }
.pku-input:focus-visible { border-color: var(--ink); outline: 3px solid var(--focus); outline-offset: 2px; }
.pku-field--error .pku-input { border-color: var(--danger); }
.pku-help { margin: 0; font-size: 14px; line-height: 1.4; color: var(--mute); }
.pku-error { margin: 0; display: flex; gap: 6px; align-items: center; font-size: 14px; font-weight: 600; color: var(--danger); }
.pku-seg { display: flex; flex-wrap: wrap; gap: 8px; }
.pku-seg label { position: relative; }
.pku-seg input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.pku-seg span { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 16px; border: 2px solid var(--ink); border-radius: var(--radius-pill); font: 600 15px/1.2 var(--font-sans); }
.pku-seg input:checked + span { background: var(--ink); color: var(--ball); }
.pku-seg input:focus-visible + span { outline: 3px solid var(--focus); outline-offset: 3px; }
.pku-check { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 12px; align-items: start; font-size: 15px; line-height: 1.45; color: var(--body); }
.pku-check input { width: 24px; height: 24px; margin: 0; accent-color: var(--ink); }
.pku-form__submit { display: flex; justify-content: center; padding-top: 4px; }
/* Choice tiles: the "I want to" radio as equal tiles, never a ragged row of pills */
.pku-form .pku-seg { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.pku-form .pku-seg label { display: grid; }
.pku-form .pku-seg span { flex-direction: column; justify-content: center; gap: 8px; min-height: 84px; padding: 14px 12px; border-radius: var(--radius-md); text-align: center; line-height: 1.25; }
.pku-form .pku-seg span .pku-i { width: 22px; height: 22px; }
.pku-form .pku-seg input:not(:checked):hover + span { background: var(--canvas); }
@container formcard (max-width: 459px) { .pku-form .pku-seg { grid-template-columns: 1fr; } .pku-form .pku-seg span { flex-direction: row; justify-content: flex-start; min-height: 52px; text-align: left; gap: 12px; } }
/* Consent sits apart from the fields, under a court line */
.pku-form > .pku-check, .pku-form > .pku-field--consent { grid-column: 1 / -1; padding-top: 24px; background: linear-gradient(90deg, var(--line) 62%, transparent 0) left top / 16px 2px repeat-x; }
.pku-form__submit .pku-btn { min-width: min(100%, 280px); }

/* ---------- inner pages · page title (page and post variants) ---------- */
/* One header for both: the same 960px column as the Prose wide column, the same h1 size, a halftone ball turning in the corner.
   Page: h1 in capitals and an optional lead. Post: breadcrumb and a dashed court line, then the h1 in sentence case, lead, meta row,
   reading time as a handwritten note, and the featured image hanging mostly onto the white section below. */
.pku-pagetitle { --pku-col: min(1052px, 100cqi - 2 * clamp(16px, 5cqi, 64px)); overflow: hidden; padding-block: clamp(40px, 6cqi, 72px); }
.pku-pagetitle > .pku-wrap { position: relative; }
.pku-pagetitle__inner { display: grid; gap: 16px; width: 100%; }
.pku-pagetitle h1 { margin: 0; max-width: min(760px, 88%); overflow-wrap: break-word; hyphens: auto; }
.pku-pagetitle--post h1 { text-transform: none; line-height: 0.92; letter-spacing: -0.01em; }
.pku-pagetitle .pku-lead { max-width: 34ch; color: var(--on-court-mute); }
.pku-pagetitle .pku-lead p { margin: 0; }
.pku-pagetitle--post .pku-lead { max-width: 48ch; }
/* The halftone ball: decorative, top right, two thirds cropped by the band, one turn every 90 seconds */
.pku-pagetitle__ball { --s: clamp(120px, 28cqi, 340px); position: absolute; top: calc(var(--s) * -0.45); right: calc(var(--s) * -0.45); width: var(--s); height: var(--s); margin: 0; pointer-events: none; animation: pku-ballart-spin 90s linear infinite; }
.pku-pagetitle__ball img, img.pku-pagetitle__ball { display: block; object-fit: contain; }
.pku-pagetitle__ball img { width: 100%; height: 100%; }
/* Breadcrumb (posts only): Home, News, the post; ball dots between, a dashed court line under it like the menu's */
.pku-crumbs { padding-bottom: 20px; margin-bottom: 16px; background: linear-gradient(90deg, color-mix(in srgb, var(--on-court) 40%, transparent) 62%, transparent 0) left bottom / 16px 2px repeat-x; }
.pku-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin: 0; padding: 0; list-style: none; font-size: 15px; line-height: 1.3; font-weight: 600; color: var(--on-court-mute); }
.pku-crumbs li { display: inline-flex; align-items: center; gap: 12px; min-width: 0; white-space: nowrap; }
.pku-crumbs li + li::before { content: ""; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--ball); }
.pku-crumbs a { position: relative; color: inherit; text-decoration: none; }
.pku-crumbs a::after { content: ""; position: absolute; inset: -13px -6px; } /* 19.5px line + 2 x 13px = 45px tap area */
.pku-crumbs a:hover { color: var(--on-court); text-decoration: underline; text-decoration-color: var(--ball); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.pku-crumbs [aria-current] { overflow: hidden; text-overflow: ellipsis; max-width: 40ch; color: var(--on-court); }
@container main (max-width: 639px) { .pku-crumbs li:last-child { display: none; } }
/* Meta row (posts only): `meta` style in on-court-mute (7.6:1), never tracked capitals; icons are CSS masks on the core blocks */
.pku-pagetitle__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 8px 0 0; font-size: 15px; line-height: 1.3; font-weight: 600; color: var(--on-court-mute); }
.pku-pagetitle__meta > * { display: inline-flex; align-items: center; gap: 4px; min-height: 28px; margin: 0; }
.pku-pagetitle__meta > :is(.wp-block-post-date, .wp-block-post-author-name)::before { content: ""; flex: none; width: 18px; height: 18px; background: currentColor; -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }
.pku-pagetitle__meta > .wp-block-post-date__modified-date::before { content: none; }
.pku-pagetitle__meta > .wp-block-post-date { white-space: nowrap; }
.pku-pagetitle__meta .wp-block-post-author-name a { color: var(--on-court); }
/* Reading time as the section's one handwritten note: Shantell Sans in ball, tilted, with the scribble arrow pointing down at the story */
.pku-pagetitle__meta > .wp-block-post-time-to-read { gap: 6px; align-items: flex-end; margin-left: auto; font-family: var(--font-hand); font-size: 22px; line-height: 1.15; font-weight: 600; color: var(--ball); white-space: nowrap; transform: rotate(-3deg); transform-origin: left center; }
.pku-pagetitle__meta > .wp-block-post-time-to-read::after { content: ""; flex: none; width: 44px; height: 28px; background: currentColor; -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; transform: translateY(14px) rotate(20deg); }
@container main (max-width: 639px) { .pku-pagetitle__meta > .wp-block-post-time-to-read { margin-left: 0; flex-basis: 100%; } }
/* Post Terms as tags: one pill per term, the separator hidden, a 45px-tall tap area around each link */
.pku-terms { gap: 8px; flex-wrap: wrap; }
.pku-terms a { position: relative; z-index: 1; text-decoration: none; }
.pku-terms a::after { content: ""; position: absolute; inset: -10px -4px; } /* 28px pill + 2 x 10px, measured from inside the 1.5px border = 45px tall */
.pku-terms a:hover { background: var(--white); }
.pku-terms .wp-block-post-terms__separator { display: none; }
/* Featured image: 16:10 across the 960px column. Only its top 48–128px sits on court; the rest hangs on the white section below. */
.pku-pagetitle__media { position: relative; margin: 24px 0 0; }
.pku-pagetitle__media img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; border-radius: var(--radius-lg); }
.pku-pagetitle:has(.pku-pagetitle__media img) { --pku-overlap: clamp(48px, 10cqi, 128px); padding-bottom: 0; background: linear-gradient(to top, var(--white) calc(var(--pku-col) * 0.625 - var(--pku-overlap)), var(--court) 0); }
.pku-pagetitle:has(.pku-pagetitle__media img) + .pku-section { padding-top: 48px; }

/* ---------- inner pages · prose (Post Content on white) ---------- */
.pku-prose { --pku-measure: 65ch; --pku-wide: 100%; display: grid; grid-template-columns: [full-start] minmax(0, 1fr) [wide-start] minmax(0, calc((var(--pku-wide) - var(--pku-measure)) / 2)) [content-start] min(100%, var(--pku-measure)) [content-end] minmax(0, calc((var(--pku-wide) - var(--pku-measure)) / 2)) [wide-end] minmax(0, 1fr) [full-end]; font-size: 17px; line-height: 1.6; color: var(--ink); }
.pku-prose > * { grid-column: content; min-width: 0; margin-block: 0; }
.pku-prose > * + * { margin-top: 1.25em; }
.pku-prose > .alignwide { grid-column: wide; }
.pku-prose > .alignfull { grid-column: full; }
.pku-prose h2 { margin-top: 2em; font-family: var(--font-display); font-weight: 700; font-size: clamp(24px, 2.5cqi, 28px); line-height: 1.05; letter-spacing: -0.01em; text-wrap: balance; }
.pku-prose h3 { margin-top: 1.75em; font-family: var(--font-display); font-stretch: 75%; font-weight: 700; font-size: 20px; line-height: 1; letter-spacing: 0.01em; text-transform: uppercase; }
.pku-prose > h2 + *, .pku-prose > h3 + * { margin-top: 0.6em; }
.pku-prose > :first-child { margin-top: 0; }
.pku-prose .is-style-pku-lead { font-size: clamp(19px, 2.15cqi, 24px); line-height: 1.4; font-weight: 500; letter-spacing: -0.01em; text-wrap: pretty; }
.pku-prose a { font-weight: 600; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.pku-prose a:hover { background: var(--ball); }
.pku-prose ul, .pku-prose ol { padding-left: 28px; }
.pku-prose li + li, .pku-prose li > ul, .pku-prose li > ol { margin-top: 0.45em; }
.pku-prose ul { list-style: none; }
.pku-prose ul > li { position: relative; }
.pku-prose ul > li::before { content: ""; position: absolute; left: -24px; top: 0.55em; width: 10px; height: 10px; border-radius: 50%; background: var(--ball); box-shadow: inset 0 0 0 1.5px var(--ink); }
.pku-prose ol > li { padding-left: 4px; }
.pku-prose ol > li::marker { font-family: var(--font-display); font-weight: 700; }
.pku-prose > .wp-block-image, .pku-prose > .wp-block-quote, .pku-prose > .wp-block-table, .pku-prose > .wp-block-separator { margin-top: 2em; }
.pku-prose > .wp-block-image + *, .pku-prose > .wp-block-quote + *, .pku-prose > .wp-block-table + * { margin-top: 2em; }
.pku-prose figure { margin-inline: 0; }
.pku-prose .wp-block-image img { width: 100%; border-radius: var(--radius-lg); }
.pku-prose figcaption { margin-top: 10px; font-size: 15px; line-height: 1.5; color: var(--mute); }
.pku-prose .wp-block-quote { margin-inline: 0; padding: 0; border: 0; }
.pku-prose .wp-block-quote::before { content: "\201C"; display: block; height: 0.62em; font-family: var(--font-display); font-weight: 800; font-size: 96px; line-height: 0.9; }
.pku-prose .wp-block-quote p { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: clamp(24px, 2.5cqi, 28px); line-height: 1.15; letter-spacing: -0.01em; text-wrap: pretty; }
.pku-prose .wp-block-quote cite { display: block; margin-top: 14px; font-style: normal; font-size: 15px; line-height: 1.3; font-weight: 600; color: var(--body); }
.pku-prose .wp-block-table { overflow-x: auto; }
.pku-prose table { width: 100%; min-width: 34em; border-collapse: collapse; font-size: 15px; line-height: 1.5; font-variant-numeric: tabular-nums; }
.pku-prose th { padding: 0 16px 10px 0; border-bottom: 2px solid var(--ink); text-align: left; vertical-align: bottom; font-weight: 600; }
.pku-prose td { padding: 12px 16px 12px 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.pku-prose td:first-child { font-weight: 600; }
.pku-prose .wp-block-separator { width: 100%; height: 2px; margin: 2.5em 0 0; border: 0; opacity: 1; background: linear-gradient(90deg, var(--ink) 62%, transparent 0) left center / 16px 2px repeat-x; }
.pku-prose > .wp-block-separator + * { margin-top: 2.5em; }

/* ---------- inner pages · 404 ---------- */
.pku-notfound { padding-block: clamp(56px, 10cqi, 128px); }
.pku-notfound__inner { display: grid; gap: 24px; justify-items: start; max-width: 760px; }
.pku-notfound h1 { overflow-wrap: break-word; hyphens: auto; }
.pku-notfound .pku-lead { max-width: 34ch; color: var(--on-court-mute); }
.pku-notfound__actions { display: grid; gap: 18px; justify-items: start; }

/* ---------- inner pages · contact form (Forminator, design style "None") ---------- */
.pku-contact__grid { display: grid; gap: 32px; }
@container main (min-width: 960px) { .pku-contact__grid { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 56px; align-items: start; } }
.pku-contact .pku-formcard { max-width: none; margin: 0; }
.pku-contact .pku-formcard__head { justify-items: start; text-align: left; margin-bottom: 24px; }
.pku-contact__aside { display: grid; align-content: start; }
.pku-contact__block { display: grid; gap: 10px; padding-block: 22px; }
.pku-contact__block:first-child { padding-top: 0; }
.pku-contact__block + .pku-contact__block { background: linear-gradient(90deg, var(--ink) 62%, transparent 0) left top / 16px 2px repeat-x; }
.pku-contact__block p { margin: 0; color: var(--body); }
.pku-contact__mail { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; font-family: var(--font-display); font-weight: 700; font-size: clamp(21px, 2cqi, 24px); line-height: 1.1; overflow-wrap: anywhere; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 5px; text-decoration-color: var(--ink); }
.pku-contact__mail:hover { background: var(--ball); }
.pku-contact__mail .pku-i { width: 24px; height: 24px; }
.pku-contact__list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; color: var(--body); }
.pku-contact__list li { display: flex; gap: 10px; align-items: flex-start; }
.pku-contact__list .pku-i { width: 18px; height: 18px; margin-top: 4px; color: var(--ink); }
.pku-field__opt { font-weight: 400; color: var(--mute); }
textarea.pku-input { min-height: 168px; padding: 14px; line-height: 1.5; resize: vertical; }
.pku-notice { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 12px; align-items: start; padding: 16px 18px; border: 2px solid currentColor; border-radius: var(--radius-md); background: var(--white); font-size: 15px; line-height: 1.5; }
.pku-notice .pku-i { width: 24px; height: 24px; }
.pku-notice p { margin: 0; color: var(--ink); }
.pku-notice strong { display: block; color: inherit; }
.pku-notice--success { color: var(--success); }
.pku-notice--error { color: var(--danger); }

/* ---------- cookie banner (Complianz, styled by the theme) ---------- */
.pku-cookie { position: fixed; z-index: 60; left: 0; right: 0; bottom: 0; display: grid; gap: 14px; padding: 20px max(16px, env(safe-area-inset-right, 0px)) calc(20px + env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px)); background: var(--ink); color: var(--on-court); box-shadow: 0 -1px 0 var(--court-line); animation: pku-cookie-in .35s ease-out both; }
.pku-cookie__text { margin: 0; font-size: 15px; line-height: 1.5; color: var(--on-court); }
.pku-cookie__text a { font-weight: 600; color: var(--on-court); text-decoration: underline; text-decoration-color: var(--ball); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.pku-cookie__buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.pku-cookie__buttons .pku-btn { width: 100%; }
.pku-cookie__prefs { justify-self: start; display: inline-flex; align-items: center; min-height: 44px; padding: 0; border: 0; background: none; color: var(--on-court); font: 600 15px/1.2 var(--font-sans); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; cursor: pointer; }
.pku-cookie__prefs:hover { text-decoration-color: var(--ball); }
@keyframes pku-cookie-in { from { transform: translateY(16px); opacity: 0; } }
@media (min-width: 1200px) {
  .pku-cookie { left: 24px; right: auto; bottom: 24px; width: 400px; padding: 24px; border-radius: var(--radius-lg); box-shadow: var(--shadow-lift); }
}

/* ---------- footer ---------- */
.pku-footer { padding-block: clamp(56px, 8cqi, 88px) 28px; background: var(--ink); color: var(--on-court); }
.pku-footer .pku-footer__slogan { margin: 0 0 clamp(40px, 6cqi, 64px); font-size: clamp(56px, 10.5cqi, 132px); line-height: 0.86; color: var(--on-court); }
.pku-footer__cols { display: grid; gap: 32px; padding-top: 32px; background: linear-gradient(90deg, var(--court-line) 62%, transparent 0) left top / 16px 2px repeat-x; }
@container main (min-width: 720px) { .pku-footer__cols { grid-template-columns: 1.2fr 1fr 1fr; } }
.pku-footer h2 { margin: 0 0 12px; font: 700 18px/1.2 var(--font-display); color: var(--on-court); }
.pku-footer ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 4px; }
.pku-footer li, .pku-footer p { font-size: 15px; line-height: 1.5; color: var(--on-court-mute); margin: 0; }
.pku-footer li a { display: inline-block; padding-block: 6px; color: var(--on-court); text-decoration: none; }
.pku-footer li a:hover { text-decoration: underline; text-decoration-color: var(--ball); text-underline-offset: 4px; }
.pku-footer__brand { display: grid; gap: 16px; align-content: start; }
.pku-footer__brand img { display: block; width: 100%; max-width: 240px; height: auto; }
.pku-footer__brand > p { margin: 0; max-width: 34ch; color: var(--on-court-mute); line-height: 1.55; }
.pku-footer__base { display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--court-line); font-size: 13px; color: var(--on-court-mute); }
.pku-footer__base a { color: var(--on-court-mute); }
.pku-footer__base { align-items: center; }
/* footer: cookie settings, reopens the Complianz consent banner */
.pku-footer__legal { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0 8px; }
.pku-footer__cookie { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 2px; border: 0; background: none; font: inherit; color: var(--on-court-mute); cursor: pointer; }
.pku-footer__cookie .pku-i { width: 18px; height: 18px; color: var(--ball); transition: transform .3s ease; }
.pku-footer__cookie:hover { color: var(--on-court); text-decoration: underline; text-decoration-color: var(--ball); text-underline-offset: 3px; }
.pku-footer__cookie:hover .pku-i { transform: rotate(-25deg) scale(1.1); }
.pku-footer__cookie:focus-visible { outline: 2px solid var(--ball); outline-offset: 2px; border-radius: 4px; }
@media (prefers-reduced-motion: reduce) { .pku-footer__cookie .pku-i { transition: none; } }

/* Designer credit: a signature with the halftone ball */
.pku-credit { display: inline-flex; align-items: center; gap: 12px; margin: 0; color: var(--on-court); text-decoration: none; }
a.pku-credit:focus-visible { outline: 3px solid var(--ball); outline-offset: 6px; border-radius: 8px; }
.pku-credit__ball { position: relative; flex: none; width: 42px; height: 42px; }
.pku-credit__ball img { display: block; width: 100%; height: 100%; object-fit: contain; animation: pku-ballart-spin 24s linear infinite; }
.pku-credit__ball::after { content: ""; position: absolute; left: 14%; right: 14%; bottom: -5px; height: 5px; border-radius: 50%; background: rgba(0,0,0,.55); filter: blur(2px); }
.pku-credit__text { display: grid; justify-items: start; gap: 2px; }
.pku-credit__hand { font-family: var(--font-hand); font-weight: 600; font-size: 14px; line-height: 1; color: var(--ball); transform: rotate(-4deg); transform-origin: left bottom; }
.pku-credit__name { position: relative; font-family: var(--font-display); font-stretch: 75%; font-weight: 800; font-size: 21px; line-height: .95; letter-spacing: .005em; text-transform: uppercase; color: var(--on-court); padding-bottom: 7px; }
.pku-credit__name::after { content: ""; position: absolute; left: -2px; right: -4px; bottom: 0; height: 9px; background: var(--ball); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 14' preserveAspectRatio='none'%3E%3Cpath d='M3 9.5C40 4 92 2.5 138 4.5c22 1 42 2.6 59 5' fill='none' stroke='black' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 14' preserveAspectRatio='none'%3E%3Cpath d='M3 9.5C40 4 92 2.5 138 4.5c22 1 42 2.6 59 5' fill='none' stroke='black' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat; clip-path: inset(0 0 0 0); transition: clip-path .6s cubic-bezier(.6,0,.2,1); }
.pku-credit:hover .pku-credit__ball { animation: pku-credit-hop .9s cubic-bezier(.3,0,.3,1) 1; }
.pku-credit:hover .pku-credit__ball::after { animation: pku-credit-shadow .9s cubic-bezier(.3,0,.3,1) 1; }
.pku-credit:hover .pku-credit__name::after { animation: pku-credit-draw .7s cubic-bezier(.6,0,.2,1) 1; }
@keyframes pku-credit-hop { 0%,100% { transform: translateY(0) rotate(0); } 18% { transform: translateY(2px) scale(1.06,.92); } 45% { transform: translateY(-22px) rotate(-25deg); } 72% { transform: translateY(0) scale(1.05,.94); } 86% { transform: translateY(-5px); } }
@keyframes pku-credit-shadow { 0%,100% { transform: scale(1); opacity: 1; } 45% { transform: translateY(22px) scale(.55); opacity: .4; } }
@keyframes pku-credit-draw { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
@container main (max-width: 719px) { .pku-footer__base .pku-credit { order: -1; flex-basis: 100%; margin-bottom: 12px; } }
@media (prefers-reduced-motion: reduce) { .pku-credit__ball, .pku-credit__ball img, .pku-credit__ball::after, .pku-credit__name::after { animation: none !important; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------- preview frame helpers (not part of the theme) ---------- */
.pv-pad { padding: 24px; }
.pv-row { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.pv-phone { width: 375px; flex: none; overflow: hidden; border-radius: 28px; box-shadow: 0 0 0 10px var(--ink); background: var(--canvas); }
.pv-screen { position: relative; overflow: hidden; transform: translateZ(0); }
.pv-stack { display: grid; gap: 48px; padding: 40px; background: var(--canvas); }
.pv-h { margin: 0; font: 700 28px/1.05 var(--font-display); letter-spacing: -0.01em; color: var(--ink); }
.pv-col { display: grid; gap: 8px; align-content: start; flex: none; }
.pv-cap { margin: 0; font: 600 14px/1.3 var(--font-sans); color: var(--body); }
.pv-frame { flex: none; overflow: hidden; border-radius: 16px; background: var(--white); outline: 1px solid var(--line); }
.pv-frame--375 { width: 375px; } .pv-frame--768 { width: 768px; } .pv-frame--1120 { width: 1120px; }
.pv-phone.pv-screen .pku-cookie { left: 0; right: 0; bottom: 0; width: auto; padding: 20px 16px; border-radius: 0; box-shadow: 0 -1px 0 var(--court-line); }

/* icons: 24px line set, 2px stroke, used as CSS masks so they take currentColor */
.pku-i--arrow { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E"); }
.pku-i--clock { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E"); }
.pku-i--pin { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5a7 7 0 0 1 14 0C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E"); }
.pku-i--calendar, .pku-pagetitle__meta > .wp-block-post-date { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15' rx='2'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4'/%3E%3C/svg%3E"); }
.pku-i--users { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20c.8-3.6 3.4-5.5 6.5-5.5s5.7 1.9 6.5 5.5M16 4.6a3.5 3.5 0 0 1 0 6.8M18 14.8c1.9.7 3.1 2.4 3.5 5.2'/%3E%3C/svg%3E"); }
.pku-i--user, .pku-pagetitle__meta > .wp-block-post-author-name { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1-4.2 4.1-6.5 8-6.5s7 2.3 8 6.5'/%3E%3C/svg%3E"); }
.pku-i--mail { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3.5 6.5l8.5 6.5 8.5-6.5'/%3E%3C/svg%3E"); }
.pku-i--globe { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3z'/%3E%3C/svg%3E"); }
.pku-i--chev { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); }
.pku-i--menu { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M4 12h16M4 17h10'/%3E%3C/svg%3E"); }
.pku-i--close { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E"); }
.pku-i--sun { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2.5M12 19.5V22M2 12h2.5M19.5 12H22M4.9 4.9l1.8 1.8M17.3 17.3l1.8 1.8M4.9 19.1l1.8-1.8M17.3 6.7l1.8-1.8'/%3E%3C/svg%3E"); }
.pku-i--indoor { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5L12 4l9 6.5M5 9v11h14V9M9 20v-6h6v6'/%3E%3C/svg%3E"); }
.pku-i--ticket { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5V6h18v2.5a2.5 2.5 0 0 0 0 5V18H3v-2.5a2.5 2.5 0 0 0 0-5zM14 6.5v2M14 11v2M14 15.5v2'/%3E%3C/svg%3E"); }
.pku-i--level { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 20v-5M12 20V10M19 20V4'/%3E%3C/svg%3E"); }
.pku-i--check { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E"); }
.pku-i--alert { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.5v.01'/%3E%3C/svg%3E"); }
.pku-i--route { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17L17 7M8 7h9v9'/%3E%3C/svg%3E"); }
.pku-i--star { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2.8l2.8 5.8 6.3.9-4.6 4.4 1.1 6.3L12 17.2l-5.6 3 1.1-6.3L2.9 9.5l6.3-.9z'/%3E%3C/svg%3E"); }
.pku-i--cookie { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12.2A9 9 0 1 1 11.8 3a3.2 3.2 0 0 0 3.7 3.6 3.2 3.2 0 0 0 3.4 3.6 3.2 3.2 0 0 0 2.1 2z'/%3E%3Cpath d='M8.5 8.5v.01M15.5 15v.01M11.5 12.5v.01M8 15.5v.01M12 17.5v.01' stroke-width='2.6'/%3E%3C/svg%3E"); }
.pku-i--scribble, .pku-pagetitle__meta > .wp-block-post-time-to-read { --i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 40' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6c16-6 34-2 42 12 3 5 4 10 3 16M41 27l8 8 7-9'/%3E%3C/svg%3E"); }
