/* ===== TAKAPOTO EVENTS CALENDAR — scoped under .tk-cal ===== */
@import url('https://fonts.googleapis.com/css2?family=Ovo&family=Cormorant+Garamond:ital,wght@0,300;0,400;1,300;1,400&family=DM+Sans:wght@300;400;500&display=swap');

.tk-cal {
  --tk-ink:#2d2c2a;
  --tk-ink-80:rgba(45,44,42,.86);
  --tk-ink-60:rgba(45,44,42,.62);
  --tk-ink-40:rgba(45,44,42,.45);
  --tk-hair:rgba(45,44,42,.12);
  --tk-linen:#f2ede4;
  --tk-display:'Ovo',Georgia,serif;
  --tk-serif:'Cormorant Garamond',Georgia,serif;
  --tk-body:'DM Sans',-apple-system,system-ui,sans-serif;
  font-family:var(--tk-body); color:var(--tk-ink);
  -webkit-font-smoothing:antialiased;
}
.tk-cal *, .tk-cal *::before, .tk-cal *::after { box-sizing:border-box; margin:0; padding:0; }
.tk-cal__inner { max-width:1080px; margin:0 auto; padding:0 clamp(20px,4vw,48px); }

.tk-cal__hero { position:relative; min-height:clamp(280px,40vh,420px);
  background-size:cover; background-position:center;
  display:flex; align-items:flex-end; overflow:hidden; }
.tk-cal__hero::after { content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(26,25,23,.1) 0%, rgba(26,25,23,.72) 100%);
  pointer-events:none; }
.tk-cal__hero-inner { position:relative; z-index:2; width:100%;
  max-width:1080px; margin:0 auto;
  padding:clamp(28px,5vw,56px) clamp(24px,4vw,56px); color:var(--tk-linen); }
.tk-cal__hero .tk-cal__title { color:var(--tk-linen); max-width:14ch; }

.tk-cal__title { font-family:var(--tk-display); font-weight:400;
  font-size:clamp(38px,6vw,76px); line-height:1.04; letter-spacing:.005em; }
.tk-cal__title em { font-family:var(--tk-serif); font-style:italic; font-weight:300; }

.tk-cal__intro { padding-top:36px; }
.tk-cal__intro p { font-family:var(--tk-serif); font-weight:300;
  font-size:clamp(17px,2vw,21px); line-height:1.55; color:var(--tk-ink-80);
  max-width:48ch; }
.tk-cal__intro ul { list-style:none; margin-top:22px; max-width:52ch;
  border-top:1px solid var(--tk-hair); }
.tk-cal__intro li { padding:13px 0; border-bottom:1px solid var(--tk-hair);
  font-family:var(--tk-serif); font-weight:400; font-size:16px;
  color:var(--tk-ink-80); display:flex; align-items:center; gap:14px; }
.tk-cal__intro li::before { content:''; width:9px; height:9px; border-radius:50%;
  background:var(--dot); flex:0 0 auto; }

.tk-cal__controls { display:flex; gap:8px; flex-wrap:wrap;
  margin-top:40px; padding-bottom:16px; border-bottom:1px solid var(--tk-hair); }
.tk-cal__chip { font-family:var(--tk-body); font-size:10px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--tk-ink-60); background:transparent;
  border:1px solid var(--tk-hair); padding:9px 15px; cursor:pointer;
  display:inline-flex; align-items:center; gap:8px;
  transition:border-color .25s, background .25s, color .25s; }
.tk-cal__chip:hover { border-color:var(--tk-ink-40); }
.tk-cal__chip.is-on { background:var(--tk-ink); color:var(--tk-linen); border-color:var(--tk-ink); }
.tk-cal__chip i { width:7px; height:7px; border-radius:50%; display:inline-block; }

.tk-cal__years { display:flex; gap:clamp(20px,3vw,36px); flex-wrap:wrap;
  margin-top:36px; padding-bottom:10px;
  border-bottom:1px solid var(--tk-hair); }
.tk-cal__year { font-family:var(--tk-display); font-weight:400;
  font-size:clamp(22px,2.4vw,30px); letter-spacing:.01em;
  background:transparent; border:0; padding:6px 0; cursor:pointer;
  color:var(--tk-ink-40); position:relative;
  transition:color .25s; }
.tk-cal__year:hover { color:var(--tk-ink-60); }
.tk-cal__year.is-on { color:var(--tk-ink); }
.tk-cal__year.is-on::after {
  content:''; position:absolute; left:0; right:0; bottom:-11px;
  height:1px; background:var(--tk-ink);
}

.tk-cal__ico { display:inline-flex; align-items:center; justify-content:center;
  color:var(--tk-accent); flex:0 0 auto; }
.tk-cal__ico svg, .tk-cal__ico img { width:100%; height:100%; display:block; }
.tk-cal__ico img { object-fit:contain; border-radius:0;
  filter:brightness(0) invert(1); }

.tk-cal__month { margin-top:clamp(40px,6vw,68px); animation:tkfade .6s both; }
@keyframes tkfade { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:none; } }
.tk-cal__month-head { font-family:var(--tk-display); font-weight:400;
  font-size:clamp(26px,3vw,38px); padding-bottom:14px;
  border-bottom:1px solid var(--tk-hair); }
.tk-cal__month-head em { font-family:var(--tk-serif); font-style:italic;
  font-weight:300; color:var(--tk-ink-40); font-size:.6em; margin-left:8px;
  letter-spacing:.04em; }
.tk-cal__month-body { display:grid; grid-template-columns:minmax(0,300px) 1fr;
  gap:clamp(28px,4vw,56px); margin-top:24px; align-items:start; }

.tk-cal__dows { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; margin-bottom:4px; }
.tk-cal__dows span { text-align:center; font-size:9px; letter-spacing:.02em;
  text-transform:uppercase; color:var(--tk-ink-40); }
.tk-cal__cells { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.tk-cal__cell { aspect-ratio:1; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:4px;
  font-size:12px; color:var(--tk-ink-60); border-radius:2px; }
.tk-cal__cell--past { color:rgba(45,44,42,.2); }
.tk-cal__cell--today { box-shadow:inset 0 0 0 1px var(--tk-ink-40); }
.tk-cal__cell--ev { color:var(--tk-ink); font-weight:500; }
.tk-cal__cell-num { line-height:1; }
.tk-cal__marks { display:flex; gap:2px; align-items:center; justify-content:center; }
.tk-cal__mark { border-radius:50%; display:flex; align-items:center;
  justify-content:center; flex:0 0 auto; background:var(--tk-accent);
  transition:transform .2s ease, box-shadow .25s; text-decoration:none;
  color:inherit; cursor:pointer; }
a.tk-cal__mark:hover { transform:scale(1.18); box-shadow:0 1px 4px rgba(0,0,0,.18); }
.tk-cal__mark .tk-cal__ico { color:var(--tk-linen); }

.tk-cal__entries { display:flex; flex-direction:column; }
.tk-cal__entry { display:grid; grid-template-columns:62px 1fr; gap:22px;
  padding:18px 0; border-bottom:1px solid var(--tk-hair); align-items:start; }
.tk-cal__entry:first-child { padding-top:2px; }
.tk-cal__edow { display:block; font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--tk-ink-40); }
.tk-cal__ednum { display:block; font-family:var(--tk-display); font-size:38px;
  line-height:1; margin-top:4px; }
.tk-cal__ecount { display:block; font-size:8.5px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--tk-ink-40); margin-top:8px; }
.tk-cal__erec { display:block; font-family:var(--tk-display); font-style:italic;
  font-size:24px; line-height:1; margin-top:4px; color:var(--tk-ink-60); }
.tk-cal__entry-events { display:flex; flex-direction:column; }

.tk-cal__ev { display:grid; grid-template-columns:30px 1fr auto; gap:14px;
  align-items:center; padding:11px 0; text-decoration:none; color:inherit;
  --tk-accent:#4a5c38; }
.tk-cal__ev + .tk-cal__ev { border-top:1px solid var(--tk-hair); }
.tk-cal__ev-mark { width:30px; height:30px; border-radius:50%;
  background:var(--tk-accent); display:flex; align-items:center; justify-content:center; }
.tk-cal__ev-mark .tk-cal__ico { width:15px; height:15px; color:var(--tk-linen); }
.tk-cal__ev-title { font-family:var(--tk-display); font-size:19px; line-height:1.2; }
.tk-cal__ev-meta { display:block; font-family:var(--tk-serif); font-style:italic;
  font-size:14px; color:var(--tk-ink-60); margin-top:2px; }
.tk-cal__ev-go { width:24px; height:1px; background:var(--tk-ink-40); position:relative;
  transition:width .45s cubic-bezier(.2,.8,.2,1), background .3s; }
.tk-cal__ev-go::after { content:''; position:absolute; right:0; top:-3px;
  width:6px; height:6px; border-top:1px solid var(--tk-ink-40);
  border-right:1px solid var(--tk-ink-40); transform:rotate(45deg); transition:border-color .3s; }
a.tk-cal__ev:hover .tk-cal__ev-go { width:38px; background:var(--tk-accent); }
a.tk-cal__ev:hover .tk-cal__ev-go::after { border-color:var(--tk-accent); }
a.tk-cal__ev:hover .tk-cal__ev-title { color:var(--tk-accent); }

.tk-cal__legend { display:flex; gap:24px; flex-wrap:wrap; margin-top:48px;
  padding-top:22px; border-top:1px solid var(--tk-hair); }
.tk-cal__legend span { display:inline-flex; align-items:center; gap:9px;
  font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--tk-ink-60); }
.tk-cal__closure { font-family:var(--tk-serif); font-style:italic; font-size:13px;
  color:var(--tk-ink-60); padding:10px 0 2px 44px;
  border-top:1px solid var(--tk-hair); margin-top:4px; }
.tk-cal__empty { font-family:var(--tk-serif); font-style:italic; font-size:18px;
  color:var(--tk-ink-40); padding:48px 4px; }

@media (max-width:760px) {
  .tk-cal__month-body { grid-template-columns:1fr; gap:26px; }
  .tk-cal__entry { grid-template-columns:52px 1fr; gap:16px; }
  .tk-cal__ednum { font-size:32px; }
}
