/* CluFo Calendar Widget – calendar.css v1.4.0 */
.clufo-calendar {
    --cc-primary:    #cc0000;
    --cc-text:       #1a1a1a;
    --cc-bg:         #ffffff;
    --cc-font:       'Helvetica Neue', Arial, sans-serif;
    --cc-font-size:  16px;
    --cc-title-size: 18px;
    --cc-date-size:  32px;
    --cc-radius:     6px;
    --cc-muted:      #888;
    --cc-border:     #e5e5e5;
    --cc-gap:        14px;
    font-family: var(--cc-font);
    font-size:   var(--cc-font-size);
    color:       var(--cc-text);
    background:  var(--cc-bg);
    box-sizing:  border-box;
    line-height: 1.5;
}
.clufo-calendar *, .clufo-calendar *::before, .clufo-calendar *::after { box-sizing: inherit; }
.clufo-empty, .clufo-error { color: var(--cc-muted); font-style: italic; padding: 12px 0; }
.clufo-icon { width:15px;height:15px;display:inline-block;vertical-align:middle;margin-right:4px;flex-shrink:0; }

/* ── Date block (list & grid) */
.clufo-date-block { display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--cc-primary);color:#fff;border-radius:var(--cc-radius);min-width:72px;width:72px;padding:10px 6px;flex-shrink:0;line-height:1.1;text-align:center;user-select:none; }
.clufo-date-day   { font-size:var(--cc-date-size);font-weight:800;display:block;letter-spacing:-1px; }
.clufo-date-month { font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;display:block;opacity:.95; }
.clufo-date-year  { font-size:11px;font-weight:400;display:block;opacity:.85; }

/* ── Buttons */
.clufo-btn { display:inline-block;font-family:var(--cc-font);font-size:calc(var(--cc-font-size)*.85);font-weight:600;border-radius:var(--cc-radius);padding:7px 16px;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s;letter-spacing:.02em; }
.clufo-btn--outlined { color:var(--cc-text);background:transparent;border:2px solid var(--cc-border); }
.clufo-btn--outlined:hover { border-color:var(--cc-primary);color:var(--cc-primary); }
.clufo-btn--filled  { background:var(--cc-primary);color:#fff;border:2px solid var(--cc-primary); }
.clufo-btn--filled:hover  { background:transparent;color:var(--cc-primary); }
.clufo-btn--ghost   { background:rgba(0,0,0,.04);color:var(--cc-text);border:2px solid transparent; }
.clufo-btn--ghost:hover   { background:var(--cc-primary);color:#fff; }

/* ── LIST template */
.clufo-tpl-list .clufo-event--list { display:flex;align-items:center;gap:var(--cc-gap);padding:14px 0;border-bottom:1px solid var(--cc-border); }
.clufo-tpl-list .clufo-event--list:last-child { border-bottom:none; }
.clufo-event-body  { flex:1;min-width:0; }
.clufo-event-title { margin:0 0 4px;font-size:var(--cc-title-size);font-weight:800;line-height:1.2;color:var(--cc-text);letter-spacing:-.01em; }
.clufo-event-meta  { display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:4px; }
.clufo-meta-item   { display:inline-flex;align-items:center;font-size:var(--cc-date-text-size,13px);color:var(--cc-muted); }
.clufo-meta-time   { color:var(--cc-date-text-color,var(--cc-primary));font-size:var(--cc-date-text-size,13px);font-weight:600; }
.clufo-meta-location { color:var(--cc-loc-text-color,var(--cc-muted));font-size:var(--cc-loc-text-size,13px); }
.clufo-event-meta--row1 { margin-bottom:2px; }
.clufo-event-meta--row2 { margin-top:0; }
.clufo-event-action { flex-shrink:0;margin-left:auto; }

/* ── GRID template */
.clufo-tpl-grid .clufo-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--cc-gap); }
.clufo-event--grid { border:1px solid var(--cc-border);border-radius:var(--cc-radius);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s; }
.clufo-event--grid:hover { box-shadow:0 6px 20px rgba(0,0,0,.12);transform:translateY(-2px); }
.clufo-grid-header { background:var(--cc-primary);padding:18px;display:flex;justify-content:center; }
.clufo-tpl-grid .clufo-date-block { background:transparent;color:#fff;width:auto;min-width:auto; }
.clufo-grid-body   { padding:14px 16px;flex:1;display:flex;flex-direction:column;gap:6px; }
.clufo-grid-footer { padding:10px 16px 14px;border-top:1px solid var(--cc-border); }
.clufo-grid-footer .clufo-btn { width:100%;text-align:center; }

/* ── MINIMAL template */
.clufo-tpl-minimal .clufo-minimal-list { list-style:none;margin:0;padding:0; }
.clufo-minimal-item { display:flex;align-items:baseline;gap:10px;padding:10px 0;border-bottom:1px solid var(--cc-border);flex-wrap:wrap; }
.clufo-minimal-item:last-child { border-bottom:none; }
.clufo-minimal-date     { color:var(--cc-primary);font-weight:700;font-size:calc(var(--cc-font-size)*.9);white-space:nowrap;min-width:90px; }
.clufo-minimal-title    { font-weight:600;flex:1; }
.clufo-minimal-location { color:var(--cc-muted);font-size:calc(var(--cc-font-size)*.85); }
.clufo-minimal-link     { color:var(--cc-primary);text-decoration:none;font-weight:700;margin-left:auto;padding:2px 6px;border-radius:4px;transition:background .15s; }
.clufo-minimal-link:hover { background:rgba(204,0,0,.1); }

/* ── COMPACT template (sidebar) */
.clufo-tpl-compact .clufo-event--compact { display:flex;align-items:stretch;margin-bottom:10px;border:1px solid var(--cc-border);border-radius:var(--cc-radius);overflow:hidden; }
.clufo-compact-date  { background:var(--cc-primary);color:#fff;width:52px;min-width:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;text-align:center; }
.clufo-compact-day   { font-size:calc(var(--cc-date-size)*.7);font-weight:800;line-height:1; }
.clufo-compact-month,.clufo-compact-year { font-size:10px;font-weight:600;text-transform:uppercase;line-height:1.3;opacity:.9; }
.clufo-compact-body  { padding:8px 12px;flex:1; }
.clufo-compact-title { font-weight:600;font-size:var(--cc-font-size);color:var(--cc-text);display:block;text-decoration:none;line-height:1.3;margin-bottom:2px; }
a.clufo-compact-title:hover { color:var(--cc-primary); }
.clufo-compact-meta  { display:flex;flex-wrap:wrap;gap:2px 10px;font-size:calc(var(--cc-font-size)*.8);color:var(--cc-muted); }

/* ── Responsive */
@media (max-width:560px) {
    .clufo-tpl-list .clufo-event--list { flex-wrap:nowrap; align-items:center; }
    .clufo-event-action { width:auto; margin-top:0; flex-shrink:0; }
    .clufo-event-action .clufo-btn { white-space:nowrap; }
    .clufo-date-block { min-width:60px;width:60px; }
    .clufo-date-day   { font-size:26px; }
    .clufo-tpl-grid .clufo-grid { grid-template-columns:1fr; }
}

/* ── Event type colour tokens v1.4.0 ── */
.clufo-event[data-type="meeting"]    { --cd-type: #3949ab; }
.clufo-event[data-type="tournament"] { --cd-type: #e65100; }
.clufo-event[data-type="camp"]       { --cd-type: #2e7d32; }
.clufo-event[data-type="meeting"]    .clufo-date-block { background: #3949ab; }
.clufo-event[data-type="tournament"] .clufo-date-block { background: #e65100; }
.clufo-event[data-type="camp"]       .clufo-date-block { background: #2e7d32; }

/* ── Calendar slide animations ───────────────────────────────── */
.clufo-slide-out-left  { animation: calSlideOutLeft  .25s ease forwards; }
.clufo-slide-out-right { animation: calSlideOutRight .25s ease forwards; }
.clufo-slide-in        { animation: calSlideIn       .28s ease forwards; }

@keyframes calSlideOutLeft  { from { opacity:1; transform:translateX(0); } to { opacity:0; transform:translateX(-40px); } }
@keyframes calSlideOutRight { from { opacity:1; transform:translateX(0); } to { opacity:0; transform:translateX(40px); } }
@keyframes calSlideIn       { from { opacity:0; transform:translateX(30px); } to { opacity:1; transform:translateX(0); } }
