:root{--color-primary:#2563eb;--color-primary-dark:#1d4ed8;--color-primary-light:#eff6ff;--color-primary-hover:#1e40af;--color-bg:#f8f9fb;--color-surface:#ffffff;--color-border:#e2e8f0;--color-border-strong:#cbd5e1;--color-text-primary:#0f172a;--color-text-secondary:#475569;--color-text-muted:#94a3b8;--sidebar-bg:#1e2a3b;--sidebar-text:#cbd5e1;--sidebar-active-bg:rgba(37,99,235,0.18);--sidebar-active-text:#93c5fd;--sidebar-hover-bg:rgba(255,255,255,0.06);--sidebar-section-label:#64748b;--sidebar-width:220px;--sidebar-collapsed-w:52px;--header-height:52px;--color-danger:#dc2626;--color-danger-bg:#fef2f2;--color-success:#16a34a;--color-success-bg:#f0fdf4;--color-warning:#d97706;--color-warning-bg:#fffbeb;--radius-sm:4px;--radius:6px;--radius-lg:10px;--shadow-sm:0 1px 3px rgba(0,0,0,0.08);--shadow:0 2px 8px rgba(0,0,0,0.10);--shadow-lg:0 8px 24px rgba(0,0,0,0.14);--z-sidebar:100;--z-header:200;--z-overlay:300;--z-drawer:400;--z-modal:500;--z-popover:600;--z-toast:700;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--font-size-xs:11px;--font-size-sm:12px;--font-size-md:14px;--font-size-lg:16px;--font-size-xl:18px}.cat-office{background:#eff6ff;color:#1d4ed8;--cat-accent:#2563eb}.cat-client{background:#f0fdf4;color:#15803d;--cat-accent:#16a34a}.cat-training{background:#fffbeb;color:#b45309;--cat-accent:#d97706}.cat-operations{background:#f5f3ff;color:#6d28d9;--cat-accent:#7c3aed}.cat-policy{background:#fef2f2;color:#b91c1c;--cat-accent:#dc2626}.cat-personal{background:#ecfeff;color:#0e7490;--cat-accent:#0891b2}.cat-default{background:#f8fafc;color:#475569;--cat-accent:#64748b}.calendar-wrp{display:flex;flex-direction:column;height:calc(100vh - var(--header-height));margin:calc(-1*var(--space-4)) calc(-1*var(--space-6)) calc(-1*var(--space-6));background:var(--color-bg);overflow:hidden}@media(max-width:1199px){.calendar-wrp{margin:calc(-1*var(--space-3)) calc(-1*var(--space-4)) calc(-1*var(--space-4))}}@media(max-width:579px){.calendar-wrp{margin:calc(-1*var(--space-3))}}.calendar-wrp .calendar-view-outer,.calendar-wrp .rbc-calendar{flex:1 1;min-height:0;display:flex;flex-direction:column}.calendar-wrp .rbc-calendar{height:100%;font-family:inherit}.cal-toolbar{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap}.cal-toolbar,.cal-toolbar .cal-toolbar-left{flex-shrink:0}.cal-toolbar .cal-page-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0;line-height:1.4}.cal-toolbar .cal-toolbar-nav{display:flex;align-items:center;gap:var(--space-3);flex:1 1}.cal-toolbar .nav-arrows{display:flex;align-items:center;gap:var(--space-1)}.cal-toolbar .btn-nav{width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);font-size:16px;background:rgba(0,0,0,0);border:0;padding:0;transition:background .12s,color .12s}.cal-toolbar .btn-nav:hover{background:var(--color-border);color:var(--color-text-primary)}.cal-toolbar .cal-period-label{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);min-width:130px;text-align:center;white-space:nowrap}.cal-toolbar .cal-toolbar-right{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0;flex-wrap:wrap}.cal-toolbar .toolbar-actions{display:flex;align-items:center;gap:var(--space-2)}.cal-toolbar .view-switcher{display:flex;border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.cal-toolbar .view-btn{padding:5px 14px;font-size:13px;line-height:1.5;color:var(--color-text-secondary);background:var(--color-surface);border:0;border-right:1px solid var(--color-border);transition:background .12s,color .12s;white-space:nowrap}.cal-toolbar .view-btn:last-child{border-right:none}.cal-toolbar .view-btn:hover{background:var(--color-bg)}.cal-toolbar .view-btn.active{background:var(--color-primary);color:#fff}.cal-toolbar .cal-btn{display:inline-flex;align-items:center;gap:var(--space-1);padding:5px 12px;border-radius:var(--radius);font-size:13px;font-weight:500;line-height:1.5;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}.cal-toolbar .cal-btn i{font-size:14px}.cal-toolbar .cal-btn-outline{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border)}.cal-toolbar .cal-btn-outline:hover{background:var(--color-bg);border-color:var(--color-border-strong)}.cal-toolbar .cal-btn-primary{background:var(--color-primary);color:#fff;border:1px solid var(--color-primary)}.cal-toolbar .cal-btn-primary:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.cal-toolbar .more-menu-wrap{position:relative}.cal-toolbar .more-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:180px;padding:var(--space-1);z-index:var(--z-popover)}.cal-toolbar .more-menu-item{display:flex;align-items:center;gap:var(--space-2);padding:7px var(--space-3);border-radius:var(--radius-sm);font-size:13px;color:var(--color-text-primary);width:100%;text-align:left;background:rgba(0,0,0,0);border:0;transition:background .12s}.cal-toolbar .more-menu-item:hover{background:var(--color-bg)}.cal-toolbar .more-menu-item i{font-size:14px;color:var(--color-text-secondary)}.cal-toolbar .more-menu-item .spinner-border{width:14px;height:14px}@media(max-width:1199px){.cal-toolbar .cal-toolbar-nav{flex:1 1 auto}}@media(max-width:991px){.cal-toolbar{padding:var(--space-3) var(--space-4)}.cal-toolbar .toolbar-actions .cal-btn-outline .txt{display:none}}@media(max-width:579px){.cal-toolbar{gap:var(--space-2) var(--space-3)}.cal-toolbar .cal-toolbar-right{width:100%;justify-content:space-between}.cal-toolbar .cal-period-label{min-width:0;font-size:var(--font-size-md)}}.calendar-wrp .rbc-month-view,.calendar-wrp .rbc-time-view{flex:1 1;min-height:0;width:auto;margin:var(--space-4) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}@media(max-width:579px){.calendar-wrp .rbc-month-view,.calendar-wrp .rbc-time-view{margin:var(--space-3)}}.calendar-wrp .rbc-today{background:rgba(0,0,0,0)}.calendar-wrp .rbc-off-range-bg{background:#f1f5f9}.calendar-wrp .rbc-button-link{color:inherit}.calendar-wrp .rbc-month-view{overflow-y:auto}.calendar-wrp .rbc-month-header{flex-shrink:0}.calendar-wrp .rbc-month-header .rbc-header{padding:var(--space-2) var(--space-3);font-size:12px;font-weight:600;color:var(--color-text-secondary);text-align:center;letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--color-border);overflow:hidden;text-overflow:ellipsis}.calendar-wrp .rbc-month-header .rbc-header+.rbc-header{border-left:1px solid var(--color-border)}.calendar-wrp .rbc-month-row{flex:1 0 110px;min-height:110px;overflow:visible}.calendar-wrp .rbc-month-row+.rbc-month-row{border-top:1px solid var(--color-border)}.calendar-wrp .rbc-month-view .rbc-day-bg+.rbc-day-bg{border-left:1px solid var(--color-border)}.calendar-wrp .rbc-month-view .rbc-row-content,.calendar-wrp .rbc-month-view .rbc-row-content>.rbc-row:first-child{height:100%}.calendar-wrp .rbc-month-view .rbc-row-content .rbc-row-content-scroll-container,.calendar-wrp .rbc-month-view .rbc-row-content>.rbc-row~.rbc-row{display:none}.calendar-wrp .rbc-month-view .rbc-date-cell{height:100%;padding:0;text-align:left;min-width:0}.calendar-wrp .rbc-month-view .rbc-date-cell.rbc-off-range .month-date{color:var(--color-text-muted)}.calendar-wrp .rbc-month-view .rbc-date-cell.rbc-now .month-date{background:var(--color-primary);color:#fff;border-radius:50%;font-weight:600}.calendar-wrp .month-cell-inner{height:100%;padding:var(--space-1) var(--space-2) var(--space-2);cursor:pointer;overflow:hidden;transition:background .12s}.calendar-wrp .month-cell-inner:hover{background:var(--color-primary-light)}.calendar-wrp .month-date{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:13px;font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-1)}.calendar-wrp .month-events{gap:2px}.calendar-wrp .month-events,.calendar-wrp .rbc-time-view{display:flex;flex-direction:column}.calendar-wrp .rbc-time-header{flex-shrink:0;border-bottom:1px solid var(--color-border)}.calendar-wrp .rbc-time-header.rbc-overflowing{border-right:1px solid var(--color-border)}.calendar-wrp .rbc-time-header-content{border-left:1px solid var(--color-border)}.calendar-wrp .rbc-time-header-gutter{display:flex;align-items:flex-end;justify-content:flex-end;padding:0}.calendar-wrp .week-allday-label{font-size:10px;color:var(--color-text-muted);text-align:right;padding:var(--space-1) var(--space-2) var(--space-2) 0;line-height:1.2;white-space:nowrap}.calendar-wrp .rbc-time-header-cell{min-height:0;height:auto}.calendar-wrp .rbc-time-header .rbc-header{height:auto;overflow:visible;white-space:normal;padding:var(--space-2);border-bottom:1px solid var(--color-border);font-weight:400}.calendar-wrp .rbc-time-header .rbc-header+.rbc-header{border-left:1px solid var(--color-border)}.calendar-wrp .rbc-time-header .rbc-header .rbc-button-link{width:100%}.calendar-wrp .week-header-cell{text-align:center;font-size:12px;color:var(--color-text-secondary)}.calendar-wrp .week-header-cell.today .week-day-num{background:var(--color-primary);color:#fff;border-radius:50%}.calendar-wrp .week-day-name{font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:2px}.calendar-wrp .week-day-num{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;font-size:14px;font-weight:600;color:var(--color-text-primary)}.calendar-wrp .rbc-allday-cell{height:auto;min-height:28px}.calendar-wrp .rbc-allday-cell .rbc-row{min-height:0}.calendar-wrp .rbc-allday-cell .rbc-row-content{min-height:28px}.calendar-wrp .rbc-allday-cell .rbc-row-bg .rbc-day-bg+.rbc-day-bg{border-left:1px solid var(--color-border)}.calendar-wrp .rbc-allday-cell .rbc-row-segment{padding:2px 3px}.calendar-wrp .rbc-allday-cell .rbc-event{padding:0;background:rgba(0,0,0,0);border:0}.calendar-wrp .rbc-allday-cell .week-event-block{padding:1px 6px;border-left-width:0;border-radius:3px}.calendar-wrp .rbc-allday-cell .week-event-time{display:none}.calendar-wrp .rbc-time-content{border-top:0}.calendar-wrp .rbc-time-content>*+*>*{border-left:1px solid var(--color-border)}.calendar-wrp .rbc-timeslot-group{min-height:52px;border-bottom:1px solid var(--color-border)}.calendar-wrp .rbc-day-slot .rbc-time-slot{border-top:0}.calendar-wrp .rbc-time-gutter .rbc-timeslot-group{border-bottom:0;border-top:1px solid var(--color-border)}.calendar-wrp .rbc-time-gutter .rbc-timeslot-group:first-child{border-top:0}.calendar-wrp .rbc-time-gutter .rbc-label{display:block;padding:2px 6px 0 0;font-size:11px;color:var(--color-text-muted);text-align:right;white-space:nowrap}.calendar-wrp .rbc-day-slot.rbc-today{background:#f0f7ff}.calendar-wrp .rbc-day-slot .rbc-timeslot-group:hover{background:var(--color-primary-light)}.calendar-wrp .rbc-day-slot .rbc-events-container{margin-right:0}.calendar-wrp .rbc-day-slot .rbc-event{padding:0;border:0;background:rgba(0,0,0,0);border-radius:var(--radius-sm);overflow:hidden}.calendar-wrp .rbc-day-slot .rbc-event:hover{z-index:3}.calendar-wrp .rbc-day-slot .rbc-event-label{display:none}.calendar-wrp .rbc-day-slot .rbc-event-content{height:100%;line-height:normal}.calendar-wrp .rbc-event.rbc-selected,.calendar-wrp .rbc-event:focus{outline:none;background:rgba(0,0,0,0)}.calendar-wrp .week-event-block{height:100%;margin:0 3px;padding:3px 5px;border-radius:var(--radius-sm);border-left:3px solid var(--cat-accent,var(--color-primary));font-size:11.5px;cursor:pointer;overflow:hidden;transition:filter .12s,box-shadow .12s}.calendar-wrp .week-event-block:hover{filter:brightness(.93);box-shadow:var(--shadow-sm)}.calendar-wrp .week-event-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.calendar-wrp .week-event-time{font-size:10.5px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-wrp .rbc-current-time-indicator{height:2px;background:var(--color-danger);z-index:3;pointer-events:none}.calendar-wrp .rbc-current-time-indicator:before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--color-danger)}.calendar-wrp .rbc-slot-selection{background:rgba(37,99,235,.12);color:var(--color-primary);font-size:11px}.event-chip{display:flex;align-items:center;gap:4px;padding:2px 5px;border-radius:3px;font-size:var(--font-size-sm);font-weight:500;line-height:1.5;cursor:pointer;overflow:hidden;white-space:nowrap;max-width:100%;transition:filter .12s}.event-chip:hover{filter:brightness(.92)}.event-chip .event-chip-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--cat-accent,var(--color-primary))}.event-chip .event-chip-time{font-size:var(--font-size-xs);opacity:.8;flex-shrink:0}.event-chip .event-chip-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-overflow{align-self:flex-start;font-size:11px;color:var(--color-text-muted);font-weight:500;padding:1px var(--space-1);background:rgba(0,0,0,0);border:0;cursor:pointer}.month-overflow:hover{color:var(--color-primary)}.overflow-popover{position:fixed;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-popover);overflow:hidden}.overflow-popover .overflow-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);font-size:12px;font-weight:600;color:var(--color-text-secondary)}.overflow-popover .popover-close{color:var(--color-text-muted);font-size:16px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);padding:2px;background:rgba(0,0,0,0);border:0}.overflow-popover .popover-close:hover{background:var(--color-bg);color:var(--color-text-primary)}.overflow-popover .overflow-popover-list{padding:var(--space-2);display:flex;flex-direction:column;gap:3px;max-height:200px;overflow-y:auto}