﻿:root {
    --coverage-map-root-unit: 200%;
    --coverage-map-print-root-unit: 100%;
    --room-front-width-W1: 5em;
    --room-rear-width-W2: 7em;
    --front-distance-D1: 4em;
    --rear-distance: 16;
    --rear-distance-D2: 16em;
    --rear-elevation-L2: 2em;
    --ceiling-height-C1: 4.5em;
    --speaker-height-S2: 2.5em;
    --distance-between-speakers-S1: 3em;
    --speaker-pan-P1: 15deg;
    --speaker-pan-P1-negative: calc(var(--speaker-pan-P1) * -1);
    --speaker-tilt-T1: 8deg;
    --room-color: #e9ecef;
    --room-length: calc(var(--rear-distance-D2) - var(--front-distance-D1));
    --floor-line-mod: 0em;
    --room-front-shorter-width-diff: calc(var(--room-rear-width-W2) - var(--room-front-width-W1));
    --room-front-shorter-width: calc(var(--room-front-shorter-width-diff) / 2);
    --room-front-greater-width-diff: calc(var(--room-front-width-W1) - var(--room-rear-width-W2));
    --room-front-greater-width: calc(var(--room-front-greater-width-diff) / 2);
    --meter-increment: calc(var(--rear-distance-D2) / var(--rear-distance));
    --meter-increment-negative: -var(--meter-increment);
    --ruler-scale-height: 8px;
    --spl-meter-color: #fff9e6;
    --spl-ruler-color: RGBA(33,37,41,1);
    --ruler-color: #b02a37;
    --dim-distance: 2em;
    --dim-font-size: 16px;
    --dim-color: #6c757d;
    --dim-speaker-pan-diff: calc(var(--room-rear-width-W2) - var(--distance-between-speakers-S1));
    --dim-speaker-pan: calc(var(--dim-speaker-pan-diff) / 2);
    --speaker-height: 15px;
    --speaker-elevation-height: 50px;
    --speaker-width: 10px;
    --listener-width: 2.5em;
    --listener-height: 3.875em;
    --listener-width-s: calc(var(--listener-width) * .75);
    --max-W1: var(--room-front-width-W1);
    --max-W2: var(--room-rear-width-W2);
    --max-elevation: var(--ceiling-height-C1);
    --min-horizontal: 20em;
    --max-horizontal: var(--room-rear-width-W2);
    --isobar-mask-height: 100%;
    --speaker-height-modifier: 1.5;
    /* Isobar Angles (Horizontal) */
    --isobar-width-hor: 800px;
    --isobar-hor-3dB-500hz: 75deg;
    --isobar-hor-3dB-500hz-negative: calc(-1 * var(--isobar-hor-3dB-500hz));
    --isobar-hor-6dB-500hz: 115deg;
    --isobar-hor-6dB-500hz-negative: calc(-1 * var(--isobar-hor-6dB-500hz));
    --isobar-hor-9dB-500hz: 180deg;
    --isobar-hor-9dB-500hz-negative: calc(-1 * var(--isobar-hor-9dB-500hz));
    --isobar-hor-3dB-1000hz: 70deg;
    --isobar-hor-3dB-1000hz-negative: calc(-1 * var(--isobar-hor-3dB-1000hz));
    --isobar-hor-6dB-1000hz: 100deg;
    --isobar-hor-6dB-1000hz-negative: calc(-1 * var(--isobar-hor-6dB-1000hz));
    --isobar-hor-9dB-1000hz: 180deg;
    --isobar-hor-9dB-1000hz-negative: calc(-1 * var(--isobar-hor-9dB-1000hz));
    --isobar-hor-3dB-2000hz: 45deg;
    --isobar-hor-3dB-2000hz-negative: calc(-1 * var(--isobar-hor-3dB-2000hz));
    --isobar-hor-6dB-2000hz: 60deg;
    --isobar-hor-6dB-2000hz-negative: calc(-1 * var(--isobar-hor-6dB-2000hz));
    --isobar-hor-9dB-2000hz: 80deg;
    --isobar-hor-9dB-2000hz-negative: calc(-1 * var(--isobar-hor-9dB-2000hz));
    --isobar-hor-3dB-4000hz: 35deg;
    --isobar-hor-3dB-4000hz-negative: calc(-1 * var(--isobar-hor-3dB-4000hz));
    --isobar-hor-6dB-4000hz: 50deg;
    --isobar-hor-6dB-4000hz-negative: calc(-1 * var(--isobar-hor-6dB-4000hz));
    --isobar-hor-9dB-4000hz: 70deg;
    --isobar-hor-9dB-4000hz-negative: calc(-1 * var(--isobar-hor-9dB-4000hz));
    /* Isobar Angles (Elevated) */
    --isobar-width-elev: 800px;
    --isobar-elev-3dB-500hz: 12deg;
    --isobar-elev-3dB-500hz-negative: calc(-1 * var(--isobar-elev-3dB-500hz));
    --isobar-elev-6dB-500hz: 14deg;
    --isobar-elev-6dB-500hz-negative: calc(-1 * var(--isobar-elev-6dB-500hz));
    --isobar-elev-9dB-500hz: 16deg;
    --isobar-elev-9dB-500hz-negative: calc(-1 * var(--isobar-elev-9dB-500hz));
    --isobar-elev-3dB-1000hz: 5deg;
    --isobar-elev-3dB-1000hz-negative: calc(-1 * var(--isobar-elev-3dB-1000hz));
    --isobar-elev-6dB-1000hz: 7.5deg;
    --isobar-elev-6dB-1000hz-negative: calc(-1 * var(--isobar-elev-6dB-1000hz));
    --isobar-elev-9dB-1000hz: 9deg;
    --isobar-elev-9dB-1000hz-negative: calc(-1 * var(--isobar-elev-9dB-1000hz));
    --isobar-elev-3dB-2000hz: 3.5deg;
    --isobar-elev-3dB-2000hz-negative: calc(-1 * var(--isobar-elev-3dB-2000hz));
    --isobar-elev-6dB-2000hz: 6.5deg;
    --isobar-elev-6dB-2000hz-negative: calc(-1 * var(--isobar-elev-6dB-2000hz));
    --isobar-elev-9dB-2000hz: 7.5deg;
    --isobar-elev-9dB-2000hz-negative: calc(-1 * var(--isobar-elev-9dB-2000hz));
    --isobar-elev-3dB-4000hz: 2deg;
    --isobar-elev-3dB-4000hz-negative: calc(-1 * var(--isobar-elev-3dB-4000hz));
    --isobar-elev-6dB-4000hz: 4deg;
    --isobar-elev-6dB-4000hz-negative: calc(-1 * var(--isobar-elev-6dB-4000hz));
    --isobar-elev-9dB-4000hz: 6deg;
    --isobar-elev-9dB-4000hz-negative: calc(-1 * var(--isobar-elev-9dB-4000hz));
}

[room-shape="rectangle"] .accordion-body {
    height: min(calc(var(--max-W2) * 1.25), max(15em, calc((var(--room-rear-width-W2) + var(--dim-distance) + 1em) * 1.8)));
    font-size: var(--coverage-map-root-unit);
}

[room-shape="rectangle"] .room {
    height: var(--room-rear-width-W2);
    width: var(--room-length);
    background-color: var(--room-color);
}

[room-shape="front-shorter"] .accordion-body {
    height: min(calc(var(--max-W2) * 1.1), max(var(--min-horizontal), calc((var(--room-rear-width-W2) + var(--dim-distance) + 3em) * 1.3)));
    font-size: var(--coverage-map-root-unit);
}

[room-shape="front-shorter"] .room {
    width: 0;
    height: var(--room-rear-width-W2);
    border-top-width: var(--room-front-shorter-width);
    border-top-style: solid;
    border-top-color: transparent;
    border-right-width: var(--room-length);
    border-right-style: solid;
    border-right-color: var(--room-color);
    border-bottom-width: var(--room-front-shorter-width);
    border-bottom-style: solid;
    border-bottom-color: transparent;
    border-left: none;
}

[room-shape="front-greater"] .accordion-body {
    height: min(calc(var(--max-W1) * 1.1), max(var(--min-horizontal), calc((var(--room-front-width-W1) + var(--dim-distance) + 3em) * 1.3)));
    font-size: var(--coverage-map-root-unit);
}

[room-shape="front-greater"] .room {
    width: 0;
    height: var(--room-front-width-W1);
    border-top-width: var(--room-front-greater-width);
    border-top-style: solid;
    border-top-color: transparent;
    border-right: none;
    border-bottom-width: var(--room-front-greater-width);
    border-bottom-style: solid;
    border-bottom-color: transparent;
    border-left-width: var(--room-length);
    border-left-style: solid;
    border-left-color: var(--room-color);
}

[listener-height="seated"] .accordion-body,
[listener-height="standing"] .accordion-body {
    height: calc(var(--max-elevation) * 1.8);
    font-size: var(--coverage-map-root-unit);
}

[listener-height="seated"] .room,
[listener-height="standing"] .room {
    position: relative;
    height: var(--max-elevation);
    width: var(--room-length);
}

[listener-height="seated"] .listener-front,
[listener-height="seated"] .listener-back {
    display: block;
    position: absolute;
    width: var(--listener-width);
    height: var(--listener-height);
    background-image: url("/img/column_speaker_calc/listener-seated.png");
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center bottom;
}



[listener-height="seated"] .listener-front {
    left: min(0em, calc(var(--floor-line-mod) * -1));
    bottom: 0;
}

[listener-height="seated"] .listener-back {
    right: min(0em, calc(var(--floor-line-mod) * -0.5));
    bottom: var(--rear-elevation-L2);
}

[listener-height="standing"] .listener-front,
[listener-height="standing"] .listener-back {
    display: block;
    position: absolute;
    width: var(--listener-width);
    height: inherit;
    background-image: url("/img/column_speaker_calc/listener-standing.png");
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center bottom;
}


[listener-height="standing"] .listener-front {
    left: min(0em, calc(var(--floor-line-mod) * -1));
    bottom: 0;
}

[listener-height="standing"] .listener-back {
    right: min(0em, calc(var(--floor-line-mod) * -0.5));
    bottom: calc(var(--rear-elevation-L2) * 0.98);
}

.plan-view {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

    .plan-view > div {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        display: flex;
        justify-content: center;
        align-items: center;
    }

[listener-height] .plan-view > div {
    margin-top: 3rem;
}

.floor-line-wrapper {
    position: relative;
    display: flex;
    align-items: flex-end;
    width: var(--rear-distance-D2);
    height: var(--max-elevation);
    z-index: 1;
}

    .floor-line-wrapper:before {
        position: absolute;
        content: "";
        background: #ffffff;
        width: 100%;
        height: var(--rear-elevation-L2);
        left: var(--rear-distance-D2);
        bottom: 0;
    }

    .floor-line-wrapper:after {
        position: absolute;
        content: "";
        background: #ffffff;
        width: 200%;
        height: 200%;
        top: var(--max-elevation);
    }

.floor-line {
    position: relative;
    width: 100%;
    height: 100%;
    border-bottom: 2px solid #000;
    z-index: 2;
}

    .floor-line:before {
        position: absolute;
        content: "";
        width: 0;
        height: 0;
        border-top: 0 solid transparent;
        border-right: 0 solid transparent;
        border-bottom-width: var(--rear-elevation-L2);
        border-bottom-style: solid;
        border-bottom-color: #000000;
        border-left-width: calc(var(--room-length) - var(--listener-width-s) + var(--floor-line-mod));
        border-left-style: solid;
        border-left-color: transparent;
        right: 0;
        bottom: 0;
    }

    .floor-line:after {
        position: absolute;
        content: "";
        width: 0;
        height: 0;
        border-top: 0 solid transparent;
        border-right: 0 solid transparent;
        border-bottom-width: var(--rear-elevation-L2);
        border-bottom-style: solid;
        border-bottom-color: #ffffff;
        border-left-width: calc(var(--room-length) - var(--listener-width-s) + var(--floor-line-mod));
        border-left-style: solid;
        border-left-color: transparent;
        right: 0;
        bottom: -2px;
    }

.isobar-mask:before, .isobar-mask:after {
    position: absolute;
    content: "";
    background: #FFFFFF;
    width: 200%;
    height: var(--isobar-mask-height);
    left: -50%;
    z-index: 1;
}

.isobar-mask:before {
    bottom: 100%;
}

.isobar-mask:after {
    top: 100%;
}

.speaker-hor-wrapper {
    margin-right: var(--front-distance-D1);
}

.speaker-hor {
    position: relative;
    height: var(--speaker-height);
    width: var(--speaker-width);
    transform-origin: center left;
    transform: rotate(var(--speaker-pan-P1));
}

    .speaker-hor:before {
        position: absolute;
        content: "";
        z-index: 1;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        overflow: hidden;
        background-color: #000000;
    }

    .speaker-hor .isobar {
        top: calc(var(--speaker-height)/2);
    }

    .speaker-hor:nth-child(2) {
        --distance-between-speakers: calc(var(--distance-between-speakers-S1) - var(--speaker-height));
        margin-top: var(--distance-between-speakers);
        transform: rotate(var(--speaker-pan-P1-negative));
    }

.speaker-elev-wrapper {
    margin-right: var(--front-distance-D1);
    align-self: flex-end;
    margin-bottom: var(--speaker-height-S2);
}

.speaker-elev {
    position: relative;
    height: var(--speaker-elevation-height);
    width: var(--speaker-width);
    transform-origin: bottom left;
    transform: rotate(var(--speaker-tilt-T1));
}

    .speaker-elev:before {
        position: absolute;
        content: "";
        z-index: 1;
        height: 100%;
        width: 100%;
        top: 0;
        left: calc(var(--speaker-width) / 2);
        overflow: hidden;
        background-color: #000000;
    }

    .speaker-elev .isobar {
        top: 0;
    }

        .speaker-elev .isobar:after {
            top: var(--speaker-elevation-height);
        }

.isobar {
    position: absolute;
    left: var(--speaker-width);
}

.isobar-elev.isobar:before, .isobar-elev.isobar:after {
    position: absolute;
    content: "";
    border-top-width: 2px;
    border-top-style: dotted;
    width: var(--isobar-width-elev);
    height: 2px;
    transform-origin: top left;
}

.isobar-hor.isobar:before, .isobar-hor.isobar:after {
    position: absolute;
    content: "";
    border-top-width: 2px;
    border-top-style: dotted;
    width: var(--isobar-width-hor);
    height: 2px;
    transform-origin: top left;
}

.isobar.isobar-3dB:before, .isobar.isobar-3dB:after {
    border-top-color: #b02a37;
}

.isobar.isobar-6dB:before, .isobar.isobar-6dB:after {
    border-top-color: #198754;
}

.isobar.isobar-9dB:before, .isobar.isobar-9dB:after {
    border-top-color: #0d6efd;
}

.center-line {
    position: absolute;
    left: var(--speaker-width);
    --center-line-width:var(--rear-distance-D2);
    top: calc(var(--speaker-height)/2);
}

.center-line:before {
    position: absolute;
    content: "";
    border-top-width: 2px;
    border-top-style: dashed;
    width: var(--center-line-width);
    height: 2px;
    transform-origin: top left;
    border-top-color: #0d6efd;
    transform: rotate(90);
}

.center-line:after {
    position: absolute;
    content: "◦";
    left: var(--center-line-width);
    top: calc(var(--speaker-height)* -1.5);
}

[isobar-frequency="500"] .speaker-hor .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-hor-3dB-500hz-negative)/2));
}

[isobar-frequency="500"] .speaker-hor .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-hor-3dB-500hz)/2));
}

[isobar-frequency="500"] .speaker-hor .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-hor-6dB-500hz-negative)/2));
}

[isobar-frequency="500"] .speaker-hor .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-hor-6dB-500hz)/2));
}

[isobar-frequency="500"] .speaker-hor .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-hor-9dB-500hz-negative)/2));
}

[isobar-frequency="500"] .speaker-hor .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-hor-9dB-500hz)/2));
}

[isobar-frequency="500"] .speaker-elev .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-elev-3dB-500hz-negative)/2));
}

[isobar-frequency="500"] .speaker-elev .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-elev-3dB-500hz)/2));
}

[isobar-frequency="500"] .speaker-elev .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-elev-6dB-500hz-negative)/2));
}

[isobar-frequency="500"] .speaker-elev .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-elev-6dB-500hz)/2));
}

[isobar-frequency="500"] .speaker-elev .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-elev-9dB-500hz-negative)/2));
}

[isobar-frequency="500"] .speaker-elev .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-elev-9dB-500hz)/2));
}

[isobar-frequency="1000"] .speaker-hor .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-hor-3dB-1000hz-negative)/2));
}

[isobar-frequency="1000"] .speaker-hor .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-hor-3dB-1000hz)/2));
}

[isobar-frequency="1000"] .speaker-hor .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-hor-6dB-1000hz-negative)/2));
}

[isobar-frequency="1000"] .speaker-hor .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-hor-6dB-1000hz)/2));
}

[isobar-frequency="1000"] .speaker-hor .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-hor-9dB-1000hz-negative)/2));
}

[isobar-frequency="1000"] .speaker-hor .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-hor-9dB-1000hz)/2));
}

[isobar-frequency="1000"] .speaker-elev .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-elev-3dB-1000hz-negative)/2));
}

[isobar-frequency="1000"] .speaker-elev .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-elev-3dB-1000hz)/2));
}

[isobar-frequency="1000"] .speaker-elev .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-elev-6dB-1000hz-negative)/2));
}

[isobar-frequency="1000"] .speaker-elev .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-elev-6dB-1000hz)/2));
}

[isobar-frequency="1000"] .speaker-elev .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-elev-9dB-1000hz-negative)/2));
}

[isobar-frequency="1000"] .speaker-elev .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-elev-9dB-1000hz)/2));
}

[isobar-frequency="2000"] .speaker-hor .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-hor-3dB-2000hz-negative)/2));
}

[isobar-frequency="2000"] .speaker-hor .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-hor-3dB-2000hz)/2));
}

[isobar-frequency="2000"] .speaker-hor .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-hor-6dB-2000hz-negative)/2));
}

[isobar-frequency="2000"] .speaker-hor .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-hor-6dB-2000hz)/2));
}

[isobar-frequency="2000"] .speaker-hor .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-hor-9dB-2000hz-negative)/2));
}

[isobar-frequency="2000"] .speaker-hor .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-hor-9dB-2000hz)/2));
}

[isobar-frequency="2000"] .speaker-elev .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-elev-3dB-2000hz-negative)/2));
}

[isobar-frequency="2000"] .speaker-elev .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-elev-3dB-2000hz)/2));
}

[isobar-frequency="2000"] .speaker-elev .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-elev-6dB-2000hz-negative)/2));
}

[isobar-frequency="2000"] .speaker-elev .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-elev-6dB-2000hz)/2));
}

[isobar-frequency="2000"] .speaker-elev .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-elev-9dB-2000hz-negative)/2));
}

[isobar-frequency="2000"] .speaker-elev .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-elev-9dB-2000hz)/2));
}

[isobar-frequency="4000"] .speaker-hor .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-hor-3dB-4000hz-negative)/2));
}

[isobar-frequency="4000"] .speaker-hor .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-hor-3dB-4000hz)/2));
}

[isobar-frequency="4000"] .speaker-hor .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-hor-6dB-4000hz-negative)/2));
}

[isobar-frequency="4000"] .speaker-hor .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-hor-6dB-4000hz)/2));
}

[isobar-frequency="4000"] .speaker-hor .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-hor-9dB-4000hz-negative)/2));
}

[isobar-frequency="4000"] .speaker-hor .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-hor-9dB-4000hz)/2));
}

[isobar-frequency="4000"] .speaker-elev .isobar-3dB:before {
    transform: rotate(calc(var(--isobar-elev-3dB-4000hz-negative)/2));
}

[isobar-frequency="4000"] .speaker-elev .isobar-3dB:after {
    transform: rotate(calc(var(--isobar-elev-3dB-4000hz)/2));
}

[isobar-frequency="4000"] .speaker-elev .isobar-6dB:before {
    transform: rotate(calc(var(--isobar-elev-6dB-4000hz-negative)/2));
}

[isobar-frequency="4000"] .speaker-elev .isobar-6dB:after {
    transform: rotate(calc(var(--isobar-elev-6dB-4000hz)/2));
}

[isobar-frequency="4000"] .speaker-elev .isobar-9dB:before {
    transform: rotate(calc(var(--isobar-elev-9dB-4000hz-negative)/2));
}

[isobar-frequency="4000"] .speaker-elev .isobar-9dB:after {
    transform: rotate(calc(var(--isobar-elev-9dB-4000hz)/2));
}

div[class^="dim-"] {
    position: absolute;
}

.dim-hor {
    width: var(--rear-distance-D2);
    height: var(--max-horizontal);
}

.dim-elev {
    width: var(--rear-distance-D2);
    height: var(--max-elevation);
}

.dim-p1 {
    top: var(--dim-speaker-pan);
    left: 0;
}

.dim-s1 {
    height: var(--distance-between-speakers-S1);
    left: 0;
    top: 50%;
    transform: translateY(-50%);
}

.dim-w1 {
    height: var(--room-front-width-W1);
    right: var(--room-length);
    top: var(--room-front-shorter-width);
}

.dim-w2 {
    height: var(--room-rear-width-W2);
    right: 0;
}

.dim-d1 {
    width: var(--front-distance-D1);
    top: calc((var(--room-front-width-W1) - var(--dim-distance)) * 1.8);
    left: calc(var(--speaker-width)/2);
}

.dim-d2 {
    width: var(--rear-distance-D2);
    top: calc((var(--room-front-width-W1) - var(--dim-distance)) * 1.8);
    left: calc(var(--speaker-width)/2);
}

[room-shape="front-greater"] .dim-d1 {
    top: calc(var(--room-front-width-W1) - var(--room-front-greater-width) + var(--dim-distance));
}

[room-shape="front-greater"] .dim-d2 {
    top: calc(var(--room-front-width-W1) - var(--room-front-greater-width) + var(--dim-distance));
}

[room-shape="front-shorter"] .dim-d1 {
    top: calc(var(--room-rear-width-W2));
}

[room-shape="front-shorter"] .dim-d2 {
    top: calc(var(--room-rear-width-W2));
}

[room-shape="rectangle"] .dim-d1 {
    top: calc(var(--room-front-width-W1) + var(--dim-distance));
}

[room-shape="rectangle"] .dim-d2 {
    top: calc((var(--room-front-width-W1) + var(--dim-distance)));
}

.dim-c1 {
    height: var(--ceiling-height-C1);
    left: -2em;
    bottom: 0;
}

.dim-l2 {
    height: var(--rear-elevation-L2);
    right: 0;
    bottom: 0;
}

.dim-t1 {
    bottom: var(--speaker-height-S2);
    left: calc(var(--speaker-width) / 2);
}

.dim-s2 {
    height: var(--speaker-height-S2);
    left: 0;
    bottom: 0;
}

.dim-left {
    top: 0;
    bottom: 0;
    right: var(--dim-distance);
}

    .dim-left:after {
        display: block;
        position: absolute;
        content: "";
        border-left: 1px solid var(--dim-color);
        top: 0;
        bottom: 0;
        left: 2px;
    }

.dim-right {
    top: 0;
    bottom: 0;
    left: var(--dim-distance);
}

    .dim-right:after {
        display: block;
        position: absolute;
        content: "";
        border-right: 1px solid var(--dim-color);
        top: 0;
        bottom: 0;
        left: 2px;
    }

.dim-bottom {
    top: var(--dim-distance);
    left: 0;
    right: 0;
}

    .dim-bottom:after {
        display: block;
        position: absolute;
        content: "";
        border-top: 1px solid var(--dim-color);
        left: 0;
        right: 0;
        top: 2px;
    }

.dim-pan {
    top: calc(var(--dim-distance) * -1);
    right: calc(var(--speaker-width)/2);
}

    .dim-pan:before, .dim-pan:after {
        display: block;
        position: absolute;
        content: "";
        border-left-width: 1px;
        border-left-style: solid;
        border-left-color: var(--dim-color);
    }

    .dim-pan:before {
        height: var(--dim-distance);
    }

    .dim-pan:after {
        transform-origin: bottom left;
        transform: rotate(var(--speaker-pan-P1));
        height: var(--dim-distance);
    }

    .dim-pan .dim-label {
        margin-left: 1rem;
    }

.dim-tilt {
    --dim-tilt-top: calc(var(--dim-distance) * var(--speaker-height-modifier));
    top: calc(-1 * var(--dim-tilt-top));
    right: calc(var(--speaker-width)/2);
}

    .dim-tilt:before, .dim-tilt:after {
        display: block;
        position: absolute;
        content: "";
        border-left: 1px solid var(--dim-color);
    }

    .dim-tilt:before {
        height: var(--dim-tilt-top);
    }

    .dim-tilt:after {
        transform-origin: bottom left;
        transform: rotate(var(--speaker-tilt-T1));
        height: var(--dim-tilt-top);
    }

    .dim-tilt .dim-label {
        margin-left: 1rem;
    }

.dim-label {
    display: flex;
    align-items: center;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: rgba(255, 255, 255, 0.9);
    font-size: var(--dim-font-size);
    color: var(--dim-color);
    z-index: 1;
    padding-left: .25rem;
    padding-right: .25rem;
    border-radius: var(--bs-border-radius);
}

.triangle-left, .triangle-right, .triangle-top, .triangle-bottom {
    width: 0;
    height: 0;
    margin: 0 auto;
    position: absolute;
}

.triangle-top {
    top: 0;
    border-bottom: 12px solid var(--dim-color);
}

    .triangle-top:before {
        display: block;
        position: absolute;
        content: "";
        border-top: 1px solid var(--dim-color);
        width: 30px;
        top: 0;
        right: -10px;
    }

.triangle-bottom {
    bottom: 0;
    border-top: 12px solid var(--dim-color);
}

    .triangle-bottom:after {
        display: block;
        position: absolute;
        content: "";
        border-bottom: 1px solid var(--dim-color);
        width: 30px;
        bottom: 0;
        right: -10px;
    }

.dim-left .triangle-top:before,
.dim-left .triangle-bottom:after {
    right: auto;
    left: -10px;
}

.triangle-right {
    right: 0;
    border-left: 12px solid var(--dim-color);
}

    .triangle-right:after {
        display: block;
        position: absolute;
        content: "";
        border-right: 1px solid var(--dim-color);
        height: 30px;
        right: 0;
        bottom: -10px;
    }

.triangle-left {
    left: 0;
    border-right: 12px solid var(--dim-color);
}

    .triangle-left:after {
        display: block;
        position: absolute;
        content: "";
        border-left: 1px solid var(--dim-color);
        height: 30px;
        left: 0;
        bottom: -10px;
    }

.triangle-top, .triangle-bottom {
    border-left: 3px solid transparent;
    border-right: 3px solid transparent;
}

.triangle-left, .triangle-right {
    border-top: 3px solid transparent;
    border-bottom: 3px solid transparent;
}

.triangle-angle {
    right: 0;
    border-left: 12px solid var(--dim-color);
}

    .triangle-angle:after {
        display: block;
        position: absolute;
        content: "";
        border-right: 1px solid var(--dim-color);
        height: 50px;
        right: 0;
        bottom: -10px;
    }

.spl-meter {
    position: absolute;
    left: 0;
    right: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: calc(var(--ruler-scale-height)*8);
    background: var(--spl-meter-color);
}

    .spl-meter .spl-ruler,
    .spl-meter .ruler {
        width: calc(var(--rear-distance-D2) + var(--meter-increment));
        height: var(--ruler-scale-height);
        margin-left: calc(var(--meter-increment) + var(--speaker-width));
    }

.spl-ruler {
    position: relative;
}

    .spl-ruler .unit {
        position: absolute;
        bottom: calc(var(--ruler-scale-height) + 2px);
        font: 11px/1 sans-serif;
        color: var(--spl-ruler-color);
    }

        .spl-ruler .unit:first-child {
            left: -4em;
        }

        .spl-ruler .unit:last-child {
            left: auto;
            right: -3em;
        }

    .spl-ruler .scale-wrapper {
        display: flex;
    }

        .spl-ruler .scale-wrapper .scale {
            position: relative;
            border-bottom: 1px solid var(--spl-ruler-color);
            border-right: 1px solid var(--spl-ruler-color);
            height: var(--ruler-scale-height);
            width: var(--meter-increment);
        }

            .spl-ruler .scale-wrapper .scale:first-child {
                border-left: 1px solid var(--spl-ruler-color);
            }

            .spl-ruler .scale-wrapper .scale:last-child {
                border: none;
            }

            .spl-ruler .scale-wrapper .scale .label {
                position: absolute;
                font: 11px/1 sans-serif;
                color: var(--spl-ruler-color);
                bottom: calc(var(--ruler-scale-height) + 2px);
                left: -4px;
            }

.ruler {
    position: relative;
    margin-top: 5px;
}

    .ruler .unit {
        position: absolute;
        top: calc(var(--ruler-scale-height) + 2px);
        font: 11px/1 sans-serif;
        color: var(--ruler-color);
    }

        .ruler .unit:first-child {
            left: -4em;
        }

        .ruler .unit:last-child {
            left: auto;
            right: -3em;
        }

    .ruler .meter-wrapper {
        display: flex;
        flex-wrap: nowrap;
    }

        .ruler .meter-wrapper .meter {
            position: relative;
            border-top: 1px solid var(--ruler-color);
            border-right: 1px solid var(--ruler-color);
            height: var(--ruler-scale-height);
            width: var(--meter-increment);
        }

            .ruler .meter-wrapper .meter:first-child {
                border-left: 1px solid var(--spl-ruler-color);
            }

            .ruler .meter-wrapper .meter:last-child {
                border: none;
            }

            .ruler .meter-wrapper .meter .label {
                position: absolute;
                font: 11px/1 sans-serif;
                color: var(--ruler-color);
                top: calc(var(--ruler-scale-height) + 2px);
                left: -4px;
            }

.graph {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    width: calc(var(--rear-distance-D2)*2.5);
    height: 100%;
    margin-left: calc(.5 * var(--speaker-width));
    background-size: var(--meter-increment) var(--meter-increment);
    background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0.5px, transparent 0.5px), linear-gradient(90deg, rgba(0, 0, 0, 0.1) 0.5px, transparent 0.5px);
}

.dim-label.dim-label-input {
    top: -1.25rem;
}

.c-checkbox {
    display: none;
}

    .c-checkbox:checked + .c-formContainer,
    .c-checkbox:checked + .c-formContainer .c-form {
        width: calc(65px * 1.75);
    }

        .c-checkbox:checked + .c-formContainer .c-form__toggle {
            visibility: hidden;
            opacity: 0;
            transform: scale(0.7);
        }

        .c-checkbox:checked + .c-formContainer .c-form__input,
        .c-checkbox:checked + .c-formContainer .c-form__buttonLabel {
            transition: 0.2s 0.1s;
            visibility: visible;
            opacity: 1;
            transform: scale(1);
        }

.c-formContainer,
.c-form,
.c-form__toggle {
    width: 65px;
    height: 35px;
}

.c-formContainer {
    position: relative;
}

.c-form,
.c-form__toggle {
    position: absolute;
    border-radius: var(--bs-border-radius-pill);
    background-color: #fff;
    transition: 0.2s;
}

.c-form {
    left: 50%;
    transform: translateX(-50%);
    padding: .25rem;
    box-sizing: border-box;
    box-shadow: 0 0.125em 0.3125em rgba(0, 0, 0, 0.3);
    display: flex;
    justify-content: center;
}

.c-form__toggle {
    top: 0;
    cursor: pointer;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .c-form__toggle:before {
        content: attr(data-title);
    }

    .c-form__toggle,
    .c-form__toggle:before {
        font-size: 1.25rem;
        color: #F24835;
        font-weight: bold;
    }

.c-form__input,
.c-form__button {
    font: inherit;
    border: 0;
    outline: 0;
    border-radius: var(--bs-border-radius-pill);
    box-sizing: border-box;
}

.c-form__input,
.c-form__buttonLabel {
    font-size: 1.25rem;
    opacity: 0;
    visibility: hidden;
    transform: scale(0.7);
    transition: 0s;
    text-align: center;
}

.c-form__input {
    height: 100%;
    width: 100%;
    padding-left: .75rem;
}

    .c-form__input::-moz-placeholder {
        color: var(--bs-dark-text-emphasis);
        opacity: 1;
    }

    .c-form__input::placeholder {
        color: var(--bs-dark-text-emphasis);
        opacity: 1;
    }

    .c-form__input:valid {
        color: var(--bs-dark-text-emphasis);
    }

        .c-form__input:valid + .c-form__buttonLabel {
            color: #fff;
        }

            .c-form__input:valid + .c-form__buttonLabel::before {
                pointer-events: initial;
            }

.c-form__buttonLabel {
    color: #fff;
    height: 100%;
    width: auto;
}

    .c-form__buttonLabel:hover {
        color: #fff;
    }

    .c-form__buttonLabel::before {
        content: '';
        position: absolute;
        width: 100%;
        height: 100%;
        pointer-events: none;
        cursor: pointer;
    }

.c-form__button {
    color: inherit;
    padding: 0;
    height: 100%;
    width: calc(65px * .5);
    background-color: #F24835;
}

#idResultsText a {
    text-decoration: underline;
    text-decoration-color: currentColor;
}


/* Print */
@media print {
    @page {
        size: a3;
        margin: .5in auto;
    }

    .container {
        width: 8.5in;
    }


    #html2canvasOutput {
        height: 11in;
    }

        #html2canvasOutput canvas {
            width: auto !important;
            height: auto !important;
            max-height: 11in;
            border: 1px solid #333333;
        }

    body {
        font-size: 10pt;
        background-color: transparent;
    }

    header,
    footer,
    .body-content-sidebar,
    [aria-label="breadcrumb"],
    [data-bs-toggle="popover"],
    .pagetop,
    #idEditArticle,
    .d-print-none {
        display: none !important;
    }

    .main-content.has-subnav {
        padding-top: 0 !important;
    }

    .page-title {
        font-size: 20pt;
        font-weight: 400 !important;
        color: inherit !important;
        text-align: left;
    }

    .print-subtitle {
        font-size: 16pt;
        font-weight: 400 !important;
        color: inherit !important;
        text-align: left;
    }

    .column-speaker-calc-result-area .dim-label {
        font-size: 10pt;
    }

    .column-speaker-calc-result-area [room-shape],
    .column-speaker-calc-result-area [listener-height] {
        font-size: var(--coverage-map-print-root-unit);
    }

    .column-speaker-calc-result-area .accordion {
        --bs-accordion-border-width: 0;
    }

    .column-speaker-calc-result-area .accordion-button:not(.collapsed) {
        background-color: transparent;
        background: transparent;
    }

    .column-speaker-calc-result-area .list-group-item {
        padding-left: 0;
        border: none;
    }

    .column-speaker-calc-result-area .accordion-body {
        padding-top: 0;
        padding-bottom: 0;
        background: transparent !important;
        overflow: hidden !important;
    }

    .column-speaker-calc-result-area table.print-data {
        width: auto;
    }

        .column-speaker-calc-result-area table.print-data tbody tr td,
        .column-speaker-calc-result-area table.print-data tbody tr th {
            padding: 0;
        }

            .column-speaker-calc-result-area table.print-data tbody tr td:first-child:not([colspan="2"]),
            .column-speaker-calc-result-area table.print-data tbody tr th:first-child:not([colspan="2"]) {
                width: 4in;
            }

    .column-speaker-calc-result-area .accordion-button {
        color: inherit;
        font-weight: 700;
    }

        .column-speaker-calc-result-area .accordion-button::after,
        .column-speaker-calc-result-area .accordion-button:not(.collapsed)::after {
            background-image: none;
        }

    .column-speaker-calc-result-area .accordion-button {
        padding-top: 0.5rem !important;
        padding-bottom: 0.5rem !important;
        padding-left: 0;
        padding-right: 0;
        text-align: left !important;
    }

    .column-speaker-calc-result-area [class*="col-"] {
        width: 100% !important;
        flex: 0 0 100%;
        max-width: 100%;
    }

    .c-form,
    .c-form__toggle {
        background-color: transparent;
        color: inherit;
        position: initial;
    }

    .c-form {
        box-shadow: none;
    }

    .c-form__toggle::before {
        font-size: 10pt;
        color: inherit;
    }

    .c-formContainer {
        font-weight: normal;
    }

    #idResultsText a {
        text-decoration: none;
    }

    #idResultsText .print-text-emphasis {
        color: inherit !important;
        background: #ffffff;
        padding-top: 10px !important;
        padding-bottom: 10px !important;
    }

        #idResultsText .print-text-emphasis > * {
            font-size: 20pt !important;
            font-weight: 700 !important;
        }

    .print-border {
        border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
    }

    .print-py-0 {
        padding-top: 0 !important;
        padding-bottom: 0 !important;
    }

    .print-nowrap {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        width: 100% !important;
    }

    .print-break-avoid {
        -moz-column-break-inside: avoid;
        break-inside: avoid;
    }

    .print-break-auto {
        -moz-column-break-inside: auto;
        break-inside: auto;
    }

    .print-break-before {
        -moz-column-break-before: page;
        break-before: page;
    }

    .print-break-after {
        -moz-column-break-after: page;
        break-after: page;
    }

    .justify-content-print-left {
        justify-content: start !important;
    }

    .text-white {
        color: #000000;
    }

    .bg-print-none {
        background-color: #ffffff !important;
    }
}

.spinner-wrap {
    display: none;
}

    .spinner-wrap.is-loading {
        display: block;
    }

        .spinner-wrap.is-loading + .cards {
            opacity: .25;
            pointer-events: none;
            -webkit-user-select: none;
            -moz-user-select: none;
            user-select: none;
        }





