.cal-topbar,.cal-navigation,.cal-controls,.cal-modes,.cal-legend{display:flex;align-items:center;gap:12px}.cal-topbar{justify-content:space-between;flex-wrap:wrap;margin:28px 0 16px}.cal-navigation h2{font-size:21px;margin:0 0 0 8px;text-transform:capitalize}.cal-navigation>button{padding:10px 13px}.cal-controls{flex-wrap:wrap}.cal-picker input{width:145px;margin:0}.cal-modes{gap:3px;background:#dedbd2;padding:4px;border-radius:7px}.cal-modes button{border:0;background:transparent;padding:8px 12px}.cal-modes button[aria-pressed=true]{background:#1c1d1a;color:#efebe3}.cal-legend{font-size:12px;margin-bottom:18px;gap:18px}.cal-legend span:before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:#e4572e}.cal-legend .cal-dot-course:before{background:#46644c}.cal-legend .cal-dot-google:before{background:#526d99}.cal-legend small{margin-left:auto;color:#6c6e65}.cal-workspace{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:24px;align-items:start}.cal-board{border:1px solid #d4d1c8;border-radius:8px;overflow:hidden;background:#f9f7f2}.cal-weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-weekdays{border-bottom:1px solid #d4d1c8;background:#e8e5dd}.cal-weekdays span{padding:12px;text-align:center;font-family:monospace;font-size:12px}.cal-day{min-height:112px;padding:5px;border-right:1px solid #dedbd4;border-bottom:1px solid #dedbd4;min-width:0}.cal-day:nth-child(7n){border-right:0}.cal-day:nth-last-child(-n+7){border-bottom:0}.cal-outside{background:#efede7}.cal-outside .cal-date{color:#888b80}.cal-selected{background:#fff5ed;box-shadow:inset 0 0 0 2px #e4572e}.cal-date{border:0;background:transparent;display:flex;justify-content:space-between;align-items:center;width:100%;padding:3px 4px;text-align:left;min-height:34px}.cal-date span{width:28px;height:28px;display:grid;place-items:center;border-radius:50%}.cal-date small{font-size:10px;color:#686b61}.cal-today .cal-date span{background:#1c1d1a;color:white}.cal-event{display:flex;flex-direction:column;align-items:flex-start;width:100%;border:0;border-left:3px solid #e4572e;background:#f8e7de;border-radius:3px;padding:8px 9px;text-align:left;margin:5px 0;min-width:0;overflow:hidden;color:#282820;gap:4px}.cal-event strong{font-size:13px;line-height:1.3;overflow-wrap:anywhere}.cal-event span,.cal-event small{font-size:10px;color:#575d52}.cal-course{border-color:#46644c;background:#e4eadd}.cal-google{border-color:#526d99;background:#e7ebf3}.cal-cancelled{text-decoration:line-through;opacity:.6}.cal-day .cal-event{padding:5px;gap:2px}.cal-day .cal-event strong{font-size:11px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cal-more{border:0;background:transparent;color:#9b4225;font-size:10px;padding:5px}.cal-detail{background:#1c1d1a;color:#efebe3;border-radius:8px;padding:22px;position:sticky;top:18px}.cal-detail h2{font-size:22px;line-height:1.25;margin:9px 0 18px}.cal-detail .micro{color:#bdc0b2}.cal-detail .cal-count{border:1px solid #65685c;border-radius:50%;padding:8px 11px}.cal-detail>.primary,.cal-detail>button{width:100%;margin-top:10px}.cal-detail>.primary{background:#e4572e;color:#fff;border-color:#e4572e}.cal-free{padding:22px 0;color:#d1d2c8}.cal-free p{font-size:13px;line-height:1.6}.cal-week .cal-day{min-height:400px}.cal-agenda{min-width:0}.cal-agenda article{display:grid;grid-template-columns:65px minmax(0,1fr);gap:15px;border-bottom:1px solid #d4d1c8;padding:10px 0}.cal-agenda-date{display:flex;flex-direction:column;justify-content:center;gap:3px}.cal-agenda-date strong{font-size:27px}.cal-agenda-date span{font-size:11px;color:#65695e}.cal-connection{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #d4d1c8;padding-top:24px;margin-top:28px}.cal-connection p{max-width:700px;font-size:12px;line-height:1.6;color:#666b60}.cal-connection>div:last-child{display:flex;gap:8px;flex-wrap:wrap}.cal-connection .button,.cal-connection button{font-size:12px}.cal-picker .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:1200px){.cal-workspace{grid-template-columns:minmax(0,1fr)}.cal-detail{position:static}.cal-detail>.primary,.cal-detail>button{width:auto;margin-right:8px}.cal-detail .cal-event{max-width:600px}.cal-week .cal-day{min-height:280px}}
@media(max-width:650px){.cal-topbar{gap:16px}.cal-navigation{gap:6px;flex-wrap:wrap}.cal-navigation h2{font-size:18px;flex-basis:100%;margin:7px 0}.cal-controls{width:100%;justify-content:space-between;gap:8px}.cal-picker input{width:137px;font-size:13px}.cal-modes button{padding:8px;font-size:12px}.cal-legend{gap:10px;flex-wrap:wrap}.cal-legend small{margin:0}.cal-weekdays span{padding:9px 2px}.cal-day{min-height:68px;padding:2px}.cal-date{padding:2px;min-height:40px}.cal-date span{width:24px;height:24px;font-size:12px}.cal-date small{font-size:9px}.cal-month .cal-day-events{display:flex;gap:3px;padding:4px;flex-wrap:wrap}.cal-month .cal-day .cal-event{width:7px;height:7px;min-height:0;border:0;padding:0;margin:0;background:#e4572e;border-radius:50%;pointer-events:none}.cal-month .cal-day .cal-course{background:#46644c}.cal-month .cal-day .cal-google{background:#526d99}.cal-month .cal-day .cal-event>*{display:none}.cal-month .cal-more{display:none}.cal-week .cal-grid{display:block}.cal-week .cal-weekdays{display:none}.cal-week .cal-day{min-height:70px;display:grid;grid-template-columns:45px minmax(0,1fr);border-right:0;border-bottom:1px solid #d4d1c8;padding:8px}.cal-week .cal-day .cal-date{align-self:start;flex-direction:column}.cal-week .cal-day:last-child{border-bottom:0}.cal-week .cal-day .cal-event strong{font-size:13px}.cal-week .cal-day-events:empty:after{content:'Keine Termine';display:block;padding:12px;font-size:12px;color:#737669}.cal-detail{padding:18px}.cal-connection{display:block}.cal-connection>div:last-child{margin-top:14px}}
/* Belegung je Halle/Ort (Design v3: Tokens aus chaun-design.css) */
.occ{min-width:0}.occ-summary-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 10px}.occ-summary-head h2{margin:0;font-size:16px}
.occ-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-bottom:12px}
.occ-hall{display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 14px;box-shadow:var(--shadow-xs);min-width:0}
.occ-hall>div{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.occ-hall strong{overflow-wrap:anywhere}.occ-hall small{color:var(--muted);font-size:12px;white-space:nowrap}
.occ-hall p{margin:0;font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums}.occ-hall .small-button{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;margin-top:2px}.occ-hall-none{background:var(--subtle)}
.occ-note{font-size:12px;color:var(--muted);margin:8px 0}.occ-alert{background:var(--warn-soft);color:var(--warn-text);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;font-weight:500;margin:0 0 12px}
.occ-untimed{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px;font-size:12px;color:var(--muted)}
.occ-scroll{position:relative;overflow-x:auto;max-width:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overscroll-behavior-x:contain}.occ-scroll:focus-visible{outline:none;box-shadow:var(--ring)}
.occ-grid{--occ-hour:56px;--occ-min:170px;display:grid;grid-template-columns:56px repeat(var(--occ-cols),minmax(var(--occ-min),1fr));min-width:min-content}.occ-week{--occ-min:72px}
.occ-corner,.occ-axis{position:sticky;left:0;z-index:3;background:var(--surface);border-right:1px solid var(--line)}.occ-corner{border-bottom:1px solid var(--line)}
.occ-colhead,.occ-dayhead{padding:8px 10px;font-size:12px;font-weight:600;color:var(--text);background:var(--surface);border-bottom:1px solid var(--line);border-left:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.occ-dayhead{padding:4px 6px}.occ-dayhead button{border:0;background:transparent;box-shadow:none;min-height:0;padding:4px 8px;font-size:12px;font-weight:600;border-radius:6px;color:var(--text)}.occ-dayhead button[aria-pressed=true]{background:var(--signal-soft);color:var(--signal-text)}.occ-today button{text-decoration:underline;text-underline-offset:3px}
.occ-hall-none.occ-colhead{color:var(--muted);font-weight:500}
.occ-axis{height:calc(var(--occ-hours)*var(--occ-hour))}.occ-axis span{position:absolute;right:8px;transform:translateY(-50%);font-size:11px;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums}.occ-axis span:first-child{transform:none}.occ-axis span:last-child{transform:translateY(-100%)}
.occ-lane{position:relative;height:calc(var(--occ-hours)*var(--occ-hour));border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px var(--occ-hour));cursor:cell}.occ-lane:hover{background-color:var(--subtle)}.occ-daystart{border-left:2px solid var(--line-strong)}
.occ-item{position:absolute;z-index:1;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;gap:1px;overflow:hidden;margin:0;padding:4px 7px;min-height:0;border:0;border-left:3px solid var(--signal-strong);border-radius:6px;background:var(--signal-soft);color:var(--text);text-align:left;font-size:11px;line-height:1.3;font-weight:400;box-shadow:0 0 0 1px var(--surface);cursor:pointer}
.occ-item strong{font-size:12px;font-weight:600;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.occ-item small,.occ-time{max-width:100%;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.occ-time{font-variant-numeric:tabular-nums}
.occ-course{border-left-color:var(--tanne);background:var(--tanne-soft)}.occ-item:hover{filter:brightness(.97)}.occ-item:focus-visible{z-index:4;outline:2px solid var(--granit);outline-offset:1px}
.occ-conflict{outline:2px dashed var(--signal-strong);outline-offset:-2px}.occ-flag{padding:0 5px;border-radius:4px;background:var(--signal-strong);color:#fff;font-size:10px;font-style:normal;font-weight:600}
.occ-muted{border-left-color:var(--fels);background:repeating-linear-gradient(135deg,var(--fels-soft) 0 6px,#e6e2da 6px 12px);color:var(--muted);cursor:not-allowed}
.occ-buffer{position:absolute;z-index:0;border-radius:3px;background:repeating-linear-gradient(135deg,rgba(138,133,120,.34) 0 3px,transparent 3px 7px);cursor:not-allowed}
.cal-legend .occ-key-buffer:before{width:12px;height:8px;border-radius:2px;background:repeating-linear-gradient(135deg,rgba(138,133,120,.7) 0 2px,transparent 2px 4px)}.cal-legend .occ-key-conflict:before{width:10px;height:8px;border-radius:2px;background:transparent;outline:2px dashed var(--signal-strong);outline-offset:-2px}
.cal-controls .occ-range{margin:0}
@media(max-width:650px){.occ-summary{grid-template-columns:minmax(0,1fr)}.occ-grid{--occ-min:148px;grid-template-columns:48px repeat(var(--occ-cols),minmax(var(--occ-min),1fr))}.occ-week{--occ-min:104px}.occ-axis span{right:5px}.occ-summary-head{flex-wrap:wrap}}
.occ-sm small{display:none}.occ-xs{flex-direction:row;align-items:center;gap:6px;padding:1px 6px}.occ-xs small{display:none}.occ-xs .occ-time{flex:none}.occ-xs strong{min-width:0}
.occ-unavailable{position:absolute;inset-inline:0;z-index:0;background:repeating-linear-gradient(135deg,#e2dfd8 0 6px,#eeebe5 6px 12px);color:#57594f;overflow:hidden;cursor:not-allowed;font-size:11px;box-sizing:border-box;padding:4px 6px;border-block:1px solid var(--line)}.occ-unavailable span{position:sticky;top:0;line-height:1.3;overflow-wrap:anywhere}.occ-blocked{background:repeating-linear-gradient(135deg,#eddbce 0 6px,#f4e8de 6px 12px);color:#784127}.occ-item{z-index:2}.occ-buffer{z-index:1}.cal-legend .occ-key-closed:before{width:12px;height:8px;border-radius:2px;background:repeating-linear-gradient(135deg,#9e9a8f 0 2px,#eeebe5 2px 4px)}.occ-planning{margin:12px 0}.occ-planning summary{cursor:pointer;font-size:13px;padding:10px 0}.occ-planning-windows{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.occ-planning fieldset{min-width:0;border:1px solid var(--line);border-radius:6px;padding:12px}.occ-planning legend{font-size:12px;font-weight:600}.occ-planning button{width:100%}.occ-scroll{width:100%;box-sizing:border-box}

/* Keep mobile date and trainer controls together, with usable touch targets. */
@media(max-width:650px){.cal-controls{justify-content:flex-start;align-items:flex-end}.cal-controls>.cal-picker:first-child{flex:1 1 calc(100% - 145px);max-width:calc(100% - 145px);min-width:0;flex-direction:column;align-items:stretch;gap:3px}.cal-controls>.cal-picker:first-child>span{font-size:11px}.cal-controls .cal-picker select{width:100%;min-width:0}.cal-controls>.cal-picker:nth-child(2){flex:0 0 137px;align-self:flex-end}.cal-controls>.cal-modes{flex-wrap:nowrap;gap:2px}.cal-controls>.cal-modes:not(.occ-range){flex-grow:1}.cal-controls .cal-modes button{padding:6px 8px;font-size:12px;min-height:44px;min-width:44px}}
