/* Designentwurf: Räume als Zeilen, Tage als Spalten. */
:root{--paper:#f2f0e6;--ink:#252821;--muted:#6e7267;--line:#d0d0c4;--accent:#252821;font-family:LocalSans,system-ui,sans-serif}
.app-shell{display:block;padding:0 34px;max-width:1900px;margin:auto}.sidebar{width:auto;height:auto;position:static;background:none;border:0;border-bottom:2px solid var(--ink);padding:20px 0 16px;display:grid;grid-template-columns:1fr auto;gap:22px}.brand{margin:0;gap:10px}.brand img{width:30px;height:30px;filter:grayscale(1)}.brand>span{font-size:10px;letter-spacing:1.8px}.sidebar>.sidebar-label,.views,.room-heading,.filter-hint{display:none}.sidebar-bottom{grid-column:2;grid-row:1;display:flex;align-items:center;gap:20px;margin:0;padding:0}.quiet-button{width:auto;border:0;padding:0;font-size:11px;gap:10px}.access{margin:0;font-size:10px}.access-dot{background:#606859}.sidebar-bottom #logout{margin:0}#room-filters{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}.room-filter{border:1px solid var(--ink);border-radius:0;padding:8px 12px;font-size:11px;background:color-mix(in srgb,var(--room) 17%,var(--paper));color:var(--ink);gap:8px}.room-filter:has(input:not(:checked)){background:transparent;color:#85897c;border-color:#c3c6b8}.room-filter .count{background:none;font-size:10px;margin-left:8px;color:var(--ink);padding:0}.room-dot{border-radius:50%;width:7px;height:7px}
main{padding:30px 0 20px;max-width:none}.page-header{margin-bottom:22px;align-items:flex-end}.page-header .eyebrow{letter-spacing:2.5px;font-size:9px;margin-bottom:10px}.page-header h1{font-family:Impact,"Arial Narrow",LocalSans,system-ui,sans-serif;font-size:92px;line-height:.94;font-weight:800;letter-spacing:-3px;text-transform:uppercase}.page-header h1>span{color:#a95b3d}.page-header p{font-size:11px;letter-spacing:1px;text-transform:uppercase;margin-top:12px}.primary{background:#e4ed85;color:#252821;border:1px solid #252821;box-shadow:3px 3px 0 #252821;border-radius:0;padding:12px 17px;font-size:12px}.primary:hover{background:#d4df69}.notice{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:8px 0;margin-bottom:0;font-size:10px;color:var(--muted)}.notice .text-button{color:var(--ink);text-decoration:underline}.planner{background:transparent;border:0;box-shadow:none;border-radius:0;overflow:visible}.calendar-toolbar{padding:22px 0 17px;gap:16px}.period{gap:18px}.period h2{font-size:25px;letter-spacing:-1px;font-weight:650}.period .subtle{font-size:10px;letter-spacing:.5px}.arrows{border:1px solid var(--ink);border-radius:0}.arrows button{height:36px;width:32px}.arrows button+button{border-color:var(--ink)}.arrows button:hover{background:#e4ed85}.outline,.date-picker{border:1px solid #babeb0;border-radius:0;background:none}.view-switch{border:1px solid var(--ink);border-radius:0;background:none;padding:0}.view-switch button{border-radius:0;padding:10px 14px;text-transform:uppercase;font-size:10px;letter-spacing:1px}.view-switch button.active{background:var(--ink);color:#f2f0e6;box-shadow:none}.calendar-meta{padding:0 0 15px;font-size:11px}.search{border-bottom:1px solid #a5aa9a;padding:0 0 2px}.search input{width:150px}.search>span{color:var(--ink)}#calendar-wrap{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);overflow:auto}#calendar{position:relative}.calendar-footer{background:none;padding:13px 0;font-size:10px}.status-legend{gap:18px}.below-calendar{margin-top:10px;color:#6f7465;font-size:10px}.calendar-footer>.subtle{font-size:10px}
.room-board{display:grid;grid-template-columns:148px repeat(7,minmax(106px,1fr));min-width:920px}.board-corner{font-size:9px;letter-spacing:1.3px;align-self:end;padding:18px 12px;color:#767b6c}.board-day{position:relative;padding:14px 12px 12px;border-left:1px solid #cbd0c0;min-height:84px;display:flex;align-items:baseline;gap:9px}.board-day>span{font-size:10px;text-transform:uppercase}.board-day>strong{font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:39px;letter-spacing:-1px;font-weight:700}.board-day>small{position:absolute;bottom:5px;left:12px;font-size:8px;letter-spacing:1px}.board-day.is-today{background:#e4ed85}.board-day.is-weekend{color:#7f8675}.board-room{padding:13px 12px;min-height:142px;background:color-mix(in srgb,var(--room) 20%,var(--paper));border-top:1px solid var(--ink);border-left:4px solid var(--room);display:flex;flex-direction:column;justify-content:flex-start}.room-index{font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:42px;letter-spacing:-2px;line-height:1;color:var(--room)}.board-room h3{font-size:14px;letter-spacing:-.3px;line-height:1.25;margin-top:14px;overflow-wrap:anywhere}.board-room small{font-size:9px;color:#6c7163;margin-top:7px}.board-cell{border-top:1px solid var(--ink);border-left:1px solid #cbd0c0;padding:7px;min-height:142px;background:color-mix(in srgb,var(--room) 3%,var(--paper));cursor:crosshair}.board-cell.is-today{background:color-mix(in srgb,var(--room) 7%,#f5f3de)}.board-cell.is-weekend{background:color-mix(in srgb,var(--room) 5%,#e9e9df)}.cell-free{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.7px;color:#a5ac98;margin:8px 3px;align-items:center}.cell-free>span{font-size:16px;opacity:0}.board-cell:hover .cell-free>span,.board-cell:focus-visible .cell-free>span{opacity:1;color:var(--ink)}.board-cell:hover{background:#e7edcc}.board-booking{display:block;position:relative;width:100%;text-align:left;padding:10px 9px 18px;margin-bottom:6px;min-height:89px;border:1px solid var(--room);border-radius:0;background:color-mix(in srgb,var(--room) 22%,#fffdf3);color:#20251c;box-shadow:2px 2px 0 color-mix(in srgb,var(--room) 55%,transparent);overflow-wrap:anywhere}.board-booking:hover{background:color-mix(in srgb,var(--room) 35%,#fffdf3);transform:translateY(-1px)}.booking-time{display:block;font-family:ui-monospace,SFMono-Regular,monospace;font-size:9px;letter-spacing:-.3px;white-space:nowrap;margin-bottom:7px}.board-booking strong{font-size:11px;line-height:1.4;display:block;font-weight:650}.booking-state{display:block;font-size:8px;letter-spacing:.5px;text-transform:uppercase;margin-top:8px}.booking-arrow{position:absolute;bottom:5px;right:7px;font-size:12px;color:color-mix(in srgb,var(--room) 80%,black)}.board-booking.reserviert{border-style:dashed;background:color-mix(in srgb,var(--room) 9%,#fffdf3);box-shadow:none}.board-booking.gesperrt{background:repeating-linear-gradient(135deg,transparent 0,transparent 5px,#313b2610 5px,#313b2610 6px),color-mix(in srgb,var(--room) 10%,#fffdf3)}.board-empty{padding:30px;text-align:center;font-size:13px;color:var(--muted)}
.month-strips{min-width:1100px;padding:0}.month-strip{display:grid;grid-template-columns:148px 1fr;border-top:1px solid var(--ink)}.month-strip:first-child{border-top:0}.strip-label{padding:18px 12px;background:color-mix(in srgb,var(--room) 20%,var(--paper));border-left:4px solid var(--room);min-height:160px}.strip-label h3{font-size:14px;margin:14px 0 7px;overflow-wrap:anywhere}.strip-label small{font-size:9px;color:#6c7163}.strip-days{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(29px,1fr)}.strip-date{border-left:1px solid #d1d4c8;padding:18px 3px 8px;text-align:center;cursor:crosshair}.strip-weekday{font-size:7px;text-transform:uppercase;color:#767e6b;display:block}.strip-number{display:block;font-family:ui-monospace,monospace;font-size:11px;margin:5px 0 16px;font-weight:600}.strip-date.is-weekend{background:#e9e9df}.strip-date.is-today{background:#e4ed855c}.strip-date.is-today .strip-number{text-decoration:underline;text-underline-offset:4px}.strip-date:hover{background:#e4ed85}.strip-marks{display:flex;flex-direction:column;gap:5px}.strip-mark{background:color-mix(in srgb,var(--room) 26%,var(--paper));border:1px solid var(--room);padding:5px 0;font-family:ui-monospace,monospace;font-size:9px;min-height:28px;width:100%;color:#30382a}.strip-mark:hover{background:var(--room);color:#fff}.strip-mark.reserviert{border-style:dashed;background:transparent}.strip-mark.gesperrt{background:repeating-linear-gradient(135deg,transparent 0,transparent 3px,#313b261c 3px,#313b261c 4px)}.strip-hidden{color:#8e9781}.strip-explanation{padding:15px 0;border-top:1px solid var(--line);font-size:10px;line-height:1.6;color:var(--muted);margin:0}.month-strip .room-index{font-size:42px}
dialog{border-radius:0;background:#f5f3e9;border:1px solid var(--ink);box-shadow:8px 8px 0 #25282155}.room-choice,.error,form input:not([type=checkbox]):not([type=hidden]):not([type=color]),form select,form textarea{border-radius:0}.dialog-heading h2{font-size:23px}.toast{border-radius:0;background:var(--ink)}
@media(max-width:1100px){.app-shell{padding:0 24px}.sidebar{padding:18px 0 15px}.page-header h1{font-size:78px}main{padding:24px 0}.calendar-toolbar{padding:20px 0}.calendar-meta{padding:0 0 15px}.calendar-footer{padding:12px 0}.period h2{font-size:22px}}
@media(max-width:800px){.app-shell{padding:0 15px}.sidebar{padding:15px 0;gap:16px}.sidebar-bottom{position:static;gap:12px;display:block;text-align:right}.quiet-button{font-size:10px}.access{justify-content:flex-end;font-size:8px;margin-top:5px}#room-filters{margin:0;gap:6px}.room-filter{padding:7px 9px;font-size:10px}.room-filter .count{display:none}.page-header{margin-bottom:18px}.page-header h1{font-size:66px;letter-spacing:-2px}.page-header .eyebrow{font-size:8px;letter-spacing:1.5px}.page-header p{font-size:9px;margin-top:9px}.page-header .primary{font-size:10px;padding:10px;box-shadow:2px 2px 0 #252821}.calendar-toolbar{padding:18px 0 12px}.period{width:auto}.period h2{font-size:21px}.toolbar-right{width:auto;flex-wrap:wrap;margin-left:auto}.toolbar-right .view-switch{margin-left:0}.calendar-meta{font-size:10px}.search input{width:125px}.view-switch button{font-size:9px;padding:10px}.notice{font-size:9px;align-items:center}.notice .text-button{font-size:9px}.calendar-footer{padding:12px 0}.status-legend{font-size:8px}.below-calendar{font-size:9px}.room-board{grid-template-columns:118px repeat(7,minmax(116px,1fr));min-width:930px}.board-room,.board-corner{position:sticky;left:0;z-index:2}.board-corner{background:var(--paper)}.board-room h3{font-size:12px}.board-room{min-height:132px}.board-cell{min-height:132px}.month-strip{grid-template-columns:118px 1fr}.strip-label{position:sticky;left:0;z-index:2}.strip-label h3{font-size:12px}.strip-explanation{padding:12px 6px;min-width:650px}.month-strips{min-width:1100px}}
.board-room h3,.strip-label h3{hyphens:auto;overflow-wrap:normal}
@media(min-width:451px) and (max-width:800px){.room-board{grid-template-columns:104px repeat(7,minmax(66px,1fr));min-width:570px}.board-day{padding:15px 4px 12px;gap:4px}.board-day>strong{font-size:28px}.board-day>span{font-size:7px}.board-day>small{left:4px;font-size:6px}.board-room{padding:12px 8px}.board-room h3{font-size:11px}.board-cell{padding:5px 3px}.board-booking{padding:7px 4px 17px}.booking-time{font-size:7px;letter-spacing:-.4px}.board-booking strong{font-size:9px;hyphens:auto}.booking-state{font-size:6px;letter-spacing:0}.cell-free{font-size:8px;margin:8px 1px}.month-strips{min-width:570px}.month-strip{grid-template-columns:104px 1fr}.strip-days{grid-auto-columns:minmax(0,1fr)}.strip-date{padding:17px 1px 7px}.strip-weekday{font-size:5px}.strip-number{font-size:8px}.strip-label{min-height:133px;padding:14px 8px}.strip-label h3{font-size:11px}.strip-mark{font-size:7px;min-height:22px;padding:5px 0}.strip-explanation{min-width:0}}
@media(max-width:450px){.page-header h1{font-size:55px}.page-header .primary{font-size:9px;padding:9px}.period h2{font-size:18px}.calendar-toolbar{gap:12px}.period{gap:9px;width:100%}.toolbar-right{width:100%;margin-left:0}.toolbar-right .view-switch{margin-left:auto}.calendar-meta{gap:8px}.search input{width:115px}}
@media print{.app-shell{padding:0}.sidebar,.notice{display:none}.page-header h1{font-size:42px}.room-board{min-width:0;grid-template-columns:110px repeat(7,minmax(0,1fr))}.board-day strong{font-size:28px}.board-day{padding:10px 5px}.board-cell{padding:5px}.board-room,.board-cell{min-height:100px}.board-room{padding:10px}.board-booking{min-height:65px;padding:7px 5px 13px;box-shadow:none}.booking-time{font-size:8px}.board-booking strong{font-size:9px}.room-index{font-size:30px}.calendar-toolbar{padding:10px 0}.month-strips{min-width:0}.month-strip{grid-template-columns:110px 1fr}.strip-days{grid-auto-columns:minmax(0,1fr)}.strip-label{min-height:110px}.strip-date{padding:12px 1px}.strip-mark{font-size:7px}.strip-explanation{min-width:0}#calendar-wrap{overflow:visible}.planner{zoom:1}.board-room,.board-booking,.strip-label,.strip-mark{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Größere, ruhigere Beschriftung der Belegungskarten. */
@media screen {
  .room-board{grid-template-columns:156px repeat(7,minmax(150px,1fr));min-width:1206px}
  .board-cell{padding:8px;min-height:152px}
  .board-room{min-height:152px}
  .board-booking{padding:12px 11px 23px;min-height:104px;background:color-mix(in srgb,var(--room) 13%,#fffef8)}
  .board-booking strong{font-family:system-ui,sans-serif;font-size:14px;font-weight:650;line-height:1.45;letter-spacing:0;hyphens:auto;overflow-wrap:break-word;word-break:normal}
  .booking-time{font-family:system-ui,sans-serif;font-size:11px;font-weight:500;letter-spacing:0;line-height:1.4;white-space:normal;margin-bottom:9px;color:#41483a}
  .booking-state{font-size:10px;line-height:1.4;letter-spacing:.15px;margin-top:10px;color:#41483a;text-transform:none}
  .booking-arrow{font-size:14px;bottom:7px;right:10px}
  .board-booking.reserviert{background:#fffef8}
  .board-booking.gesperrt{background:repeating-linear-gradient(135deg,transparent 0,transparent 7px,#313b2609 7px,#313b2609 8px),color-mix(in srgb,var(--room) 10%,#fffef8)}
}
@media screen and (max-width:800px){
  .room-board{grid-template-columns:118px repeat(7,minmax(150px,1fr));min-width:1168px}
  .board-room{padding:14px 9px}.board-room h3{font-size:13px;line-height:1.4}
  .board-day{padding:14px 10px 12px;gap:8px}.board-day>strong{font-size:34px}.board-day>span{font-size:9px}.board-day>small{left:10px;font-size:8px}
  .board-cell{padding:7px}.board-booking{padding:11px 9px 23px}
  .board-booking strong{font-size:13px;line-height:1.45;hyphens:auto}
  .booking-time{font-size:10px;letter-spacing:0}.booking-state{font-size:10px;letter-spacing:0}
}

.scroll-hint{display:none}
@media screen and (max-width:1274px){.scroll-hint{display:block;font-size:11px;color:#646c59;padding:0 0 10px;margin:0}}

@media(min-width:560px){#event-form .form-grid{grid-template-columns:1fr 1fr}}
#event-form .dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:14px}
#duplicate-event{justify-self:start}#delete-event{justify-self:end}
#event-form .action-right{grid-column:1/-1;justify-content:flex-end;margin-left:0}

/* Schulferien: Orange bleibt von Raumfarben und dem grünen Heute-Hinweis getrennt. */
.holiday-info{background:#f8e3bd;border-left:3px solid #ba722a;padding:10px 12px;margin:0 0 12px;font-size:11px;line-height:1.5;color:#694217}
.board-day.is-holiday{background:#f4d69d;box-shadow:inset 0 4px #bd752c}
.board-day.is-holiday.is-today{box-shadow:inset 0 4px #bd752c,inset 0 -4px #dce77d}
.board-day .holiday-tag{position:absolute;bottom:7px;right:8px;font-size:8px;letter-spacing:.7px;color:#714815}
.board-cell.is-holiday{background-color:#f7ecd7}
.strip-date.is-holiday{background:#f6e1b8;box-shadow:inset 0 3px #bd752c}
.strip-date.is-holiday.is-today{box-shadow:inset 0 3px #bd752c,inset 0 -3px #dce77d}
.holiday-swatch{background:#f4d69d;border:1px solid #bd752c}
@media print{.board-day.is-holiday,.board-cell.is-holiday,.strip-date.is-holiday,.holiday-info{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Vermietungen: dunkle Karte, helle Beschriftung, limettengrünes Kategorieschild. */
.board-booking.rental,.board-booking.rental.reserviert,.board-booking.rental.gesperrt{background:#2a2d25;color:#fffdf2;border-color:#2a2d25;border-left:4px solid var(--room);box-shadow:2px 2px 0 #9ba28d}
.board-booking.rental:hover{background:#3b4132}
.rental-badge{display:inline-block;background:#e4ed85;color:#252821;padding:3px 5px;margin-bottom:10px;font-size:9px;line-height:1.3;font-weight:700;letter-spacing:.6px;text-transform:uppercase}
.board-booking.rental .booking-time,.board-booking.rental .booking-state{color:#e3e7d5}
.board-booking.rental .booking-arrow{color:#e4ed85}
.rental-rooms{display:block;font-size:10px;margin-top:9px;color:#e4ed85}
.strip-mark.rental,.strip-mark.rental.reserviert,.strip-mark.rental.gesperrt{background:#2a2d25;color:#f4f7df;border-color:#2a2d25;border-top:3px solid #e4ed85}
.rental-swatch{background:#2a2d25;border-top:3px solid #e4ed85}
.calendar-footer .status-legend{flex-wrap:wrap;row-gap:8px}
@media print{.board-booking.rental,.rental-badge,.strip-mark.rental{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Vermietungen in hellem Apricot, mit dunkler Schrift. */
.board-booking.rental,.board-booking.rental.reserviert,.board-booking.rental.gesperrt{background:#f2d1bb;color:#422e22;border-color:#b77651;border-left:4px solid var(--room);box-shadow:2px 2px 0 #c49477}
.board-booking.rental:hover{background:#eec4a8}
.rental-badge{background:#f9e9dc;color:#754322;border:1px solid #bd8b67}
.board-booking.rental .booking-time,.board-booking.rental .booking-state{color:#63452f}
.board-booking.rental .booking-arrow,.rental-rooms{color:#754322}
.strip-mark.rental,.strip-mark.rental.reserviert,.strip-mark.rental.gesperrt{background:#f2d1bb;color:#422e22;border-color:#b77651;border-top:3px solid #b77651}
.rental-swatch{background:#f2d1bb;border:1px solid #b77651}
form>label.all-day-toggle{display:flex;align-items:center;gap:8px;margin-top:19px;font-size:13px;cursor:pointer}
.all-day-toggle input{accent-color:#a6663f;width:17px;height:17px;margin:0}

/* Monatsübersicht als lesbare Wochenblöcke mit Raumzeilen. */
.month-agenda{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;padding:24px 0}
.month-week{border:1px solid #bfc3b4;align-self:start;background:#f7f5ed}
.month-week-header{padding:15px 17px;border-bottom:1px solid #bfc3b4;background:#eaeade}
.month-week-number{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#65705b}
.month-week-header h3{font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:31px;letter-spacing:-.7px;margin:8px 0 0;line-height:1.1}
.month-week-header h3>span{font-family:LocalSans,system-ui,sans-serif;font-size:12px;font-weight:500;margin-left:12px;letter-spacing:0}
.month-week.current-week .month-week-header{border-top:4px solid #dce77d;padding-top:11px}
.month-week-holidays{background:#f6e1b8;color:#704c21;font-size:10px;line-height:1.5;padding:8px 17px;border-bottom:1px solid #d6ba87}
.month-room-row{display:grid;grid-template-columns:120px minmax(0,1fr);border-bottom:1px solid #d0d3c6;min-height:61px}
.month-room-row:last-child{border-bottom:0}
.month-room-label{padding:14px 10px;background:color-mix(in srgb,var(--room) 18%,var(--paper));border-left:4px solid var(--room)}
.month-room-label>span{font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:23px;letter-spacing:-1px;color:var(--room);line-height:1}
.month-room-label h4{font-size:12px;font-weight:650;line-height:1.4;margin:8px 0 0;hyphens:auto}
.month-room-events{padding:10px;display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px;background:color-mix(in srgb,var(--room) 3%,#f7f5ed);cursor:crosshair}
.month-room-empty{font-size:11px;color:#7e8872;display:flex;width:100%;justify-content:space-between;align-self:center;padding:5px 0}
.month-room-empty>span{opacity:0;font-size:18px}.month-room-events:hover .month-room-empty>span{opacity:1}
.month-booking{flex:1 1 165px;width:auto;margin:0;min-width:0;min-height:110px;padding:11px 12px 23px;max-width:100%;text-align:left}
.month-booking strong{font-size:14px;line-height:1.45;hyphens:auto;margin:8px 0}
.month-booking .booking-time{font-size:11px;margin:0;line-height:1.5}
.month-booking-date{display:inline-block;font-size:11px;font-weight:650;color:#414d35;line-height:1.5;border-bottom:1px solid #b7bda8;padding-bottom:3px;margin-bottom:1px}
.month-booking-date.in-holidays{background:#f5dcaa;border-color:#b47e35;padding:2px 5px;color:#704c21}
.month-booking .rental-badge{display:block;width:fit-content;margin:8px 0 0}
.month-booking.rental .month-booking-date{color:#704725;border-color:#c7997b}
.scroll-hint.month-hint{display:none}
@media(max-width:1100px){.month-agenda{grid-template-columns:1fr;gap:20px;padding:20px 0}.month-room-row{grid-template-columns:120px minmax(0,1fr)}}
@media(max-width:450px){.month-room-row{grid-template-columns:95px minmax(0,1fr)}.month-room-label{padding:12px 7px}.month-room-label h4{font-size:11px}.month-room-events{padding:8px}.month-booking strong{font-size:13px}.month-week-header{padding:14px}.month-agenda{gap:18px}}
@media print{.month-agenda{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px 0}.month-week{break-inside:avoid}.month-room-row{grid-template-columns:80px minmax(0,1fr)}.month-room-label{padding:8px}.month-booking{min-height:75px;padding:8px 8px 18px;flex-basis:110px}.month-booking strong{font-size:10px}.month-booking-date,.month-booking .booking-time{font-size:9px}.month-week-header h3{font-size:24px}}

.month-room-label{display:flex;align-items:center;gap:9px}.month-room-label>span{flex-shrink:0}.month-room-label h4{margin:0}
.month-empty-week{font-size:11px;line-height:1.6;color:#748069;padding:13px 17px;margin:0}
.empty-week .month-week-header{padding:10px 17px}.empty-week .month-week-header h3{font-size:25px;margin-top:5px}
.empty-week.current-week .month-week-header{padding-top:6px}

/* Monatsmix: kompakte Gesamtfläche und lesbare Tagesdetails. */
.month-mix{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:24px;padding:22px 0;align-items:start}
.month-overview-label{display:flex;justify-content:space-between;gap:10px;font-size:9px;letter-spacing:1px;padding:0 0 12px;color:#66705b}.month-overview-label>span{letter-spacing:0;text-transform:none;font-size:10px}
.month-map{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid #929d83;border-left:1px solid #c2c8b7}
.month-map-weekday{text-align:center;font-size:9px;letter-spacing:1px;padding:10px 3px;background:#e9ecdf;border-bottom:1px solid #bcc3ae;border-right:1px solid #c2c8b7}
.month-map-day{position:relative;min-width:0;min-height:102px;padding:9px 7px 7px;border:0;border-right:1px solid #c2c8b7;border-bottom:1px solid #c2c8b7;background:#f8f6ed;text-align:left;cursor:pointer;display:flex;flex-direction:column}
.month-map-day:hover{background:#e9edcd}.month-map-day.map-weekend{background:#eaece1}.month-map-day.map-holiday{background:#f8e7c7;border-top:3px solid #bf823e;padding-top:6px}.month-map-day.map-selected{outline:2px solid #343d29;outline-offset:-2px;z-index:1;background:#eaf0cd}.month-map-day.map-selected.map-holiday{background:#f0dfb8}.month-map-day.map-today .map-date{color:#567038;text-decoration:underline;text-underline-offset:4px}
.month-map-day.outside-month{background:#f1f1e8;opacity:.45;cursor:default}
.map-date{font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:24px;line-height:1;letter-spacing:-.4px;color:#363f2c}.map-total{position:absolute;top:10px;right:7px;font-size:9px;color:#6b7760}
.map-rooms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;margin-top:12px;width:100%}
.map-room{border:1px solid color-mix(in srgb,var(--room) 55%,white);background:transparent;border-radius:0;min-width:0;height:14px;display:flex;align-items:center;justify-content:center;font-size:7px;line-height:1;color:color-mix(in srgb,var(--room) 65%,#343e2b)}
.map-room.occupied{background:var(--room);border-color:var(--room);color:white}.map-room.map-rental{background:#f2d1bb;border-color:#b77651;color:#754322}.map-room.filtered-out{background:transparent;border-style:dashed;color:#7b856f}
.map-title{display:block;font-size:9px;line-height:1.5;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;color:#48523d}
.month-map-help{font-size:10px;line-height:1.6;color:#748069;margin-top:12px}
.month-day-detail{border:1px solid #bdc5b0;background:#f7f6ed;position:sticky;top:15px}
.month-detail-heading{padding:17px 16px 15px;border-bottom:1px solid #bdc5b0;background:#e8ebdc;display:flex;justify-content:space-between;align-items:center;gap:10px}.month-detail-heading .eyebrow{display:block;font-size:8px;margin:0 0 8px;letter-spacing:1.4px}.month-detail-heading h3{font-size:20px;font-weight:650;letter-spacing:-.5px}.month-detail-heading p{font-size:12px;margin:5px 0 0;color:#69755c}.month-detail-heading .outline{font-size:20px;line-height:1;padding:6px 10px}
.month-detail-holiday{font-size:11px;line-height:1.5;padding:10px 15px;background:#f5dfb8;color:#704c21;border-bottom:1px solid #c89e63}
.month-detail-bookings{padding:13px;display:grid;gap:12px}.month-detail-booking{width:100%;margin:0;min-height:110px}.month-detail-booking strong{font-size:14px;line-height:1.45}.month-detail-booking .booking-time{font-size:11px}.month-detail-rooms{display:block;font-size:11px;color:#68745b;margin-top:9px}.month-detail-booking.rental .month-detail-rooms{color:#754322}.month-detail-empty{font-size:12px;line-height:1.7;color:#748069;padding:9px 3px}
@media(max-width:1100px){.month-mix{grid-template-columns:1fr;gap:20px;padding:18px 0}.month-day-detail{position:static}.month-detail-bookings{grid-template-columns:repeat(2,minmax(0,1fr))}.month-map-day{min-height:94px}.month-detail-empty{grid-column:1/-1}}
@media(max-width:450px){.month-map-day{padding:8px 4px 6px;min-height:88px}.month-map-day.map-holiday{padding-top:5px}.map-date{font-size:22px}.map-total{font-size:8px;right:4px}.map-rooms{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;margin-top:9px}.map-room{height:11px;font-size:6px}.map-title{font-size:8px;margin-top:5px}.month-overview-label{flex-wrap:wrap}.month-detail-bookings{grid-template-columns:1fr}}
@media print{.month-mix{grid-template-columns:minmax(0,1fr) 230px;gap:16px}.month-map-day{min-height:83px}.month-day-detail{position:static}.month-detail-bookings{grid-template-columns:1fr}.map-room.occupied,.map-room.map-rental,.month-map-day.map-holiday{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
@media(min-width:600px) and (max-width:1100px){
  .month-mix{grid-template-columns:minmax(0,1fr) 215px;gap:16px}
  .month-detail-bookings{grid-template-columns:1fr;padding:10px;gap:10px}
  .month-detail-heading{padding:13px 11px}.month-detail-heading h3{font-size:18px}.month-detail-heading p{font-size:11px}
  .month-map-day{padding:8px 4px 6px;min-height:86px}.month-map-day.map-holiday{padding-top:5px}
  .map-date{font-size:23px}.map-total{font-size:8px;right:4px}.map-rooms{gap:2px;margin-top:12px}.map-room{font-size:6px;height:12px}.map-title{font-size:8px}
  .month-overview-label{flex-wrap:wrap;row-gap:4px}.month-overview-label>span{font-size:9px}
  .month-detail-booking{padding:10px 9px 22px}.month-detail-booking strong{font-size:13px}
}

.month-map-day.map-preview:not(.map-selected){outline:2px dashed #7b8960;outline-offset:-3px;z-index:1;background:#edf1d7}
.month-map-day.map-preview.map-holiday{background:#f3e3c2}
.month-map,.month-overview-label{user-select:none;-webkit-user-select:none}

/* Ausgewogene Tageskacheln: Details erst neben ausreichend breiter Monatsfläche. */
@media screen{
  .month-mix{grid-template-columns:minmax(0,1fr) 285px;gap:28px}
  .month-map-day{aspect-ratio:1/1.08;min-height:0;padding:12px 10px 10px;justify-content:flex-start}
  .month-map-day.map-holiday{padding-top:9px}
  .map-date{font-size:30px;line-height:1.05}
  .map-total{top:13px;right:10px;font-size:10px}
  .map-rooms{margin-top:auto;gap:4px}
  .map-room{height:16px;font-size:8px}
  .map-title{font-size:10px;margin-top:9px;line-height:1.5;min-height:15px}
}
@media screen and (max-width:1350px){
  .month-mix{grid-template-columns:1fr;gap:24px}
  .month-day-detail{position:static}
  .month-detail-bookings{grid-template-columns:repeat(2,minmax(0,1fr));padding:14px;gap:14px}
  .month-map-day{aspect-ratio:1/1;min-height:94px}
  .month-overview-label{flex-wrap:nowrap}
  .month-detail-heading{padding:17px 16px}.month-detail-heading h3{font-size:20px}.month-detail-heading p{font-size:12px}
  .month-detail-booking{padding:12px 11px 23px}.month-detail-booking strong{font-size:14px}
}
@media screen and (max-width:800px){
  .month-map-day{padding:10px 7px 8px;aspect-ratio:1/1.12;min-height:90px}
  .month-map-day.map-holiday{padding-top:7px}
  .map-date{font-size:27px}.map-total{top:11px;right:7px;font-size:9px}
  .map-rooms{gap:3px;margin-top:auto}.map-room{height:14px;font-size:7px}
  .map-title{font-size:9px;margin-top:8px}
}
@media screen and (max-width:450px){
  .month-map-day{padding:8px 4px 6px;aspect-ratio:1/1.45;min-height:88px}
  .month-map-day.map-holiday{padding-top:5px}
  .map-date{font-size:23px}.map-total{top:8px;right:4px;font-size:8px}
  .map-rooms{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px}.map-room{height:12px;font-size:7px}
  .map-title{font-size:8px;margin-top:6px;min-height:12px}
  .month-detail-bookings{grid-template-columns:1fr}
  .month-overview-label{flex-wrap:wrap}
}

/* Kompaktere Tageskacheln bei voller Monatsbreite. */
@media screen{
  .month-map-day{aspect-ratio:auto;min-height:0;height:84px;padding:9px 8px 7px}
  .month-map-day.map-holiday{padding-top:6px}
  .map-date{font-size:26px}.map-total{top:10px;right:8px}
  .map-room{height:13px;font-size:7px}.map-title{margin-top:6px;font-size:9px;min-height:14px}
}
@media screen and (max-width:800px){
  .month-map-day{aspect-ratio:auto;min-height:0;height:78px;padding:8px 6px 6px}
  .month-map-day.map-holiday{padding-top:5px}
  .map-date{font-size:24px}.map-total{top:9px;right:6px;font-size:8px}
  .map-rooms{gap:3px}.map-room{height:12px;font-size:7px}.map-title{margin-top:5px;font-size:9px;min-height:13px}
}
@media screen and (max-width:450px){
  .month-map-day{height:82px;padding:7px 4px 5px}
  .month-map-day.map-holiday{padding-top:4px}
  .map-date{font-size:22px}.map-total{top:7px;right:4px}
  .map-room{height:10px;font-size:6px}.map-title{font-size:8px;margin-top:4px;min-height:12px}
}

/* Mittlere Größe zwischen der großen und der kompakten Fassung. */
@media screen{
  .month-map-day{height:94px;padding:10px 9px 8px}
  .month-map-day.map-holiday{padding-top:7px}
  .map-date{font-size:28px}.map-room{height:14px}.map-title{margin-top:7px}
}
@media screen and (max-width:800px){
  .month-map-day{height:88px;padding:9px 7px 7px}
  .month-map-day.map-holiday{padding-top:6px}
  .map-date{font-size:25px}.map-total{top:10px;right:7px}
  .map-room{height:13px}.map-title{margin-top:6px}
}
@media screen and (max-width:450px){
  .month-map-day{height:85px;padding:8px 4px 6px}
  .month-map-day.map-holiday{padding-top:5px}
  .map-date{font-size:23px}.map-total{top:8px;right:4px}
  .map-room{height:11px}.map-title{margin-top:5px}
}

/* Jahresübersicht: zwölf kompakte Monatsfelder. */
.year-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;padding:22px 0}
.year-month{border:1px solid #bfc6b1;background:#f7f6ed;min-width:0}
.year-month-heading{border-bottom:1px solid #c4cbb8;background:#e9ecdf}
.year-month-heading button{width:100%;display:flex;align-items:baseline;gap:10px;text-align:left;padding:13px 12px}
.year-month-heading button>span:first-child{font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:21px;color:#818e70;line-height:1}
.year-month-heading h3{font-size:16px;letter-spacing:-.3px;font-weight:650}
.year-month-arrow{margin-left:auto;font-size:13px;color:#6e7a5e}
.year-month-heading button:hover{background:#e3eacb}.year-current-month .year-month-heading{border-top:3px solid #dce77d}.year-current-month .year-month-heading button{padding-top:10px}
.year-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:9px;gap:3px}
.year-weekday{font-size:8px;color:#78836a;text-align:center;padding:3px 0 6px}
.year-date{padding:3px 1px;min-width:0;height:28px;font-size:10px;line-height:1.2;text-align:center;background:#f0f1e7;border:1px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.year-date.year-weekend{background:#e9ecdf;color:#7a856c}.year-date.year-holiday{background:#f6dfb4}.year-date.year-today{border:1px solid #5f743e;background:#e3ecc5;font-weight:700}.year-date.year-holiday.year-today{background:#f6dfb4}.year-date:hover{outline:1px solid #596a42;background:#e3ecc5}
.year-room-marks{display:flex;gap:2px;width:100%;justify-content:center}
.year-room-mark{height:3px;flex:1;max-width:7px;background:transparent;border:1px solid color-mix(in srgb,var(--room) 28%,#f1f2e8)}
.year-room-mark.occupied{background:var(--room);border-color:var(--room)}.year-room-mark.year-rental{background:#efc5aa;border-color:#b77651}.year-room-mark.filtered-out{background:transparent;border-style:dashed}
.year-month-footer{display:flex;justify-content:space-between;gap:6px;padding:9px 12px;font-size:10px;border-top:1px solid #d1d7c7;color:#758168}.year-month-footer strong{color:#3f4f30;font-weight:650}.year-rental-count{color:#855638}
.year-help{font-size:11px;line-height:1.6;color:#748069;padding-bottom:16px}
@media(max-width:1350px){.year-overview{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.year-overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.year-month-heading h3{font-size:17px}.year-date{height:30px;font-size:11px}}
@media(max-width:450px){.year-overview{gap:10px}.year-month-heading button{padding:11px 8px;gap:6px}.year-month-heading h3{font-size:12px}.year-month-heading button>span:first-child{font-size:17px}.year-days{padding:5px;gap:2px}.year-date{height:25px;font-size:9px;gap:3px}.year-room-marks{gap:1px}.year-room-mark{height:3px}.year-month-footer{font-size:9px;padding:8px;flex-wrap:wrap}.year-rental-count{font-size:8px}}
@media print{.year-overview{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:12px 0}.year-month{break-inside:avoid}.year-date{height:23px}.year-month-heading button{padding:8px}.year-month-heading h3{font-size:12px}.year-days{padding:6px;gap:2px}.year-month-footer{font-size:8px;padding:7px}.year-date.year-holiday,.year-room-mark.occupied,.year-room-mark.year-rental{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Jahreswand wie der Papierplan: zwölf Monatsspalten, 31 gemeinsame Tageszeilen. */
.year-wall{display:grid;grid-template-columns:repeat(12,minmax(150px,1fr));min-width:1800px;gap:0;background:#f4f3e9}
.year-column{min-width:0;border-right:1px solid #bec6b0}
.year-column:last-child{border-right:0}
.year-column-heading{background:#e6ebda;border-bottom:2px solid #636f53}
.year-column-heading button{display:flex;align-items:center;gap:8px;min-height:53px;width:100%;padding:11px 10px;text-align:left}
.year-column-heading button>span{font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:23px;color:#899577;line-height:1}
.year-column-heading h3{font-size:13px;font-weight:650;letter-spacing:-.2px}.year-column-heading button:hover{background:#e0e9c8}
.year-column-current .year-column-heading{background:#e2ebba;border-bottom-color:#4d6136}
.year-column-day{height:43px;display:grid;grid-template-columns:27px minmax(0,1fr);gap:5px;padding:3px 5px 3px 6px;border-bottom:1px solid #c5ccb9;width:100%;text-align:left;background:#f7f5ea;position:relative}
.year-column-date{display:flex;align-items:flex-start;justify-content:center;flex-direction:column;gap:2px;line-height:1}.year-column-date strong{font-size:11px;font-weight:650}.year-column-date small{font-size:8px;color:#7b866d}
.year-column-day.year-column-weekend{background:#e8eade}.year-column-day.year-column-holiday{background:#f5e0b9;border-left:2px solid #bd823c;padding-left:4px}.year-column-day.year-column-today{outline:2px solid #61773d;outline-offset:-2px;z-index:1;background:#e1ecc2}.year-column-day.year-column-today.year-column-holiday{background:#f5e0b9}
.year-column-day:hover{background:#e3ebcd;outline:1px solid #66784c;outline-offset:-1px}
.year-column-bookings{display:flex;flex-direction:column;justify-content:center;gap:3px;min-width:0;position:relative}
.year-note{display:flex;align-items:center;justify-content:space-between;gap:3px;background:color-mix(in srgb,var(--room) 16%,#fffdf2);border-left:3px solid var(--room);padding:2px 3px;min-width:0;font-size:9px;line-height:1.3;color:#35412b}
.year-note>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.year-note>small{font-size:7px;flex-shrink:0;color:#69775b}
.year-note.year-note-rental{background:#f2d1bb;border-color:#b77651;color:#754322}.year-note.reserviert{outline:1px dashed var(--room);outline-offset:-1px;background:transparent}.year-note.gesperrt{background:repeating-linear-gradient(135deg,transparent 0,transparent 4px,#4d5b3615 4px,#4d5b3615 5px),color-mix(in srgb,var(--room) 10%,#fffdf2)}
.year-note-more{position:absolute;right:0;bottom:-3px;font-size:7px;background:#f7f5ea;padding:0 2px;color:#65744f}.year-note-filtered{font-size:8px;color:#829070;line-height:1.4}
.year-column-blank{height:43px;background:#e8ebdf;border-bottom:1px solid #d0d6c5;background-image:repeating-linear-gradient(135deg,transparent 0,transparent 7px,#7c8e6010 7px,#7c8e6010 8px)}
.year-column-footer{font-size:10px;color:#6e7c5d;padding:12px 9px;border-top:1px solid #a7b595}.year-column-footer strong{color:#3e4c2f}
@media print{.year-wall{min-width:0;grid-template-columns:repeat(12,minmax(0,1fr))}.year-column-heading button{padding:5px;gap:4px;min-height:30px}.year-column-heading h3{font-size:8px}.year-column-heading button>span{font-size:14px}.year-column-day,.year-column-blank{height:25px}.year-column-day{padding:2px 3px;grid-template-columns:17px minmax(0,1fr);gap:2px}.year-column-date strong{font-size:7px}.year-column-date small{font-size:6px}.year-note{font-size:6px;padding:1px 2px;border-left-width:2px}.year-column-footer{font-size:6px;padding:6px}.year-column-weekend,.year-column-holiday,.year-note,.year-note-rental{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Gesetzliche Feiertage: gedecktes Rosa, getrennt von den orangefarbenen Ferien. */
.public-holiday-info,.month-detail-public-holiday{background:#ecdde4;color:#72485d;border-left:3px solid #a16d86;padding:10px 12px;margin:0 0 12px;font-size:11px;line-height:1.5}
.month-detail-public-holiday{margin:0;border-left:0;border-bottom:1px solid #bea0af;padding:10px 15px}
.public-holiday-swatch{background:#ecdde4;border:1px solid #a16d86}
.board-day.is-public-holiday{background:#ecdde4;box-shadow:inset 0 4px #a16d86}.board-day.is-public-holiday.is-today{box-shadow:inset 0 4px #a16d86,inset 0 -4px #dce77d}
.board-day .public-holiday-tag{color:#72485d}.board-cell.is-public-holiday{background:#f1e8ec}
.month-map-day.map-public-holiday{background:#ecdde4;box-shadow:inset 0 3px #a16d86}.month-map-day.map-public-holiday.map-selected{background:#e7d5df}
.month-map-day.map-public-holiday.map-preview{background:#e7d5df}
.year-column-day.year-column-public-holiday{background:#ecdde4;border-top:1px solid #b58e9f;color:#624253}.year-column-day.year-column-public-holiday.year-column-today{background:#ecdde4}
.year-public-holiday-name{font-size:8px;line-height:1.3;color:#72485d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media print{.public-holiday-info,.board-day.is-public-holiday,.board-cell.is-public-holiday,.month-map-day.map-public-holiday,.year-column-day.year-column-public-holiday{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Das Folgejahr schließt rechts nahtlos an. */
.year-wall-two-years{grid-template-columns:repeat(24,minmax(150px,1fr));min-width:3600px}
.year-band{grid-column:span 12;background:#e5ead8;border-bottom:1px solid #8c9c71;display:flex;align-items:baseline;gap:15px;padding:10px 12px;font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:28px;line-height:1;letter-spacing:-.5px}
.year-band>span{font-family:LocalSans,system-ui,sans-serif;font-size:9px;letter-spacing:1px;color:#6a7956}
.year-band-next{background:#dee7c8;border-left:3px solid #6b7f4b}
.year-boundary{border-left:3px solid #6b7f4b}
.year-column-heading h3 small{display:block;font-size:9px;font-weight:500;color:#6f8059;letter-spacing:.4px;margin-top:4px}
.year-scroll-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 0 13px;font-size:10px;color:#758168}
.year-scroll-controls>div{display:flex;gap:7px}.year-scroll-controls .outline{font-size:11px;min-height:32px;padding:7px 11px}
@media(max-width:450px){.year-scroll-controls>span{display:none}.year-scroll-controls{justify-content:flex-end}}
@media print{.year-scroll-controls,.year-band{display:none}.year-wall-two-years{grid-template-columns:repeat(12,minmax(0,1fr));min-width:0}.year-column-heading h3 small{font-size:6px}}

.scroll-hint.year-drag-hint{display:block}
.draggable-year{cursor:grab;touch-action:pan-x pan-y pinch-zoom;scroll-behavior:auto}
.draggable-year .year-wall,.draggable-year .year-wall button{user-select:none;-webkit-user-select:none;cursor:grab}
.draggable-year.is-dragging,.draggable-year.is-dragging .year-wall button{cursor:grabbing}
@media print{.year-wall-continuous{grid-template-columns:repeat(12,minmax(0,1fr))!important;min-width:0!important}}

/* Tagesvorschau über dem verschiebbaren Jahresplan. */
.year-day-preview{position:fixed;z-index:80;width:340px;max-width:calc(100vw - 20px);max-height:calc(100vh - 20px);overflow:auto;pointer-events:none;background:#f7f6ed;border:1px solid #758168;border-radius:12px;box-shadow:0 12px 36px #26351d33;color:#26351d;padding:18px;text-align:left}
.year-day-preview header>span{font-size:10px;letter-spacing:1.3px;color:#6b795b}.year-day-preview h3{font-size:18px;line-height:1.3;margin:6px 0 0}.year-day-preview header p{font-size:11px;line-height:1.4;margin:7px 0 0;color:#80572d}
.year-preview-rooms{display:grid;gap:12px;margin-top:16px}.year-preview-rooms section{border-left:3px solid var(--room);padding-left:10px}.year-preview-rooms h4{font-size:12px;margin:0 0 5px}.year-preview-booking{margin:5px 0;padding:6px 8px;background:color-mix(in srgb,var(--room) 16%,#f7f6ed);border-radius:5px}.year-preview-booking strong{display:block;font-size:14px;line-height:1.3;overflow-wrap:anywhere}.year-preview-booking>span{display:block;font-size:11px;line-height:1.4;margin-top:4px;color:#536044}.year-preview-booking.year-preview-rental{background:#f1d6ba}.year-preview-free{font-size:11px;line-height:1.4;margin:0;color:#6b795b}.year-day-preview footer{font-size:10px;border-top:1px solid #d3d9c9;padding-top:10px;margin-top:15px;color:#6b795b}.year-column-day.year-day-previewed{outline:2px solid #6b7f4b;outline-offset:-2px}
@media print{.year-day-preview{display:none}}
/* Raumzeiten und Terminreihen im bestehenden Formular. */
.room-times-details{border:1px solid #b6c0a4;border-radius:8px;padding:12px;margin:16px 0}.room-times-details summary{cursor:pointer;font-weight:600;font-size:13px}.room-times-details section{border-left:3px solid var(--room);padding:0 0 5px 12px;margin-top:18px}.room-times-details h3{font-size:14px;margin:0 0 8px}.room-times-details input:disabled{opacity:.65}#repeat-options{border-left:3px solid #8b9d66;padding-left:13px;margin:12px 0}#repeat-options .all-day-toggle{font-size:12px}.booking-kind,.booking-phase,.month-room-times{display:block;font-size:10px;line-height:1.4;margin-top:5px;color:#536044}.board-booking.anfrage{border-style:dotted;background:color-mix(in srgb,var(--room) 8%,#f7f6ed)}.year-note.anfrage{border-left-style:dotted;opacity:.75}.status-inquiry{border:2px dotted #65744f;background:transparent}#confirm-text{white-space:pre-line}.room-times-details .form-grid{gap:10px}

/* Eigene Veranstaltungen erhalten in jeder Ansicht einen roten Kasten. */
.board-booking.own-event{border:2px solid #b13f35;border-left-width:5px;background:#f6e7df}
.board-booking.own-event:hover{background:#f1dad0;border-color:#982e27}
.own-event-badge{display:block;width:fit-content;background:#b13f35;color:#fff8f0;font-size:9px;line-height:1.35;font-weight:650;letter-spacing:.2px;padding:3px 6px;margin-bottom:7px;border-radius:3px}
.year-note.own-event{border:1px solid #b13f35;border-left-width:3px;background:#f6e7df;color:#742a24;font-weight:650;opacity:1}
.year-preview-booking.own-event{border:2px solid #b13f35;background:#f6e7df}.year-preview-booking.own-event .own-event-badge{font-size:9px;color:#fff8f0;margin:0 0 6px}
.map-title.own-event{border:1px solid #b13f35;background:#f6e7df;color:#742a24;padding:1px 3px;font-weight:650;line-height:1.2}
.status-legend .own-event-swatch{border:2px solid #b13f35;background:#f6e7df}
@media print{.own-event,.own-event-badge,.own-event-swatch{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Kurse werden unabhängig von Organisation und Bezahlung gelb umrandet. */
.board-booking.course-event{border:2px solid #d3ab19;border-left-width:5px}
.board-booking.course-event:hover{border-color:#bb9210}
.year-note.course-event{border:1px solid #d3ab19;border-left-width:3px;opacity:1}
.year-preview-booking.course-event{border:2px solid #d3ab19}
.map-title.course-event{border:1px solid #d3ab19;padding:1px 3px;line-height:1.2}
.status-legend .course-swatch{border:2px solid #d3ab19;background:#f8efc5}
@media print{.course-event,.course-swatch{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
/* Mitarbeiterurlaub: schmale neutrale Markierung, getrennt von Raumbelegungen. */
.header-actions{display:flex;align-items:center;gap:10px}.leave-marker{position:absolute;z-index:2;left:2px;top:3px;bottom:3px;width:3px;border-radius:2px;background:#7f7890;pointer-events:none}.year-column-day{position:relative}.year-column-day .leave-marker{left:1px;top:2px;bottom:2px;width:3px}.month-map-day .leave-marker{left:1px}.board-day .leave-marker{left:3px;top:7px;bottom:7px}.leave-inline-mark{display:inline-block;width:3px;height:15px;background:#7f7890;border-radius:2px;flex:none}.status-legend .leave-swatch{width:3px;border:0;border-radius:2px;background:#7f7890}.leave-day-detail{display:flex;align-items:center;flex-wrap:wrap;gap:5px;font-size:11px;color:#625b70;padding:10px 0}.month-day-detail>.leave-day-detail{padding:0 15px 12px}.leave-day-detail .text-button{font-size:inherit;color:inherit;padding:0;text-decoration:underline;text-underline-offset:2px}.leave-list-heading{font-size:12px;font-weight:650;border-top:1px solid #c2c8b7;padding-top:18px;margin:20px 0 10px}.leave-list-item{display:flex;align-items:center;gap:10px;text-align:left;width:100%;border:0;border-bottom:1px solid #d6dacd;background:transparent;padding:12px 0;font-size:12px}.leave-list-item>strong{overflow-wrap:anywhere}.leave-list-item>span:last-child{margin-left:auto;font-size:11px;color:#657058;white-space:nowrap}.year-day-preview .leave-day-detail .text-button{text-decoration:none;pointer-events:none}
@media(max-width:600px){.header-actions{gap:6px}.header-actions .outline{padding:10px}.leave-list-item{flex-wrap:wrap}.leave-list-item>span:last-child{white-space:normal}}
@media print{.header-actions{display:none}.leave-marker,.leave-swatch{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* Urlaub im Jahresplan: durchgehender Balken rechts neben den Terminen. */
.year-column-day:has(.leave-marker){padding-right:13px}
.year-column-day .leave-marker{left:auto;right:3px;top:-1px;bottom:-1px;width:5px;border-radius:0;background:#6e5483}
.year-column-day .leave-marker.leave-start{top:4px;border-top-left-radius:3px;border-top-right-radius:3px}
.year-column-day .leave-marker.leave-end{bottom:4px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}
.leave-inline-mark,.status-legend .leave-swatch{width:5px;background:#6e5483}

/* Gleichzeitiger Urlaub: stabile Spuren je Person und rote Überlappungstage. */
.year-column-day:has(.leave-marker){padding-right:var(--leave-space,13px)}
.year-column-day .leave-marker{right:calc(3px + var(--leave-lane,0)*8px)}
.year-column-day .leave-marker.leave-overlap{background:#b13f35}

.status-legend .leave-overlap-swatch{width:5px;border:0;border-radius:2px;background:#b13f35}
@media print{.leave-overlap-swatch{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

.share-review{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid #d6dacd;padding:11px 0;font-size:12px}.share-review>span:last-child{display:flex;align-items:center;gap:7px;font-size:11px}.share-review input{width:auto}.share-privacy{font-size:12px;line-height:1.5;background:#e9eddf;padding:12px;border-left:3px solid #899b63}.below-calendar{flex-wrap:wrap;gap:12px}.below-calendar>span{margin-right:auto}

.share-period-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0 0}.share-period-fields section{border:1px solid #b9c2aa;background:#ecefdf;padding:12px}.share-period-fields h3{font-size:12px;margin:0 0 10px}.share-month-selects{display:grid;grid-template-columns:minmax(0,1fr) 86px;gap:8px}.share-month-selects label{font-size:11px;margin:0}.share-month-selects select{background:#fffef8;font-size:14px;min-height:44px;width:100%;padding:10px 7px;border:1px solid #939f80}.share-period-summary{font-size:12px;font-weight:600;line-height:1.4;margin:9px 0 18px;color:#435335}
@media(max-width:600px){.share-period-fields{grid-template-columns:1fr}.share-month-selects{grid-template-columns:minmax(0,1fr) 110px}}

/* Wochenenden: deutliches Blaugrau, Ferien- und Feiertagsflächen bleiben erhalten. */
.board-day.is-weekend:not(.is-holiday):not(.is-public-holiday){background:#c4d8e3;color:#304f63}
.board-cell.is-weekend:not(.is-holiday):not(.is-public-holiday){background:#dee9ef}
.month-map-weekday:nth-child(6),.month-map-weekday:nth-child(7){background:#c4d8e3;color:#304f63;font-weight:700}
.month-map-day.map-weekend:not(.map-holiday):not(.map-public-holiday){background:#d3e2ea}
.month-map-day.map-weekend:not(.map-holiday):not(.map-public-holiday):hover{background:#c1d7e3}
.month-map-day.map-weekend .map-date{color:#304f63}
.year-column-day.year-column-weekend:not(.year-column-holiday):not(.year-column-public-holiday){background:#cedfe9}
.year-column-day.year-column-weekend:not(.year-column-holiday):not(.year-column-public-holiday):hover{background:#bdd4e2}
.year-column-day.year-column-weekend .year-column-date{color:#304f63}
@media print{.board-day.is-weekend,.board-cell.is-weekend,.month-map-weekday:nth-child(6),.month-map-weekday:nth-child(7),.month-map-day.map-weekend,.year-column-day.year-column-weekend{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

.monthly-options{border:1px solid #b7c1a5;background:#edf0df;padding:12px;margin-bottom:16px}.monthly-options>label{font-weight:600}.monthly-options .form-grid{margin-top:12px}.monthly-options #monthly-help{line-height:1.5;margin-bottom:0;color:#4e6040}

/* Ruhiger Monatsplan: zwei zweizeilige Titel, gleich hohe Tagesfelder. */
.month-readable .month-map-day{height:140px;min-height:140px;max-height:140px;padding:9px 7px 7px;overflow:hidden;gap:0}
.month-readable .month-map-day.map-holiday{padding-top:6px}
.month-readable .map-date{font-size:24px;line-height:24px;flex-shrink:0;margin-bottom:6px}
.month-readable .map-bookings{display:flex;flex-direction:column;gap:4px;width:100%;min-width:0}
.month-readable .map-booking{display:block;min-width:0;padding:3px 4px;border:1px solid color-mix(in srgb,var(--room) 55%,#fffdf2);border-left-width:3px;background:color-mix(in srgb,var(--room) 12%,#fffdf2);color:#303b28}
.month-readable .map-booking-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere;font-size:12px;line-height:14px;font-weight:600;max-height:28px;text-align:left}
.month-readable .map-booking.rental{background:#f2d5be;border-color:#b88763}
.month-readable .map-booking.own-event{border:1.5px solid #b13f35;background:#f6e7df;color:#742a24}
.month-readable .map-booking.course-event{border:1.5px solid #d3ab19}
.month-readable .map-booking.reserviert{border-style:dashed}.month-readable .map-booking.anfrage{border-style:dotted}
.month-readable .map-more,.month-readable .map-filtered{display:block;font-size:10px;line-height:12px;margin-top:5px;color:#5e6e50;font-weight:600}
.month-readable .map-filtered{font-weight:400;overflow-wrap:anywhere}
.month-readable .month-map-day.outside-month .map-date{font-size:20px;color:#969c8e}
@media(max-width:1350px){.month-readable.month-mix{grid-template-columns:1fr;gap:20px}.month-readable .month-day-detail{position:static}.month-readable .month-detail-bookings{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.month-readable .month-map-day{height:132px;min-height:132px;max-height:132px;padding:7px 5px 6px}.month-readable .month-map-day.map-holiday{padding-top:4px}.month-readable .map-date{font-size:22px;line-height:22px}.month-readable .map-booking{padding:2px 3px}.month-readable .map-booking-title{font-size:11px;line-height:13px;max-height:26px}.month-readable .map-more{font-size:9px;line-height:11px;margin-top:4px}}
@media(max-width:450px){.month-readable .month-map-day{padding-left:3px;padding-right:3px}.month-readable .map-booking{padding-left:2px;padding-right:2px}.month-readable .month-detail-bookings{grid-template-columns:1fr}}
@media print{.month-readable .month-map-day{height:120px;min-height:120px;max-height:120px}.month-readable .map-booking{print-color-adjust:exact;-webkit-print-color-adjust:exact}}

/* PDF-Umfang: kompakte, eindeutig beschriftete Auswahl. */
#share-form label:has(input[name="pdfScope"]){display:flex;align-items:center;gap:10px;margin:10px 0;font-weight:500}
#share-form input[name="pdfScope"]{width:18px;height:18px;min-height:0;flex:0 0 18px;margin:0;padding:0;accent-color:var(--ink,#282b21)}

/* Originale blaue Wortmarke im Kopfbereich. */
.brand img{width:240px;max-width:100%;height:auto;filter:none;display:block}
@media(max-width:600px){.brand img{width:190px}.sidebar{column-gap:12px}}
@media(max-width:400px){.brand img{width:150px}}

/* Smartphone: vollständige Titel in einer Monatsliste statt schmaler Tageskacheln. */
.mobile-month{display:none}
@media screen and (max-width:600px){
  .app-shell,main,.planner,.calendar-toolbar,.toolbar-right,.calendar-meta,#calendar{min-width:0;max-width:100%}
  .sidebar{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 12px}
  .brand{min-width:0}.brand img{max-width:100%;height:auto}
  .sidebar-bottom{position:static;min-width:0;flex-wrap:wrap;justify-content:flex-end;gap:6px}
  .sidebar-bottom .quiet-button{font-size:10px;min-height:30px}.sidebar-bottom .access{font-size:9px}
  .page-header{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}
  .page-header>div{min-width:0}.page-header p{max-width:none}
  .header-actions{width:100%;gap:8px}.header-actions #new-event{flex:1}
  .header-actions .primary,.header-actions .outline{min-height:44px;padding:11px 14px;font-size:13px;justify-content:center;white-space:normal}
  .calendar-meta{flex-wrap:wrap;gap:12px}.search{min-width:0}.search input{max-width:100%}
  .month-readable{display:none}
  .mobile-month{display:block}
  .mobile-month-intro{font-size:10px;letter-spacing:1px;line-height:1.5;padding:14px 0;border-top:2px solid var(--ink)}
  .mobile-month-intro span{display:block;font-size:11px;letter-spacing:0;color:var(--muted);margin-top:4px}
  .mobile-month-day{min-width:0;padding:0 12px 12px;border:1px solid var(--line);border-bottom:0;background:#faf9f1}
  .mobile-month-day:last-child{border-bottom:1px solid var(--line)}
  .mobile-month-day.is-weekend{background:#d3e2ea}
  .mobile-month-day.is-holiday{background:#f6e3bc;border-top:3px solid #b8874f}
  .mobile-month-day.is-public-holiday{background:#ead9e1;border-top:3px solid #a4778d}
  .mobile-month-day.is-today{box-shadow:inset 3px 0 #78875c}
  .mobile-month-date{display:flex;align-items:center;gap:10px;min-height:48px;width:100%;text-align:left;padding:10px 0;border:0;background:none;font-size:13px}
  .mobile-month-date strong{font-size:20px;letter-spacing:-.5px}.mobile-month-date small{text-transform:uppercase;font-size:9px;padding:3px 5px;background:#dce77d}
  .mobile-week-link{margin-left:auto;font-size:17px}.mobile-day-holiday{margin:0 0 10px;font-size:11px;line-height:1.5;color:#675d4d}
  .mobile-month-booking{display:flex;flex-direction:column;align-items:flex-start;gap:5px;width:100%;min-width:0;min-height:0;margin:0 0 8px;padding:11px 12px;text-align:left;box-shadow:none}
  .mobile-month-booking:last-child{margin-bottom:0}
  .mobile-month-booking strong{display:block;font-size:15px;line-height:1.4;white-space:normal;overflow:visible;overflow-wrap:anywhere;max-height:none;-webkit-line-clamp:unset;hyphens:none}
  .mobile-month-booking .booking-time{font-size:11px;line-height:1.5;white-space:normal}
  .mobile-month-booking .mobile-booking-rooms{font-size:11px;line-height:1.5;color:#53614a;overflow-wrap:anywhere}
  .mobile-month-booking .booking-state{font-size:10px;position:static}
  .mobile-month-booking .own-event-badge,.mobile-month-booking .rental-badge{font-size:9px;line-height:1.5;white-space:normal;max-width:100%}
  .mobile-day-empty{font-size:11px;color:#747b6d;margin:0;line-height:1.5}
  .mobile-month-day .leave-day-detail{padding:0 0 10px;font-size:11px}
}
@media print{.mobile-month{display:none}}

.all-day-summary,.series-preview{padding:12px 14px;border:1px solid #bcc49f;background:#eef1de;font-size:12px;line-height:1.6;margin:12px 0}
.series-preview>strong{font-size:14px}.series-preview p{margin:6px 0}.series-preview summary{cursor:pointer;min-height:32px;padding:5px 0}.series-preview ul{padding-left:20px;margin:6px 0;max-height:210px;overflow:auto}.series-preview h4{margin:10px 0 4px}
.board-day.is-selected-day{outline:2px solid #78875c;outline-offset:-3px}
#automatic-backup-select{max-width:100%}
#repeat-options label.all-day-toggle{display:flex;align-items:flex-start;gap:8px;margin:10px 0;line-height:1.5}
#repeat-options label.all-day-toggle input{flex:0 0 16px;width:16px;height:16px;min-height:0;margin:2px 0 0;padding:0}
.backup label:has(#automatic-backup-select){display:block;font-size:12px;font-weight:600;margin:14px 0 8px}
#automatic-backup-select{display:block;width:100%;margin-top:7px}

/* Raum- und Veranstaltungsplanung: eine Datenbasis, drei Blickrichtungen. */
.page-header h1.planning-title{font-size:clamp(24px,4.5vw,62px);line-height:1.02;letter-spacing:-1.4px}
.page-header h1 .plan-title-line{display:block;color:var(--ink)}
.page-header h1 .plan-title-lead{font-size:1.4em;line-height:.98;margin-bottom:4px}
.page-header h1 .plan-title-dot{color:#a95b3d}
.view-switch button span{display:block;font-size:9px;line-height:1.4;text-transform:none;letter-spacing:0;font-weight:400;margin-top:4px;white-space:nowrap;opacity:.8}
@media(max-width:800px){.page-header{flex-wrap:wrap;gap:18px}.page-header h1.planning-title{font-size:clamp(24px,5.2vw,42px);letter-spacing:-.8px}.view-switch button span{font-size:8px}}
@media(max-width:600px){.toolbar-right .view-switch{display:flex;width:100%;margin:0}.view-switch button{flex:1;min-width:0;padding:10px 5px}.view-switch button span{font-size:8px;white-space:normal}.page-header h1.planning-title{font-size:clamp(23px,5.5vw,32px)}}
@media print{.page-header h1.planning-title{font-size:30px}}

/* Sonstige Termine: zurückhaltende Kennzeichnung, unabhängig von Räumen. */
.other-filter .room-dot{border-radius:0}
.board-booking.other-event,.month-readable .map-booking.other-event,.year-note.other-event,.year-preview-booking.other-event{background:#edf0ef;border-color:#849199;color:#38464c;box-shadow:none}
.board-booking.other-event{border-left:3px solid #849199}
.other-event-badge{display:inline-block;font-size:9px;font-weight:650;line-height:1.4;color:#4e626c;background:#dce4e6;padding:3px 5px;margin-bottom:4px}
.other-row-label .room-index{font-size:32px;color:#73868e}.other-row-label h3{font-size:14px}
#other-type-label{display:block}#other-type-label[hidden]{display:none}
.month-detail-booking.other-event .booking-kind{display:none}

/* Browser-Zoom bleibt nativ: keine abgefangenen Touch- oder Pinch-Gesten. */
.draggable-year,.draggable-year .year-wall,.draggable-year .year-wall button{touch-action:pan-x pan-y pinch-zoom}
@media screen and (orientation:landscape) and (max-height:600px) and (max-width:1100px){
  body.year-view{--year-column-width:calc((100vw - 16px) / 12);--year-day-height:calc((100dvh - 156px) / 31)}
  .year-view .app-shell{padding:0 8px}
  .year-view main{padding:0}
  .year-view .sidebar,.year-view .page-header,.year-view #preview-banner,.year-view .calendar-meta,.year-view #holiday-info,.year-view #public-holiday-info,.year-view .calendar-footer,.year-view .below-calendar{display:none}
  .year-view .calendar-toolbar{padding:5px 0;gap:8px;flex-wrap:nowrap;align-items:center}
  .year-view .period{width:auto;flex-shrink:0}.year-view .period h2{font-size:16px;letter-spacing:-.4px}.year-view .period .subtle{font-size:8px}
  .year-view .toolbar-right{width:auto;margin-left:auto;gap:5px;flex-wrap:nowrap}
  .year-view .toolbar-right>.outline,.year-view .date-picker{font-size:9px;padding:6px;min-height:30px}
  .year-view .toolbar-right .view-switch{width:auto;margin:0;display:flex}
  .year-view .view-switch button{padding:6px 9px;font-size:9px}.year-view .view-switch button span{font-size:8px;white-space:nowrap;margin-top:2px}
  .year-view .scroll-hint.year-drag-hint{font-size:9px;line-height:14px;padding:2px 0 5px;margin:0}
  .year-view #calendar-wrap{scrollbar-width:thin;scroll-margin-top:0}
  .year-view .year-band{height:22px;padding:4px 5px;font-size:15px;gap:7px;align-items:center}
  .year-view .year-band>span{font-size:5px;letter-spacing:.3px}
  .year-view .year-column{--leave-space:calc(var(--leave-lanes,0)*3px + 3px)!important}
  .year-view .year-column-heading button{height:27px;min-height:27px;padding:3px;gap:3px}
  .year-view .year-column-heading button>span{font-size:12px}
  .year-view .year-column-heading h3{font-size:7px;letter-spacing:0}.year-view .year-column-heading h3 small{font-size:5px;margin-top:2px}
  .year-view .year-column-day,.year-view .year-column-blank{height:var(--year-day-height);min-height:0;border-bottom-width:.4px}
  .year-view .year-column-day{grid-template-columns:8px minmax(0,1fr);gap:1px;padding:0 2px;overflow:hidden}
  .year-view .year-column-date{gap:0;justify-content:center}.year-view .year-column-date strong{font-size:calc(var(--year-day-height)*.58)}.year-view .year-column-date small{font-size:calc(var(--year-day-height)*.36);line-height:1}
  .year-view .year-column-bookings{gap:0;overflow:hidden}
  .year-view .year-note{font-size:3.2px;line-height:1;padding:0 1px;border-width:.5px;border-left-width:1px;gap:1px;min-height:0}
  .year-view .year-note>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .year-view .year-note small{font-size:3px}.year-view .year-note-more,.year-view .year-note-filtered,.year-view .year-public-holiday-name{font-size:3px;line-height:1;padding:0}
  .year-view .year-column-footer{padding:3px;font-size:5px;line-height:1.3}
  .year-view .year-column-day .leave-marker{width:1.5px;right:calc(2px + var(--leave-lane,0)*3px)}
  .year-view .year-column-day .leave-marker.leave-start{top:1px}.year-view .year-column-day .leave-marker.leave-end{bottom:1px}
}
