/* Forma — cool-paper editorial + single cobalt accent.
   Shape rule: buttons = pill, cards = 18px, inputs = 12px. Locked everywhere. */
:root{
  --paper:#ECEEE7;
  --surface:#F7F7F2;
  --card:#FFFFFF;
  --ink:#1B211D;
  --muted:#59605A;
  --line:#1B211D;
  --hair:rgba(27,33,29,.16);
  --accent:#2438E8;
  --accent-ink:#FFFFFF;
  --accent-soft:rgba(36,56,232,.09);
  --radius-card:18px;
  --radius-input:12px;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
  --shadow:6px 6px 0 rgba(27,33,29,1);
  --shadow-soft:0 18px 40px -18px rgba(27,33,29,.28);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%;height:auto}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:16px;top:-60px;background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;z-index:200;text-decoration:none;transition:top .2s}
.skip:focus{top:12px;color:#fff}

/* header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(236,238,231,.92);backdrop-filter:blur(10px);border-bottom:2px solid var(--line)}
.header-in{display:flex;align-items:center;gap:20px;height:66px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);margin-right:auto}
.brand-mark{width:38px;height:38px;border:2px solid var(--line);border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:800;font-size:19px;letter-spacing:-.02em}
.brand-mark span{color:#FFD84D}
.brand-word{font-weight:800;font-size:22px;letter-spacing:-.03em}
.site-nav{display:flex;gap:22px}
.site-nav a{color:var(--ink);text-decoration:none;font-weight:600;font-size:14.5px}
.site-nav a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}
.header-save{display:flex;align-items:center;gap:8px;border:2px solid var(--line);border-radius:999px;background:var(--surface);padding:7px 14px;font:600 13px var(--mono);white-space:nowrap}

/* hero */
.hero{display:grid;grid-template-columns:1.04fr .96fr;gap:48px;padding-top:56px;padding-bottom:52px;align-items:start}
.kicker{display:inline-flex;align-items:center;gap:9px;font:600 12px var(--mono);letter-spacing:.14em;text-transform:uppercase;border:2px solid var(--line);border-radius:999px;padding:7px 14px;background:var(--surface)}
.kicker .dot{width:9px;height:9px;border-radius:50%;background:var(--accent)}
.hero h1{font-size:clamp(2.5rem,4.6vw,3.9rem);line-height:1.02;letter-spacing:-.035em;margin:22px 0 14px;font-weight:800;max-width:12ch}
.hero h1 em{font-style:italic}
.lede{font-size:1.1rem;color:var(--muted);max-width:44ch;margin:0 0 24px}
.hero-ctas{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:26px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;border:2px solid var(--line);padding:12px 22px;font-weight:700;font-size:15px;cursor:pointer;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}
.btn:active{transform:translateY(1px) scale(.98)}
.btn-solid{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:4px 4px 0 rgba(27,33,29,1)}
.btn-solid:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 rgba(27,33,29,1)}
.btn-ghost{background:var(--surface);color:var(--ink)}
.btn-ghost:hover{background:#fff}
.hero-facts{display:grid;grid-template-columns:repeat(3,1fr);border:2px solid var(--line);border-radius:var(--radius-card);background:var(--surface);margin:0;overflow:hidden}
.hero-facts div{padding:13px 15px}
.hero-facts div+div{border-left:2px solid var(--line)}
.hero-facts dt{font:600 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.hero-facts dd{margin:3px 0 0;font-weight:700;font-size:14px}
.hero-media{position:relative;padding-top:8px}
.hero-photo{margin:0;border:2px solid var(--line);border-radius:var(--radius-card);overflow:hidden;background:var(--card);box-shadow:var(--shadow);transform:rotate(1.2deg)}
.hero-photo img{aspect-ratio:4/3.4;object-fit:cover;width:100%}
.hero-photo figcaption{padding:10px 16px;font:500 12.5px var(--mono);color:var(--muted);border-top:2px solid var(--line)}
.hero-card{position:absolute;left:-30px;bottom:26px;background:var(--card);border:2px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);padding:16px 18px;width:250px;transform:rotate(-1.6deg)}
.hero-card-top{font:600 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 4px}
.hero-card-title{font-weight:800;font-size:19px;letter-spacing:-.02em;margin:0}
.hero-card-meta{font:500 13px var(--mono);color:var(--muted);margin:5px 0 12px}
.hero-card-go{border:2px solid var(--line);background:var(--ink);color:#fff;border-radius:999px;padding:8px 16px;font-weight:700;font-size:13.5px;cursor:pointer;width:100%}
.hero-card-go:hover{background:var(--accent);border-color:var(--accent)}

/* ticker — the single marquee on the page */
.ticker{border-top:2px solid var(--line);border-bottom:2px solid var(--line);background:var(--ink);color:#F2F1E9;overflow:hidden;white-space:nowrap}
.ticker-track{display:inline-block;padding:11px 0;font:600 13px var(--mono);letter-spacing:.12em;text-transform:uppercase;animation:tick 26s linear infinite}
.ticker-track i{font-style:normal;color:#FFD84D;margin:0 14px}
@keyframes tick{to{transform:translateX(-50%)}}

/* browse */
.browse{padding-top:56px;padding-bottom:20px}
.browse-head{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}
.browse-head h2{font-size:clamp(1.9rem,3vw,2.6rem);letter-spacing:-.03em;margin:0;font-weight:800}
.browse-sub{margin:0;color:var(--muted);font-size:15.5px}
.controls{display:grid;grid-template-columns:1.4fr 1fr auto;gap:14px;margin:26px 0 10px;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-card);padding:16px;box-shadow:var(--shadow)}
.field{display:flex;flex-direction:column;gap:7px}
.field label,.field-label{font:700 11.5px var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.field input,.field select{font:600 15px var(--sans);color:var(--ink);background:#fff;border:2px solid var(--line);border-radius:var(--radius-input);padding:11px 14px;width:100%}
.field input::placeholder{color:#8A918A;font-weight:500}
#savedFilter{display:inline-flex;align-items:center;gap:9px;border:2px solid var(--line);border-radius:999px;background:#fff;padding:11px 18px;font-weight:700;font-size:14px;cursor:pointer;color:var(--ink)}
#savedFilter .pill-dot{width:11px;height:11px;border-radius:50%;background:#C9CDC4;border:2px solid var(--line)}
#savedFilter[aria-pressed="true"]{background:var(--ink);color:#fff}
#savedFilter[aria-pressed="true"] .pill-dot{background:#FFD84D}
.field-saved{justify-content:flex-end}
.resultline{font:500 13.5px var(--mono);color:var(--muted);margin:8px 2px 18px;min-height:20px}

.grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card{border:2px solid var(--line);border-radius:var(--radius-card);background:var(--card);overflow:hidden;display:flex;flex-direction:column;transition:transform .18s ease,box-shadow .18s ease}
.card:hover{transform:translate(-2px,-3px);box-shadow:var(--shadow)}
.card-media{position:relative;border-bottom:2px solid var(--line)}
.card-media img{aspect-ratio:16/10.5;object-fit:cover;width:100%}
.badge{position:absolute;font:700 12px var(--mono);border:2px solid var(--line);border-radius:999px;padding:4px 11px;background:#fff}
.badge-date{left:12px;top:12px}
.badge-price{right:12px;bottom:12px;background:var(--accent);color:#fff;border-color:var(--accent)}
.chip{display:inline-block;font:700 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.card-body{padding:18px 18px 16px;display:flex;flex-direction:column;gap:5px;flex:1}
.card-body h3{margin:0;font-size:1.32rem;letter-spacing:-.02em;font-weight:800}
.card-meta{margin:0;font:500 13px var(--mono);color:var(--muted)}
.card-desc{margin:6px 0 0;font-size:14.5px;color:#333833}
.card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:14px}
.seats{font:600 12.5px var(--mono);color:var(--muted)}
.open-btn{border:2px solid var(--line);border-radius:999px;background:var(--surface);padding:9px 18px;font-weight:700;font-size:13.5px;cursor:pointer;color:var(--ink)}
.open-btn:hover{background:var(--ink);color:#fff}
.saved-flag{font:700 12px var(--mono);color:var(--accent)}
.saved-flag[hidden]{display:none}

.empty{border:2px dashed var(--line);border-radius:var(--radius-card);background:var(--surface);text-align:center;padding:48px 24px;margin-top:8px}
.empty-title{font-size:1.4rem;font-weight:800;letter-spacing:-.02em;margin:0 0 6px}
.empty-body{color:var(--muted);margin:0 0 20px}

/* visit rows — different family from the card grid */
.visit{margin:56px 0 0;border-top:2px solid var(--line);border-bottom:2px solid var(--line);background:var(--surface)}
.visit-in{padding-top:48px;padding-bottom:48px}
.visit-in h2{font-size:clamp(1.6rem,2.6vw,2.2rem);letter-spacing:-.03em;margin:0 0 8px;font-weight:800}
.visit-rows{list-style:none;margin:22px 0 0;padding:0;border-top:2px solid var(--line)}
.visit-rows li{display:grid;grid-template-columns:70px 1fr;gap:18px;padding:20px 4px;border-bottom:1px solid var(--hair);align-items:start}
.row-num{font:700 14px var(--mono);color:var(--accent)}
.visit-rows h3{margin:0 0 4px;font-size:1.05rem;letter-spacing:-.01em}
.visit-rows p{margin:0;color:var(--muted);max-width:70ch;font-size:15px}

/* about */
.about{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:56px auto;border:2px solid var(--line);border-radius:22px;overflow:hidden;background:var(--ink);color:#F2F1E9}
.about-photo img{height:100%;min-height:300px;object-fit:cover;width:100%}
.about-copy{padding:48px 44px;display:flex;flex-direction:column;justify-content:center}
.about-copy h2{font-size:clamp(1.6rem,2.6vw,2.3rem);letter-spacing:-.03em;line-height:1.08;margin:0 0 14px;font-weight:800}
.about-copy p{color:#C9CDC2;margin:0 0 12px;max-width:46ch}
.about-meta{font:600 12.5px var(--mono)!important;letter-spacing:.1em;text-transform:uppercase;color:#FFD84D!important}

/* footer */
.site-footer{border-top:2px solid var(--line);margin-top:56px;background:var(--surface)}
.foot-in{padding-top:26px;padding-bottom:30px;display:flex;gap:8px 28px;flex-wrap:wrap;align-items:baseline;justify-content:space-between}
.foot-brand{font-weight:800;letter-spacing:-.02em;margin:0}
.foot-note{font-size:13px;color:var(--muted);margin:0;max-width:62ch}

/* detail dialog */
.detail-dialog{border:2px solid var(--line);border-radius:22px;padding:0;max-width:880px;width:calc(100% - 40px);background:var(--card);color:var(--ink)}
.detail-dialog::backdrop{background:rgba(27,33,29,.55);backdrop-filter:blur(3px)}
.detail{display:grid;grid-template-columns:.92fr 1.08fr}
.detail-media{position:relative;border-right:2px solid var(--line);background:#DDE0D4;min-height:100%}
.detail-media img{width:100%;height:100%;min-height:420px;object-fit:cover}
.detail-cat{position:absolute;left:16px;top:16px;margin:0;font:700 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;background:#fff;border:2px solid var(--line);border-radius:999px;padding:5px 13px}
.detail-body{padding:28px 30px 26px}
.detail-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.detail-kicker{font:700 12.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0}
.icon-btn{width:40px;height:40px;border-radius:50%;border:2px solid var(--line);background:var(--surface);font-size:15px;cursor:pointer;line-height:1;color:var(--ink)}
.icon-btn:hover{background:var(--ink);color:#fff}
.detail-body h2{font-size:2rem;letter-spacing:-.03em;margin:10px 0 4px;font-weight:800;line-height:1.05}
.detail-instructor{font:600 13.5px var(--mono);color:var(--muted);margin:0 0 12px}
.detail-desc{font-size:16px;margin:0 0 16px;max-width:52ch}
.detail-facts{list-style:none;margin:0 0 20px;padding:14px 16px;display:grid;grid-template-columns:1fr 1fr;gap:9px 16px;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-input)}
.detail-facts li{font-size:14px}
.detail-facts b{display:block;font:700 10.5px var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:1px}
.detail-actions{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
#saveItem[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);box-shadow:4px 4px 0 var(--accent)}
.detail-hint{font-size:13px;color:var(--muted);margin:0}

@media (max-width:960px){
  .hero{grid-template-columns:1fr;gap:30px}
  .hero-card{left:12px}
  .grid{grid-template-columns:repeat(2,1fr)}
  .detail{grid-template-columns:1fr}
  .detail-media{border-right:0;border-bottom:2px solid var(--line)}
  .detail-media img{min-height:240px;max-height:300px}
  .about{grid-template-columns:1fr}
}
@media (max-width:640px){
  .site-nav{display:none}
  .controls{grid-template-columns:1fr}
  .grid{grid-template-columns:1fr}
  .hero-facts{grid-template-columns:1fr}
  .hero-facts div+div{border-left:0;border-top:2px solid var(--line)}
  .hero{padding-top:36px}
  .about-copy{padding:30px 24px}
  .detail-body{padding:22px 20px}
  .detail-facts{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .ticker-track{animation:none}
}
