/*
 * Software by John Liddiard (aka JohntheFish)
 * www.c5magic.co.uk
 *
 * This package contains software copyright and proprietary to John Liddiard
 *
 */

/*
 * A convenience, for any clickable related stying
 */
.snapshot-webcam-btn:not([disabled]) {
    cursor: pointer;
}

.form-reform-snapshot-webcam-repeater {
    height: auto;
    min-height:38px;
}

.form-reform-snapshot-webcam-repeater .form-reform-placeholder{
    font-style: italic;
}

.form-reform-snapshot-webcam-repeater:disabled,
.form-reform-snapshot-webcam-repeater[disabled],
.form-reform-snapshot-webcam-repeater.disabled{
    background-color: #e9ecef;
}

.form-reform-snapshot-webcam-repeater .snapshot-form-reform-repeater-item {
    padding: 5px;
    outline: 1px solid #aaa;
    border-radius: 3px;
    margin-right: 5px;
    width: auto;
    display: inline-block;
    position: relative;
    min-height: 70px;
}

.form-reform-snapshot-webcam-repeater .snapshot-form-reform-repeater-thumbnail {
    max-width: 200px;
    height: 100px;
    object-fit: contain;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-response .snapshot-remove,
.form-reform-snapshot-webcam-repeater .snapshot-remove {
    position: absolute;
    right: 7px;
    bottom: 32px;
    background-color: rgba(200, 200, 200, 0.6);
    padding: 5px;
    border-radius: 2px;
}

.form-reform-snapshot-webcam-repeater .snapshot-remove,
.form-reform-snapshot-webcam-repeater .snapshot-remove i {
    animation: none !important;
}


/*
 * The button in the toolbar
 */

.jl-snapshot-button-webcam.webcam-killed {
    cursor: not-allowed;
    opacity: 0.4;
}

.jl-snapshot-button-webcam.webcam-killed .fa {
    transform: rotate(60deg);
}

@keyframes c_blinker {
    50% {
        opacity: 0;
    }
}

.jl-snapshot-button-webcam.loading i {
    animation: c_blinker 0.6s linear infinite;
}

.jl-snapshot-button-webcam.paused i {
    animation: c_blinker 0.6s linear infinite;
}

.jl-snapshot-button-webcam.running i {
    color: #d9534f;
}

.jl-snapshot-button-webcam.snapped i {
    color: #5cb85c;
}


/*
 * Player area
 */
.snapshot-webcam-wrapper.ccm-ui {
    position: fixed;
    width: 100vw;
    height: 100vh;
    align-items: center;
    justify-content: center;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(11, 11, 11, 0.9);
    z-index: 3000;
    display: none;
}

.snapshot-webcam-wrapper.loading {
    display: flex;
}

.snapshot-webcam-wrapper.running {
    display: flex;
}

.snapshot-webcam-wrapper.snapped {
    display: flex;
}

.snapshot-webcam-wrapper.paused {
    display: none;
}


html.snapshot-webcam-no-overflow {
    overflow: hidden;
}


.snapshot-webcam-wrapper .snapshot-webcam-repeater {
    width: 400px;
    height: auto;
    margin: auto;
}


/*
 * Image and video toggle with running/snapped
 */
.snapshot-webcam-wrapper .snapshot-webcam-repeater .preview-image {
    object-fit: scale-down;
    width: 100%;
    height: auto;
    max-height: 100vh;
    display: none;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .preview-video {
    object-fit: scale-down;
    width: 100%;
    height: auto;
    max-height: 100vh;
    display: none;
}

.snapshot-webcam-wrapper.running .snapshot-webcam-repeater .preview-video {
    display: block;
}

/* Flip of video handled by css transform */
.snapshot-webcam-wrapper.mirror180 .snapshot-webcam-repeater .preview-video {
    transform: rotateY(180deg);
}

/* Toggle between video and image when running/stopped */
.snapshot-webcam-wrapper.running .snapshot-webcam-repeater .preview-video {
    display: block;
}

.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .preview-video {
    display: none;
}

.snapshot-webcam-wrapper.running .snapshot-webcam-repeater .preview-image {
    display: none;
}

.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .preview-image {
    display: block;
}

/*
 * Animate while uploading
 */
@keyframes webcam_uploading {
    0% {
        transform: scale(1);
        opacity: 100%
    }
    50% {
        transform: scale(0.9);
        opacity: 10%
    }
    100% {
        transform: scale(1);
        opacity: 100%;
    }
}

.snapshot-webcam-wrapper.snapshot-uploading .preview-image,
.snapshot-webcam-wrapper.snapshot-uploading .working-canvas,
.snapshot-webcam-wrapper.snapshot-uploading .working-canvas-mirror {
    animation-name: webcam_uploading;
    animation-duration: 1000ms;
    animation-iteration-count: infinite;
    animation-timing-function: ease-in-out;
    border: none;
}


/* TOOLBAR */
.snapshot-webcam-wrapper .snapshot-webcam-repeater .toolbar {
    display: none;
}

.snapshot-webcam-wrapper.running .snapshot-webcam-repeater .toolbar,
.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .toolbar {
    position: absolute;
    top: 50px;
    right: 10px;
    display: block;
    padding: 4px;
    border-radius: 3px;
    background-color: rgba(221, 226, 231, 0.7);
    border-color: rgba(65, 77, 89, 0.7);
}


.snapshot-webcam-wrapper .snapshot-webcam-repeater .toolbar .btn {
    border-radius: 2px;
    padding: 6px 12px;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-panel-wrapper {
    position: absolute;
    top: 105px;
    right: 10px;
    padding: 4px;
    border-radius: 3px;
    background-color: rgba(221, 226, 231, 1.0);
    border-color: rgba(65, 77, 89, 1.0);
    opacity: 0.3;
    width: 300px;
    /*min-height: 210px;*/
    max-height: calc(100vh - 160px);
    overflow-x: hidden;
    ovewrlow-y: auto;
}

.snapshot-webcam-wrapper.toolbar-height-adjust .snapshot-webcam-repeater .snapshot-webcam-upload-panel-wrapper {
    top: 135px;
}


.snapshot-webcam-wrapper.snapshot-toolbar-hovered .snapshot-webcam-repeater .snapshot-webcam-upload-panel-wrapper,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-panel-wrapper:hover {
    opacity: 1.0;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-form textarea {
    height: 160px;
    resize: none;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-response .upload-number-wrapper {
    position: relative;
    width: 40%;
    max-width: 200px;
    min-width: 60px;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-response .upload-response-detail {
    max-width: 230px;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-response .upload-number-wrapper img {
    max-width: 100%;
    height: auto;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-response .upload-number {
    position: absolute;
    top: 0;
    left: 0;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot-webcam-upload-response h5 {
    text-transform: none;
}


.snapshot-webcam-wrapper .snapshot-webcam-repeater .toolbar .btn {
    border-radius: 2px;
    padding: 6px 12px;
}

.snapshot-webcam-wrapper .snapshot-webcam-repeater .toolbar .btn.active,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .toolbar .btn:active {
    border-style: inset;
}

/* Play/snapshot Controls, toggles with running/snapped */
.snapshot-webcam-wrapper .snapshot-webcam-repeater .play,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .snapshot,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .upload_controls,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .image_edit_controls,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .metadata_controls {
    display: none;
}

.snapshot-webcam-wrapper.running .snapshot-webcam-repeater .snapshot {
    display: inline-block;
}

.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .play,
.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .upload_controls,
.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .image_edit_controls {
    display: inline-block;
}

.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .metadata_controls,
.snapshot-webcam-wrapper.webcam-snapping-started .snapshot-webcam-repeater .metadata_controls {
    display: inline-block;
}


/* indicators buttons */

.snapshot-webcam-wrapper .snapshot-webcam-repeater .webcam-status .camera-snapped,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .webcam-status .camera-running {
    display: none;
    border-radius: 50%;
    width: 30px;
    height: 30px;
    cursor: default;
}

.snapshot-webcam-wrapper.snapped .snapshot-webcam-repeater .webcam-status .camera-snapped {
    display: inline-block;
}

.snapshot-webcam-wrapper.running .snapshot-webcam-repeater .webcam-status .camera-running {
    display: inline-block;
    animation: c_blinker 0.6s linear infinite;
}


/* Mirror controls - see also 180 transform above*/
.snapshot-webcam-wrapper .snapshot-webcam-repeater .no-mirror {
    display: none;
}

.snapshot-webcam-wrapper.mirror180 .snapshot-webcam-repeater .no-mirror {
    display: inline-block;
}

.snapshot-webcam-wrapper.mirror180 .snapshot-webcam-repeater .mirror {
    display: none;
}

/* Zoom controls */
.snapshot-webcam-wrapper .snapshot-webcam-repeater .zoom-out {
    display: none;
}

.snapshot-webcam-wrapper.zoomed .snapshot-webcam-repeater .zoom-out {
    display: inline-block;
}

.snapshot-webcam-wrapper.zoomed .snapshot-webcam-repeater .zoom-in {
    display: none;
}

/* video select control - only shown if multiple sources (hidden by js) */
.snapshot-webcam-wrapper .snapshot-webcam-repeater .video_select,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .video-source {
    display: inline-block;
}

/* Canvas, usually hidden. Shown when zoomed. Flipped when mirrored */
.snapshot-webcam-wrapper .snapshot-webcam-repeater .working-canvas,
.snapshot-webcam-wrapper .snapshot-webcam-repeater .working-canvas-mirror {
    display: none;
}

.snapshot-webcam-wrapper.snapped.zoomed .snapshot-webcam-repeater .working-canvas {
    display: block;
    max-width: 100vw;
    max-height: 100vh;
}

.snapshot-webcam-wrapper.snapped.zoomed .snapshot-webcam-repeater .preview-image {
    display: none;
}

.snapshot-webcam-wrapper.snapped.zoomed.mirror180 .snapshot-webcam-repeater .working-canvas {
    display: none;
}

.snapshot-webcam-wrapper.snapped.zoomed.mirror180 .snapshot-webcam-repeater .working-canvas-mirror {
    display: block;
    max-width: 100vw;
    max-height: 100vh;
}

/*
 * IMAGE EDITOR
 */

.snapshot-webcam-wrapper .image-edit-container {
    display: none;
}

/*
 * None of the standard buttons
 */
.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-header .tui-image-editor-header-logo,
.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-header .tui-image-editor-download-btn,
.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-header .tui-image-editor-load-btn,
.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-header div:first-child {
    display: none;
}

.snapshot-webcam-wrapper.image_editing .image-edit-container {
    display: block;
    position: fixed;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    width: 100%;
}


.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-controls li.snapshot-editor-cancel,
.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-controls li.snapshot-editor-done {
    padding-top: 0;
    vertical-align: middle;
}

.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-controls .btn.snapshot-editor-done,
.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-controls .btn.snapshot-editor-cancel {
    border-radius: 2px;
    padding: 6px 12px;
}

/*
 * Now need top space for help menu bar
 */
.snapshot-webcam-wrapper .image-edit-container .tui-image-editor-main {
    top: 45px;
}

.snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-help-menu {
    background-color: #151515;
}

.snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-help-menu.top {
    top: 0;
}

/*
 * A little bit of usability improvement for the image editor
 * on small screens.
 * Get the toolbars to wrap
 * Have a larger window with scroll to enable users to find
 * off-screen buttons
 */
@media screen and (max-width: 768px) {
    .snapshot-webcam-wrapper .tui-image-editor-container {
        overflow-x: scroll;
        overflow-y: scroll;
    }

    .snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-controls ul.tui-image-editor-menu {
        white-space: normal;
    }

    .snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-controls ul.tui-image-editor-menu li:after {
        content: "\200B";
    }

    .snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item {
        padding: 7px 2px 3px;
    }

    .snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-main-container ul.tui-image-editor-submenu-item {
        white-space: normal;
    }

    .snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-main-container ul.tui-image-editor-submenu-item li {
        display: inline-flex;
    }

    .snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-main-container ul.tui-image-editor-submenu-item li:after {
        content: "\200B";
    }

    .snapshot-webcam-wrapper .tui-image-editor-container .tui-image-editor-main-container .tui-image-editor-button:after {
        content: "\200B";
    }
}

/*
 * To enable v8 styling to continue working with v9 code
 */
.snapshot-webcam-wrapper .badge {
    display: inline;
    padding: .2em .6em .3em;
    font-size: 75%;
    font-weight: 700;
    line-height: 1;
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
    border-radius: .25em;
}

.snapshot-webcam-wrapper .badge.label-success {
    background-color: #5cb85c;
}

.snapshot-webcam-wrapper .badge.label-warning {
    background-color: #f0ad4e;
}

.snapshot-webcam-wrapper .badge.label-danger {
    background-color: #d9534f;
}

.snapshot-webcam-wrapper .badge.label-info {
    background-color: #5bc0de;
}

.snapshot-webcam-wrapper .badge.label-default { /* default === secondary */
    background-color: #6c757d;
}

.snapshot-webcam-wrapper.badge.label-primary {
    background-color: #3f9edc;
}