/* ===== Desktop pass (established patterns: 3-up card grid, sticky order summary, hover states) ===== */
.ck-desk{display:none}
.cksum{display:none}
.appad-qr{width:56px;flex:none;background:#fff;border-radius:8px;padding:4px}.appad-qr svg{display:block;width:100%;height:auto}
.phone-row{display:flex;gap:12px;align-items:center}.phone-row .phoneqr{width:84px}
.stack-grid{display:block}.one-ev{display:block}
@media (min-width:1100px){.wrap{max-width:1180px}}
@media (min-width:1000px){
  .grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 28px}
  .stack-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,360px));gap:8px 32px}
  .one-ev{display:grid;grid-template-columns:minmax(0,440px) 1fr;gap:56px;align-items:center;padding-block:12px}
  .one-ev .flyer{aspect-ratio:4/5}
  .one-ev-t .btn{max-width:340px}
  .appad{max-width:520px}
}
@media (min-width:900px){
  .ckgrid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:32px;align-items:start}
  .cksum{display:block;position:sticky;top:calc(84px + var(--sx,0px));background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px}
  .cksum-h{display:block;font-family:var(--display);font-size:18px;margin-bottom:12px}
  .ck-inl{display:none!important}.ck-desk{display:inline}
  .wlist{gap:0;border:1px solid var(--border);border-radius:14px;overflow:hidden}
  .wrow{grid-template-columns:1fr auto auto;border:0;border-radius:0;border-bottom:1px solid var(--border);background:var(--panel)}
  .wrow:last-child{border-bottom:0}.wrow-a{grid-column:auto}
}
@media (hover:hover){
  @media (hover:hover){.evrow:hover,.wrow:hover{background:rgba(255,255,255,.03)}}
  @media (hover:hover){.dcard:hover{border-color:var(--muted)}}
  @media (hover:hover){.faq summary:hover{color:var(--brand)}}
  @media (hover:hover){.link:hover,.crumb:hover{text-decoration:underline}}
  @media (hover:hover){.filters button:hover,.tabs button:hover{border-color:var(--muted)}}
  @media (hover:hover){nav.main button:hover,.logo:hover{color:var(--brand)}}
  @media (hover:hover){.pastitem:hover .flyer{transform:translateY(-3px)}}
}
.card .flyer,.pastitem .flyer{transition:transform .15s}

.phonebox{justify-content:space-between}.phone-row{flex-wrap:wrap}

/* Event page on phones: the flyer is a poster (portrait), the buy bar sits above the cookie notice */
@media (max-width:820px){
  .ev .flyer{aspect-ratio:4/5;max-height:72svh;margin-bottom:18px}
  .buybar{bottom:var(--cookie-h,0px)}
  .cookie{z-index:41}
}

.no-anim *,.no-anim *::before,.no-anim *::after{animation:none!important;transition:none!important}

/* Ticket sheet: the list scrolls, the total and the buy button stay pinned at the bottom (so adding tickets never pushes the button off screen) */
button,a,.btn,.step{touch-action:manipulation}
.sheet-foot{margin-top:14px}.foot-total{display:none}
.step output{min-width:34px;font-variant-numeric:tabular-nums}
@media (max-width:820px){
  .panel.stick.sheet{padding-bottom:0}
  .sheet-note{margin-bottom:6px}
  .sheet-foot{position:sticky;bottom:0;margin:10px -20px 0;padding:12px 20px calc(12px + env(safe-area-inset-bottom,0px));background:var(--panel);border-top:1px solid var(--border);z-index:2}
  .foot-total{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:10px;font-weight:700}
  .foot-total span{font-weight:500;color:var(--text-dim);font-size:14px}.foot-total b{font-size:18px}
  .step button{width:44px;height:44px}
}

/* Re-rendering the same screen (quantity, filters, toggles) never replays the screen-enter animations; they only run when the screen changes. */
#app.noenter section.view,#app.noenter .app-body,#app.noenter .app-poster,#app.noenter .intro-deck{animation:none!important}

/* Ticket sheet: a visible close button on phones (the grab bar, backdrop, swipe and Escape still work) */
.sheetx{display:none}
@media (max-width:820px){
  .sheetx{display:grid;place-items:center;position:sticky;top:0;float:right;z-index:3;width:44px;height:44px;margin:-8px -10px 0 0;border:0;border-radius:50%;background:var(--chip);color:var(--text);cursor:pointer}
}

/* Phone pass: 13px text floor everywhere, 44px targets for the few that were short */
.sp-tag,.app-badge,.app-pd-d em,.app-pd-dt,.stub-date,.stub-ns,.stub-n small,.cd-u i,.bundle-row-sent,.bundle-chip,.tk-count,.cd-u i,.fld-sm,.stat{font-size:max(13px,1em)}
small{font-size:max(13px,.83em)}
.fact small,.app-line small,.stub-meta small{font-size:13px}
.app-badge,.sp-tag,.bundle-chip,.bundle-row-sent,.stub-ns,.cd-u i{font-size:13px}
@media (max-width:820px){
  .sponsored-banner{min-height:44px}
  .fact a,.crumb{display:inline-flex;align-items:center;min-height:44px}
  .sheetgrab{position:relative}
  .sheetgrab::after{content:"";position:absolute;inset:-18px -60px -14px}
}

.goesto{font-size:15px;line-height:1.45}
.goesto b{word-break:normal;overflow-wrap:anywhere}
.check>span{flex:1;min-width:0}

.trow .fld-sm{width:auto}.trow2 .fld-sm{width:96px}
.trow .iconbtn{align-self:end}
.trow{align-items:end}

/* Mobile pass: 44px tap targets and the 13px text floor */
@media (max-width:820px){
  .faq summary{min-height:44px;display:flex;align-items:center}
  .wrow-a .link{min-height:44px;padding-inline:4px}
}
.app-pd-dt{font-size:13px!important}
.buybar small,.pr small{font-size:13px}

/* Clear-items pass (2026-10-03) */
.qrfold{flex:1 1 100%;margin-top:8px}.qrfold>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-height:44px}.qrfold>summary::-webkit-details-marker{display:none}.qrfold[open]>summary{margin-bottom:10px}
.appad{flex-wrap:wrap}.appad .qrfold{flex:1 1 100%}
.actions.big{gap:12px}.actions.big .btn{min-height:56px;font-size:17px;padding:0 24px;flex:1 1 220px;justify-content:center}
.app-ic.txt{width:auto;border-radius:22px;padding:0 12px;font-size:14px;font-weight:600;color:var(--accent,#2ecc71)}

.guard{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;z-index:200;padding:16px}.guard-box{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:22px;width:min(100%,460px)}.guard-box h2{font-size:22px;margin-bottom:8px}.guard-box .actions.big{margin-top:16px}
.stub-n{font-family:var(--body);font-weight:700;font-size:28px}.stub-n small{font-family:var(--body);font-weight:600;font-size:14px;color:var(--text-dim);margin-top:2px}
.stub-n,.stub-n small{font-family:var(--display)}.stub-n small{font-weight:700}

.receipt{background:#fff;color:#111;border-radius:14px;padding:24px;margin:12px 0 18px}.receipt header{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #111;padding-bottom:12px;margin-bottom:14px}.receipt header img{filter:invert(1)}.receipt header div{text-align:right;display:grid}.receipt .mut{color:#555}.receipt h2{font-size:20px;color:#111;margin-bottom:2px}.rc-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;margin:0 0 16px}.rc-meta dt{font-size:13px;color:#555}.rc-meta dd{margin:0;font-weight:600}.receipt table{width:100%;border-collapse:collapse;margin-bottom:12px}.receipt th,.receipt td{padding:8px 4px;border-bottom:1px solid #ddd;text-align:left;color:#111}.receipt .r{text-align:right}.receipt tfoot td{font-weight:800;border-bottom:0;font-size:17px}
@media print{body>header,.crumb,.no-print,#cookie,footer{display:none!important}body{background:#fff}.receipt{box-shadow:none;margin:0}}

.adm{display:grid;grid-template-columns:210px minmax(0,1fr);gap:28px;align-items:start;margin-top:6px}.adm-nav{position:sticky;top:76px;display:grid;gap:14px}.adm-gl{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 4px 10px;font-weight:700}.adm-g{display:grid;gap:2px}.adm-nav button{display:flex;justify-content:space-between;align-items:center;min-height:44px;padding:0 10px;border-radius:10px;border:0;background:none;color:var(--text);font:600 15px var(--body);cursor:pointer;text-align:left}.adm-nav button:hover{background:var(--chip)}.adm-nav button[aria-current=true]{background:var(--chip);box-shadow:inset 3px 0 0 var(--brand)}.adm-b{background:var(--brand);color:#000;border-radius:999px;font-size:12px;font-weight:800;min-width:22px;height:22px;display:grid;place-items:center;padding:0 6px}.aq-bar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px}.aq-sort{display:flex;align-items:center;gap:8px;font-size:14px}.aq-sort select{min-height:44px;width:auto}
@media (max-width:820px){.adm{grid-template-columns:minmax(0,1fr);gap:12px}.adm-nav{position:static;display:flex;overflow-x:auto;gap:6px;padding-bottom:6px}.adm-g{display:flex;gap:4px;align-items:center}.adm-gl{display:none}.adm-nav button{white-space:nowrap;gap:8px}}

.soc{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.soc-b{min-height:44px;padding:0 14px;cursor:pointer;font-weight:600}

.inline-edit{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.inline-edit .inp{flex:1 1 220px}

/* Search, filters, pull to refresh, tap target */
.searchbox{margin:0 0 10px}.searchbox .inp,.app-search .inp{min-height:48px;width:100%}.app-search{padding:0 0 10px}
.sidefilter{display:grid;gap:8px;margin-bottom:14px}.sf-l{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-top:6px}.sf-more{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600;color:var(--text-dim)}.sf-clear{justify-self:start;min-height:44px}
.morefilt{display:grid;gap:8px}
@media (min-width:1000px){.listwrap{display:grid;grid-template-columns:260px 1fr;gap:32px;align-items:start}.sidefilter{position:sticky;top:84px;margin:0}.sidefilter .filters{flex-wrap:wrap}.sf-more{display:none}.morefilt>summary{display:none}}
.ptr{position:fixed;top:0;left:50%;width:40px;height:40px;border-radius:50%;background:var(--panel);border:1px solid var(--border);display:grid;place-items:center;z-index:90;transform:translate(-50%,-44px);opacity:0;pointer-events:none}.ptr i{width:18px;height:18px;border-radius:50%;border:2.5px solid var(--muted);border-top-color:var(--brand)}.ptr.ready i{border-color:var(--brand);border-top-color:#fff}.ptr.spring{transition:transform .35s cubic-bezier(.3,1.5,.5,1),opacity .25s}.ptr.spin i{animation:ptrspin .8s linear infinite}@keyframes ptrspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ptr.spring{transition:none}.ptr.spin i{animation:none}}
.promoter .link{min-height:44px;display:inline-flex;align-items:center}

.holdwarn{display:grid;gap:2px;background:rgba(255,184,0,.14);border:1px solid #ffb800;color:var(--text);border-radius:12px;padding:12px 14px;margin:0 0 14px;position:sticky;top:8px;z-index:20}.holdwarn b{font-size:16px}.holdwarn span{font-size:14px;color:var(--text-dim)}.holdwarn .hw-t{color:var(--text);font-size:inherit}

/* Demo menu: the jump strip is hidden until the floating button is tapped */


