/* ProLoco IMK v6.3.0 — Calendar Module Designer */
.proloco-v35-calendar{
  --plcal-primary:var(--color-primary,var(--col-terra,#0E7A60));
  --plcal-primary-contrast:#fff;
  --plcal-background:#fff;
  --plcal-surface:#f7f8f6;
  --plcal-surface-strong:#eef2ef;
  --plcal-text:var(--col-inchiostro,#181B1F);
  --plcal-muted:#667078;
  --plcal-border:rgba(24,27,31,.11);
  --plcal-event-bg:color-mix(in srgb,var(--plcal-primary) 12%,#fff);
  --plcal-event-text:color-mix(in srgb,var(--plcal-primary) 82%,#111);
  --plcal-radius:24px;
  --plcal-padding:24px;
  --plcal-cell-height:116px;
  --plcal-cols-desktop:3;
  --plcal-cols-tablet:2;
  --plcal-cols-mobile:1;
  position:relative;
  margin:24px 0;
  padding:var(--plcal-padding);
  color:var(--plcal-text);
  background:var(--plcal-background);
  border:1px solid var(--plcal-border);
  border-radius:var(--plcal-radius);
  box-shadow:0 22px 55px -30px rgba(24,27,31,.38);
  isolation:isolate;
}
.proloco-v35-calendar.has-no-shadow{box-shadow:none}
.proloco-v35-calendar *{box-sizing:border-box}
.proloco-v35-calendar svg{width:1.05em;height:1.05em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.proloco-v35-calendar [hidden]{display:none!important}

/* Preset */
.proloco-v35-calendar.is-style-minimal{--plcal-surface:#fff;--plcal-surface-strong:#f7f7f5;border-color:transparent;box-shadow:none;padding-inline:0}
.proloco-v35-calendar.is-style-soft{--plcal-background:#f4f7f4;--plcal-surface:#fff;--plcal-surface-strong:#e8f0eb;box-shadow:none}
.proloco-v35-calendar.is-style-outline{--plcal-background:#fff;--plcal-surface:#fff;--plcal-surface-strong:#fff;box-shadow:none;border-width:2px}
.proloco-v35-calendar.is-style-dark{--plcal-background:#171c1a;--plcal-surface:#202725;--plcal-surface-strong:#29322f;--plcal-text:#f5f7f6;--plcal-muted:#b6c0bc;--plcal-border:rgba(255,255,255,.13);--plcal-event-bg:rgba(255,255,255,.09);--plcal-event-text:#fff;--plcal-primary-contrast:#fff}

/* Header */
.proloco-v35-calendar__head{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;flex-wrap:wrap;margin-bottom:20px}
.proloco-v35-calendar__intro{min-width:min(100%,300px);max-width:720px}
.proloco-v35-calendar__intro .eyebrow{margin:0 0 7px;color:var(--plcal-primary);font-size:.73rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.proloco-v35-calendar__head h2{margin:0;color:var(--plcal-text);font-size:clamp(1.65rem,3vw,2.35rem);line-height:1.08}
.proloco-v35-calendar__description{max-width:62ch;margin:10px 0 0;color:var(--plcal-muted);line-height:1.65}
.proloco-v35-calendar__nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.proloco-v35-calendar__nav>strong{min-width:132px;color:var(--plcal-text);font-size:.98rem;text-align:center;text-transform:capitalize}
.proloco-v35-calendar button,.proloco-v35-calendar select,.proloco-v35-calendar input{font:inherit}
.proloco-v35-calendar button{color:inherit}
.proloco-v35-calendar__icon-button,.proloco-v35-calendar__today,.proloco-v35-calendar__view-switcher button{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;border:1px solid var(--plcal-border);border-radius:999px;background:var(--plcal-background);cursor:pointer;transition:border-color .2s ease,background .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease
}
.proloco-v35-calendar__icon-button{width:40px;padding:0}
.proloco-v35-calendar__today{padding:8px 13px;font-size:.86rem;font-weight:750}
.proloco-v35-calendar__icon-button:hover,.proloco-v35-calendar__today:hover,.proloco-v35-calendar__view-switcher button:hover{border-color:var(--plcal-primary);color:var(--plcal-primary);transform:translateY(-1px)}
.proloco-v35-calendar button:focus-visible,.proloco-v35-calendar select:focus-visible,.proloco-v35-calendar input:focus-visible,.proloco-v35-calendar a:focus-visible{outline:3px solid color-mix(in srgb,var(--plcal-primary) 30%,transparent);outline-offset:2px}
.proloco-v35-calendar button:disabled{opacity:.35;cursor:not-allowed;transform:none}

/* Toolbar */
.proloco-v35-calendar__toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 18px;padding:10px;border:1px solid var(--plcal-border);border-radius:16px;background:var(--plcal-surface)}
.proloco-v35-calendar__view-switcher,.proloco-v35-calendar__filters{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.proloco-v35-calendar__view-switcher button{min-height:38px;padding:7px 12px;background:transparent;border-color:transparent;font-size:.84rem;font-weight:750}
.proloco-v35-calendar__view-switcher button.is-active{color:var(--plcal-primary-contrast);background:var(--plcal-primary);border-color:var(--plcal-primary);box-shadow:0 8px 18px -12px color-mix(in srgb,var(--plcal-primary) 75%,transparent)}
.proloco-v35-calendar__search{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid var(--plcal-border);border-radius:999px;background:var(--plcal-background);color:var(--plcal-muted)}
.proloco-v35-calendar__search input{width:clamp(140px,20vw,230px);padding:8px 0;color:var(--plcal-text);background:transparent;border:0;outline:0}
.proloco-v35-calendar__search input::placeholder{color:var(--plcal-muted)}
.proloco-v35-calendar__select-wrap select{min-height:40px;max-width:220px;padding:8px 34px 8px 13px;color:var(--plcal-text);background:var(--plcal-background);border:1px solid var(--plcal-border);border-radius:999px;cursor:pointer}

/* Month grid */
.proloco-v35-calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(86px,1fr));gap:7px;margin-top:6px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}
.proloco-v35-calendar__dow{padding:4px;color:var(--plcal-muted);font-size:.74rem;font-weight:800;letter-spacing:.04em;text-align:center;text-transform:capitalize}
.proloco-v35-calendar__day{position:relative;min-height:var(--plcal-cell-height);padding:8px;border:1px solid var(--plcal-border);border-radius:14px;background:var(--plcal-surface);transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
.proloco-v35-calendar__day:hover{border-color:color-mix(in srgb,var(--plcal-primary) 38%,var(--plcal-border));box-shadow:0 10px 24px -22px rgba(0,0,0,.55)}
.proloco-v35-calendar__day.is-muted{opacity:.43}
.proloco-v35-calendar__day.is-today{border-color:var(--plcal-primary);background:color-mix(in srgb,var(--plcal-primary) 5%,var(--plcal-surface))}
.proloco-v35-calendar__day.is-today .proloco-v35-calendar__num{display:grid;place-items:center;width:26px;height:26px;margin:-2px 0 1px -2px;color:var(--plcal-primary-contrast);background:var(--plcal-primary);border-radius:50%}
.proloco-v35-calendar__num{min-height:26px;color:var(--plcal-text);font-size:.84rem;font-weight:850}
.proloco-v35-calendar__event{display:block;margin-top:5px;padding:6px 7px;color:var(--plcal-event-text);background:var(--plcal-event-bg);border-left:3px solid var(--plcal-primary);border-radius:8px;text-decoration:none;font-size:.77rem;line-height:1.25;overflow:hidden;transition:transform .18s ease,filter .18s ease}
.proloco-v35-calendar__event:hover{color:var(--plcal-event-text);filter:saturate(1.1);transform:translateX(2px)}
.proloco-v35-calendar__event strong{display:block;overflow:hidden;color:inherit;font-weight:800;text-overflow:ellipsis;white-space:nowrap}
.proloco-v35-calendar__event small{display:block;margin-top:2px;overflow:hidden;opacity:.76;text-overflow:ellipsis;white-space:nowrap}
.proloco-v35-calendar__more{display:block;width:100%;margin-top:5px;padding:3px 2px;color:var(--plcal-primary);background:transparent;border:0;font-size:.72rem;font-weight:800;text-align:left;cursor:pointer}

/* Shared list/card content */
.proloco-v35-calendar__agenda,.proloco-v35-calendar__compact{display:grid;gap:10px;margin-top:4px}
.proloco-v35-calendar__agenda-item{display:grid;grid-template-columns:74px minmax(0,150px) minmax(0,1fr);gap:16px;align-items:stretch;padding:14px;border:1px solid var(--plcal-border);border-radius:18px;background:var(--plcal-surface);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.proloco-v35-calendar__agenda-item:hover{border-color:color-mix(in srgb,var(--plcal-primary) 34%,var(--plcal-border));box-shadow:0 16px 32px -28px rgba(0,0,0,.58);transform:translateY(-2px)}
.proloco-v35-calendar__agenda-date,.proloco-v35-calendar__compact-date{display:flex;flex-direction:column;align-items:center;justify-content:center;align-self:start;min-width:62px;min-height:66px;padding:8px;color:var(--plcal-primary);background:color-mix(in srgb,var(--plcal-primary) 9%,var(--plcal-background));border:1px solid color-mix(in srgb,var(--plcal-primary) 20%,transparent);border-radius:14px;text-align:center}
.proloco-v35-calendar__agenda-date strong,.proloco-v35-calendar__compact-date strong{font-size:1.55rem;line-height:1}
.proloco-v35-calendar__agenda-date span,.proloco-v35-calendar__compact-date span{margin-top:3px;font-size:.71rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.proloco-v35-calendar__media{display:block;min-height:118px;overflow:hidden;border-radius:13px;background:var(--plcal-surface-strong)}
.proloco-v35-calendar__media img{display:block;width:100%;height:100%;min-height:118px;object-fit:cover;transition:transform .35s ease}
.proloco-v35-calendar__media:hover img{transform:scale(1.035)}
.proloco-v35-calendar__event-body{align-self:center;min-width:0}
.proloco-v35-calendar__event-body h3,.proloco-v35-calendar__card-content h3,.proloco-v35-calendar__compact-body h3{margin:0 0 7px;color:var(--plcal-text);font-size:1.08rem;line-height:1.2}
.proloco-v35-calendar__event-body h3 a,.proloco-v35-calendar__card-content h3 a,.proloco-v35-calendar__compact-body h3 a{color:inherit;text-decoration:none}
.proloco-v35-calendar__event-body h3 a:hover,.proloco-v35-calendar__card-content h3 a:hover,.proloco-v35-calendar__compact-body h3 a:hover{color:var(--plcal-primary)}
.proloco-v35-calendar__meta{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;color:var(--plcal-muted);font-size:.78rem}
.proloco-v35-calendar__meta-item{display:inline-flex;align-items:center;gap:5px;min-width:0}
.proloco-v35-calendar__meta-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proloco-v35-calendar__meta-item svg{color:var(--plcal-primary)}
.proloco-v35-calendar__excerpt{margin:9px 0 0;color:var(--plcal-muted);font-size:.9rem;line-height:1.55}
.proloco-v35-calendar__event-button{display:inline-flex;align-items:center;gap:8px;margin-top:12px;color:var(--plcal-primary);font-size:.82rem;font-weight:850;text-decoration:none}
.proloco-v35-calendar__event-button:hover{color:var(--plcal-text)}
.proloco-v35-calendar__event-button svg{transition:transform .2s ease}
.proloco-v35-calendar__event-button:hover svg{transform:translateX(3px)}

/* Cards */
.proloco-v35-calendar__cards{display:grid;grid-template-columns:repeat(var(--plcal-cols-desktop),minmax(0,1fr));gap:16px;margin-top:4px}
.proloco-v35-calendar__card{min-width:0;overflow:hidden;border:1px solid var(--plcal-border);border-radius:18px;background:var(--plcal-surface);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.proloco-v35-calendar__card:hover{border-color:color-mix(in srgb,var(--plcal-primary) 34%,var(--plcal-border));box-shadow:0 22px 40px -32px rgba(0,0,0,.65);transform:translateY(-3px)}
.proloco-v35-calendar__card>.proloco-v35-calendar__media{height:178px;border-radius:0}
.proloco-v35-calendar__card>.proloco-v35-calendar__media img{height:178px}
.proloco-v35-calendar__card-content{position:relative;padding:18px}
.proloco-v35-calendar__card-content>.proloco-v35-calendar__agenda-date{position:absolute;top:-46px;left:16px;box-shadow:0 10px 25px -16px rgba(0,0,0,.45);background:var(--plcal-background)}
.proloco-v35-calendar__card-content>.proloco-v35-calendar__agenda-date+h3{margin-top:30px}
.proloco-v35-calendar__card:not(.has-image) .proloco-v35-calendar__card-content>.proloco-v35-calendar__agenda-date{position:static;float:left;margin:0 12px 8px 0}
.proloco-v35-calendar__card:not(.has-image) .proloco-v35-calendar__card-content>.proloco-v35-calendar__agenda-date+h3{margin-top:0;padding-top:6px}
.proloco-v35-calendar__card .proloco-v35-calendar__meta{clear:both;margin-top:10px}

/* Compact */
.proloco-v35-calendar__compact-item{display:grid;grid-template-columns:70px minmax(0,1fr) 38px;gap:14px;align-items:center;padding:11px 13px;border:1px solid var(--plcal-border);border-radius:15px;background:var(--plcal-surface);transition:border-color .2s ease,transform .2s ease}
.proloco-v35-calendar__compact-item:hover{border-color:color-mix(in srgb,var(--plcal-primary) 38%,var(--plcal-border));transform:translateX(2px)}
.proloco-v35-calendar__compact-date{min-height:55px}
.proloco-v35-calendar__compact-date strong{font-size:1.25rem}
.proloco-v35-calendar__compact-body{min-width:0}
.proloco-v35-calendar__compact-body h3{margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proloco-v35-calendar__compact-arrow{display:grid;place-items:center;width:36px;height:36px;color:var(--plcal-primary);border:1px solid var(--plcal-border);border-radius:50%;text-decoration:none;transition:color .2s ease,background .2s ease,border-color .2s ease}
.proloco-v35-calendar__compact-arrow:hover{color:var(--plcal-primary-contrast);background:var(--plcal-primary);border-color:var(--plcal-primary)}
.proloco-v35-calendar__empty{grid-column:1/-1;padding:40px 18px;color:var(--plcal-muted);background:var(--plcal-surface);border:1px dashed var(--plcal-border);border-radius:16px;text-align:center}

@media(max-width:960px){
  .proloco-v35-calendar__cards{grid-template-columns:repeat(var(--plcal-cols-tablet),minmax(0,1fr))}
  .proloco-v35-calendar__agenda-item{grid-template-columns:70px 120px minmax(0,1fr)}
  .proloco-v35-calendar__toolbar{align-items:stretch}
  .proloco-v35-calendar__filters{margin-left:auto}
}
@media(max-width:720px){
  .proloco-v35-calendar{--plcal-padding:16px;--plcal-radius:18px;margin:18px 0}
  .proloco-v35-calendar__head{align-items:flex-start;margin-bottom:15px}
  .proloco-v35-calendar__nav{width:100%;justify-content:space-between}
  .proloco-v35-calendar__nav>strong{flex:1;min-width:100px}
  .proloco-v35-calendar__today span{display:none}
  .proloco-v35-calendar__toolbar{padding:8px;border-radius:14px}
  .proloco-v35-calendar__view-switcher{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr))}
  .proloco-v35-calendar__view-switcher button{padding-inline:8px}
  .proloco-v35-calendar__view-switcher button span{font-size:.74rem}
  .proloco-v35-calendar__filters{display:grid;width:100%;grid-template-columns:minmax(0,1fr);margin-left:0}
  .proloco-v35-calendar__search,.proloco-v35-calendar__select-wrap select{width:100%;max-width:none}
  .proloco-v35-calendar__search input{width:100%}
  .proloco-v35-calendar__grid{grid-template-columns:repeat(7,minmax(78px,1fr));gap:5px;padding-bottom:8px}
  .proloco-v35-calendar__day{min-height:92px;padding:6px;border-radius:11px}
  .proloco-v35-calendar__event{padding:5px 6px;font-size:.71rem}
  .proloco-v35-calendar__event small{display:none}
  .proloco-v35-calendar__agenda-item{grid-template-columns:62px minmax(0,1fr);gap:12px;padding:12px}
  .proloco-v35-calendar__agenda-item>.proloco-v35-calendar__media{grid-column:1/-1;grid-row:1;height:180px}
  .proloco-v35-calendar__agenda-item>.proloco-v35-calendar__agenda-date{grid-column:1;grid-row:2}
  .proloco-v35-calendar__agenda-item>.proloco-v35-calendar__event-body{grid-column:2;grid-row:2}
  .proloco-v35-calendar__excerpt{display:none}
  .proloco-v35-calendar__cards{grid-template-columns:repeat(var(--plcal-cols-mobile),minmax(0,1fr))}
  .proloco-v35-calendar__compact-item{grid-template-columns:58px minmax(0,1fr) 34px;gap:9px;padding:9px}
  .proloco-v35-calendar__compact-item .proloco-v35-calendar__meta-item.is-category{display:none}
  .proloco-v35-calendar__compact-arrow{width:32px;height:32px}
}
@media(max-width:430px){
  .proloco-v35-calendar__head h2{font-size:1.55rem}
  .proloco-v35-calendar__view-switcher button span{display:none}
  .proloco-v35-calendar__view-switcher button svg{width:1.15rem;height:1.15rem}
  .proloco-v35-calendar__compact-body .proloco-v35-calendar__meta{display:grid;gap:3px}
  .proloco-v35-calendar__compact-body .proloco-v35-calendar__meta-item span{max-width:170px}
}
@media(prefers-reduced-motion:reduce){
  .proloco-v35-calendar *{scroll-behavior:auto!important;transition:none!important}
}
