/* Calendar page only — loaded after chrome.css. */
/* =====================================================================
   FIRST SCREEN — the month grid. Fills the viewport under the header.
   ===================================================================== */
.screen{height:calc(100vh - var(--g-head));height:calc(100dvh - var(--g-head));min-height:620px;display:flex;flex-direction:column}
.screen > .wrap{flex:1;display:flex;flex-direction:column;width:100%;padding-top:16px;padding-bottom:18px;min-height:0}
.cal-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px 24px}
.cal-head h1{font:800 11.5px/1 var(--g-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--g-muted);margin-bottom:12px;white-space:nowrap}
.cal-head h1::before{content:"";display:inline-block;width:18px;height:1.5px;background:var(--g-red);vertical-align:middle;margin:0 10px 2px 0}
.mnav{display:flex;align-items:center;gap:10px}
.mtitle{margin:0;font:700 clamp(28px,3vw,36px)/1 var(--g-display);letter-spacing:-.03em;min-width:0;display:flex;align-items:baseline;gap:10px;white-space:nowrap}
.mtitle .yr{font-weight:500;color:var(--g-muted);font-size:.72em;letter-spacing:-.01em}
.nav{all:unset;cursor:pointer;width:36px;height:36px;border:1px solid var(--g-line-2);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--g-ink);background:var(--g-white);transition:background .15s ease,border-color .15s ease;flex:none}
.nav svg{width:14px;height:14px}
.nav:hover{border-color:var(--g-ink)}
.nav:disabled{opacity:.3;cursor:default}.nav:disabled:hover{border-color:var(--g-line-2)}
.nav:focus-visible{outline-offset:2px;border-radius:50%}
.cal-filters{display:flex;gap:8px;align-items:center}
.cal-filters .sel{width:200px}
.cal-filters .sel.city{width:140px}
.cal-filters a.clr{font-size:13px;font-weight:700;color:var(--g-muted);text-decoration:none;white-space:nowrap;margin-inline-start:4px}
.cal-filters a.clr:hover{color:var(--g-red-ink)}
.cal-filters a.clr[hidden]{display:none}

.cal-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 332px;grid-template-rows:minmax(0,1fr);gap:18px;margin-top:14px;min-height:0}
.grid{display:flex;flex-direction:column;min-height:0;min-width:0}
.dow{display:grid;grid-template-columns:repeat(7,1fr);padding:0 0 6px;margin:0;list-style:none}
.dow li{font:700 10.5px/1 var(--g-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--g-muted);padding-inline-start:10px}
.dow li.we{color:var(--g-faint)}
.weeks{flex:1;display:grid;grid-template-rows:repeat(6,minmax(48px,1fr));border:1px solid var(--g-line);border-radius:var(--g-r);background:var(--g-white);overflow:hidden}
.week{position:relative;display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--g-line);min-height:0}
.week:first-child{border-top:0}
.day{all:unset;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;position:relative;border-inline-start:1px solid var(--g-line);padding:7px 8px;cursor:pointer;min-width:0;min-height:0;transition:background .12s ease}
.day:first-child{border-inline-start:0}
.day:hover{background:var(--g-paper)}
.day .n{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 4px;border-radius:12px;font:700 13.5px/1 var(--g-display);letter-spacing:-.01em;color:var(--g-ink);font-variant-numeric:tabular-nums}
.day.we .n{color:var(--g-muted)}
.day.past .n,.day.out .n{color:var(--g-faint);font-weight:500}
.day.out{cursor:default;background:repeating-linear-gradient(135deg,transparent 0 7px,rgba(23,22,20,.025) 7px 8px)}
.day.out:hover{background:repeating-linear-gradient(135deg,transparent 0 7px,rgba(23,22,20,.025) 7px 8px)}
.day.today .n{color:var(--g-red);box-shadow:inset 0 0 0 1.5px var(--g-red)}
.day.sel{background:var(--g-paper-2)}
.day.sel .n{background:var(--g-ink);color:var(--g-paper);box-shadow:none}
.day .more{position:absolute;inset-inline-end:8px;top:12px;font:700 10.5px/1 var(--g-sans);color:var(--g-muted)}
.day:focus-visible{outline-offset:-3px;border-radius:0}
.bars{position:absolute;inset-inline-start:0;inset-inline-end:0;top:34px;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:18px;row-gap:3px;pointer-events:none}
.bar{height:18px;margin:0 3px;border-radius:5px;background:var(--g-ink);color:var(--g-paper);font:700 11px/18px var(--g-sans);padding:0 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:.01em}
.bar.x{background:var(--g-white);color:var(--g-muted);border:1px dashed var(--g-line-2);line-height:16px}
.more-l{align-self:stretch;margin:0 3px;padding:0 7px;border-radius:5px;background:var(--g-paper-2);color:var(--g-soft);font:800 11px/18px var(--g-sans);white-space:nowrap;overflow:hidden}
.bar.cl{border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:0;padding-inline-start:9px}
.bar.cr{border-start-end-radius:0;border-end-end-radius:0;margin-inline-end:0}

/* day panel */
.dpanel{background:var(--g-white);border:1px solid var(--g-line);border-radius:var(--g-r);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.dpanel .dp-head{padding:18px 20px 14px;border-bottom:1px solid var(--g-line)}
.dpanel .dp-k{display:block;font:800 11px/1 var(--g-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--g-muted)}
.dpanel h2{font-size:22px;letter-spacing:-.025em;margin-top:8px;line-height:1.1}
.dpanel .dp-sub{margin:6px 0 0;font-size:13.5px;color:var(--g-muted)}
.dp-sub .sh{display:none}
.dpanel .dp-sub b{color:var(--g-ink)}
.dpanel .dp-sub a{font-weight:700}
.dfairs{list-style:none;margin:0;padding:4px 20px 8px;overflow:auto;flex:1;min-height:0}
.df{padding:13px 0;border-top:1px solid var(--g-line)}
.df:first-child{border-top:0}
.df .k{display:block;font:700 10.5px/1.3 var(--g-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--g-muted)}
.df b{display:block;font:700 16px/1.2 var(--g-display);letter-spacing:-.015em;margin-top:4px}
.df b a{text-decoration:none}
.df b a:hover{color:var(--g-red-ink)}
.df .m{display:block;font-size:13.5px;color:var(--g-soft);margin-top:4px;line-height:1.45;font-variant-numeric:tabular-nums}
.df .m .exp{vertical-align:1px;margin-inline-start:2px}
.df .a{display:flex;gap:16px;margin-top:7px}
.df .a a{font-size:13.5px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.df .a a.guide{color:var(--g-red-ink)}
.df .a a.org{color:var(--g-soft)}
.df .a a:hover{color:var(--g-red-ink)}
.dpanel .dp-foot{padding:12px 20px 14px;border-top:1px solid var(--g-line);font-size:13px;color:var(--g-muted)}
.dpanel .dp-foot a{font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.dpanel .dp-foot a:hover{color:var(--g-red-ink)}

@media(max-width:899px){
  .screen{min-height:0;height:calc(100vh - var(--g-head));height:calc(100dvh - var(--g-head))}
  .screen > .wrap{padding-top:10px;padding-bottom:12px}
  .cal-head{grid-template-columns:1fr;gap:8px}
  .cal-head h1{margin-bottom:6px;font-size:11px}
  .cal-head h1 .h1x{display:none}
  .mnav{justify-content:space-between}
  .mtitle{font-size:clamp(26px,7.5vw,32px)}
  .cal-filters{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .cal-filters .sel,.cal-filters .sel.city{width:auto}
  .cal-filters a.clr{grid-column:1/-1;margin:0;text-align:right}
  .cal-body{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:12px;margin-top:10px}
  .dow{padding-bottom:4px}
  .dow li{font-size:9.5px;letter-spacing:.08em;padding-inline-start:0;text-align:center}
  .weeks{flex:none;grid-template-rows:repeat(6,54px);border-radius:10px}
  .day{padding:4px 0 0;align-items:center}
  .day .n{min-width:22px;height:22px;font-size:12.5px}
  .day .more{inset-inline-end:3px;top:4px;font-size:9px}
  .bars{top:33px;grid-auto-rows:4px;row-gap:3px;padding:0}
  .bar{height:4px;margin:0 2px;border-radius:2px;font-size:0;padding:0}
  .bar.x{border:0;background:var(--g-line-2);height:4px}
  .bar.cl{margin-inline-start:0}.bar.cr{margin-inline-end:0}
  .dpanel{min-height:150px}
  .dpanel .dp-head{padding:13px 16px 11px;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;align-items:end}
  .dpanel .dp-k{grid-column:1/-1}
  .dpanel .dp-sub{grid-column:2;grid-row:2;margin:0 0 2px;text-align:end;max-width:52vw}
  .dpanel .dp-sub.wide{grid-column:1/-1;grid-row:3;text-align:start;max-width:none;margin-top:6px}
  .dp-sub .lg{display:none}.dp-sub .sh{display:inline}
  .dpanel h2{font-size:19px}
  .dfairs{padding:2px 16px 6px}
  .df{padding:11px 0}
  .dpanel .dp-foot{display:none}
}

/* =====================================================================
   THE LIST — plain HTML, grouped by month. Crawlers read this.
   ===================================================================== */
.cal{padding:40px 0 0}
.list-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-bottom:4px}
.list-head h2{font-size:clamp(22px,2.4vw,28px)}
.fcount{margin:0;font-size:13.5px;color:var(--g-muted);display:flex;align-items:center;gap:12px;font-variant-numeric:tabular-nums}
.fcount b{color:var(--g-ink);font-weight:700}
.fcount a{font-weight:700;text-decoration:none;border-bottom:1px solid var(--g-line-2)}
.fcount a:hover{border-bottom-color:currentColor}
.fcount a[hidden]{display:none}
.month{display:grid;grid-template-columns:200px minmax(0,1fr);column-gap:28px;padding:30px 0 6px;border-top:1px solid var(--g-line)}
.month[hidden]{display:none}
.month > h2{position:sticky;top:18px;align-self:start;font-size:30px;line-height:1;letter-spacing:-.03em;padding-top:16px}
.month > h2 .my{display:block;font:600 13px/1 var(--g-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--g-muted);margin-top:8px}
.rows{list-style:none;margin:0;padding:0}
.fair{display:grid;grid-template-columns:168px minmax(0,1fr) 150px;column-gap:24px;padding:18px 0 20px;border-top:1px solid var(--g-line)}
.fair:first-child{border-top:0}
.fair[hidden]{display:none}
.when{display:flex;flex-direction:column;gap:8px}
.when .ed{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.when time{display:block;font:700 17px/1.15 var(--g-display);letter-spacing:-.015em;color:var(--g-ink);font-variant-numeric:tabular-nums}
.when .lab{display:block;flex-basis:100%;font-size:12.5px;color:var(--g-muted);margin-top:1px;line-height:1.35}
.when .ed.x time{color:var(--g-muted)}
.when .ed.x .exp{align-self:center;position:relative;top:-1px}
.who{min-width:0}
.who .kick{margin:0 0 6px;font:700 11px/1.3 var(--g-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--g-muted)}
.who h3{font-size:19px;letter-spacing:-.02em;line-height:1.15}
.who h3 small{font:500 13.5px/1 var(--g-sans);color:var(--g-muted);letter-spacing:0;margin-inline-start:6px;white-space:nowrap}
.who h3 a{text-decoration:none;color:var(--g-ink)}
.who h3 a:hover{color:var(--g-red-ink)}
.who .full{display:block;font-size:13.5px;color:var(--g-muted);margin-top:4px;line-height:1.4}
.who .ind{margin:7px 0 0;font-size:14.5px;color:var(--g-soft);line-height:1.45;max-width:58ch}
.who .where{margin:6px 0 0;font-size:13.5px;color:var(--g-muted);line-height:1.4}
.who .where b{color:var(--g-ink);font-weight:700}
.go{display:flex;flex-direction:column;align-items:flex-end;gap:8px;padding-top:2px;text-align:right}
.go a{font-size:14px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:6px;color:var(--g-ink);white-space:nowrap}
.go a:hover{color:var(--g-red-ink)}
.go a.guide{color:var(--g-red-ink)}
.go a.guide:hover{color:var(--g-red)}
.go a.org{color:var(--g-soft)}
.empty{padding:48px 0 40px;border-top:1px solid var(--g-line);color:var(--g-muted);font-size:15.5px}
.empty[hidden]{display:none}
.empty a{font-weight:700}
.cal-foot{padding:22px 0 0;font-size:13px;color:var(--g-muted);max-width:76ch;line-height:1.6}
.cal-foot .exp{vertical-align:1px}
@media(max-width:899px){
  .cal{padding-top:32px}
  .month{grid-template-columns:1fr;padding:22px 0 0}
  .month > h2{position:static;font-size:24px;padding:0 0 8px;display:flex;align-items:baseline;gap:8px}
  .month > h2 .my{margin:0}
  .fair{grid-template-columns:1fr;row-gap:0;padding:16px 0 18px}
  .when{flex-direction:row;flex-wrap:wrap;gap:4px 18px;margin-bottom:8px}
  .when time{font-size:16px}
  .when .lab{flex-basis:auto;margin:0}
  .who .kick{margin-bottom:4px}
  .go{flex-direction:row;align-items:center;gap:20px;padding-top:12px;text-align:left}
}

/* back to the calendar once deep in the list */
.totop{position:fixed;inset-inline-end:16px;bottom:16px;z-index:8;display:inline-flex;align-items:center;gap:7px;background:var(--g-ink);color:var(--g-paper);font:800 13.5px/1 var(--g-sans);padding:12px 15px;border-radius:999px;text-decoration:none;box-shadow:0 10px 28px -12px rgba(0,0,0,.6)}
.totop:hover{color:var(--g-paper);background:#000}
.totop[hidden]{display:none}
@media(min-width:900px){.totop{inset-inline-end:28px;bottom:24px}}

/* ---------- booking panel ---------- */
.book{padding:48px 0 64px}
.panel{background:var(--g-white);border:1px solid var(--g-line);border-radius:var(--g-r);padding:30px 32px 30px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px 48px;align-items:center}
.panel h2{font-size:clamp(22px,2.4vw,28px);margin-top:12px;max-width:22ch}
.panel p{margin:12px 0 0;color:var(--g-soft);font-size:15.5px;max-width:62ch}
.panel p.small{font-size:13.5px;color:var(--g-muted)}
.panel .acts{display:grid;gap:8px;min-width:230px}
.panel .acts .cf-btn{width:100%}
.panel .alt{font-size:13px;color:var(--g-muted);text-align:center;margin:4px 0 0}
.panel .alt a{color:var(--g-ink)}
@media(max-width:760px){.book{padding:36px 0 48px}.panel{grid-template-columns:1fr;padding:22px 20px 22px;gap:18px}.panel .acts{min-width:0}}

/* ---------- entrance ---------- */
.cal-head{animation:rise .5s cubic-bezier(.2,.7,.2,1) both}
.grid{animation:rise .6s cubic-bezier(.2,.7,.2,1) .06s both}
.dpanel{animation:rise .6s cubic-bezier(.2,.7,.2,1) .12s both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}


/* Latin fair names inside right-to-left pages keep their own direction */
[dir=rtl] .bar,[dir=rtl] .who h3,[dir=rtl] .df b{unicode-bidi:plaintext}
[dir=rtl] .who h3,[dir=rtl] .df b{text-align:right}

