.oc-cal-root{border:1px solid #e5e7eb;background:#fff;border-radius:16px;padding:12px}
.oc-cal-root.is-loading{opacity:.7;pointer-events:none}
.oc-cal-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.oc-cal-title{font-weight:800}
.oc-cal-btn{border:1px solid #e5e7eb;background:#f8fafc;border-radius:10px;padding:8px 10px;cursor:pointer}
.oc-cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:8px}
.oc-cal-dowcell{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:8px;text-align:center;font-weight:700}
.oc-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.oc-cal-cell{border:1px solid #e5e7eb;border-radius:12px;padding:10px;min-height:120px;background:#fff;cursor:pointer}
.oc-cal-cell.is-other{opacity:.55;background:#fafafa}
.oc-cal-date{font-weight:800;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}
.oc-cal-plus{opacity:.5;font-weight:900}
.oc-cal-cell:hover .oc-cal-plus{opacity:1}
.oc-cal-items{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow:auto}
.oc-cal-item{display:block;text-decoration:none;border:1px solid #e5e7eb;border-radius:10px;padding:6px 8px;background:#f8fafc;font-size:12px;line-height:1.25}
.oc-cal-item .t{opacity:.7;margin-right:6px}
.oc-cal-item.type-event{background:#eef2ff;border-color:#c7d2fe}
.oc-cal-item.type-deadline{background:#fee2e2;border-color:#fecaca;font-weight:700}
.oc-cal-item.type-followup{background:#fef3c7;border-color:#fde68a}
.oc-cal-table{width:100%;border-collapse:collapse}
.oc-cal-table th,.oc-cal-table td{border-bottom:1px solid #e5e7eb;padding:10px;text-align:left}
.oc-cal-item-inline{text-decoration:none;border-bottom:1px dotted #94a3b8}
.oc-cal-grid{margin-bottom:6px}
.oc-cal-grid .oc-cal-items::-webkit-scrollbar{width:8px}
.oc-cal-grid .oc-cal-items::-webkit-scrollbar-thumb{background:#e5e7eb;border-radius:999px}
.oc-cal-grid .oc-cal-items{scrollbar-width:thin;scrollbar-color:#e5e7eb transparent}
.oc-cal-grid .oc-cal-items a{color:inherit}
.oc-cal-grid .oc-cal-items a:hover{filter:brightness(.98)}
.oc-cal-grid .oc-cal-items a:focus{outline:2px solid rgba(59,130,246,.35);outline-offset:2px}
.oc-cal-grid .oc-cal-items{padding-right:2px}
.oc-cal-grid .oc-cal-items{border-radius:10px}
.oc-cal-grid .oc-cal-items{overscroll-behavior:contain}
.oc-cal-grid .oc-cal-items{scrollbar-gutter:stable}
.oc-cal-grid .oc-cal-items{max-height:260px}
.oc-cal-grid .oc-cal-items{min-height:66px}
.oc-cal-grid .oc-cal-items{background:transparent}
.oc-cal-grid .oc-cal-items{box-sizing:border-box}
.oc-cal-grid .oc-cal-items{contain:content}
.oc-cal-grid .oc-cal-items{will-change:contents}
.oc-cal-grid .oc-cal-items{transform:translateZ(0)}
.oc-cal-grid .oc-cal-items{backface-visibility:hidden}
.oc-cal-grid .oc-cal-items{padding-bottom:2px}
.oc-cal-grid .oc-cal-items{gap:6px}
.oc-cal-grid .oc-cal-items{display:flex}
.oc-cal-grid .oc-cal-items{flex-direction:column}
.oc-cal-grid .oc-cal-items{align-items:stretch}
.oc-cal-grid .oc-cal-items{justify-content:flex-start}
.oc-cal-grid .oc-cal-items{padding-left:1px}
.oc-cal-grid .oc-cal-items{padding-top:1px}
.oc-cal-grid .oc-cal-items{margin:0}
.oc-cal-grid .oc-cal-items{overflow:auto}
.oc-cal-grid .oc-cal-items{scrollbar-color:#e5e7eb transparent}
.oc-cal-grid .oc-cal-items{scrollbar-width:thin}
.oc-cal-grid .oc-cal-items{scrollbar-gutter:stable}
.oc-cal-grid .oc-cal-items{scrollbar-gutter:stable both-edges}
.oc-cal-grid .oc-cal-items{padding-right:3px}
.oc-cal-grid .oc-cal-items{padding-left:1px}
.oc-cal-grid .oc-cal-items{padding-top:1px}
.oc-cal-grid .oc-cal-items{padding-bottom:1px}
.oc-cal-grid .oc-cal-items{border-radius:10px}
.oc-cal-grid .oc-cal-items{background:transparent}
.oc-cal-grid .oc-cal-items{max-height:260px}
.oc-cal-grid .oc-cal-items{min-height:66px}
.oc-cal-grid .oc-cal-items{overscroll-behavior:contain}
.oc-cal-grid .oc-cal-items{scrollbar-width:thin}
.oc-cal-grid .oc-cal-items{scrollbar-color:#e5e7eb transparent}
.oc-cal-grid .oc-cal-items::-webkit-scrollbar{width:8px}
.oc-cal-grid .oc-cal-items::-webkit-scrollbar-thumb{background:#e5e7eb;border-radius:999px}
.oc-cal-grid .oc-cal-items{scrollbar-gutter:stable}
.oc-cal-grid .oc-cal-items{scrollbar-gutter:stable both-edges}
.oc-cal-grid .oc-cal-items{padding-right:4px}


/* Timeline (Stundenraster) */
.oc-cal-timeline-wrap{overflow:auto;border:1px solid #e5e7eb;border-radius:14px}
.oc-cal-timeline{width:100%;border-collapse:separate;border-spacing:0;min-width:900px}
.oc-cal-timeline th,.oc-cal-timeline td{border-bottom:1px solid #e5e7eb;border-right:1px solid #f1f5f9;vertical-align:top;padding:6px 8px;font-size:12px}
.oc-cal-timeline thead th{position:sticky;top:0;background:#fff;z-index:2;font-weight:800}
.oc-cal-timeline th.time{position:sticky;left:0;background:#fff;z-index:3;width:84px;white-space:nowrap}
.oc-cal-timeline td.cell{min-width:120px}
.oc-cal-timeline tr.allday td.cell{background:#fafafa}
.oc-cal-chip{display:block;text-decoration:none;border:1px solid #e5e7eb;border-radius:10px;padding:5px 7px;background:#f8fafc;margin:4px 0;line-height:1.25}
.oc-cal-chip.type-event{background:#eef2ff;border-color:#c7d2fe}
.oc-cal-chip.type-deadline{background:#fee2e2;border-color:#fecaca;font-weight:700}
.oc-cal-chip.type-followup{background:#fef3c7;border-color:#fde68a}

/* Frontend booking */
.oc-booking{max-width:760px;border:1px solid #dcdcde;background:#fff;border-radius:12px;padding:20px;margin:20px 0;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.oc-booking h3{margin-top:0;font-size:24px}
.oc-booking-step{margin:0 0 14px}
.oc-booking label{display:block;font-weight:600;margin:0 0 6px}
.oc-booking input[type="text"],.oc-booking input[type="email"],.oc-booking input[type="date"],.oc-booking select,.oc-booking textarea{width:100%;max-width:100%;box-sizing:border-box;border:1px solid #c3c4c7;border-radius:8px;padding:10px;background:#fff}
.oc-booking-load,.oc-booking button[type="submit"],.oc-booking-slot{border:0;border-radius:8px;padding:10px 14px;cursor:pointer;background:#2271b1;color:#fff;font-weight:600;margin-top:8px}
.oc-booking-slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;margin:14px 0}
.oc-booking-slot{background:#f0f6fc;color:#135e96;border:1px solid #72aee6;margin:0}
.oc-booking-slot.selected{background:#2271b1;color:#fff;border-color:#2271b1}
.oc-booking-form{border-top:1px solid #dcdcde;margin-top:18px;padding-top:14px}
.oc-booking-message{margin-top:14px;font-weight:600}
.oc-booking-message.ok{color:#008a20}.oc-booking-message.error{color:#b32d2e}
.oc-booking-empty{color:#646970;font-style:italic}
