/* ==========================================================================
   Bavaria Kalender 2 — Monat, Woche, Tag, Liste, Belegungsplan
   ========================================================================== */
.bvc{--hh:46px;--cal-red:#c81e1e;--cal-school:#0e7490;position:relative}
:root[data-theme="dark"] .bvc{--cal-red:#f26b6b;--cal-school:#38bdd8}
.bvc-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.bvc-nav{display:inline-flex;align-items:center;gap:4px}
.bvc-title{font-family:var(--font-serif);font-weight:500;font-size:clamp(22px,2.4vw,28px);letter-spacing:-.01em;margin:0 6px 0 4px;min-width:0}
.bvc-title small{font-family:var(--font-ui);font-size:calc(13px*var(--fz));color:var(--fg-3);font-weight:600;margin-left:8px}
.bvc-sp{flex:1}
.bvc-ftog{display:none}
.bvc-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:-4px 0 14px}
.bvc-filters .grp{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.bvc-filters .lab{font-family:var(--font-mono);font-size:calc(10.5px*var(--fz));letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);margin-right:2px}
.bvc-search{position:relative}.bvc-search input{height:34px;width:200px;padding:0 10px 0 32px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--fg);font-size:calc(13px*var(--fz))}
.bvc-search .ico{position:absolute;left:10px;top:9px;width:16px;height:16px;color:var(--fg-3)}
.bvc-load{position:absolute;left:0;right:0;top:-6px;height:3px;border-radius:3px;overflow:hidden;opacity:0;transition:opacity .2s}.bvc-load.on{opacity:1}
.bvc-load::after{content:"";position:absolute;inset:0;width:40%;background:var(--accent);animation:bvcload 1s ease-in-out infinite}
@keyframes bvcload{from{transform:translateX(-100%)}to{transform:translateX(260%)}}
.bvc-frame{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-3);box-shadow:var(--shadow-2);overflow:hidden}
:root[data-theme="dark"] .bvc-frame{box-shadow:none}

/* ---------- Monat ---------- */
.bvc-wd{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line);background:var(--surface-2)}
.bvc-wd div{padding:9px 10px;font-family:var(--font-mono);font-size:calc(11px*var(--fz));letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);font-weight:600}
.bvc-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(118px,1fr)}
.bvc-day{position:relative;min-width:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 6px 8px;display:flex;flex-direction:column;gap:3px;cursor:default;transition:background .15s}
.bvc-day:nth-child(7n){border-right:0}
.bvc-day.we{background:color-mix(in srgb,var(--surface-2) 70%,transparent)}
.bvc-day.out{background:var(--surface-2)}.bvc-day.out .bvc-dn b{color:var(--fg-3);font-weight:600}.bvc-day.out .bvc-it{filter:saturate(.55)}
.bvc-row{display:contents}
.bvc-day:hover{background:var(--accent-softer)}
.bvc-day.today .bvc-dn b{background:var(--accent);color:var(--on-accent)}
.bvc-day.sel{box-shadow:inset 0 0 0 2px var(--accent)}
.bvc-day.hol{box-shadow:inset 0 0 0 2px var(--cal-red);background:color-mix(in srgb,var(--cal-red) 6%,var(--surface))}
.bvc-day.hol.sel{box-shadow:inset 0 0 0 2px var(--cal-red),inset 0 0 0 4px var(--accent)}
.bvc-day.sil{background-image:repeating-linear-gradient(135deg,color-mix(in srgb,var(--cal-red) 20%,transparent) 0 5px,color-mix(in srgb,var(--cal-red) 4%,transparent) 5px 11px)}
.bvc-day.drop{background:var(--accent-soft)!important;box-shadow:inset 0 0 0 2px var(--accent)}
.bvc-school{position:absolute;left:0;right:0;top:0;height:3px;background:var(--cal-school);opacity:.75}
.bvc-dn{display:flex;align-items:center;gap:6px;min-height:24px}
.bvc-dn b{min-width:26px;height:26px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;font-size:calc(13px*var(--fz));font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums}
.bvc-dn .h{font-size:calc(10.5px*var(--fz));color:var(--cal-red);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.bvc-dn .h.s{font-style:italic;font-weight:600}
.bvc-dn .add{margin-left:auto;width:calc(24px*var(--fz));height:calc(24px*var(--fz));border-radius:8px;border:0;background:transparent;color:var(--fg-3);display:grid;place-items:center;cursor:pointer;opacity:.5;transition:opacity .15s} /* dezent sichtbar, damit man es findet */
.bvc-day:hover .add,.bvc-dn .add:focus-visible{opacity:1}.bvc-dn .add:hover{background:var(--accent);color:var(--on-accent)}
.bvc-it{position:relative;display:flex;align-items:center;gap:6px;width:100%;min-width:0;padding:3px 7px 3px 9px;border:0;border-radius:7px;text-align:left;cursor:pointer;font-size:calc(12px*var(--fz));line-height:1.35;color:var(--fg);background:color-mix(in srgb,var(--c) 13%,var(--surface));touch-action:manipulation}
.bvc-it::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:3px;border-radius:3px;background:var(--c)}
.bvc-it:hover{background:color-mix(in srgb,var(--c) 22%,var(--surface))}
.bvc-it .t{font-family:var(--font-mono);font-size:calc(10.5px*var(--fz));color:var(--fg-2);flex:0 0 auto}
.bvc-it .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.bvc-it .f{flex:0 0 auto;display:inline-flex;gap:2px;color:var(--fg-3)}.bvc-it .f .ico{width:12px;height:12px}
.bvc-it.pend{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--c) 14%,var(--surface)) 0 6px,var(--surface) 6px 10px);outline:1px dashed color-mix(in srgb,var(--c) 70%,transparent);outline-offset:-1px}
.bvc-it.conf .n::after{content:" ⚠";color:var(--warning)}
.bvc-it.dim{opacity:.35}
.bvc-it.dragging{opacity:.35}
.bvc-more{border:0;background:transparent;color:var(--fg-2);font-size:calc(11.5px*var(--fz));font-weight:700;text-align:left;padding:2px 6px;border-radius:6px;cursor:pointer}.bvc-more:hover{background:var(--surface-3);color:var(--fg)}
.bvc-ghost{position:fixed;z-index:180;pointer-events:none;padding:6px 10px;border-radius:10px;background:var(--surface);border:1px solid var(--line-2);box-shadow:var(--shadow-3);font-size:calc(12.5px*var(--fz));font-weight:700;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bvc-ghost small{display:block;font-family:var(--font-mono);font-weight:600;color:var(--accent)}

/* ---------- Woche / Tag ---------- */
.bvc-wk{display:grid;grid-template-columns:56px repeat(var(--n,7),minmax(0,1fr))}
.bvc-wkh{position:sticky;top:0;z-index:3;background:var(--surface);border-bottom:1px solid var(--line)}
.bvc-wkh .c{padding:8px 8px 7px;border-left:1px solid var(--line);min-width:0;position:relative}
.bvc-wkh .c .w{font-family:var(--font-mono);font-size:calc(10.5px*var(--fz));letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3)}
.bvc-wkh .c .d{font-size:calc(20px*var(--fz));font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.bvc-wkh .c.today .d{color:var(--accent)}.bvc-wkh .c.hol{box-shadow:inset 0 -3px 0 var(--cal-red)}.bvc-wkh .c .h{font-size:calc(10.5px*var(--fz));color:var(--cal-red);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bvc-wkh .c.sil{background-image:repeating-linear-gradient(135deg,color-mix(in srgb,var(--cal-red) 18%,transparent) 0 5px,transparent 5px 11px)}
.bvc-wkh .c .sc{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--cal-school);opacity:.75}
.bvc-allday{display:grid;grid-template-columns:56px repeat(var(--n,7),minmax(0,1fr));border-bottom:1px solid var(--line);background:var(--surface-2)}
.bvc-allday .lab{font-size:calc(10px*var(--fz));color:var(--fg-3);padding:6px 4px;text-align:right}
.bvc-allday .c{border-left:1px solid var(--line);padding:4px;display:flex;flex-direction:column;gap:3px;min-width:0}
.bvc-scroll{max-height:68vh;overflow:auto;position:relative}
.bvc-grid{display:grid;grid-template-columns:56px repeat(var(--n,7),minmax(0,1fr));position:relative}
.bvc-hours div{height:var(--hh);font-family:var(--font-mono);font-size:calc(10.5px*var(--fz));color:var(--fg-3);text-align:right;padding:0 8px 0 0;transform:translateY(-7px)}
.bvc-col{position:relative;border-left:1px solid var(--line);background-image:linear-gradient(to bottom,var(--line) 1px,transparent 1px);background-size:100% var(--hh)}
.bvc-col.we{background-color:color-mix(in srgb,var(--surface-2) 60%,transparent)}
.bvc-col.hol{background-color:color-mix(in srgb,var(--cal-red) 5%,transparent)}
.bvc-col.sil{background-image:linear-gradient(to bottom,var(--line) 1px,transparent 1px),repeating-linear-gradient(135deg,color-mix(in srgb,var(--cal-red) 12%,transparent) 0 5px,transparent 5px 11px);background-size:100% var(--hh),auto}
.bvc-ev{position:absolute;left:3px;right:3px;border-radius:9px;padding:4px 7px;overflow:hidden;cursor:pointer;font-size:calc(12px*var(--fz));line-height:1.3;color:var(--fg);background:color-mix(in srgb,var(--c) 16%,var(--surface));border:1px solid color-mix(in srgb,var(--c) 45%,transparent);border-left:4px solid var(--c);box-shadow:0 1px 2px rgba(0,0,0,.06);text-align:left;touch-action:manipulation;transition:box-shadow .15s}
.bvc-ev:hover{box-shadow:var(--shadow-2);z-index:4}
.bvc-ev b{display:block;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bvc-ev .t{display:block;font-family:var(--font-mono);font-size:calc(10.5px*var(--fz));color:var(--fg-2)}
.bvc-ev .o{display:block;font-size:calc(11px*var(--fz));color:var(--fg-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bvc-ev.pend{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--c) 15%,var(--surface)) 0 6px,var(--surface) 6px 11px);border-style:dashed}
.bvc-ev.conf{box-shadow:0 0 0 2px var(--warning)}
.bvc-ev.dragging{opacity:.5;box-shadow:var(--shadow-3);z-index:6}
.bvc-ev .rs{position:absolute;left:0;right:0;bottom:0;height:8px;cursor:ns-resize}
.bvc-ev .rs::after{content:"";position:absolute;left:50%;bottom:2px;width:22px;height:3px;margin-left:-11px;border-radius:3px;background:color-mix(in srgb,var(--c) 60%,transparent);opacity:0}.bvc-ev:hover .rs::after{opacity:1}
.bvc-now{position:absolute;left:0;right:0;height:2px;background:var(--cal-red);z-index:5;pointer-events:none}.bvc-now::before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--cal-red)}
.bvc-sel{position:absolute;left:3px;right:3px;border-radius:9px;background:var(--accent-soft);border:2px dashed var(--accent);z-index:4;pointer-events:none;font-size:calc(11.5px*var(--fz));font-weight:700;color:var(--accent-ink);padding:3px 7px}

/* ---------- Liste ---------- */
.bvc-ag{padding:6px 0}
.bvc-agd{display:grid;grid-template-columns:118px 1fr;gap:16px;padding:14px 20px;border-bottom:1px solid var(--line)}
.bvc-agd:last-child{border-bottom:0}
.bvc-agd .dh{position:sticky;top:0}
.bvc-agd .dh b{display:block;font-family:var(--font-serif);font-size:calc(30px*min(var(--fz),1.06));font-weight:500;line-height:1}
.bvc-agd .dh span{font-size:calc(12.5px*var(--fz));color:var(--fg-3);font-weight:600}
.bvc-agd .dh .h{display:block;color:var(--cal-red);font-size:calc(11.5px*var(--fz));font-weight:700;margin-top:3px}
.bvc-agd.today .dh b{color:var(--accent)}
.bvc-agi{display:flex;gap:14px;align-items:flex-start;padding:9px 12px;border-radius:12px;cursor:pointer;border:0;background:transparent;width:100%;text-align:left;color:var(--fg)}
.bvc-agi:hover{background:var(--surface-2)}
.bvc-agi .bar{width:4px;align-self:stretch;border-radius:4px;background:var(--c);flex:0 0 auto}
.bvc-agi .tm{width:92px;flex:0 0 auto;font-family:var(--font-mono);font-size:calc(12.5px*var(--fz));color:var(--fg-2);padding-top:1px}
.bvc-agi .bd{flex:1;min-width:0}.bvc-agi .bd b{font-weight:700;font-size:calc(14.5px*var(--fz))}.bvc-agi .bd small{display:block;color:var(--fg-3);font-size:calc(12.5px*var(--fz));margin-top:1px}
.bvc-agi.pend .bar{background:repeating-linear-gradient(180deg,var(--c) 0 4px,transparent 4px 7px)}
@media(max-width:640px){.bvc-agd{grid-template-columns:1fr;gap:6px;padding:12px 14px}.bvc-agd .dh{position:static;display:flex;gap:8px;align-items:baseline}.bvc-agd .dh b{font-size:calc(22px*var(--fz))}.bvc-agi .tm{width:74px}}

/* ---------- Belegungsplan ---------- */
.bvc-plan{display:grid;grid-template-columns:150px repeat(7,minmax(0,1fr))}
.bvc-plan .hd{position:sticky;top:0;background:var(--surface-2);padding:9px 8px;border-bottom:1px solid var(--line);border-left:1px solid var(--line);font-size:calc(12px*var(--fz));font-weight:700}
.bvc-plan .hd .w{font-family:var(--font-mono);font-size:calc(10.5px*var(--fz));letter-spacing:.1em;text-transform:uppercase;color:var(--fg-3);display:block;font-weight:600}
.bvc-plan .hd.hol{box-shadow:inset 0 -3px 0 var(--cal-red)}.bvc-plan .hd.today{color:var(--accent)}
.bvc-plan .area{padding:10px 10px;border-bottom:1px solid var(--line);font-size:calc(13.5px*var(--fz));font-weight:700;display:flex;align-items:center;gap:8px;background:var(--surface)}
.bvc-plan .cell{border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px;display:flex;flex-direction:column;gap:3px;min-height:58px;min-width:0}
.bvc-plan .cell.free{background-image:linear-gradient(135deg,transparent 0,transparent)}
.bvc-plan .cell .fr{margin:auto;font-size:calc(11px*var(--fz));color:var(--fg-3)}
.bvc-plan .cell.sil{background-image:repeating-linear-gradient(135deg,color-mix(in srgb,var(--cal-red) 14%,transparent) 0 5px,transparent 5px 11px)}

/* ---------- Tagesliste / Popover ---------- */
.bvc-pop{position:fixed;z-index:140;width:300px;max-height:60vh;overflow:auto;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-3);animation:popIn .14s var(--ease)}
.bvc-pop h4{font-family:var(--font-serif);font-weight:500;font-size:calc(18px*var(--fz));margin:0 0 8px}
.bvc-pop .bvc-it{margin-bottom:4px}
.bvc-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:calc(12.5px*var(--fz));color:var(--fg-2)}
.bvc-legend span{display:inline-flex;align-items:center;gap:6px}.bvc-legend i{width:12px;height:12px;border-radius:4px;display:inline-block}

/* ---------- schmale Bildschirme ---------- */
@media(max-width:760px){
  .bvc-ftog{display:inline-flex}.bvc-filters{display:none}.bvc-filters.open{display:flex}
  .bvc-month{grid-auto-rows:minmax(64px,1fr)}
  .bvc-day{padding:4px 3px}
  .bvc-day .bvc-it{padding:0;height:6px;border-radius:3px;background:var(--c)}
  .bvc-day .bvc-it::before,.bvc-day .bvc-it>*{display:none}
  .bvc-dn .h{display:none}.bvc-dn b{min-width:22px;height:22px;font-size:calc(12px*var(--fz))}
  .bvc-title{font-size:calc(21px*var(--fz));width:100%;order:-1;margin:0}
  .bvc-search input{width:150px}
  .bvc-wk,.bvc-grid,.bvc-allday{grid-template-columns:42px repeat(var(--n,7),minmax(0,1fr))}
}
@media print{.bvc-bar,.bvc-filters{display:none!important}.bvc-frame{border:0;box-shadow:none}.bvc-scroll{max-height:none;overflow:visible}.bvc-month{grid-auto-rows:minmax(96px,auto)}.bvc-day,.bvc-it{break-inside:avoid}}
