/**
 * Comedy Republic — What's on: the whole design stylesheet for archive-show.php (/whats-on/ and /whats-on/calendar/).
 *
 * The only stylesheet this page loads (+ Google fonts): functions.php enqueues it when
 * cr_design_page() is 'whats-on' — no theme.css, design-base.css or design-home.css. It carries its own
 * chrome (header, footer with the mailing-list form, menu), which differs slightly from the homepage's.
 *
 * PORTED from docs/design/canvas/WhatsOn.dc.html (its <style> block), value for value, between the
 * PORT-BEGIN / PORT-END markers. Do not round, re-tokenise or reorder; change the design, then re-port.
 * Scoping (as round 1): the design root .cr is .crd; every other selector is prefixed with `.crd `
 * (inside media queries too); the bare a / a:hover resets are :where(.crd) a; html / body stay global.
 * Asset URLs: /_blob/<id> → ../design/<file> (+ ../fonts/guess-sans-800.woff2).
 * Check the port is intact: python3 tests/visual/port-css.py docs/design/canvas/WhatsOn.dc.html --check assets/css/design-whats-on.css
 *
 * After PORT-END: theme additions (things the design does not need because it is one static page).
 * The chrome block is the same in every inner page's file (foundation); the page block is the What's on builder's.
 */

/* ==== PORT-BEGIN docs/design/canvas/WhatsOn.dc.html ==== */
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:#F5F0D3}
:where(.crd) a{color:inherit}
:where(.crd) a:hover{color:inherit}

.crd{--cream:#F5F0D3;--card:#FFFDF6;--ivory:#FFFBEA;--ink:#2E2D2A;--ink-dk:#242321;--green:#4F744A;--green-dk:#33502F;--sage:#8E9680;--gold:#FFBC29;--gold-dk:#A87700;--ox:#720002;--ox-dk:#3F0001;--blue:#1C79AE;--grey:#B1B2B0;--line:rgba(46,45,42,.15);--muted:#5C5A53;--wrap:1320px;--gut:clamp(20px,4.4vw,64px);position:relative;background-color:var(--cream);background-image:linear-gradient(rgba(245,240,211,.85),rgba(245,240,211,.85)),url('../design/grain.webp');background-size:auto,220px 220px;background-blend-mode:normal,multiply;color:var(--ink);font-family:'futura-pt','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
:where(.crd) *,:where(.crd) *::before,:where(.crd) *::after{box-sizing:border-box}
:where(.crd) img{display:block;max-width:100%;height:auto}
:where(.crd) h1,:where(.crd) h2,:where(.crd) h3,:where(.crd) p,:where(.crd) address{margin:0}
:where(.crd) button,:where(.crd) input{font:inherit;color:inherit}
.crd :focus-visible{outline:3px solid var(--ink);outline-offset:3px;box-shadow:0 0 0 3px var(--gold)}
.crd .cr-footer :focus-visible,.crd .cr-signup :focus-visible,.crd .cr-done :focus-visible,.crd .cr-tab:focus-visible,.crd .cr-promo:focus-visible,.crd .cr-new__panel :focus-visible,.crd .cr-hero :focus-visible,.crd .ev-car :focus-visible,.crd .ct-pass :focus-visible,.crd .ct-cta__band :focus-visible,.crd .yv-food :focus-visible{outline-color:var(--gold);box-shadow:0 0 0 3px var(--ink-dk)}
.crd .cr-wrap{width:min(var(--wrap),calc(100% - 2 * var(--gut)));margin-inline:auto}
.crd .cr-grain{display:none}
.crd .cr-ico{flex:none;width:18px;height:18px}
.crd .cr-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.crd .cr-display{font-family:'futura-pt-bold','Futura','Century Gothic','Avenir Next',sans-serif;font-weight:800;text-transform:uppercase;letter-spacing:.01em;line-height:.95}
.crd .cr-script{font-family:'Norican','Brush Script MT',cursive;font-weight:400;line-height:1}
.crd .cr-x-ink{text-shadow:-1px 1px 0 #BAB6A2,-2px 2px 0 #AEAA96,-3px 3px 0 #A29E8A,-4px 4px 0 #96927E,-5px 5px 0 #8A8672}
.crd .cr-x-sm{text-shadow:-1px 1px 0 rgba(0,0,0,.32),-2px 2px 0 rgba(0,0,0,.26),-3px 3px 0 rgba(0,0,0,.2)}

/* Header */
.crd .cr-header{position:sticky;top:0;z-index:50;background:rgba(245,240,211,.9);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);border-bottom:1px solid var(--line)}
.crd .cr-header__inner{display:flex;align-items:center;gap:20px;min-height:88px}
.crd .cr-burger{display:none;flex:none;width:46px;height:46px;padding:0;border:0;background:none;cursor:pointer;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px}
.crd .cr-burger span{display:block;width:24px;height:2px;border-radius:2px;background:var(--ink)}
.crd .cr-burger span:nth-child(2){width:17px}
.crd .cr-burger--x{align-items:center}
.crd .cr-brand{display:flex;flex-direction:column;align-items:flex-start;gap:7px;text-decoration:none}
.crd .cr-brand__logo{width:232px}
.crd .cr-tagline{font-weight:900;font-size:9.5px;line-height:1;letter-spacing:.27em;text-transform:uppercase;color:var(--muted);padding-left:5px;white-space:nowrap}
.crd .cr-nav{display:flex;align-items:center;gap:2px;margin-left:auto}
.crd .cr-nav a{font-weight:700;font-size:15.5px;text-decoration:none;padding:12px 16px;border-radius:999px;transition:background .2s}
.crd .cr-nav a:hover{background:rgba(46,45,42,.07)}
.crd .cr-nav a[aria-current="page"]{text-decoration:underline;text-decoration-color:var(--ox);text-decoration-thickness:2px;text-underline-offset:8px}
.crd .cr-search{flex:none;width:48px;height:48px;margin-left:6px;border-radius:50%;border:1.5px solid var(--ink);display:grid;place-items:center;text-decoration:none;transition:background .2s,color .2s}
.crd .cr-search:hover{background:var(--ink);color:var(--cream)}
.crd .cr-whatson{display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 22px 0 18px;margin-left:8px;border-radius:999px;background:var(--ink);color:var(--cream);font-weight:900;font-size:14.5px;letter-spacing:.03em;text-decoration:none;white-space:nowrap;box-shadow:-3px 3px 0 rgba(46,45,42,.28);transition:transform .15s,box-shadow .15s}
.crd .cr-whatson:hover{color:var(--cream);transform:translate(-1px,1px);box-shadow:-2px 2px 0 rgba(46,45,42,.28)}

/* Show art tiles */
.crd .cr-art{position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;width:62px;height:62px;border-radius:12px;color:var(--ivory);background:var(--ink)}
.crd .cr-art::before{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(rgba(0,0,0,.22) 1px,rgba(0,0,0,0) 1.7px) 0 0/5px 5px,radial-gradient(120% 100% at 15% 0%,rgba(255,255,255,.22),rgba(255,255,255,0) 58%)}
.crd .cr-art__ini{font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;font-size:23px;line-height:1;letter-spacing:.02em;text-shadow:-1px 1px 0 rgba(0,0,0,.3),-2px 2px 0 rgba(0,0,0,.22)}
.crd .cr-art--ox{background-color:var(--ox)}
.crd .cr-art--blue{background-color:var(--blue)}
.crd .cr-art--green{background-color:var(--green)}
.crd .cr-art--ink{background-color:var(--ink)}
.crd .cr-art--gold{background-color:var(--gold);color:var(--ink)}
.crd .cr-art--sage{background-color:var(--sage);color:var(--ink)}
.crd .cr-art--gold .cr-art__ini,.crd .cr-art--sage .cr-art__ini{text-shadow:-1px 1px 0 rgba(255,255,255,.4),-2px 2px 0 rgba(255,255,255,.22)}
.crd .cr-art--mainstage{background:var(--green) url('../design/tile-main-stage.jpg') center/cover}
.crd .cr-art--barshow{background:var(--ox) url('../design/whats-on-mouth-sign.webp') center/88% auto no-repeat}
.crd .cr-art--mainstage::before,.crd .cr-art--barshow::before{display:none}

/* Chips, tickets, buttons */
.crd .cr-chip{position:relative;display:inline-flex;align-items:center;height:22px;padding:0 10px 0 8px;border-radius:3px;font-weight:900;font-size:10px;line-height:1;letter-spacing:.15em;text-transform:uppercase;white-space:nowrap}
.crd .cr-chip::after{content:'';position:absolute;top:0;right:0;width:7px;height:7px;background:linear-gradient(225deg,var(--card) 0 50%,rgba(0,0,0,.26) 50%);border-bottom-left-radius:2px}
.crd .cr-chip--sold{background:var(--ink);color:var(--cream)}
.crd .cr-price__cit{font-weight:700;color:var(--green)}
.crd .cr-tix{flex:none;display:inline-flex;text-decoration:none;filter:drop-shadow(-3px 3px 0 var(--ox-dk));transition:transform .15s ease,filter .15s ease}
.crd .cr-tix:hover{transform:translate(-1px,1px);filter:drop-shadow(-2px 2px 0 var(--ox-dk))}
.crd .cr-tix:active{transform:translate(-3px,3px);filter:drop-shadow(0 0 0 var(--ox-dk))}
.crd .cr-tix__body{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:112px;height:58px;padding:0 16px 0 28px;border-radius:8px;background:var(--ox);color:#FFF6E0;font-weight:900;font-size:16px;line-height:1;letter-spacing:.02em;white-space:nowrap;-webkit-mask:radial-gradient(circle 7px at 0 50%,#0000 96%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle 7px at 100% 50%,#0000 96%,#000) 100% 0/51% 100% no-repeat;mask:radial-gradient(circle 7px at 0 50%,#0000 96%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle 7px at 100% 50%,#0000 96%,#000) 100% 0/51% 100% no-repeat}
.crd .cr-tix__body::before{content:'';position:absolute;left:16px;top:10px;bottom:10px;border-left:1.5px dashed rgba(255,246,224,.5)}
.crd .cr-tix--wait{filter:drop-shadow(-3px 3px 0 #A29F92)}
.crd .cr-tix--wait:hover{filter:drop-shadow(-2px 2px 0 #A29F92)}
.crd .cr-tix--wait .cr-tix__body{background:#E7E3D2;color:var(--ink)}
.crd .cr-tix--wait .cr-tix__body::before{border-left-color:rgba(46,45,42,.35)}
.crd .cr-tix__w{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase}
.crd .cr-tix__t{margin-top:4px;font-weight:700;font-size:11px;color:var(--muted)}
.crd .cr-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:0 26px;border:0;border-radius:12px;font-weight:900;font-size:15px;line-height:1.2;letter-spacing:.02em;text-align:center;text-decoration:none;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .2s,color .2s}
.crd .cr-btn--block{width:100%}
.crd .cr-btn--ox{background:var(--ox);color:#FFF6E0;box-shadow:-3px 3px 0 var(--ox-dk)}
.crd .cr-btn--ox:hover{color:#FFF6E0;transform:translate(-1px,1px);box-shadow:-2px 2px 0 var(--ox-dk)}
.crd .cr-btn--outline{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink)}
.crd .cr-btn--outline:hover{background:var(--ink);color:var(--cream)}

/* Page hero + tools */
.crd .wo-hero{position:relative;padding-top:56px}
.crd .wo-hero__inner{position:relative}
.crd .wo-kicker{font-size:42px;color:var(--ox);transform:rotate(-4deg);transform-origin:left bottom}
.crd .wo-title{margin-top:12px;font-size:clamp(46px,5.4vw,78px);line-height:.88}
.crd .wo-lede{margin-top:18px;max-width:38em;font-size:18px;color:var(--muted)}
.crd .wo-only-mob{display:none}
.crd .wo-hero__char{position:absolute;z-index:2;right:6px;bottom:-14px;width:156px;transform:rotate(7deg);transform-origin:50% 100%;filter:drop-shadow(-5px 7px 0 rgba(46,45,42,.16));pointer-events:none}
.crd .wo-tools{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:34px;padding-bottom:26px;border-bottom:1.5px solid var(--ink)}
.crd .wo-tools::after{content:'';position:absolute;left:0;right:0;bottom:-6px;border-bottom:1px solid var(--ink)}
.crd .wo-search{position:relative;flex:0 1 360px}
.crd .wo-search .cr-ico{position:absolute;left:17px;top:17px;color:var(--muted);pointer-events:none}
.crd .wo-search__input{width:100%;height:52px;padding:0 18px 0 48px;border-radius:14px;border:1.5px solid var(--ink);background-color:var(--card);background-image:linear-gradient(rgba(255,253,246,.85),rgba(255,253,246,.85)),url('../design/grain.webp');background-size:auto,220px 220px;background-blend-mode:normal,multiply;font-size:15.5px;color:var(--ink);-webkit-appearance:none;appearance:none}
.crd .wo-search__input::placeholder{color:#7D7A70}
.crd .wo-search__input::-webkit-search-cancel-button,.crd .wo-search__input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}
.crd .wo-search__clear{position:absolute;right:8px;top:8px;width:36px;height:36px;padding:0;border:0;border-radius:10px;background:rgba(46,45,42,.08);color:var(--ink);display:grid;place-items:center;cursor:pointer}
.crd .wo-search__clear:hover{background:var(--ink);color:var(--cream)}
.crd .wo-search__clear .cr-ico{position:static;width:15px;height:15px;color:inherit}
.crd .wo-search__input:focus{outline:none;box-shadow:0 0 0 4px rgba(255,188,41,.4)}
.crd .wo-chips{flex:1 1 520px;display:flex;flex-wrap:wrap;gap:8px}
.crd .wo-chip{flex:none;height:44px;padding:0 17px;border-radius:999px;border:1.5px solid var(--ink);background:transparent;font-weight:900;font-size:13.5px;letter-spacing:.02em;white-space:nowrap;cursor:pointer;transition:background .2s,color .2s}
.crd .wo-chip:hover{background:rgba(46,45,42,.07)}
.crd .wo-chip.is-on{background:var(--ink);color:var(--cream)}

/* Layout */
.crd .wo-layout{display:flex;flex-wrap:wrap;align-items:flex-start;gap:48px;margin-top:40px;padding-bottom:110px}
.crd .wo-aside{flex:0 1 404px;min-width:300px;position:sticky;top:112px}
.crd .wo-main{flex:999 1 560px;min-width:0}

/* Calendar */
.crd .wo-cal{padding:22px 22px 20px;border-radius:24px;background-color:var(--card);background-image:linear-gradient(rgba(255,253,246,.85),rgba(255,253,246,.85)),url('../design/grain.webp');background-size:auto,220px 220px;background-blend-mode:normal,multiply;border:1px solid rgba(46,45,42,.16);box-shadow:0 30px 60px -44px rgba(46,45,42,.6),0 8px 18px -14px rgba(46,45,42,.2)}
.crd .wo-cal__head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.crd .wo-cal__month{font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;font-size:22px;line-height:1;letter-spacing:.02em;text-transform:uppercase}
.crd .wo-calbtn{width:42px;height:42px;padding:0;border-radius:12px;border:1.5px solid var(--ink);background:transparent;display:grid;place-items:center;cursor:pointer;transition:background .2s,color .2s}
.crd .wo-calbtn:hover:not(:disabled){background:var(--ink);color:var(--cream)}
.crd .wo-calbtn:disabled{border-color:rgba(46,45,42,.2);color:rgba(46,45,42,.3);cursor:default}
.crd .wo-cal__dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-top:18px;font-weight:900;font-size:10px;letter-spacing:.12em;text-align:center;color:var(--muted)}
.crd .wo-cal__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-top:8px}
.crd .wo-cell{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;width:100%;min-height:60px;padding:10px 0 8px;border-radius:12px;border:1.5px solid rgba(46,45,42,.22);background:#fff;color:var(--ink);text-decoration:none;cursor:default}
.crd button.wo-cell,.crd a.wo-cell{cursor:pointer;transition:border-color .15s,background .15s,transform .15s}
.crd button.wo-cell:hover,.crd a.wo-cell:hover{border-color:var(--ink);transform:translateY(-1px)}
.crd .wo-cell__n{font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;font-size:17px;line-height:1}
.crd .wo-dots{display:flex;justify-content:center;gap:3px;min-height:5px}
.crd .wo-dots i{display:block;width:5px;height:5px;border-radius:50%;background:var(--ox)}
.crd .wo-cell__dark{font-weight:900;font-size:8.5px;line-height:1;letter-spacing:.16em;text-transform:uppercase}
.crd .wo-cell.is-past{background:transparent;border-color:rgba(46,45,42,.1);color:rgba(46,45,42,.34)}
.crd .wo-cell.is-past .wo-dots i{background:rgba(46,45,42,.24)}
.crd .wo-cell.is-dark{background:repeating-linear-gradient(135deg,rgba(46,45,42,.05) 0 5px,rgba(46,45,42,0) 5px 10px);border-color:rgba(46,45,42,.14);color:rgba(46,45,42,.55)}
.crd .wo-cell.is-today{border-color:var(--ox);background:#FBEDE8}
.crd .wo-cell.is-sel{border-color:var(--ox);background:var(--ox);color:#FFF6E0;box-shadow:-2px 2px 0 var(--ox-dk)}
.crd .wo-cell.is-sel .wo-dots i{background:#FFF6E0}
.crd .wo-cell.is-blank{border:0;background:none}
.crd .wo-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:16px;font-size:12.5px;color:var(--muted)}
.crd .wo-legend span{display:inline-flex;align-items:center;gap:7px}
.crd .wo-legend i{display:inline-block}
.crd .wo-lg-dot{width:6px;height:6px;border-radius:50%;background:var(--ox)}
.crd .wo-lg-dark{width:13px;height:13px;border-radius:4px;border:1px solid rgba(46,45,42,.18);background:repeating-linear-gradient(135deg,rgba(46,45,42,.12) 0 3px,rgba(46,45,42,0) 3px 6px)}
.crd .wo-datebar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:9px 9px 9px 18px;border-radius:16px;background:var(--ink);color:var(--ivory)}
.crd .wo-datebar__label{font-weight:900;font-size:14px}
.crd .wo-datebar__clear{display:inline-flex;align-items:center;gap:6px;height:42px;padding:0 15px;border-radius:999px;border:1.5px solid rgba(245,240,211,.55);background:transparent;color:var(--ivory);font-weight:900;font-size:13px;white-space:nowrap;cursor:pointer;transition:background .2s}
.crd .wo-datebar__clear:hover{background:rgba(245,240,211,.12)}
.crd .wo-datebar__clear .cr-ico{width:14px;height:14px}

/* Date list */
.crd .wo-day + .wo-day{margin-top:32px;padding-top:28px;border-top:1px dashed rgba(46,45,42,.3)}
.crd .wo-day__head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.crd .wo-day__title{font-size:28px;line-height:1}
.crd .wo-when{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 13px;border-radius:999px;font-weight:900;font-size:10.5px;line-height:1;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.crd .wo-when--tonight{background:var(--gold);color:var(--ink);box-shadow:0 0 0 4px rgba(255,188,41,.2)}
.crd .wo-when--tomorrow{border:1.5px solid var(--ink)}
.crd .wo-pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ox);animation:wo-pulse 1.8s ease-out infinite}
@keyframes wo-pulse{0%{box-shadow:0 0 0 0 rgba(114,0,2,.6)}70%{box-shadow:0 0 0 7px rgba(114,0,2,0)}100%{box-shadow:0 0 0 0 rgba(114,0,2,0)}}
.crd .wo-rows{display:flex;flex-direction:column;gap:12px;margin-top:18px}
.crd .wo-row{display:grid;grid-template-columns:84px minmax(0,1fr) 186px auto;grid-template-areas:"thumb main price tix";align-items:center;gap:6px 22px;padding:14px 18px 14px 14px;border-radius:20px;background-color:var(--card);background-image:linear-gradient(rgba(255,253,246,.85),rgba(255,253,246,.85)),url('../design/grain.webp');background-size:auto,220px 220px;background-blend-mode:normal,multiply;border:1px solid rgba(46,45,42,.16);box-shadow:0 20px 36px -30px rgba(46,45,42,.55);transition:transform .25s cubic-bezier(.2,.75,.2,1),box-shadow .25s,border-color .25s}
@media (hover:hover){.crd .wo-row:hover{transform:translateY(-2px);border-color:rgba(46,45,42,.34);box-shadow:0 26px 44px -30px rgba(46,45,42,.62)}}
.crd .wo-row .cr-art{grid-area:thumb;width:84px;height:84px;border-radius:15px}
.crd .wo-row .cr-art__ini{font-size:29px}
.crd .wo-row__main{grid-area:main;min-width:0}
.crd .wo-row__title{font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;text-transform:uppercase;font-size:20px;line-height:1.06;letter-spacing:.015em}
.crd .wo-row__title a{text-decoration:none}
.crd .wo-row__title a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.crd .wo-row__sub{margin-top:3px;font-style:italic;font-size:14.5px;line-height:1.3}
.crd .wo-row__meta{margin-top:5px;font-size:14px;line-height:1.35;color:var(--muted)}
.crd .wo-row .cr-chip{margin-top:9px}
.crd .wo-row__price{grid-area:price;font-weight:900;font-size:16px;line-height:1.3;white-space:nowrap}
.crd .wo-row__price .cr-price__cit{font-size:14.5px}
.crd .wo-row .cr-tix{grid-area:tix}
.crd .wo-row.is-sold{background:#F1EDDA;box-shadow:none}
.crd .wo-row.is-sold .cr-art{filter:grayscale(1) contrast(.85);opacity:.6}
.crd .wo-row.is-sold .wo-row__title,.crd .wo-row.is-sold .wo-row__price,.crd .wo-row.is-sold .cr-price__cit{color:var(--muted)}

.crd .wo-empty{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:34px 34px 34px 34px;border-radius:22px;border:1.5px dashed rgba(46,45,42,.38);background:rgba(255,253,246,.6)}
.crd .wo-empty__title{font-size:26px;line-height:1;max-width:14em}
.crd .wo-empty__text{max-width:30em;font-size:15.5px;color:var(--muted)}
.crd .wo-empty .cr-btn{margin-top:8px}
.crd .wo-empty__char{position:absolute;right:24px;bottom:-26px;width:130px;transform:rotate(6deg);pointer-events:none}

/* Weekly regulars */
.crd .wo-reg{position:relative;margin-top:60px;padding-top:36px;border-top:1.5px solid var(--ink)}
.crd .wo-reg::before{content:'';position:absolute;left:0;right:0;top:4px;border-top:1px solid var(--ink)}
.crd .wo-reg__title{font-size:clamp(30px,3vw,42px);line-height:.95;text-wrap:balance}
.crd .wo-reg__lede{margin-top:12px;max-width:36em;font-size:16.5px;color:var(--muted)}
.crd .wo-reg__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px;margin-top:24px}
.crd .wo-reg__card{display:flex;align-items:center;gap:16px;padding:12px 16px 12px 12px;border-radius:20px;background-color:var(--card);background-image:linear-gradient(rgba(255,253,246,.85),rgba(255,253,246,.85)),url('../design/grain.webp');background-size:auto,220px 220px;background-blend-mode:normal,multiply;border:1px solid rgba(46,45,42,.16);box-shadow:0 20px 36px -30px rgba(46,45,42,.55);text-decoration:none;transition:transform .25s cubic-bezier(.2,.75,.2,1),border-color .25s}
@media (hover:hover){.crd .wo-reg__card:hover{transform:translateY(-2px);border-color:rgba(46,45,42,.34)}}
.crd .wo-reg__card .cr-art{flex:none;width:80px;height:80px;border-radius:15px}
.crd .wo-reg__card .cr-art__ini{font-size:27px}
.crd .wo-reg__txt{min-width:0}
.crd .wo-reg__name{display:block;font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;text-transform:uppercase;font-size:20px;line-height:1.05;letter-spacing:.015em}
.crd .wo-reg__when{display:block;margin-top:5px;font-size:14px;color:var(--muted)}
.crd .wo-reg__go{flex:none;margin-left:auto;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--ink);display:grid;place-items:center;transition:background .2s,color .2s}
.crd .wo-reg__card:hover .wo-reg__go{background:var(--ink);color:var(--cream)}

/* Footer */
.crd .cr-footer{position:relative;isolation:isolate;overflow:hidden;padding:76px 0 34px;background:var(--ink-dk);color:var(--ivory)}
.crd .cr-footer__mark{position:absolute;z-index:-1;right:-70px;bottom:-120px;width:430px;opacity:.06;pointer-events:none}
.crd .cr-footer__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) minmax(0,1fr);gap:48px;align-items:start}
.crd .cr-footer__logo{width:280px}
.crd .cr-footer__addr{margin-top:22px;font-style:normal;font-size:16px;line-height:1.65;color:rgba(245,240,211,.78)}
.crd .cr-footer__links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 28px}
.crd .cr-footer__links a{width:fit-content;padding:6px 0;font-size:16px;line-height:1.35;text-decoration:none;color:var(--ivory);background:linear-gradient(var(--gold),var(--gold)) 0 calc(100% - 4px)/0 2px no-repeat;transition:background-size .25s}
.crd .cr-footer__links a:hover{color:var(--ivory);background-size:100% 2px}
.crd .cr-ftform{display:flex;flex-direction:column;gap:10px}
.crd .cr-ftform__label{font-weight:900;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(245,240,211,.72)}
.crd .cr-ftform__row{display:flex;gap:8px}
.crd .cr-ftform__input{flex:1;min-width:0;height:52px;padding:0 16px;border-radius:12px;border:1.5px solid rgba(245,240,211,.28);background:rgba(245,240,211,.05);color:var(--ivory);font-size:15px}
.crd .cr-ftform__input::placeholder{color:rgba(245,240,211,.5)}
.crd .cr-ftform__input[aria-invalid="true"]{border-color:var(--gold)}
.crd .cr-ftform__input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 4px rgba(255,188,41,.2)}
.crd .cr-ftform__btn{flex:none;height:52px;padding:0 20px;border:0;border-radius:12px;background:var(--gold);color:var(--ink);font-weight:900;font-size:15px;cursor:pointer;box-shadow:-3px 3px 0 var(--gold-dk);transition:transform .15s,box-shadow .15s}
.crd .cr-ftform__btn:hover{transform:translate(-1px,1px);box-shadow:-2px 2px 0 var(--gold-dk)}
.crd .cr-ftform__note{font-size:13.5px;color:rgba(245,240,211,.72)}
.crd .cr-ftform__done{display:flex;align-items:center;gap:10px;min-height:52px;font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;text-transform:uppercase;font-size:20px;color:var(--gold)}
.crd .cr-footer__base{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:64px;padding-top:22px;border-top:1px solid rgba(245,240,211,.14);font-size:13.5px;color:rgba(245,240,211,.62)}
.crd .cr-footer__legal{display:flex;gap:22px}
.crd .cr-footer__legal a{padding:6px 0;text-decoration:none}
.crd .cr-footer__legal a:hover{color:var(--ivory)}

/* Menu */
.crd .cr-menu{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;background:rgba(36,35,33,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.crd .cr-menu__panel{background:var(--cream);padding-bottom:30px;box-shadow:0 30px 60px -30px rgba(0,0,0,.5);animation:cr-drop .35s cubic-bezier(.2,.75,.2,1)}
@keyframes cr-drop{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
.crd .cr-menu__bar{display:flex;align-items:center;gap:10px;min-height:70px;border-bottom:1.5px solid var(--ink)}
.crd .cr-menu__nav{display:flex;flex-direction:column;margin-top:6px}
.crd .cr-menu__item{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:24px 0 21px;border-bottom:1px solid var(--line);text-decoration:none}
.crd .cr-menu__label{flex:none;font-size:clamp(32px,8.6vw,46px);line-height:.95;white-space:nowrap}
.crd .cr-menu__desc{flex:1;min-width:0;font-size:15px;line-height:1.3;color:var(--muted);text-align:right}
.crd .cr-menu__cta{margin-top:26px}

@media (max-width:1199px){
  .crd .wo-aside{flex:0 1 320px;min-width:290px;z-index:3}
  .crd .wo-main{flex:999 1 420px}
  .crd .wo-row{grid-template-columns:72px minmax(0,1fr) auto;grid-template-areas:"thumb main tix" "thumb price tix";gap:0 16px}
  .crd .wo-row .cr-art{width:72px;height:72px}
  .crd .wo-row__price{margin-top:4px;white-space:normal}
}
@media (max-width:1099px){
  .crd .cr-nav a{padding:10px 11px;font-size:15px}
  .crd .cr-brand__logo{width:200px}
  .crd .wo-hero__char{width:140px;right:8px}
}
@media (max-width:899px){
  .crd .cr-header__inner{min-height:70px;gap:10px}
  .crd .cr-burger{display:flex}
  .crd .cr-brand{flex:1;align-items:center;gap:5px}
  .crd .cr-brand__logo{width:158px}
  .crd .cr-tagline{padding-left:0;font-size:7.5px;letter-spacing:.2em}
  .crd .cr-nav,.crd .cr-search{display:none}
  .crd .cr-whatson{height:42px;padding:0 14px 0 12px;margin-left:0;gap:8px;font-size:13px;box-shadow:none}
  .crd .cr-whatson:hover{transform:none;box-shadow:none}
  .crd .cr-whatson .cr-ico{width:16px;height:16px}
  .crd .wo-hero{padding-top:30px}
  .crd .wo-kicker{font-size:32px}
  .crd .wo-title{margin-top:8px;font-size:40px;line-height:.92}
  .crd .wo-lede{margin-top:12px;font-size:16px}
  .crd .wo-only-desk{display:none}
  .crd .wo-only-mob{display:inline}
  .crd .wo-hero__char{width:74px;right:2px;bottom:auto;top:20px}
  .crd .wo-title{max-width:calc(100% - 78px);font-size:35px}
  .crd .wo-tools{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:14px;margin-top:22px;padding-bottom:20px}
  .crd .wo-search{flex:none}
  .crd .wo-chips{flex:none;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
  .crd .wo-chips::-webkit-scrollbar{display:none}
  .crd .wo-layout{gap:30px;margin-top:28px;padding-bottom:64px}
  .crd .wo-aside{position:static;flex:1 1 100%;min-width:0}
  .crd .wo-cal{padding:18px 16px 16px;border-radius:20px}
  .crd .wo-cal__grid,.crd .wo-cal__dow{gap:5px}
  .crd .wo-cell{min-height:56px;padding:9px 0 7px;border-radius:10px}
  .crd .wo-cell__n{font-size:16px}
  .crd .wo-day + .wo-day{margin-top:26px;padding-top:22px}
  .crd .wo-day__title{font-size:19px}
  .crd .wo-rows{gap:10px;margin-top:14px}
  .crd .wo-row{grid-template-columns:58px minmax(0,1fr) auto;grid-template-areas:"thumb main tix" "thumb price tix";gap:0 12px;padding:12px 12px 12px 12px;border-radius:16px}
  .crd .wo-row .cr-art{width:58px;height:58px;border-radius:12px;align-self:start}
  .crd .wo-row .cr-art__ini{font-size:21px}
  .crd .wo-row__title{font-size:16px}
  .crd .wo-row__sub{font-size:13.5px}
  .crd .wo-row__meta{margin-top:3px;font-size:12.5px}
  .crd .wo-row__price{margin-top:4px;font-size:13.5px;white-space:normal}
  .crd .wo-row__price .cr-price__cit{font-size:13px}
  .crd .cr-tix__body{min-width:88px;height:50px;padding:0 12px 0 23px;font-size:14.5px}
  .crd .cr-tix__body::before{left:13px}
  .crd .wo-empty{padding:26px 22px 30px}
  .crd .wo-empty__title{font-size:22px}
  .crd .wo-empty__char{width:92px;right:12px;bottom:-20px}
  .crd .wo-reg{margin-top:44px;padding-top:28px}
  .crd .wo-reg__title{font-size:28px}
  .crd .wo-reg__lede{font-size:15px}
  .crd .wo-reg__grid{gap:10px;margin-top:18px}
  .crd .wo-reg__card{padding:10px 14px 10px 10px;border-radius:16px}
  .crd .wo-reg__card .cr-art{width:62px;height:62px;border-radius:12px}
  .crd .wo-reg__card .cr-art__ini{font-size:22px}
  .crd .wo-reg__name{font-size:17px}
  .crd .wo-reg__go{width:38px;height:38px}
  .crd .cr-footer{padding:52px 0 28px}
  .crd .cr-footer__grid{grid-template-columns:minmax(0,1fr);gap:34px}
  .crd .cr-footer__logo{width:228px}
  .crd .cr-footer__addr{margin-top:16px;font-size:15px}
  .crd .cr-footer__links{gap:0 18px}
  .crd .cr-footer__links a{font-size:15.5px}
  .crd .cr-footer__base{flex-direction:column;align-items:flex-start;gap:10px;margin-top:40px}
  .crd .cr-footer__mark{width:260px;right:-60px;bottom:-60px}
}
@media (prefers-reduced-motion:reduce){
  .crd .wo-pulse,.crd .cr-menu__panel{animation:none}
  .crd .wo-row,.crd .wo-reg__card,.crd .cr-tix,.crd .cr-btn,.crd .wo-cell{transition:none}
}
/*NAV-CSS-START*/
/* Global nav (wireframe 3a): search panel, compact scrolled header, hamburger under 960px, search + sign-up in the menu */
.crd .cr-search{background:transparent;padding:0;color:var(--ink);cursor:pointer;font:inherit}
.crd .cr-search.is-on{background:var(--ink);color:var(--cream)}
.crd .cr-whatson__x{display:none}
.crd .cr-menu{overflow-y:auto}
.crd .cr-sp{border-top:1px solid var(--line);background-color:var(--card);background-image:linear-gradient(rgba(255,253,246,.85),rgba(255,253,246,.85)),url('../design/grain.webp');background-size:auto,220px 220px;background-blend-mode:normal,multiply;box-shadow:0 34px 50px -36px rgba(46,45,42,.55);animation:cr-drop .3s cubic-bezier(.2,.75,.2,1)}
.crd .cr-sp > .cr-wrap{padding:26px 0 30px}
.crd .cr-sp__row{display:flex;align-items:center;gap:12px}
.crd .cr-sp__field{position:relative;display:block;flex:1;min-width:0}
.crd .cr-sp__ico{position:absolute;left:20px;top:50%;width:22px;height:22px;margin-top:-11px;color:var(--muted);pointer-events:none}
.crd .cr-sp__input{display:block;width:100%;height:64px;padding:0 20px 0 56px;border-radius:16px;border:1.5px solid var(--ink);background:#fff;color:var(--ink);font:inherit;font-size:19px;-webkit-appearance:none;appearance:none}
.crd .cr-sp__input::placeholder{color:#8B887E}
.crd .cr-sp__input::-webkit-search-cancel-button,.crd .cr-ms__input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;display:none}
.crd .cr-sp__input:focus{outline:none;box-shadow:0 0 0 4px rgba(255,188,41,.5)}
.crd .cr-sp__close{flex:none;display:inline-flex;align-items:center;gap:8px;height:64px;padding:0 22px;border-radius:16px;border:1.5px solid var(--ink);background:transparent;color:var(--ink);font-weight:900;font-size:15px;cursor:pointer;transition:background .2s,color .2s}
.crd .cr-sp__close:hover{background:var(--ink);color:var(--cream)}
.crd .cr-sp__close .cr-ico{width:16px;height:16px}
.crd .cr-sp__meta{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-top:22px}
.crd .cr-sp__label{font-weight:900;font-size:11.5px;line-height:1.2;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.crd .cr-sp__all{display:inline-flex;align-items:center;gap:6px;padding:8px 0;margin:-8px 0;font-weight:900;font-size:14px;color:var(--green);text-decoration:none;white-space:nowrap}
.crd .cr-sp__all:hover{color:var(--green);text-decoration:underline;text-underline-offset:3px}
.crd .cr-sp__all .cr-ico{width:15px;height:15px}
.crd .cr-sp__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
.crd .cr-sp__item{display:flex;align-items:center;gap:14px;min-width:0;padding:10px 16px 10px 10px;border-radius:16px;border:1px solid rgba(46,45,42,.16);background:#FFFEF9;color:var(--ink);text-decoration:none;box-shadow:0 14px 26px -22px rgba(46,45,42,.5);transition:border-color .2s,transform .2s}
.crd .cr-sp__item:hover{color:var(--ink);border-color:var(--ink);transform:translateY(-1px)}
.crd .cr-sp__art{position:relative;isolation:isolate;overflow:hidden;flex:none;display:grid;place-items:center;width:56px;height:56px;border-radius:12px;background-color:var(--ink);color:var(--ivory)}
.crd .cr-sp__art::before{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(rgba(0,0,0,.22) 1px,rgba(0,0,0,0) 1.7px) 0 0/5px 5px,radial-gradient(120% 100% at 15% 0%,rgba(255,255,255,.22),rgba(255,255,255,0) 58%)}
.crd .cr-sp__art--ox{background-color:var(--ox)}
.crd .cr-sp__art--blue{background-color:var(--blue)}
.crd .cr-sp__art--green{background-color:var(--green)}
.crd .cr-sp__art--gold{background-color:var(--gold);color:var(--ink)}
.crd .cr-sp__art--sage{background-color:var(--sage);color:var(--ink)}
.crd .cr-sp__art--ms{background:var(--green) url('../design/tile-main-stage.jpg') center/cover}
.crd .cr-sp__art--ms::before{display:none}
.crd .cr-sp__ini{font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;font-size:21px;line-height:1;letter-spacing:.02em;text-shadow:-1px 1px 0 rgba(0,0,0,.3),-2px 2px 0 rgba(0,0,0,.22)}
.crd .cr-sp__art--gold .cr-sp__ini,.crd .cr-sp__art--sage .cr-sp__ini{text-shadow:-1px 1px 0 rgba(255,255,255,.4),-2px 2px 0 rgba(255,255,255,.22)}
.crd .cr-sp__txt{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}
.crd .cr-sp__title{font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;text-transform:uppercase;font-size:15.5px;line-height:1.08;letter-spacing:.015em}
.crd .cr-sp__when{font-size:13px;line-height:1.35;color:var(--muted)}
.crd .cr-sp__go{flex:none;width:18px;height:18px;color:var(--muted);transition:transform .2s,color .2s}
.crd .cr-sp__item:hover .cr-sp__go{color:var(--ink);transform:translateX(2px)}
.crd .cr-sp__empty{margin-top:14px;padding:20px 22px;border-radius:16px;border:1.5px dashed rgba(46,45,42,.32);font-size:15.5px;line-height:1.5;color:var(--muted)}
.crd .cr-sp__empty a{font-weight:900;color:var(--green)}
.crd .cr-ms{margin-top:16px}
.crd .cr-ms__field{position:relative;display:block}
.crd .cr-ms__field .cr-sp__ico{left:16px;width:20px;height:20px;margin-top:-10px}
.crd .cr-ms__input{display:block;width:100%;height:54px;padding:0 16px 0 46px;border-radius:14px;border:1.5px solid var(--ink);background:#fff;color:var(--ink);font:inherit;font-size:16px;-webkit-appearance:none;appearance:none}
.crd .cr-ms__input::placeholder{color:#8B887E}
.crd .cr-ms__input:focus{outline:none;box-shadow:0 0 0 4px rgba(255,188,41,.5)}
.crd .cr-ms__results{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.crd .cr-ms__results .cr-sp__label{margin-bottom:2px}
.crd .cr-ms__results .cr-sp__item{padding:8px 14px 8px 8px}
.crd .cr-ms__results .cr-sp__art{width:46px;height:46px;border-radius:10px}
.crd .cr-ms__results .cr-sp__ini{font-size:17px}
.crd .cr-ms__results .cr-sp__empty{margin-top:0;padding:16px 18px;font-size:14.5px}
.crd .cr-msign{display:flex;flex-direction:column;gap:10px;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
.crd .cr-msign__label{font-weight:900;font-size:11px;line-height:1;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.crd .cr-msign__row{display:flex;gap:8px}
.crd .cr-msign__input{flex:1;min-width:0;height:52px;padding:0 16px;border-radius:12px;border:1.5px solid rgba(46,45,42,.4);background:#fff;color:var(--ink);font:inherit;font-size:15px}
.crd .cr-msign__input::placeholder{color:#8B887E}
.crd .cr-msign__input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 4px rgba(255,188,41,.5)}
.crd .cr-msign__input[aria-invalid="true"]{border-color:var(--ox)}
.crd .cr-msign__btn{flex:none;height:52px;padding:0 20px;border:0;border-radius:12px;background:var(--ink);color:var(--cream);font-weight:900;font-size:15px;cursor:pointer;box-shadow:-3px 3px 0 rgba(46,45,42,.28)}
.crd .cr-msign__note{font-size:13.5px;color:var(--ox)}
.crd .cr-msign__done{margin-top:24px;padding-top:20px;border-top:1px solid var(--line);font-family:'futura-pt-bold','Futura',sans-serif;font-weight:800;text-transform:uppercase;font-size:20px;line-height:1;color:var(--green)}
@media (min-width:960px){
  .crd .cr-header__inner{transition:min-height .25s ease}
  .crd .cr-brand__logo{transition:width .25s ease}
  .crd .cr-header.is-compact .cr-header__inner{min-height:66px}
  .crd .cr-header.is-compact .cr-brand__logo{width:176px}
  .crd .cr-header.is-compact .cr-tagline{display:none}
  .crd .cr-header.is-compact .cr-whatson{background:var(--ox);color:#FFF6E0;box-shadow:-3px 3px 0 var(--ox-dk)}
  .crd .cr-header.is-compact .cr-whatson:hover{color:#FFF6E0;box-shadow:-2px 2px 0 var(--ox-dk)}
  .crd .cr-header.is-compact .cr-whatson__x{display:inline}
}
@media (min-width:960px) and (max-width:1099px){
  .crd .cr-sp__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:959px){
  .crd .cr-header__inner{min-height:70px;gap:10px}
  .crd .cr-burger{display:flex}
  .crd .cr-brand{flex:1;align-items:center;gap:5px}
  .crd .cr-brand__logo{width:158px}
  .crd .cr-tagline{padding-left:0;font-size:7.5px;letter-spacing:.2em}
  .crd .cr-nav,.crd .cr-search,.crd .cr-sp{display:none}
  .crd .cr-whatson{height:42px;padding:0 14px 0 12px;margin-left:0;gap:8px;font-size:13px;background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink)}
  .crd .cr-whatson:hover{color:var(--ink);transform:none;box-shadow:inset 0 0 0 1.5px var(--ink)}
  .crd .cr-whatson .cr-ico{width:16px;height:16px}
}
@media (prefers-reduced-motion:reduce){
  .crd .cr-sp,.crd .cr-header__inner,.crd .cr-brand__logo{animation:none;transition:none}
}
/*NAV-CSS-END*/

/* Green header (Brett, 07 Oct, round 2): the nav takes the core CR green with the New here panel's felt texture; the page stays brand cream with its grain. Cards, panels and footer are unchanged. */
.crd .cr-header{background:var(--green) url('../design/texture-felt.webp') center/360px;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(255,251,234,.08);color:var(--ivory)}
.crd .cr-header .cr-tagline,.crd .cr-menu__bar .cr-tagline{color:rgba(255,251,234,.9)}
.crd .cr-nav a{color:var(--ivory)}
.crd .cr-nav a:hover{background:rgba(255,251,234,.14)}
.crd .cr-nav a[aria-current]{text-decoration-color:var(--gold)}
.crd .cr-burger span{background:var(--ivory)}
.crd .cr-search{border-color:rgba(255,251,234,.6);color:var(--ivory)}
.crd .cr-search:hover,.crd .cr-search.is-on{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.crd .cr-header .cr-whatson{background:var(--cream);color:var(--ink);box-shadow:-3px 3px 0 rgba(0,0,0,.45)}
.crd .cr-header .cr-whatson:hover{color:var(--ink);box-shadow:-2px 2px 0 rgba(0,0,0,.45)}
.crd .cr-menu__bar{position:relative;isolation:isolate;border-bottom:0;color:var(--ivory)}
.crd .cr-menu__bar::before{content:'';position:absolute;z-index:-1;top:0;bottom:0;left:calc(50% - 50vw);right:calc(50% - 50vw);background:var(--green) url('../design/texture-felt.webp') center/360px}
.crd .cr-menu__bar .cr-burger{color:var(--ivory)}
.crd .cr-menu__bar .cr-whatson{background:transparent;color:var(--ivory);box-shadow:inset 0 0 0 1.5px rgba(255,251,234,.7)}
.crd .cr-menu__bar .cr-whatson:hover{color:var(--ivory);transform:none;box-shadow:inset 0 0 0 1.5px rgba(255,251,234,.7)}
.crd .cr-sp{color:var(--ink)}
.crd .cr-header :focus-visible,.crd .cr-menu__bar :focus-visible{outline-color:var(--gold);box-shadow:0 0 0 3px var(--ink-dk)}
.crd .cr-sp :focus-visible{outline-color:var(--ink);box-shadow:0 0 0 3px var(--gold)}
.crd .cr-sp .cr-sp__input:focus-visible{box-shadow:0 0 0 4px rgba(255,188,41,.5)}
@media (min-width:960px){
  .crd .cr-header.is-compact .cr-whatson{background:var(--gold);color:var(--ink);box-shadow:-3px 3px 0 var(--gold-dk)}
  .crd .cr-header.is-compact .cr-whatson:hover{color:var(--ink);box-shadow:-2px 2px 0 var(--gold-dk)}
}
@media (max-width:959px){
  .crd .cr-header .cr-whatson{background:transparent;color:var(--ivory);box-shadow:inset 0 0 0 1.5px rgba(255,251,234,.7)}
  .crd .cr-header .cr-whatson:hover{color:var(--ivory);transform:none;box-shadow:inset 0 0 0 1.5px rgba(255,251,234,.7)}
}
/* ==== PORT-END ==== */

/* ==== Theme additions — chrome (the same block in every inner page's stylesheet) ==== */

/* Skip link: first thing in <body>, outside .crd, off-screen (no layout) until focused. */
.cr-skip{position:absolute;top:0;left:-9999px;z-index:200}
.cr-skip:focus{left:16px;top:16px;padding:12px 18px;border-radius:12px;background:#FFBC29;color:#2E2D2A;font:900 15px/1.2 'futura-pt','Helvetica Neue',Helvetica,Arial,sans-serif;text-decoration:none}

/* The global nav's parts that wait in the page ([hidden]) for design.js: the menu dialog, the header
   search panel, the menu's search results. */
.crd .cr-menu[hidden],.crd .cr-sp[hidden],.crd .cr-ms__results[hidden]{display:none}

/* Without JS the header's search is a link to What's on's search box (the <noscript> one, a flex
   item of the header row like the button): the button (it opens the panel) needs JS. */
html:not(.cr-js) .crd button.cr-search{display:none}
html:not(.cr-js) .crd .cr-header__inner>noscript{display:contents}

/* Mailing-list forms (footer.php, the menu dialog): the error note and the done state are in the
   page, hidden; design.js shows them. A known subscriber (html.cr-subscribed, set before paint by the
   head script) sees the done states. A staff platform embed (Site settings → Email form embed)
   replaces the form. */
.crd .cr-ftform[hidden]{display:none}
html.cr-subscribed .crd [data-cr-ftform],html.cr-subscribed .crd [data-cr-msign]{display:none}
html.cr-subscribed .crd [data-cr-ftform-done]{display:flex}
html.cr-subscribed .crd [data-cr-msign-done]{display:block}
.crd .cr-ftform__embed,.crd .cr-msign__embed{min-width:0}

/* Focus and anchor jumps clear the sticky header (89px; 71px under 960px; the compact header, 67px,
   keeps the same padding so in-page jumps land where the designs' do). No effect at rest. */
html{scroll-padding-top:89px}

/* Without JS (no html.cr-js): under 960px the nav the burger would open shows as a row under the
   header. */
@media (max-width:959px){
  html{scroll-padding-top:71px}
  html:not(.cr-js) .crd .cr-header__inner{flex-wrap:wrap}
  html:not(.cr-js) .crd .cr-burger{visibility:hidden}
  html:not(.cr-js) .crd .cr-nav{display:flex;flex-wrap:wrap;order:1;flex-basis:100%;margin:-6px 0 8px -11px}
}

/* Art tile from an uploaded image (a show's Art image; cr_art_attrs() puts the URL in --art). */
.crd .cr-art--image{background:var(--green) var(--art) center/cover}
.crd .cr-art--image::before{display:none}

/* Under 360px the burger, the brand and the What's on button do not fit one row (the button was cut
   off at the right edge): the button keeps its calendar icon in a 44px square, and its words stay
   its accessible name. */
@media (max-width:359px){
  .crd .cr-whatson{position:relative;width:44px;height:44px;padding:0;justify-content:center}
  .crd .cr-whatson>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}

/* 360–389px: the burger, the brand and the What's on button need 341px and the row has 320–349px
   (the button ran past the right edge at 360, into the side gutter at 375): the gaps and the
   button's padding tighten under 390px, the wordmark and its tagline under 375px. The 390px design
   is untouched. Same for the open menu's bar. */
@media (min-width:360px) and (max-width:389px){
  .crd .cr-header__inner,.crd .cr-menu__bar{gap:8px}
  .crd .cr-whatson{padding:0 10px 0 9px;gap:6px}
}
@media (min-width:360px) and (max-width:374px){
  .crd .cr-brand__logo{width:148px}
  .crd .cr-tagline{letter-spacing:.14em}
}

/* Touch screens (pointer: coarse): the chrome's small controls get hit areas of at least 44px — an
   invisible ::after around each — without changing what is drawn (the canvas is drawn for a mouse,
   so nothing changes there): footer and legal links (33px tall in the design), the header wordmark
   (30px), What's on (42px on phones), the nav links (43px at 960–1099px), the dock's × (36–40px). */
@media (pointer:coarse){
  .crd .cr-footer__links a,.crd .cr-footer__legal a,.crd .cr-brand,.crd .cr-whatson,.crd .cr-nav a,.crd .cr-close{position:relative}
  .crd .cr-footer__links a::after,.crd .cr-footer__legal a::after{content:'';position:absolute;inset:-6px -6px}
  .crd .cr-brand::after{content:'';position:absolute;inset:-8px 0}
  .crd .cr-whatson::after,.crd .cr-nav a::after{content:'';position:absolute;inset:-2px 0}
  .crd .cr-close::after{content:'';position:absolute;inset:-4px}
}

/* ==== Theme additions — What's on (the What's on builder) ==== */

/* archive-show.php prints every night, row and state; the inactive ones go [hidden] inside
   <template data-wo-stash> (out of the document without JS), and whats-on.js unpacks them and keeps
   them [hidden] until they match. These set their own display, so [hidden] is restated. */
.crd .wo-row[hidden],.crd .wo-search__clear[hidden],.crd .wo-datebar[hidden],.crd .wo-empty[hidden]{display:none}

/* The dashed rule between nights. The design re-renders the list, so the first night shown never has
   one; here a stash <template> can sit between two shown nights (no JS), so the rule goes on a shown
   night after a shown night (the design's .wo-day + .wo-day values, both widths). */
.crd .wo-day + .wo-day{margin-top:0;padding-top:0;border-top:0}
.crd .wo-day:not([hidden]) ~ .wo-day:not([hidden]){margin-top:32px;padding-top:28px;border-top:1px dashed rgba(46,45,42,.3)}

/* Sign tiles: a show's Art image with Art image fit = Sign (the Bar show's mouth sign), centred at 88%
   on its Art colour (inline background-color, beside --art) — the design's .cr-art--barshow for any show. */
.crd .cr-art--sign{background-image:var(--art);background-position:center;background-size:88% auto;background-repeat:no-repeat}
.crd .cr-art--sign::before{display:none}

/* Row chips the design's demo data never shows (the homepage design's colours). */
.crd .cr-chip--fast{background:var(--gold);color:var(--ink)}
.crd .cr-chip--last{background:var(--ox);color:#FFF6E0}

@media (max-width:899px){
  .crd .wo-day:not([hidden]) ~ .wo-day:not([hidden]){margin-top:26px;padding-top:22px}
}

/* Under 390px a row's words had 84–153px beside the time stub, so long titles and the status chips ran
   under it, and at 375px a 13-letter word (LAUGHTERNOONS, 146px) broke mid-word: there the stub drops
   under the words (still the row's own ticket), and a word too long for the column breaks inside it.
   390px and up keep the design's row. */
.crd .wo-row__title{overflow-wrap:anywhere}
@media (max-width:389px){
  .crd .wo-row{grid-template-columns:58px minmax(0,1fr);grid-template-areas:"thumb main" "thumb price" "thumb tix"}
  .crd .wo-row .cr-tix{justify-self:start;margin-top:10px}
}

/* "On every week" cards under 360px: the name's column is ~122px between the art and the round arrow,
   so a 13-letter word (LAUGHTERNOONS) ran under the arrow. There the name is 15px with no tracking and
   the card's gaps 10px, so the word fits; a longer word breaks rather than reaching the arrow. */
.crd .wo-reg__name{overflow-wrap:anywhere}
@media (max-width:359px){
  .crd .wo-reg__card{gap:10px}
  .crd .wo-reg__name{font-size:15px;letter-spacing:0}
}

/* Touch screens (pointer: coarse): the month arrows (42px) and the search's clear (36px, already
   positioned) get 44px hit areas without changing what is drawn. The day cells (31–39px wide on
   phones, 34px at 1024px, 5–6px apart) are the design's size: their hit areas take half the gap
   at each side. */
@media (pointer:coarse){
  .crd .wo-calbtn{position:relative}
  .crd .wo-calbtn::after{content:'';position:absolute;inset:-2px}
  .crd .wo-search__clear::after{content:'';position:absolute;inset:-4px}
  .crd button.wo-cell::after,.crd a.wo-cell::after{content:'';position:absolute;inset:0 -2px}
}

/* No smooth jumps (skip link, in-page links) under reduced motion. */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
}

/* ==== What's on restyle (Brett's list, 08 Oct 2026: design system phase 2) ====
   What's on moves onto the system (design-system.md; tokens and components in components.css), one
   group of the list at a time: Frame, Hero, Calendar, List, Bottom, Mobile. Structure, data and
   behaviour stay; this is the surface: colours, shapes, type, buttons. Both views (/whats-on/ and
   /whats-on/calendar/) are this one page.
   Every rule here is prefixed .post-type-archive-show .crd.crd: design-brand.css loads after this
   sheet and styles What's on at .crd.crd, so these take one class more to lead. The decisions the
   list left open are logged in NOTES.md ("What's on restyle"). */

/* -- Frame. The header is black, as on home and the event page (the felt green goes; the cream
   wordmark and nav stay). Shows, the current page, is cream like the other links and underlined in
   cream (the text link's line: 1px, 4px under the words); hover is marigold, as for every nav link.
   The header's What's on link is cream too (Brett, 08 Oct): components.css colours the current nav
   item and What's on marigold (NOTES.md, What's on restyle). The hero sits 64px
   under the header and 48px over the calendar and list; the list band closes with the section pad
   (96px, 64px on phones). The double rule under the chips goes: the spacing does its job. */
.post-type-archive-show .crd.crd .cr-header{background:var(--cr-black);border-bottom-color:transparent;box-shadow:none}
.post-type-archive-show .crd.crd .cr-nav a[aria-current]{color:var(--cr-cream);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:var(--cr-cream)}
.post-type-archive-show .crd.crd .cr-nav a[aria-current]:hover{color:var(--cr-marigold)}
@media (min-width:960px){
  .post-type-archive-show .crd.crd .cr-header .cr-whatson[aria-current]{color:var(--cr-cream)}
  .post-type-archive-show .crd.crd .cr-header .cr-whatson[aria-current]:hover{color:var(--cr-marigold)}
}
.post-type-archive-show .crd.crd .wo-hero{padding-top:64px;padding-bottom:48px}
.post-type-archive-show .crd.crd .wo-layout{margin-top:0;padding-top:0;padding-bottom:var(--cr-section-pad)}
.post-type-archive-show .crd.crd .wo-tools{padding-bottom:0;border-bottom:0}
.post-type-archive-show .crd.crd .wo-tools::after{display:none}

/* -- Hero. The title is the h1 at the section-heading size, --cr-fs-h2 (46px, 32px on phones; 46
   not 56: this is a listing, not a landing page), line-height .95 and 14px under the eyebrow (10px
   under 900px), as home's section headings. The eyebrow is home's: Norican at --cr-fs-script, oxblood
   on the cream, tilted 4°. The lede is --cr-fs-lede (18px) muted at every width (it was 16px on
   phones). The Mouth character stays from 600px and hides under it, where it crowded the title. */
.post-type-archive-show .crd.crd .wo-kicker{font-size:var(--cr-fs-script);color:var(--cr-oxblood)}
.post-type-archive-show .crd.crd .wo-title{margin-top:14px;font-size:var(--cr-fs-h2);line-height:.95}
.post-type-archive-show .crd.crd .wo-lede{font-size:var(--cr-fs-lede);color:var(--cr-ink-muted)}
@media (max-width:899px){
  .post-type-archive-show .crd.crd .wo-title{margin-top:10px}
}
@media (max-width:599px){
  .post-type-archive-show .crd.crd .wo-hero__char{display:none}
  .post-type-archive-show .crd.crd .wo-title{max-width:none}
}

/* Search: the system's field on light. 54px (--cr-btn-h), the sm corner, paper with no grain, a 1px
   ink line at 16% (--cr-ink-line), Lato 16px (--cr-fs-input, so phones don't zoom), the magnifier
   in muted ink. Focused: the line goes full ink and the ring is a 3px ink outline (no marigold glow:
   marigold is for buying). The clear × re-centres in the taller box. */
.post-type-archive-show .crd.crd .wo-search__input{height:var(--cr-btn-h);padding:0 16px 0 48px;border:1px solid var(--cr-ink-line);border-radius:var(--cr-radius-sm);background:var(--cr-paper);background-image:none;font-family:var(--cr-font-body);font-size:var(--cr-fs-input);color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-search__input:focus{outline:none;border-color:var(--cr-ink);box-shadow:none}
.post-type-archive-show .crd.crd .wo-search__input:focus-visible{outline:3px solid var(--cr-ink);outline-offset:3px}
.post-type-archive-show .crd.crd .wo-search>.cr-ico{top:18px;left:17px;color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .wo-search__clear{top:9px}

/* Filter chips: aria-pressed toggles, 40px, the sm corner, Lato 900 11px upper case at the label
   tracking. Off: a 1px ink line at 40%, ink type; hover takes the line to full ink. On (and on
   hover): the selected state, black fill and cream type. The label centres on its letters, not on
   the trailing 0.15em. */
.post-type-archive-show .crd.crd .wo-chip{height:40px;padding:0 16px 0 calc(16px + var(--cr-label-track));border:1px solid color-mix(in srgb,var(--cr-ink) 40%,transparent);border-radius:var(--cr-radius-sm);background:transparent;box-shadow:none;color:var(--cr-ink);font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-label);line-height:1;letter-spacing:var(--cr-label-track);text-transform:uppercase}
.post-type-archive-show .crd.crd .wo-chip:hover{border-color:var(--cr-ink);background:transparent}
.post-type-archive-show .crd.crd .wo-chip.is-on,.post-type-archive-show .crd.crd .wo-chip.is-on:hover{border-color:var(--cr-black);background:var(--cr-black);color:var(--cr-cream)}

/* -- Calendar. The month card is paper with the grain, the 1px ink line, the lg corner and the card
   shadow (--cr-shadow-card). From 900px, where it sits beside the list, it sticks 24px under the
   compact header (67px from 960px; 71px at 900–959px, where the header keeps its phone layout); the
   "… only" bar under it sticks with it. The month name is Guess Sans 20px; the arrows are home's
   round arrow (.cr-round) on light: 40px, a 1px ink line at 40%, hover the full line and a 6% wash,
   disabled at 28%. M T W T F S S are labels. Cells take the sm corner and a 1px line at 16% on paper
   (hover: full ink line, 6% wash, no lift); the number is Guess Sans at h4. One dot per show, in
   ink. Today is ringed in ink (the oxblood ring and tint go: oxblood is the eyebrow only). The
   picked night is the selected state: black fill, cream number and dots. Past nights are muted with
   greyed dots and never "dark" (inc/page-whats-on.php names them "{date}, past", aria-disabled);
   dark nights (today on, no shows) keep the hatching and the word. The state rules are restated
   here because the paper fill above outranks the ported ones. The legend is fine print; its dot is
   ink and its swatch round, as the system's legend swatches. */
.post-type-archive-show .crd{--wo-head:67px}
@media (max-width:959px){
  .post-type-archive-show .crd{--wo-head:71px}
}
.post-type-archive-show .crd.crd .wo-aside{top:calc(var(--wo-head) + 24px)}
.post-type-archive-show .crd.crd .wo-cal{border-color:var(--cr-ink-line);border-radius:var(--cr-radius-lg);box-shadow:var(--cr-shadow-card)}
.post-type-archive-show .crd.crd .wo-cal__month{font-family:var(--cr-font-display);font-size:20px;letter-spacing:.01em}
.post-type-archive-show .crd.crd .wo-calbtn{width:40px;height:40px;border:1px solid color-mix(in srgb,var(--cr-ink) 40%,transparent);border-radius:50%;background:transparent;box-shadow:none;color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-calbtn:hover:not(:disabled){border-color:var(--cr-ink);background:color-mix(in srgb,var(--cr-ink) 6%,transparent);color:var(--cr-ink);box-shadow:none}
.post-type-archive-show .crd.crd .wo-calbtn:disabled{border-color:color-mix(in srgb,var(--cr-ink) 40%,transparent);color:var(--cr-ink);opacity:.28}
.post-type-archive-show .crd.crd .wo-cal__dow{font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-label);letter-spacing:var(--cr-label-track);color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .wo-cell{border:1px solid var(--cr-ink-line);border-radius:var(--cr-radius-sm);background:var(--cr-paper);color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-cell__n{font-size:var(--cr-fs-h4)}
.post-type-archive-show .crd.crd :is(button,a).wo-cell:hover{border-color:var(--cr-ink);background:color-mix(in srgb,var(--cr-ink) 6%,var(--cr-paper));transform:none}
.post-type-archive-show .crd.crd .wo-dots i{border-radius:var(--cr-radius-pill);background:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-cell.is-today{border-color:var(--cr-ink);background:var(--cr-paper)}
.post-type-archive-show .crd.crd .wo-cell.is-past{border-color:color-mix(in srgb,var(--cr-ink) 10%,transparent);background:transparent;color:color-mix(in srgb,var(--cr-ink) 34%,transparent)}
.post-type-archive-show .crd.crd .wo-cell.is-past .wo-dots i{background:color-mix(in srgb,var(--cr-ink) 24%,transparent)}
.post-type-archive-show .crd.crd .wo-cell.is-dark{border-color:color-mix(in srgb,var(--cr-ink) 14%,transparent);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--cr-ink) 5%,transparent) 0 5px,transparent 5px 10px);color:color-mix(in srgb,var(--cr-ink) 55%,transparent)}
.post-type-archive-show .crd.crd .wo-cell.is-sel,.post-type-archive-show .crd.crd .wo-cell.is-sel:hover{border-color:var(--cr-black);background:var(--cr-black);color:var(--cr-cream);box-shadow:none}
.post-type-archive-show .crd.crd .wo-cell.is-sel .wo-dots i{background:var(--cr-cream)}
.post-type-archive-show .crd.crd .wo-cell.is-blank{border:0;background:none}
.post-type-archive-show .crd.crd .wo-legend{font-size:var(--cr-fs-fine);color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .wo-lg-dot{border-radius:var(--cr-radius-pill);background:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-lg-dark{border-color:var(--cr-ink-line);border-radius:var(--cr-radius-pill)}

/* The "… only" bar under the calendar (item 27): the selected state's black and cream, the card
   corner; Show all dates is the on-black outline (a 40% cream line, full cream and a 6% cream wash
   on hover), 40px like the chips, its words a label. */
.post-type-archive-show .crd.crd .wo-datebar{border-radius:var(--cr-radius-lg);background:var(--cr-black);color:var(--cr-cream)}
.post-type-archive-show .crd.crd .wo-datebar__clear{height:40px;padding:0 14px 0 calc(14px + var(--cr-label-track));border:1px solid var(--cr-cream-40);border-radius:var(--cr-radius-sm);background:transparent;box-shadow:none;color:var(--cr-cream);font-weight:900;font-size:var(--cr-fs-label);letter-spacing:var(--cr-label-track);text-transform:uppercase}
.post-type-archive-show .crd.crd .wo-datebar__clear:hover{border-color:var(--cr-cream);background:color-mix(in srgb,var(--cr-cream) 6%,transparent)}
.post-type-archive-show .crd.crd .wo-datebar :focus-visible{outline-color:var(--cr-cream);box-shadow:none}

/* -- List. Day headings are Guess Sans 32px (24px at 768px and under; --wo-fs-day, Brett's
   numbers, both on the scale). TONIGHT is the marigold pill with the pulsing dot (Brett: keep), its
   dot ink now (oxblood is the eyebrow only); TOMORROW the 1px ink outline. Both are status pills:
   30px, full round, Lato 900 11px labels. */
.post-type-archive-show .crd{--wo-fs-day:32px}
@media (max-width:768px){
  .post-type-archive-show .crd{--wo-fs-day:24px}
}
.post-type-archive-show .crd.crd .wo-day__title{font-size:var(--wo-fs-day);line-height:1}
.post-type-archive-show .crd.crd .wo-when{height:30px;padding:0 12px 0 calc(12px + var(--cr-label-track));border-radius:var(--cr-radius-pill);box-shadow:none;font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-label);letter-spacing:var(--cr-label-track)}
.post-type-archive-show .crd.crd .wo-when--tonight{background:var(--cr-marigold);color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-when--tomorrow{border:1px solid var(--cr-ink);background:transparent;color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-pulse{background:var(--cr-ink);animation-name:wo-pulse-ink}
@keyframes wo-pulse-ink{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--cr-ink) 60%,transparent)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}

/* Rows: home's show row with a thumbnail, on the night card's surface (paper with the grain, the 1px
   ink line), the lg corner and the card shadow. 64px thumbnail + 11px padding + the line = 88px.
   Thumbnail left (sm corner), then the title (Guess Sans at h4: 17px, 16px on phones), the italic
   sub and the meta (Lato 14.5px; meta muted), price right (Lato 900 14px; Citizens 700 green), the
   stub right. From 1100px the price has its own column beside the stub; under 1100px it drops under
   the meta. The row isn't a link, so it no longer lifts on hover. */
.post-type-archive-show .crd.crd .wo-row{grid-template-columns:64px minmax(0,1fr) auto auto;grid-template-areas:"thumb main price tix" "thumb next price tix";gap:0 16px;padding:11px 12px;border-color:var(--cr-ink-line);border-radius:var(--cr-radius-lg);box-shadow:var(--cr-shadow-card)}
.post-type-archive-show .crd.crd .wo-row:hover{transform:none;border-color:var(--cr-ink-line);box-shadow:var(--cr-shadow-card)}
.post-type-archive-show .crd.crd .wo-row__title{font-family:var(--cr-font-display);font-size:var(--cr-fs-h4);line-height:1.1;letter-spacing:.01em}
.post-type-archive-show .crd.crd .wo-row__title a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:var(--cr-marigold)}
.post-type-archive-show .crd.crd .wo-row__sub{margin-top:2px;font-size:var(--cr-fs-body);line-height:1.3;color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-row__meta{margin-top:2px;font-size:var(--cr-fs-body);line-height:1.35;color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .wo-row__price{justify-self:end;margin-top:0;font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-price);line-height:1.3;text-align:right;white-space:nowrap;color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-row__price .cr-price__cit{font-weight:700;font-size:var(--cr-fs-price);color:var(--cr-green)}
@media (max-width:1099px){
  .post-type-archive-show .crd.crd .wo-row{grid-template-columns:64px minmax(0,1fr) auto;grid-template-areas:"thumb main tix" "thumb price tix" "thumb next tix";gap:0 12px}
  .post-type-archive-show .crd.crd .wo-row__price{justify-self:start;margin-top:4px;text-align:left;white-space:normal}
}
/* Under 390px the stub drops under the words, as before (the ported rule, restated for the areas
   above). */
@media (max-width:389px){
  .post-type-archive-show .crd.crd .wo-row{grid-template-columns:64px minmax(0,1fr);grid-template-areas:"thumb main" "thumb price" "thumb next" "thumb tix"}
  .post-type-archive-show .crd.crd .wo-row .cr-tix{justify-self:start;margin-top:10px}
}

/* Thumbnails (item 18): 64px, the sm corner, black under the picture. The show's photo (or Art
   image) crops to fill; a sign image (the Bar show's mouth) sits centred at 88%; with neither, the
   initials in cream Guess Sans on black, the search cards' look. The halftone and the colour tiles
   go (inc/page-whats-on.php cr_whats_on_thumb() no longer prints them). The picture is a lazy <img>
   (Brett, 21 Oct), not a background, so a long list fetches only the thumbnails near the viewport. */
.post-type-archive-show .crd.crd .wo-row .cr-art{width:64px;height:64px;align-self:center;border-radius:var(--cr-radius-sm);background-color:var(--cr-black);color:var(--cr-cream);filter:none;opacity:1}
.post-type-archive-show .crd.crd .wo-row .cr-art::before{display:none}
.post-type-archive-show .crd.crd .wo-row .cr-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.post-type-archive-show .crd.crd .wo-row .cr-art--sign img{width:88%;height:auto;object-fit:contain}
.post-type-archive-show .crd.crd .wo-row .cr-art__ini{font-family:var(--cr-font-display);font-size:18px;line-height:1;letter-spacing:.01em;color:var(--cr-cream);text-shadow:none}

/* Chips: status pills, Lato 900 11px labels. Selling fast stays marigold (Brett: keep; NOTES.md),
   Last tickets oxblood (home's), Cancelled / Started ink. Sold out is no longer a chip: the stub. */
.post-type-archive-show .crd.crd .wo-row .cr-chip{height:22px;margin-top:6px;padding:0 10px 0 calc(10px + var(--cr-label-track));border-radius:var(--cr-radius-pill);font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-label);letter-spacing:var(--cr-label-track)}
.post-type-archive-show .crd.crd .wo-row .cr-chip--fast{background:var(--cr-marigold);color:var(--cr-ink)}
.post-type-archive-show .crd.crd .wo-row .cr-chip--sold{background:var(--cr-ink);color:var(--cr-cream)}

/* Ticket stubs (item 21): home's stub on every row, whatever the night (and on the season cards). Marigold, ink type, Lato 900
   15px, 54px, min 98px, the sm corner, 6.5px notches, the ink perforation 15px in; hover the
   marigold hover. 88px wide and 23px in under 600px, as home's phone stubs. */
.post-type-archive-show .crd.crd :is(.wo-row,.cr-popcard) .cr-tix__body{min-width:98px;height:var(--cr-btn-h);padding:0 22px 0 26px;border-radius:var(--cr-radius-sm);font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-btn);letter-spacing:.02em;-webkit-mask:radial-gradient(circle 6.5px at 0 50%,transparent 96%,black) 0 0/51% 100% no-repeat,radial-gradient(circle 6.5px at 100% 50%,transparent 96%,black) 100% 0/51% 100% no-repeat;mask:radial-gradient(circle 6.5px at 0 50%,transparent 96%,black) 0 0/51% 100% no-repeat,radial-gradient(circle 6.5px at 100% 50%,transparent 96%,black) 100% 0/51% 100% no-repeat}
.post-type-archive-show .crd.crd :is(.wo-row,.cr-popcard) .cr-tix__body::before{left:15px}
.post-type-archive-show .crd.crd :is(.wo-row,.cr-popcard) .cr-tix:not(.is-soldout):hover .cr-tix__body{background:var(--cr-marigold-hover)}
@media (max-width:599px){
  .post-type-archive-show .crd.crd :is(.wo-row,.cr-popcard) .cr-tix__body{min-width:88px;padding-left:23px}
  .post-type-archive-show .crd.crd :is(.wo-row,.cr-popcard) .cr-tix__body::before{left:13px}
}

/* Sold out (item 22): home's Sold out stub (design-home.css section 37; NOTES.md 7 asks for it as
   .cr-tix--soldout in components.css). A <span aria-disabled="true">: no fill, a 1px ink outline at
   40% with a ring tracing each notch, "SOLD OUT" as a muted 11px label centred between the
   perforation and the right notch, sized to the row's own time stub by an invisible copy of the time
   (data-time). The row keeps its card; everything in it is at 55% but "Next available", the one
   thing left to do, a full-strength text link (→ in CSS) to the same show's next bookable session,
   on its own grid line under the meta (under the price below 1100px, as home's row has it). */
.post-type-archive-show .crd.crd .wo-row.is-sold{background-color:var(--cr-paper);box-shadow:var(--cr-shadow-card)}
/* Sold / cancelled rows: greyed at .72, not .55, so the 14–17px type still clears 4.5:1 on paper (Lighthouse
   color-contrast, launch audit 21 Oct); the meta line and chip take the ink too for the same reason. */
.post-type-archive-show .crd.crd .wo-row.is-sold :is(.cr-art,.wo-row__title,.wo-row__sub,.wo-row__meta,.cr-chip,.wo-row__price,.cr-tix){opacity:.72}
.post-type-archive-show .crd.crd .wo-row.is-sold :is(.wo-row__title,.wo-row__price,.wo-row__meta){color:var(--cr-ink)}
/* Titles break between words, never with a hyphen (Brett, 23 Oct: "DANIEL / MUGGLETON", not "MUGGLE- / TON"):
   a whole word drops to the next line. A title with a word of 13+ letters (row 'long', "LAUGHTERNOONS") is a
   step smaller under 600px so the word fits the 137px column whole; a word that still can't fit breaks
   without a hyphen rather than running out of the row. */
.post-type-archive-show .crd.crd .wo-row__title{overflow-wrap:break-word;hyphens:manual;-webkit-hyphens:manual}
@media (max-width:599px){
  .post-type-archive-show .crd.crd .wo-row__title.is-long{font-size:calc(var(--cr-fs-h4) * .875)}
}
/* The Coming soon stub (a night with no Flicket event yet, Brett, 22 Oct): two short lines in the sold-out stub's lettering, a step smaller so it clears the notches. */
.post-type-archive-show .crd.crd .wo-row .cr-tix.is-soon .cr-tix__so--two{flex-direction:column;gap:2px;font-size:calc(var(--cr-fs-label) * .86);letter-spacing:.06em;padding-left:.06em}
.post-type-archive-show .crd.crd .wo-row.is-sold .cr-price__cit{color:var(--cr-green)}
.post-type-archive-show .crd.crd .wo-row .cr-tix.is-soldout{cursor:default}
.post-type-archive-show .crd.crd .wo-row .cr-tix.is-soldout .cr-tix__body{--cr-so-line:color-mix(in srgb,var(--cr-ink) 40%,transparent);background:radial-gradient(circle at -1px 50%,transparent 6.1px,var(--cr-so-line) 6.35px,var(--cr-so-line) 7.25px,transparent 7.5px) 1px 0/calc(50% - 1px) 100% no-repeat,radial-gradient(circle at calc(100% + 1px) 50%,transparent 6.1px,var(--cr-so-line) 6.35px,var(--cr-so-line) 7.25px,transparent 7.5px) calc(100% - 1px) 0/calc(50% - 1px) 100% no-repeat;box-shadow:inset 0 0 0 1px var(--cr-so-line);color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .wo-row .cr-tix.is-soldout .cr-tix__body::after{content:'0:00pm';content:attr(data-time);content:attr(data-time) / '';visibility:hidden}
.post-type-archive-show .crd.crd .wo-row .cr-tix.is-soldout .cr-tix__so{position:absolute;top:0;right:7.5px;bottom:0;left:16.5px;display:flex;align-items:center;justify-content:center;padding-left:var(--cr-label-track);font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-label);line-height:1;letter-spacing:var(--cr-label-track);text-transform:uppercase}
@media (max-width:599px){
  .post-type-archive-show .crd.crd .wo-row .cr-tix.is-soldout .cr-tix__so{left:14.5px}
}
.post-type-archive-show .crd.crd .wo-row .cr-nextav{grid-area:next;justify-self:start;display:inline-block;margin-top:6px;font-family:var(--cr-font-body);font-weight:700;font-size:var(--cr-fs-link);line-height:1.4;color:var(--cr-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:currentColor}
.post-type-archive-show .crd.crd .wo-row .cr-nextav:hover{text-decoration-color:var(--cr-marigold)}
.post-type-archive-show .crd.crd .wo-row .cr-nextav::after{content:"\00a0\2192" / ""}
@media (pointer:coarse){
  .post-type-archive-show .crd.crd .wo-row .cr-nextav{position:relative}
  .post-type-archive-show .crd.crd .wo-row .cr-nextav::before{content:'';position:absolute;inset:min(0px,calc(50% - 22px)) 0}
}
@media (forced-colors:active){
  .post-type-archive-show .crd.crd .wo-row.is-sold :is(.cr-art,.wo-row__title,.wo-row__sub,.wo-row__meta,.cr-chip,.wo-row__price,.cr-tix){opacity:1}
  .post-type-archive-show .crd.crd .wo-row .cr-tix.is-soldout .cr-tix__body{outline:1px solid GrayText;outline-offset:-1px}
}

/* Filtering (item 23): whats-on.js lays a fading copy of each leaving night or row over the list
   (.wo-ghost, positioned in .wo-main, under the list: .wo-main is its own stacking context) while
   the rest slide into place over it; none of it under reduced motion. */
.post-type-archive-show .crd.crd .wo-main{position:relative;isolation:isolate}

/* -- Bottom. "On every week, all year" (item 24) sits one section pad under the list (the double
   rule goes, as the one under the chips did), its heading at the day headings' size, its lede 18px
   muted. Its cards are home's Most booked card (.cr-popcard on .cr-card, as the event page's Also
   on): paper, the lg corner, the card shadow; the photo band (4:3) on top, a season show's venue
   photo as on home, else initials on black; the label row (category · status, muted 11px labels);
   the title at h3, its link covering the card; the schedule; then the price and home's marigold
   stub (Tickets: the show's next bookable session, or See show). Two to a row from 600px; under it
   a swipe row, a card 80% of the screen wide. */
.post-type-archive-show .crd.crd .wo-reg{margin-top:var(--cr-section-pad);padding-top:0;border-top:0}
.post-type-archive-show .crd.crd .wo-reg::before{display:none}
.post-type-archive-show .crd.crd .wo-reg__title{font-size:var(--wo-fs-day);line-height:1}
.post-type-archive-show .crd.crd .wo-reg__lede{margin-top:12px;font-size:var(--cr-fs-lede);color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .wo-reg__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:24px}
.post-type-archive-show .crd.crd .cr-popcard{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;border-radius:var(--cr-radius-lg);background:var(--cr-paper);box-shadow:var(--cr-shadow-card);color:var(--cr-ink)}
.post-type-archive-show .crd.crd .cr-popart{position:relative;display:grid;place-items:center;aspect-ratio:4 / 3;background:var(--cr-black) center/cover no-repeat;color:var(--cr-cream)}
.post-type-archive-show .crd.crd .cr-popart img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.post-type-archive-show .crd.crd .cr-popart__ini{font-family:var(--cr-font-display);font-weight:800;font-size:var(--cr-fs-h2);line-height:1;letter-spacing:.01em;text-transform:uppercase;color:var(--cr-cream)}
.post-type-archive-show .crd.crd .cr-popcard__body{padding:20px 22px 0}
.post-type-archive-show .crd.crd .cr-popcard__tags{margin:0;font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-label);line-height:1.4;letter-spacing:var(--cr-label-track);text-transform:uppercase;color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .cr-popcard__tags>span+span::before{content:'\00B7';margin:0 .55em;letter-spacing:0}
.post-type-archive-show .crd.crd .cr-popcard__title{margin-top:10px;font-size:var(--cr-fs-h3);line-height:1;overflow-wrap:anywhere}
.post-type-archive-show .crd.crd .cr-popcard__title a{color:var(--cr-ink);text-decoration:none}
.post-type-archive-show .crd.crd .cr-popcard__title a::after{content:'';position:absolute;inset:0;z-index:1}
.post-type-archive-show .crd.crd .cr-popcard__title a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:var(--cr-marigold)}
.post-type-archive-show .crd.crd .cr-popcard__title a:focus-visible{outline:none;box-shadow:none}
.post-type-archive-show .crd.crd .cr-popcard:has(.cr-popcard__title a:focus-visible){outline:3px solid var(--cr-ink);outline-offset:3px}
.post-type-archive-show .crd.crd .cr-popcard__dates{margin-top:6px;font-size:var(--cr-fs-body);line-height:1.4;color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .cr-popcard__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 12px;margin-top:auto;padding:18px 22px 22px}
.post-type-archive-show .crd.crd .cr-popcard .cr-price{margin:0;font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-price);line-height:1.3;color:var(--cr-ink)}
.post-type-archive-show .crd.crd .cr-popcard .cr-price__cit{font-weight:700;color:var(--cr-green)}
.post-type-archive-show .crd.crd .cr-popcard .cr-tix{position:relative;z-index:2;flex:none;display:inline-flex;text-decoration:none;filter:none;transform:none}
@media (max-width:599px){
  .post-type-archive-show .crd.crd .wo-reg__grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:18px calc(var(--gut) * -1) -40px;padding:0 var(--gut) 40px;scroll-padding-inline:var(--gut)}
  .post-type-archive-show .crd.crd .wo-reg__grid::-webkit-scrollbar{display:none}
  .post-type-archive-show .crd.crd .wo-reg__grid .cr-popcard{flex:0 0 80%;scroll-snap-align:start}
}

/* The empty state (item 25): a dashed 1px ink line at 40% around a 60% paper wash, the card corner;
   the title at h3, its line body muted; then "Show everything", the outline button at its system
   size (54px, the sm corner, a 1px ink line, a 6% ink wash on hover), and the mailing-list nudge as a
   text link to the footer's form (archive-show.php; none when the footer has no form). */
.post-type-archive-show .crd.crd .wo-empty{padding:32px;border:1px dashed color-mix(in srgb,var(--cr-ink) 40%,transparent);border-radius:var(--cr-radius-lg);background:color-mix(in srgb,var(--cr-paper) 60%,transparent)}
.post-type-archive-show .crd.crd .wo-empty__title{font-size:var(--cr-fs-h3);line-height:1}
.post-type-archive-show .crd.crd .wo-empty__text{font-size:var(--cr-fs-body);color:var(--cr-ink-muted)}
.post-type-archive-show .crd.crd .wo-empty__actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;margin-top:8px}
.post-type-archive-show .crd.crd .wo-empty .cr-btn--outline,.post-type-archive-show .crd.crd .wo-empty .cr-btn--outline:hover{height:var(--cr-btn-h);min-height:0;margin:0;padding:0 22px;border:1px solid var(--cr-ink);border-radius:var(--cr-radius-sm);background:transparent;box-shadow:none;color:var(--cr-ink);font-family:var(--cr-font-body);font-weight:900;font-size:var(--cr-fs-btn);transform:none}
.post-type-archive-show .crd.crd .wo-empty .cr-btn--outline:hover{background:color-mix(in srgb,var(--cr-ink) 6%,transparent)}
@media (max-width:599px){
  .post-type-archive-show .crd.crd .wo-empty{padding:24px 20px 28px}
}

/* -- Mobile (under 900px). The calendar sits above the list (as before) and opens on one week row:
   the server marks that week's cells (.is-wk; whats-on.js keeps them marked), and with JS on
   (html.cr-js, set before the first paint) the other rows hide until .wo-cal is .is-month, so the
   week is there from the first paint. "Show month" (a text link, centred under the grid) opens the
   whole month and reads "Show week" to close it. Without JS the month shows whole. The filter chips
   are a swipe row that fades out over the side gutters, so a chip cut at the edge reads as "more
   this way"; the row has 6px above and below so a focused chip's ring isn't clipped. The Mouth is
   hidden under 600px (Hero). */
.post-type-archive-show .crd.crd .wo-cal__more{display:none}
@media (max-width:899px){
  .post-type-archive-show .crd.crd .wo-cal__more{display:block;width:fit-content;margin:14px auto 0}
  .post-type-archive-show .crd.crd .wo-cal__more[hidden]{display:none}
  html.cr-js .post-type-archive-show .crd.crd .wo-cal:not(.is-month) .wo-cal__grid>:not(.is-wk){display:none}
  .post-type-archive-show .crd.crd .wo-chips{margin-block:-6px;padding-block:6px;-webkit-mask-image:linear-gradient(90deg,transparent,var(--cr-ink) var(--gut),var(--cr-ink) calc(100% - var(--gut)),transparent);mask-image:linear-gradient(90deg,transparent,var(--cr-ink) var(--gut),var(--cr-ink) calc(100% - var(--gut)),transparent)}
}

/* -- Whole-row link (Brett, 23 Oct). The title's link stretches over its row (an ::after across the
   card), so a tap anywhere on a row opens that night's show page. The ticket / Waitlist stubs and
   "Next available" sit above it and keep their own links; a disabled Sold out / Coming soon stub
   lets the tap through to the row. Hovering anywhere on the row underlines the title in marigold;
   keyboard focus rings the whole card. */
.post-type-archive-show .crd.crd .wo-row{position:relative;cursor:pointer}
.post-type-archive-show .crd.crd .wo-row__title a::after{content:'';position:absolute;inset:0;z-index:1;border-radius:inherit}
.post-type-archive-show .crd.crd .wo-row :is(a.cr-tix,.cr-nextav){position:relative;z-index:2}
.post-type-archive-show .crd.crd .wo-row .cr-tix[aria-disabled="true"]{pointer-events:none}
@media (hover:hover){
  .post-type-archive-show .crd.crd .wo-row:hover .wo-row__title a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:var(--cr-marigold)}
}
.post-type-archive-show .crd.crd .wo-row__title a:focus-visible{outline:none;box-shadow:none}
.post-type-archive-show .crd.crd .wo-row:has(.wo-row__title a:focus-visible){outline:3px solid var(--cr-ink);outline-offset:3px}

/* -- Closed nights (Brett, 23 Oct): the calendar cell drops the word "closed" and keeps the hatching.
   The word is hidden, not removed, so the cell keeps its height; its aria-label still says "closed
   night, bar still open", and the legend keeps its key. */
.post-type-archive-show .crd.crd .wo-cell__dark{visibility:hidden}
