.npc-calendar-root,
.npc-calendar-root *{box-sizing:border-box}
.npc-calendar-root{font-family:inherit;color:#183140}
.npc-calendar-root a{text-decoration:none}
.npc-kicker{display:block;font-size:.72rem;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;font-weight:800;color:var(--npc-accent)}
.npc-empty{padding:24px;border:1px dashed rgba(24,49,64,.25);border-radius:16px;background:rgba(255,255,255,.62);text-align:center;color:#516674}
.npc-shine{position:relative;overflow:hidden}
.npc-shine:after{content:"";position:absolute;z-index:5;top:-70%;left:-50%;width:22%;height:240%;pointer-events:none;background:linear-gradient(110deg,transparent 0%,rgba(255,255,255,.04) 35%,rgba(255,255,255,.34) 49%,rgba(255,255,255,.08) 62%,transparent 100%);transform:rotate(10deg);animation:npcLightSweep 13s ease-in-out infinite}
@keyframes npcLightSweep{0%,68%{left:-55%;opacity:0}72%{opacity:.9}88%{left:138%;opacity:.72}100%{left:138%;opacity:0}}

/* Coming Up slider */
.npc-coming-up{width:100%;border:1px solid rgba(255,255,255,.18);border-radius:19px;padding:18px 19px 14px;background:linear-gradient(145deg,rgba(11,37,52,.96),rgba(14,55,70,.92));box-shadow:0 18px 45px rgba(3,20,30,.22),inset 0 1px 0 rgba(255,255,255,.1);color:#fff;backdrop-filter:blur(12px)}
.npc-coming-up__header{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.12)}
.npc-coming-up__header h3{margin:2px 0 0;color:#fff;font-size:clamp(1.05rem,2vw,1.38rem);line-height:1.1}
.npc-slider-controls{display:flex;gap:7px;flex:0 0 auto}
.npc-slider-controls button,.npc-month-nav a{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(255,255,255,.07);color:#fff;cursor:pointer;transition:transform .2s ease,background .2s ease,border-color .2s ease}
.npc-slider-controls button:hover,.npc-slider-controls button:focus-visible{transform:translateY(-1px);background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.42)}
.npc-slider{position:relative;z-index:2;min-height:128px}
.npc-slider__track{position:relative;min-height:124px}
.npc-slide{position:absolute;inset:0;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:15px;padding:15px 2px 10px;opacity:0;visibility:hidden;transform:translateX(34px);transition:opacity .55s ease,transform .55s cubic-bezier(.2,.75,.25,1),visibility .55s}
.npc-slide.is-active{position:relative;opacity:1;visibility:visible;transform:translateX(0)}
.npc-slide.is-leaving{opacity:0;transform:translateX(-28px)}
.npc-slide__content{min-width:0}
.npc-slide__content h4{margin:3px 0 6px;font-size:1.05rem;line-height:1.2}
.npc-slide__content h4 a{color:#fff}
.npc-slide__content h4 a:hover{text-decoration:underline}
.npc-date-badge{display:grid;place-items:center;width:58px;min-width:58px;height:68px;border:1px solid rgba(255,255,255,.18);border-radius:14px;background:linear-gradient(155deg,rgba(255,255,255,.17),rgba(255,255,255,.07));box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.npc-date-badge span{font-size:.67rem;line-height:1;letter-spacing:.13em;font-weight:800;color:var(--npc-accent)}
.npc-date-badge strong{font-size:1.75rem;line-height:1;color:#fff}
.npc-event-line{font-size:.84rem;line-height:1.45;color:rgba(255,255,255,.78)}
.npc-event-line--location:before{content:"•";padding-right:6px;color:var(--npc-accent-2)}
.npc-text-link{display:inline-flex;gap:5px;align-items:center;margin-top:7px;color:var(--npc-accent);font-size:.82rem;font-weight:800}
.npc-text-link:hover{color:#fff}
.npc-slider-dots{display:flex;justify-content:flex-end;gap:6px;padding-top:4px}
.npc-slider-dots button{width:7px;height:7px;padding:0;border:0;border-radius:999px;background:rgba(255,255,255,.3);cursor:pointer;transition:width .2s ease,background .2s ease}
.npc-slider-dots button.is-active{width:22px;background:var(--npc-accent)}
.npc-status{display:inline-flex;align-items:center;width:max-content;margin-bottom:2px;padding:3px 7px;border-radius:999px;font-size:.63rem;line-height:1.2;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.npc-status--cancelled{background:#a90022;color:#fff}
.npc-status--postponed{background:#f0b33a;color:#3f2a00}
.npc-coming-up--compact{max-width:460px}

/* Cards */
.npc-event-section{margin:28px 0}
.npc-section-heading{margin-bottom:18px}
.npc-section-heading h2,.npc-month-header h2{margin:3px 0 0;color:#163547;font-size:clamp(1.55rem,3vw,2.25rem);line-height:1.12}
.npc-card-grid{display:grid;grid-template-columns:repeat(var(--npc-columns,3),minmax(0,1fr));gap:20px}
.npc-event-card{display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid rgba(16,55,74,.13);border-radius:18px;background:#fff;box-shadow:0 14px 35px rgba(15,52,72,.1);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.npc-event-card:hover{transform:translateY(-3px);border-color:rgba(32,199,207,.45);box-shadow:0 19px 44px rgba(15,52,72,.16)}
.npc-event-card__image{display:block;aspect-ratio:16/8;background-size:cover;background-position:center}
.npc-event-card__body{display:flex;flex:1;flex-direction:column;padding:18px}
.npc-event-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.npc-date-badge--light{width:54px;min-width:54px;height:62px;border-color:rgba(22,53,71,.13);background:linear-gradient(160deg,#f7fbfc,#e9f5f6);box-shadow:none}
.npc-date-badge--light strong{color:#17384a;font-size:1.55rem}
.npc-event-card h3{margin:14px 0 8px;font-size:1.18rem;line-height:1.22}
.npc-event-card h3 a{color:#17384a}
.npc-event-card h3 a:hover{color:#087d84}
.npc-event-card .npc-event-line{color:#526b79}
.npc-event-card p{margin:11px 0 0;color:#536875;font-size:.92rem;line-height:1.55}
.npc-event-card .npc-text-link{margin-top:auto;padding-top:14px;color:#087d84}
.npc-event-card--cancelled{opacity:.78}

/* Featured */
.npc-featured{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.1fr);min-height:330px;overflow:hidden;border-radius:22px;background:linear-gradient(145deg,var(--npc-panel),#17465d);box-shadow:0 22px 55px rgba(7,35,50,.2);color:#fff}
.npc-featured__media{min-height:280px;background:linear-gradient(135deg,rgba(32,199,207,.22),rgba(241,185,75,.2)),linear-gradient(145deg,#0d3548,#1b6578);background-size:cover;background-position:center}
.npc-featured__content{display:flex;flex-direction:column;justify-content:center;padding:36px}
.npc-featured__content h3{margin:8px 0 12px;color:#fff;font-size:clamp(1.7rem,3vw,2.7rem);line-height:1.05}
.npc-featured__content p{color:rgba(255,255,255,.8);line-height:1.65}
.npc-button{display:inline-flex;align-items:center;justify-content:center;width:max-content;margin-top:16px;padding:11px 17px;border-radius:999px;background:var(--npc-accent);color:#052e35!important;font-weight:900;transition:transform .2s ease,filter .2s ease}
.npc-button:hover{transform:translateY(-1px);filter:brightness(1.07)}

/* Monthly calendar */
.npc-month-wrap{margin:28px 0}
.npc-month-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}
.npc-month-nav{display:flex;align-items:center;gap:8px}
.npc-month-nav a{border-color:rgba(18,57,76,.16);background:#fff;color:#17384a;box-shadow:0 5px 16px rgba(15,52,72,.08)}
.npc-month-nav a:hover{background:#eef9fa;border-color:rgba(32,199,207,.45)}
.npc-month-nav .npc-month-today{width:auto;padding:0 14px;border-radius:999px;font-size:.8rem;font-weight:800}
.npc-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden;border:1px solid rgba(16,55,74,.14);border-radius:18px;background:#fff;box-shadow:0 18px 48px rgba(15,52,72,.1)}
.npc-weekday{padding:11px 8px;background:linear-gradient(145deg,var(--npc-panel),#17465d);color:#fff;text-align:center;font-size:.72rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.npc-day{position:relative;min-height:132px;padding:10px;border-right:1px solid rgba(16,55,74,.09);border-bottom:1px solid rgba(16,55,74,.09);background:#fff}
.npc-day:nth-child(7n+7){border-right:0}
.npc-day--blank{background:#f5f8f9}
.npc-day.is-today{background:linear-gradient(145deg,rgba(32,199,207,.1),rgba(255,255,255,1) 68%)}
.npc-day.is-today:before{content:"Today";position:absolute;top:9px;right:9px;padding:2px 6px;border-radius:999px;background:var(--npc-accent);color:#06353b;font-size:.57rem;font-weight:900;text-transform:uppercase;letter-spacing:.07em}
.npc-day-number{font-size:.82rem;font-weight:900;color:#355361}
.npc-day-events{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.npc-mini-event{display:block;overflow:hidden;padding:6px 7px;border-left:3px solid var(--npc-accent);border-radius:7px;background:#edf8f9;color:#17384a;font-size:.69rem;line-height:1.25;transition:background .2s ease,transform .2s ease}
.npc-mini-event:hover{background:#dff2f3;transform:translateX(1px)}
.npc-mini-event time{display:block;color:#56717e;font-size:.6rem;font-weight:800}
.npc-mini-event span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:750}
.npc-mini-event--cancelled{border-left-color:#a90022;background:#fff0f3;text-decoration:line-through}
.npc-mini-event--postponed{border-left-color:#e7a624;background:#fff8e8}
.npc-more-events{font-size:.65rem;font-weight:800;color:#54707e}
.npc-month-mobile-list{display:none;margin-top:22px}

/* Single */
.npc-single-meta{margin:0 0 25px;padding:20px 22px;border-left:4px solid var(--npc-accent);border-radius:12px;background:#f1f9fa;box-shadow:0 10px 28px rgba(15,52,72,.08)}
.npc-single-meta__row{margin:4px 0;color:#35515f}

@media(max-width:980px){
  .npc-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .npc-day{min-height:112px;padding:8px}
  .npc-mini-event{font-size:.64rem}
  .npc-featured{grid-template-columns:1fr}
  .npc-featured__media{min-height:230px}
}
@media(max-width:720px){
  .npc-card-grid{grid-template-columns:1fr!important}
  .npc-coming-up{padding:15px}
  .npc-slide{gap:11px}
  .npc-date-badge{width:52px;min-width:52px;height:62px}
  .npc-month-header{align-items:flex-start;flex-direction:column}
  .npc-month-grid{display:none}
  .npc-month-mobile-list{display:block}
  .npc-featured__content{padding:25px}
}
@media(prefers-reduced-motion:reduce){
  .npc-shine:after{animation:none;display:none}
  .npc-slide,.npc-event-card,.npc-button,.npc-slider-controls button{transition:none!important}
}
