/*
 * Copyright (C) 2013 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

.content-view.resource.font {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    overflow-x: hidden;
    overflow-y: auto;
}

.content-view.resource.font > :matches(.local-resource-override-label-view, .local-resource-override-warning-view):not([hidden]) ~ .drop-zone {
    top: calc(var(--navigation-bar-height) - 2px); /* borders */
}

.content-view.resource.font > .preview-container {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
}

.content-view.resource.font .preview {
    font-size: 72px;
    font-family: serif;

    white-space: nowrap;

 /* A border is used instead of padding or margin so when there is scrolling
    overflow there will be space on all sides. It also avoids having to account
    for the padding/margin in FontResourceContentView.siteToFit. */
    border: 15px solid transparent;
}

.content-view.resource.font .preview > .line {
    border-left: 1px solid lightgrey;
    border-right: 1px solid lightgrey;

    margin-top: -1px; /* Causes adjacent .line elements to share one border instead of doubling up. */
}

.content-view.resource.font .preview > .line > .content {
    display: inline-block;

    width: 100%;

    text-align: center;
    text-rendering: optimizeLegibility;

    -webkit-user-select: text;
    cursor: text;
}

.content-view.resource.font .preview > .line > .metric {
    display: inline-block;
    width: 100%;
    height: 1px;
    -webkit-margin-end: -100%; /* Causes this element to be zero width and draw behind the text. */
}

body[dir=rtl] .content-view.resource.font .preview > .line > .metric {
    position: relative;
    z-index: -1;
}

.content-view.resource.font .metric.top {
    vertical-align: top;
    background-color: lightgrey;
}

.content-view.resource.font .metric.baseline {
    vertical-align: baseline;
    background-color: lightblue;
}

.content-view.resource.font .metric.middle {
    vertical-align: middle;
    background-color: lightgreen;
}

.content-view.resource.font .metric.xheight {
    vertical-align: 1ex;
    background-color: pink;
}

.content-view.resource.font .metric.bottom {
    vertical-align: bottom;
    background-color: lightgrey;
}

@media (prefers-color-scheme: dark) {
    .content-view.resource.font .preview > .line {
        border-left-color: var(--text-color-quaternary);
        border-right-color: var(--text-color-quaternary);
    }

    .content-view.resource.font .metric.top {
        background-color: var(--text-color-quaternary);
    }

    .content-view.resource.font .metric.baseline {
        background-color: hsl(195, 100%, 37%);
    }

    .content-view.resource.font .metric.middle {
        background-color: hsl(120, 100%, 35%);
    }

    .content-view.resource.font .metric.xheight {
        background-color: hsl(350, 100%, 40%);
    }

    .content-view.resource.font .metric.bottom {
        background-color: var(--text-color-quaternary);
    }
}
