.zappy-calendar{--zappy-ink:var(--zfn-ink,#111);--zappy-paper:var(--zfn-paper,#f3f0e8);--zappy-aqua:var(--zfn-aqua,#5bcebd);--zappy-pink:var(--zfn-pink,#ef8cca);--zappy-orange:var(--zfn-orange,#ff8d5d);max-width:65rem;margin:0 auto;color:var(--zappy-ink);font-family:"Fira Code",monospace}
.zappy-calendar__toolbar{display:grid;grid-template-columns:3.25rem 1fr 3.25rem;align-items:center;gap:0.75rem;margin-bottom:1.125rem}
.zappy-calendar__toolbar h3{margin:0;text-align:center;font-family:Inter,sans-serif;font-size:clamp(1.5625rem,4vw,2.625rem);font-weight:900;text-transform:uppercase}
.zappy-calendar__toolbar button{width:3.25rem;height:3rem;border:0.0625rem solid var(--zappy-ink);border-radius:0;background:var(--zappy-paper);box-shadow:0.25rem 0.25rem 0 var(--zappy-ink);color:var(--zappy-ink);font:700 1.375rem/1 Inter,sans-serif;cursor:pointer;text-decoration:none}
.zappy-calendar__toolbar button:hover{background:var(--zappy-aqua);transform:translate(0.0625rem,0.0625rem);box-shadow:0.1875rem 0.1875rem 0 var(--zappy-ink)}
.zappy-calendar__jump{display:flex;align-items:flex-end;justify-content:flex-end;gap:1rem;margin:0 0 1.5rem;padding:1rem;border:0.0625rem solid var(--zappy-ink);background:var(--zappy-aqua)}
.zappy-calendar__jump>label{margin-right:auto;align-self:center;font-family:Inter,sans-serif;font-size:0.75rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.zappy-calendar__jump-controls{display:flex;gap:0.75rem}
.zappy-calendar__jump input{min-height:3rem;padding:0 0.875rem;border:0.0625rem solid var(--zappy-ink);border-radius:0;background:var(--zappy-paper);color:var(--zappy-ink);font:700 0.8125rem/1.2 "Fira Code",monospace}
.zappy-calendar__jump button{min-height:3rem;padding:0 1.25rem;border:0.0625rem solid var(--zappy-ink);border-radius:0;background:var(--zappy-ink);color:var(--zappy-paper);font:800 0.75rem/1 Inter,sans-serif;text-transform:uppercase;cursor:pointer}
.zappy-calendar__jump button:hover{background:var(--zappy-paper);color:var(--zappy-ink)}
.zappy-calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:0.0625rem solid var(--zappy-ink);border-left:0.0625rem solid var(--zappy-ink);background:var(--zappy-ink);gap:0.0625rem}
.zappy-calendar__weekday{padding:0.75rem 0.25rem;background:var(--zappy-ink);color:#fff;text-align:center;font:800 0.75rem/1 Inter,sans-serif;text-transform:uppercase}
.zappy-calendar__day,.zappy-calendar__blank{min-height:6.75rem;padding:0.625rem;background:var(--zappy-paper)}
.zappy-calendar__day{display:flex;flex-direction:column;gap:0.375rem}
.zappy-calendar__day strong{font:900 1.5rem/1 Inter,sans-serif}
.zappy-calendar__day span{font-size:0.625rem;font-weight:700;text-transform:uppercase;overflow-wrap:anywhere}
.zappy-calendar__day small{font-size:0.625rem;line-height:1.3}
.zappy-calendar__day{background:var(--zappy-state-color,var(--zappy-aqua))}
.zappy-calendar__day.is-target-date{position:relative;z-index:1;outline:0.25rem solid var(--zappy-ink);outline-offset:-0.25rem;animation:zappy-target-pulse .8s ease 2}
@keyframes zappy-target-pulse{50%{box-shadow:inset 0 0 0 0.375rem rgba(255,255,255,.75)}}
.zappy-calendar__legend{display:flex;flex-wrap:wrap;justify-content:center;gap:0.875rem 1.75rem;margin-top:1.5rem;font-size:0.75rem;font-weight:700;text-transform:uppercase}
.zappy-calendar__legend span{display:flex;align-items:center;gap:0.5rem}
.zappy-calendar__legend i{width:1.125rem;height:1.125rem;border:0.0625rem solid var(--zappy-ink);background:var(--zappy-state-color,var(--zappy-aqua))}
.zappy-calendar__loading,.zappy-calendar__error{grid-column:1/-1;margin:0;padding:1.875rem;background:var(--zappy-paper);text-align:center}
.zfn-status[data-zappy-status]{background:var(--zappy-state-color,var(--zappy-aqua))}
@media(max-width:43.75rem){.zappy-calendar__day,.zappy-calendar__blank{min-height:3.875rem;padding:0.4375rem}.zappy-calendar__day strong{font-size:1.125rem}.zappy-calendar__day span,.zappy-calendar__day small{display:none}.zappy-calendar__weekday{font-size:0.5625rem;padding:0.5625rem 0.125rem}.zappy-calendar__toolbar{grid-template-columns:2.625rem 1fr 2.625rem}.zappy-calendar__toolbar button{width:2.625rem;height:2.625rem}.zappy-calendar__jump{align-items:stretch;flex-direction:column;gap:0.75rem}.zappy-calendar__jump>label{align-self:flex-start}.zappy-calendar__jump-controls{display:grid;grid-template-columns:minmax(0,1fr) auto}.zappy-calendar__jump input{width:100%;min-width:0}.zappy-calendar__legend{justify-content:flex-start;font-size:0.625rem}}
