/* -- FORMAT STYLES -----------------------------------------------------------*/

/* -- Use the 'body.cke_editable' to limits styles to the editing area -- */
body.cke_editable { padding: 10px; }
body.cke_editable a {}
body.cke_editable ul {}
body.cke_editable ol {}
body.cke_editable h1 {}
body.cke_editable h2 {}
body.cke_editable h3 {}
body.cke_editable h4 {}
body.cke_editable h5 {}
body.cke_editable h6 {}
body.cke_editable pre {}
body.cke_editable address {}
body.cke_editable blockquote {}

/* -- BEHAVIOUR ------------------------------------------------------------*/

/* Adds styling to the styles dropdown list */
body.cke_ltr div.cke_panel_block ul.cke_panel_list .cke_panel_listItem  {}

/* Override body overflow hidden that causes styles to disappear in the Styles list box */
body.cke_ltr { overflow : initial } body.cke_ltr div.cke_panel_block { min-height: 200px }

/* Adds background color or img to the editors dropdown lists */
.cke_panel_container body { background: none; }

/* Added to to stop a random body style coming through on the list */
html.cke_panel_container body.cke_ltr::after {display: none;}

/* Collapses p tags. Removes extra space around elements such as images */
p.ark_noblock { padding: 0; margin: 0 }

/* -- IMAGE ALIGNMENT ------------------------------------------------------*/

img.left, .pull-left { float: left; margin-right: 10px; }
img.right, .pull-right  { float: right; margin-left: 10px; }
img.center, .pull-center { display: block; margin: 0 auto; }
p.pull-center, div.pull-center { text-align: center; }
figcaption.text-center { text-align: center;}


/* -- Thumbnail for the Ark model lightbox --*/
img.modal                   { position: relative; cursor: zoom-in; }
img.modal.thumbnail         { display: inline-block; width: 200px; }

img.thumbnail {

    margin:        4px;
	border:        1px solid #ddd;
	display:       block;
    padding:       4px;
	box-shadow:    0 1px 3px rgba(0, 0, 0, 0.055);
    transition:    all 0.2s ease-in-out 0s;
	line-height:   20px;
	border-radius: 4px;
}

a.thumbnail:hover, a.thumbnail:focus {

    box-shadow:   0 1px 4px rgba(0, 105, 214, 0.25);
    border-color: #0088cc;
}

/* -- MEDIA ALIGNMENT -----------------------------------------------------*/

/* -- Styles for HTML 5 video and HTML 5 Audio Ark widgets ---*/
div.video_align_left   { float: left; margin-right: 20px; }
div.video_align_right  { float: right; margin-left: 20px; }
div.video_align_center { display: table; margin-left:auto; margin-right:auto; }
div.video_narrow       { width: 75%; }
div.audio_align_left   { float: left; margin-right: 20px; }
div.audio_align_right  { float: right; margin-left: 20px; }
div.audio_align_center { display: table; margin-left:auto; margin-right:auto; }