/* ==========================================================================
   spirit.css — the two-vial spirit level body.
   ========================================================================== */

.instrument {
    padding: 4px 0 8px;
}

/* The aluminium body a hardware level's vials are set into. */
.level-body {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px;
    border-radius: 26px;
    background: linear-gradient(180deg,
            color-mix(in srgb, var(--sc-highest) 85%, var(--sc-lowest)),
            var(--sc-highest) 45%,
            color-mix(in srgb, var(--sc-highest) 82%, var(--outline)));
    border: 1px solid var(--outline-variant);
    box-shadow: inset 0 1px 0 color-mix(in srgb, var(--sc-lowest) 80%, transparent);
}

/* Milled groove running the length of the body. */
.body-rail {
    position: absolute;
    left: 14px;
    right: 14px;
    top: 50%;
    height: 1px;
    background: color-mix(in srgb, var(--outline) 40%, transparent);
    transform: translateY(-.5px);
}

.level-body .vial--h {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    height: 72px;
    border-radius: 36px;
}

.level-body .vial--h .tol-zone {
    width: 58px;
}

.level-body .vial--h .groove.a {
    left: calc(50% - 29px);
}

.level-body .vial--h .groove.b {
    left: calc(50% + 27px);
}

.level-body .vial--h .bubble {
    width: 52px;
    height: 52px;
    margin: -26px 0 0 -26px;
}

/* The upright vial at the end, reading front-to-back tilt. */
.vial--v {
    position: relative;
    flex: none;
    width: 72px;
    height: 132px;
    border-radius: 36px;
    background: linear-gradient(90deg, var(--vial-glass) 0%, var(--vial-fluid) 45%, var(--vial-glass) 100%);
}

.vial--v .tol-zone {
    left: 0;
    right: 0;
    top: 50%;
    height: 52px;
    transform: translateY(-50%);
}

.vial--v .groove {
    left: 9px;
    right: 9px;
    height: 2px;
}

.vial--v .groove.a {
    top: calc(50% - 26px);
}

.vial--v .groove.b {
    top: calc(50% + 24px);
}

.vial--v .bubble {
    width: 52px;
    height: 52px;
    margin: -26px 0 0 -26px;
}

#bubbleH,
#bubbleV {
    transition: transform .42s var(--ease-spring), box-shadow .3s;
}

/* Each vial lights up on its own, so you can tell which axis is settled. */
.vial.at-zero .tol-zone {
    background: color-mix(in srgb, var(--bubble-fill) 30%, transparent);
}

.vial.at-zero .bubble {
    box-shadow:
        inset -3px -4px 8px color-mix(in srgb, var(--bubble-edge) 70%, transparent),
        inset 3px 4px 9px rgba(255, 255, 255, .8),
        0 0 30px color-mix(in srgb, var(--bubble-fill) 85%, transparent);
}

@media (max-width: 460px) {
    .level-body {
        gap: 8px;
        padding: 10px;
    }

    .vial--v {
        width: 58px;
        height: 116px;
        border-radius: 29px;
    }

    .vial--v .bubble,
    .level-body .vial--h .bubble {
        width: 44px;
        height: 44px;
        margin: -22px 0 0 -22px;
    }

    .level-body .vial--h {
        height: 58px;
        border-radius: 29px;
    }
}

@media (prefers-reduced-motion: reduce) {

    #bubbleH,
    #bubbleV {
        transition: none;
    }
}
