.ninagrafie-calendar{--nina-olive:#596448;--nina-olive-dark:#3f4936;--nina-ivory:#fbf9f3;--nina-beige:#eee7db;--nina-brown:#9a7453;--nina-bordeaux:#71313f;max-width:1500px;margin:28px auto 64px;color:#292d27}.ninagrafie-calendar__hero{height:330px;overflow:hidden;margin:0 0 34px;border-radius:5px;background:var(--nina-beige)}.ninagrafie-calendar__hero img{width:100%;height:100%;object-fit:cover}.ninagrafie-calendar__toolbar{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:18px}.ninagrafie-calendar__toolbar h2{margin:2px 0 0;font-size:34px;color:#252a23}.ninagrafie-calendar__eyebrow,.ninagrafie-calendar-modal__eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:12px;color:var(--nina-bordeaux)}.ninagrafie-calendar__toolbar nav{display:flex;gap:8px}.ninagrafie-calendar__toolbar nav a,.ninagrafie-calendar__filters button{border:1px solid #d8cbb9;background:var(--nina-ivory);padding:9px 14px;text-decoration:none;color:#352d29;cursor:pointer}.ninagrafie-calendar__toolbar nav a:hover,.ninagrafie-calendar__filters button:hover{border-color:var(--nina-olive);background:#f4f0e7}.ninagrafie-calendar__filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.ninagrafie-calendar__filters button.is-active{background:var(--nina-olive);color:#fff;border-color:var(--nina-olive)}.ninagrafie-calendar__weekdays,.ninagrafie-calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.ninagrafie-calendar__weekdays>div{background:var(--nina-olive-dark);color:#fff;text-align:center;padding:10px;font-weight:700;font-size:12px;letter-spacing:.07em}.ninagrafie-calendar__day{min-height:155px;border-right:1px solid #d9c9b5;border-bottom:1px solid #d9c9b5;padding:7px;cursor:pointer;background:#fffdfa}.ninagrafie-calendar__day:nth-child(7n+1){border-left:1px solid #d9c9b5}.ninagrafie-calendar__day:hover{background:#fcf8f0}.ninagrafie-calendar__day.is-outside{background:#f1eee8;color:#9a968e}.ninagrafie-calendar__day.is-today{box-shadow:inset 0 0 0 2px var(--nina-olive)}.ninagrafie-calendar__daynum{font-weight:700;margin-bottom:6px}.ninagrafie-calendar__entries{display:grid;gap:5px}.ninagrafie-calendar__entry{display:block;padding:6px 8px;border-left:3px solid;text-decoration:none!important;background:#f6f2eb;color:#342b28!important;font-size:12px;line-height:1.25}.ninagrafie-calendar__entry span{display:block;text-transform:uppercase;letter-spacing:.06em;font-size:9px;opacity:.7}.ninagrafie-calendar__entry strong,.ninagrafie-calendar__entry small{display:block}.ninagrafie-calendar__entry.is-event{border-color:var(--nina-bordeaux);background:#f7eef0}.ninagrafie-calendar__entry.is-todo{border-color:var(--nina-brown);background:#f7f2eb}.ninagrafie-calendar__entry.is-appointment{border-color:var(--nina-olive);background:#f0f3eb}.ninagrafie-calendar__entry.is-overflow{display:none}.ninagrafie-calendar__more{border:0;background:transparent;text-align:left;padding:2px;color:var(--nina-bordeaux);font-size:11px;cursor:pointer}.ninagrafie-calendar__hint{font-size:12px;opacity:.7;margin-top:10px}.ninagrafie-calendar-modal[hidden]{display:none}.ninagrafie-calendar-modal{position:fixed;z-index:999999;inset:0;display:grid;place-items:center;padding:20px}.ninagrafie-calendar-modal__backdrop{position:absolute;inset:0;background:rgba(31,35,29,.55)}.ninagrafie-calendar-modal__panel{position:relative;width:min(560px,100%);max-height:85vh;overflow:auto;background:var(--nina-ivory);border-radius:6px;padding:30px;box-shadow:0 18px 60px rgba(0,0,0,.22)}.ninagrafie-calendar-modal__close{position:absolute;right:14px;top:12px;border:0;background:transparent;font-size:26px;cursor:pointer;color:var(--nina-bordeaux)}.ninagrafie-calendar-modal__panel h3{margin:5px 35px 18px 0;font-size:25px}.ninagrafie-calendar-modal dl{display:grid;grid-template-columns:120px 1fr;gap:8px 14px;margin:0}.ninagrafie-calendar-modal dt{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#777064}.ninagrafie-calendar-modal dd{margin:0;font-weight:600}.ninagrafie-calendar-modal__actions{display:grid;gap:9px;margin-top:24px}.ninagrafie-calendar-modal__primary,.ninagrafie-calendar-modal__choice{display:block;text-decoration:none!important}.ninagrafie-calendar-modal__primary{justify-self:start;background:var(--nina-olive);color:#fff!important;padding:9px 16px}.ninagrafie-calendar-modal__choice{padding:13px 15px;border:1px solid #ddd2c3;background:#fff;color:#342b28!important;border-left:4px solid var(--nina-olive)}.ninagrafie-calendar-modal__choice.is-event{border-left-color:var(--nina-bordeaux)}.ninagrafie-calendar-modal__choice.is-todo{border-left-color:var(--nina-brown)}.ninagrafie-calendar-modal__choice strong,.ninagrafie-calendar-modal__choice span{display:block}.ninagrafie-calendar-modal__choice span{font-size:12px;opacity:.72;margin-top:2px}.ninagrafie-calendar-modal-open{overflow:hidden}@media(max-width:900px){.ninagrafie-calendar{overflow-x:auto}.ninagrafie-calendar__hero{height:240px}.ninagrafie-calendar__toolbar,.ninagrafie-calendar__filters,.ninagrafie-calendar__weekdays,.ninagrafie-calendar__grid{min-width:760px}.ninagrafie-calendar__day{min-height:125px}.ninagrafie-calendar__entry{font-size:11px}}@media(max-width:600px){.ninagrafie-calendar__hero{height:190px}.ninagrafie-calendar__toolbar h2{font-size:25px}.ninagrafie-calendar-modal__panel{padding:24px 20px}.ninagrafie-calendar-modal dl{grid-template-columns:1fr;gap:2px}.ninagrafie-calendar-modal dd{margin-bottom:8px}}
/* V1.5 dev.3 – Ninagrafie controls + Terminformular */
.ninagrafie-calendar__toolbar nav a,.ninagrafie-calendar__filters button,.ninagrafie-calendar-modal__primary,.ninagrafie-calendar-modal__secondary,.ninagrafie-calendar-modal__choice{border-radius:12px}.ninagrafie-calendar-modal__choice{width:100%;text-align:left;cursor:pointer}.ninagrafie-calendar-modal__primary,.ninagrafie-calendar-modal__secondary{border:1px solid var(--nina-olive);cursor:pointer;font:inherit}.ninagrafie-calendar-modal__secondary{justify-self:start;background:transparent;color:var(--nina-olive-dark);padding:9px 16px}.ninagrafie-calendar-form__grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.ninagrafie-calendar-form label{display:grid;gap:6px}.ninagrafie-calendar-form label>span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#6d675d}.ninagrafie-calendar-form .is-wide{grid-column:1/-1}.ninagrafie-calendar-form input,.ninagrafie-calendar-form select,.ninagrafie-calendar-form textarea{width:100%;box-sizing:border-box;border:1px solid #d8cbb9;border-radius:10px;background:#fff;padding:10px 12px;font:inherit}.ninagrafie-calendar-form__check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;justify-content:start}.ninagrafie-calendar-form__check input{width:auto}.ninagrafie-calendar-form__message{min-height:18px;color:var(--nina-bordeaux);font-size:12px}.ninagrafie-calendar-modal__actions{grid-template-columns:auto 1fr}.ninagrafie-calendar-modal__actions .ninagrafie-calendar-modal__primary:last-child{justify-self:end}@media(max-width:600px){.ninagrafie-calendar-form__grid{grid-template-columns:1fr}.ninagrafie-calendar-form .is-wide{grid-column:auto}}

/* V1.6 dev.24 – Calendar 2.0 stabilization */
.ninagrafie-calendar__entry[hidden]{display:none!important}
.ninagrafie-calendar-modal{align-items:start;overflow:auto;padding:max(96px,calc(env(safe-area-inset-top) + 72px)) 20px 32px}
.ninagrafie-calendar-modal__panel{margin:auto 0;width:min(680px,100%);max-height:calc(100vh - 128px);overflow:auto}
.ninagrafie-calendar-modal__actions:has(.ninagrafie-calendar-modal__choice){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:10px}
.ninagrafie-calendar-modal__actions:has(.ninagrafie-calendar-modal__choice) .ninagrafie-calendar-modal__choice{height:100%;min-height:112px}
@media(max-width:760px){.ninagrafie-calendar-modal{padding:72px 14px 24px}.ninagrafie-calendar-modal__panel{max-height:calc(100vh - 96px)}.ninagrafie-calendar-modal__actions:has(.ninagrafie-calendar-modal__choice){grid-template-columns:1fr}}

/* V1.6 dev.25 – keep calendar dialogs below fixed site/admin headers */
.ninagrafie-calendar-modal{
  --nina-calendar-modal-top:72px;
  align-items:start;
  padding:calc(var(--nina-calendar-modal-top) + 18px) 20px 28px;
}
.ninagrafie-calendar-modal__panel{
  margin:0;
  max-height:calc(100dvh - var(--nina-calendar-modal-top) - 46px);
}
@media(max-width:760px){
  .ninagrafie-calendar-modal{padding:calc(var(--nina-calendar-modal-top) + 12px) 14px 20px}
  .ninagrafie-calendar-modal__panel{max-height:calc(100dvh - var(--nina-calendar-modal-top) - 32px)}
}


/* V1.6 dev.26 – structured appointment form */
.ninagrafie-calendar-modal__panel{width:min(720px,100%)}
.ninagrafie-calendar-form__groups{display:grid;gap:14px}
.ninagrafie-calendar-form__group{margin:0;padding:16px;border:1px solid #d8cbb9;border-radius:12px;background:#fffdfa}
.ninagrafie-calendar-form__group legend{padding:0 8px;color:var(--nina-bordeaux);font-weight:700;font-size:13px}
.ninagrafie-calendar-form__group textarea{min-height:92px;resize:vertical}
.ninagrafie-calendar-form__spacer{display:block}
.ninagrafie-calendar-modal dl a{color:var(--nina-bordeaux);overflow-wrap:anywhere}
@media(max-width:600px){.ninagrafie-calendar-form__group{padding:13px}.ninagrafie-calendar-form__spacer{display:none}}


/* dev.32 · photographic calendar strip */
.ninagrafie-calendar__heroes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0 0 34px}
.ninagrafie-calendar__heroes .ninagrafie-calendar__hero{height:260px;margin:0;border-radius:6px}
@media(max-width:900px){.ninagrafie-calendar__heroes{gap:10px}.ninagrafie-calendar__heroes .ninagrafie-calendar__hero{height:190px}}
@media(max-width:600px){.ninagrafie-calendar__heroes{display:block;margin-bottom:22px}.ninagrafie-calendar__heroes .ninagrafie-calendar__hero{height:150px}.ninagrafie-calendar__heroes .ninagrafie-calendar__hero:nth-child(n+2){display:none}}


/* V1.6 dev.33 – responsive mobile day agenda */
.ninagrafie-calendar-mobile{display:none}
@media(max-width:600px){
 .ninagrafie-calendar{overflow:visible}
 .ninagrafie-calendar__toolbar{min-width:0;display:block}
 .ninagrafie-calendar__toolbar nav{display:none}
 .ninagrafie-calendar__filters{min-width:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
 .ninagrafie-calendar__filters button{padding:9px 6px;font-size:12px}
 .ninagrafie-calendar__weekdays,.ninagrafie-calendar__grid,.ninagrafie-calendar__hint{display:none}
 .ninagrafie-calendar-mobile{display:block}
 .ninagrafie-calendar-mobile__picker{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;margin:14px 0 10px}
 .ninagrafie-calendar-mobile__picker button,.ninagrafie-calendar-mobile__picker input{height:42px;border:1px solid #d8cbb9;border-radius:12px;background:var(--nina-ivory);color:#352d29;font:inherit}
 .ninagrafie-calendar-mobile__picker button{width:42px;cursor:pointer}
 .ninagrafie-calendar-mobile__picker input{width:100%;box-sizing:border-box;padding:8px 10px}
 .ninagrafie-calendar-mobile__week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:14px}
 .ninagrafie-calendar-mobile__week button{min-width:0;border:1px solid #ddd2c3;border-radius:10px;background:#fffdfa;padding:7px 2px;color:#352d29;font:inherit;cursor:pointer}
 .ninagrafie-calendar-mobile__week button span,.ninagrafie-calendar-mobile__week button strong{display:block}
 .ninagrafie-calendar-mobile__week button span{font-size:9px;text-transform:uppercase;letter-spacing:.05em;opacity:.7}
 .ninagrafie-calendar-mobile__week button strong{font-size:13px}
 .ninagrafie-calendar-mobile__week button.is-active{background:var(--nina-olive);border-color:var(--nina-olive);color:#fff}
 .ninagrafie-calendar-mobile__agenda{display:grid;gap:8px}
 .ninagrafie-calendar-mobile__date-title{margin:2px 0 4px;font-size:18px;color:#252a23}
 .ninagrafie-calendar-mobile__empty{padding:18px;border:1px dashed #d8cbb9;border-radius:10px;background:#fffdfa;font-size:13px;color:#6d675d}
 .ninagrafie-calendar-mobile__agenda .ninagrafie-calendar__entry{font-size:13px;padding:10px 12px;border-radius:0 8px 8px 0}
 .ninagrafie-calendar-mobile__agenda .ninagrafie-calendar__entry span{font-size:10px}
}

/* dev.25.2.1: competition milestones are a distinct optional calendar source. */
.ninagrafie-calendar__entry.is-competition{border-color:var(--nina-bordeaux);background:#f8f0f2}
@media(max-width:600px){.ninagrafie-calendar__filters{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* dev.27.1: central semantic calendar colors, source-specific CSS must not override configured values. */
.ninagrafie-calendar .ninagrafie-calendar__entry {border-left-color:var(--nina-entry-accent,#71313f)!important;background:var(--nina-entry-bg,#f7f2eb)!important}
