/* Todo: define $var and use them for things like times, colors, etc. */

/* Global variables. */
:root {
    --svg-line-width:           3px;
    --svg-active-line-width:    5px;
    --svg-hover-line-width:     7px;
    --svg-highlight-line-width: 21px;

    --svg-over-width:        1px;
    --svg-active-over-width: 2px;
    --svg-hover-over-width:  3px;

    /* Loops are in RD, we cannot use px. */
    --svg-loupe-line-width:        0.08%;
    --svg-loupe-active-line-width: 0.08%; /* Yes, same size. */
    --svg-loupe-hover-line-width:  0.20%;

    /* Gicons, Fill:0 Weight:600 Grade:0 OSize:48. */
    --icon-info-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M443-271h79v-249h-79v249Zm36.982-306q20.518 0 33.768-12.9Q527-602.799 527-622.825q0-23.125-13.182-35.65Q500.636-671 480.193-671q-22.693 0-34.943 12.35Q433-646.301 433-624.175q0 21.275 13.232 34.225Q459.465-577 479.982-577Zm-.037 518q-87.053 0-164.146-32.604-77.094-32.603-134.343-89.852-57.249-57.249-89.852-134.41Q59-393.028 59-480.362q0-87.228 32.662-163.934 32.663-76.706 90.203-134.253 57.54-57.547 134.252-90.499Q392.829-902 479.836-902q87.369 0 164.544 32.858 77.175 32.858 134.401 90.257 57.225 57.399 90.222 134.514Q902-567.257 902-479.724q0 87.468-32.952 163.882t-90.499 133.781q-57.547 57.367-134.421 90.214Q567.255-59 479.945-59Zm.326-91q136.242 0 232.985-96.387Q810-342.773 810-480.271q0-136.242-96.327-232.985Q617.346-810 479.729-810q-136.242 0-232.985 96.327Q150-617.346 150-479.729q0 136.242 96.387 232.985Q342.773-150 480.271-150ZM480-480Z"/></svg>');
    --icon-info-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M443-271h79v-249h-79v249Zm36.982-306q20.518 0 33.768-12.9Q527-602.799 527-622.825q0-23.125-13.182-35.65Q500.636-671 480.193-671q-22.693 0-34.943 12.35Q433-646.301 433-624.175q0 21.275 13.232 34.225Q459.465-577 479.982-577Zm-.037 518q-87.053 0-164.146-32.604-77.094-32.603-134.343-89.852-57.249-57.249-89.852-134.41Q59-393.028 59-480.362q0-87.228 32.662-163.934 32.663-76.706 90.203-134.253 57.54-57.547 134.252-90.499Q392.829-902 479.836-902q87.369 0 164.544 32.858 77.175 32.858 134.401 90.257 57.225 57.399 90.222 134.514Q902-567.257 902-479.724q0 87.468-32.952 163.882t-90.499 133.781q-57.547 57.367-134.421 90.214Q567.255-59 479.945-59Zm.326-91q136.242 0 232.985-96.387Q810-342.773 810-480.271q0-136.242-96.327-232.985Q617.346-810 479.729-810q-136.242 0-232.985 96.327Q150-617.346 150-479.729q0 136.242 96.387 232.985Q342.773-150 480.271-150ZM480-480Z"/></svg>');
    --icon-arrow-drop-down-circle-orn: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="saddlebrown"        height="48" viewBox="0 -960 960 960" width="48"><path d="m480-356.956 161.827-162.262H317.173L480-356.956Zm.078 291.087q-85.469 0-161.006-32.395-75.536-32.395-131.975-88.833-56.438-56.439-88.833-131.897-32.395-75.459-32.395-160.928 0-86.469 32.395-162.006 32.395-75.536 88.745-131.504 56.349-55.968 131.849-88.616 75.5-32.648 161.017-32.648 86.516 0 162.12 32.604 75.603 32.604 131.529 88.497t88.549 131.452Q894.696-566.584 894.696-480q0 85.547-32.648 161.075-32.648 75.527-88.616 131.896-55.968 56.37-131.426 88.765-75.459 32.395-161.928 32.395ZM480-145.087q139.739 0 237.326-97.732Q814.913-340.551 814.913-480q0-139.739-97.587-237.326-97.587-97.587-237.609-97.587-139.021 0-236.826 97.587-97.804 97.587-97.804 237.609 0 139.021 97.732 236.826Q340.551-145.087 480-145.087ZM480-480Z"/></svg>');
    --icon-arrow-drop-down-circle-grn: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="yellowgreen"   height="48" viewBox="0 -960 960 960" width="48"><path d="m480-356.956 161.827-162.262H317.173L480-356.956Zm.078 291.087q-85.469 0-161.006-32.395-75.536-32.395-131.975-88.833-56.438-56.439-88.833-131.897-32.395-75.459-32.395-160.928 0-86.469 32.395-162.006 32.395-75.536 88.745-131.504 56.349-55.968 131.849-88.616 75.5-32.648 161.017-32.648 86.516 0 162.12 32.604 75.603 32.604 131.529 88.497t88.549 131.452Q894.696-566.584 894.696-480q0 85.547-32.648 161.075-32.648 75.527-88.616 131.896-55.968 56.37-131.426 88.765-75.459 32.395-161.928 32.395ZM480-145.087q139.739 0 237.326-97.732Q814.913-340.551 814.913-480q0-139.739-97.587-237.326-97.587-97.587-237.609-97.587-139.021 0-236.826 97.587-97.804 97.587-97.804 237.609 0 139.021 97.732 236.826Q340.551-145.087 480-145.087ZM480-480Z"/></svg>');
    --icon-arrow-drop-down-circle-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="m480-356.956 161.827-162.262H317.173L480-356.956Zm.078 291.087q-85.469 0-161.006-32.395-75.536-32.395-131.975-88.833-56.438-56.439-88.833-131.897-32.395-75.459-32.395-160.928 0-86.469 32.395-162.006 32.395-75.536 88.745-131.504 56.349-55.968 131.849-88.616 75.5-32.648 161.017-32.648 86.516 0 162.12 32.604 75.603 32.604 131.529 88.497t88.549 131.452Q894.696-566.584 894.696-480q0 85.547-32.648 161.075-32.648 75.527-88.616 131.896-55.968 56.37-131.426 88.765-75.459 32.395-161.928 32.395ZM480-145.087q139.739 0 237.326-97.732Q814.913-340.551 814.913-480q0-139.739-97.587-237.326-97.587-97.587-237.609-97.587-139.021 0-236.826 97.587-97.804 97.587-97.804 237.609 0 139.021 97.732 236.826Q340.551-145.087 480-145.087ZM480-480Z"/></svg>');
    --icon-arrow-drop-down-circle-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="m480-356.956 161.827-162.262H317.173L480-356.956Zm.078 291.087q-85.469 0-161.006-32.395-75.536-32.395-131.975-88.833-56.438-56.439-88.833-131.897-32.395-75.459-32.395-160.928 0-86.469 32.395-162.006 32.395-75.536 88.745-131.504 56.349-55.968 131.849-88.616 75.5-32.648 161.017-32.648 86.516 0 162.12 32.604 75.603 32.604 131.529 88.497t88.549 131.452Q894.696-566.584 894.696-480q0 85.547-32.648 161.075-32.648 75.527-88.616 131.896-55.968 56.37-131.426 88.765-75.459 32.395-161.928 32.395ZM480-145.087q139.739 0 237.326-97.732Q814.913-340.551 814.913-480q0-139.739-97.587-237.326-97.587-97.587-237.609-97.587-139.021 0-236.826 97.587-97.804 97.587-97.804 237.609 0 139.021 97.732 236.826Q340.551-145.087 480-145.087ZM480-480Z"/></svg>');
    --icon-download-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M211.521-132.868q-32.507 0-55.862-23.555-23.356-23.555-23.356-56.342v-168.323h79.218v168.436h536.392v-168.436h79.219v168.17q0 32.745-23.653 56.397-23.652 23.653-55.566 23.653H211.521ZM480-324.87 266.651-537.654l57.131-56.566 116.609 117.174v-363.087h79.218v363.087L636.218-594.22l57.131 56.566L480-324.87Z"/></svg>');
    --icon-download-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M211.521-132.868q-32.507 0-55.862-23.555-23.356-23.555-23.356-56.342v-168.323h79.218v168.436h536.392v-168.436h79.219v168.17q0 32.745-23.653 56.397-23.652 23.653-55.566 23.653H211.521ZM480-324.87 266.651-537.654l57.131-56.566 116.609 117.174v-363.087h79.218v363.087L636.218-594.22l57.131 56.566L480-324.87Z"/></svg>');
    --icon-delete-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M256.478-105.869q-33.49 0-56.637-22.981-23.147-22.98-23.147-56.237v-560.391h-50.609v-79.218h212.306v-40.175h282.653v40.175h212.871v79.218h-50.609v560.391q0 32.507-23.522 55.862-23.522 23.356-56.262 23.356H256.478Zm447.044-639.609H256.478v560.391h447.044v-560.391Zm-343.87 478.913h69.609v-399h-69.609v399Zm171.087 0h70.174v-399h-70.174v399ZM256.478-745.478v560.391-560.391Z"/></svg>');
    --icon-delete-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M256.478-105.869q-33.49 0-56.637-22.981-23.147-22.98-23.147-56.237v-560.391h-50.609v-79.218h212.306v-40.175h282.653v40.175h212.871v79.218h-50.609v560.391q0 32.507-23.522 55.862-23.522 23.356-56.262 23.356H256.478Zm447.044-639.609H256.478v560.391h447.044v-560.391Zm-343.87 478.913h69.609v-399h-69.609v399Zm171.087 0h70.174v-399h-70.174v399ZM256.478-745.478v560.391-560.391Z"/></svg>');
    --icon-add-box-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M443.782-276.609h72.436v-167.173h167.173v-72.436H516.218v-167.173h-72.436v167.173H276.609v72.436h167.173v167.173Zm-258.695 170.74q-32.507 0-55.862-23.356-23.356-23.355-23.356-55.862v-589.826q0-32.74 23.356-56.262 23.355-23.521 55.862-23.521h589.826q32.74 0 56.262 23.521 23.521 23.522 23.521 56.262v589.826q0 32.507-23.521 55.862-23.522 23.356-56.262 23.356H185.087Zm0-79.218h589.826v-589.826H185.087v589.826Zm0-589.826v589.826-589.826Z"/></svg>');
    --icon-add-box-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M443.782-276.609h72.436v-167.173h167.173v-72.436H516.218v-167.173h-72.436v167.173H276.609v72.436h167.173v167.173Zm-258.695 170.74q-32.507 0-55.862-23.356-23.356-23.355-23.356-55.862v-589.826q0-32.74 23.356-56.262 23.355-23.521 55.862-23.521h589.826q32.74 0 56.262 23.521 23.521 23.522 23.521 56.262v589.826q0 32.507-23.521 55.862-23.522 23.356-56.262 23.356H185.087Zm0-79.218h589.826v-589.826H185.087v589.826Zm0-589.826v589.826-589.826Z"/></svg>');
    --icon-remove-selection-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M172.652-92.868q-32.74 0-56.262-23.522t-23.522-56.262h79.784v79.784ZM92.868-260.652v-88.087h79.784v88.087H92.868Zm0-176.087v-88.087h79.784v88.087H92.868Zm0-175.087v-88.087h79.784v88.087H92.868Zm0-176.087q0-32.479 23.522-55.849 23.522-23.37 56.262-23.37v79.219H92.868ZM260.652-92.868v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087Zm176.087 0v-79.219h88.087v79.219h-88.087Zm64.74 695.045-55.436-55.436L601.435-303.13 446.043-458.521l55.436-55.436L656.87-359.13l154.826-154.827 55.436 55.436L712.306-303.13l154.826 154.826-55.436 55.436L656.87-247.694 501.479-92.868Zm110.347-695.045v-79.219h88.087v79.219h-88.087Zm176.087 176.087v-88.087h79.219v88.087h-79.219Zm0-176.087v-79.219q31.914 0 55.566 23.653 23.653 23.652 23.653 55.566h-79.219Z"/></svg>');
    --icon-remove-selection-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M172.652-92.868q-32.74 0-56.262-23.522t-23.522-56.262h79.784v79.784ZM92.868-260.652v-88.087h79.784v88.087H92.868Zm0-176.087v-88.087h79.784v88.087H92.868Zm0-175.087v-88.087h79.784v88.087H92.868Zm0-176.087q0-32.479 23.522-55.849 23.522-23.37 56.262-23.37v79.219H92.868ZM260.652-92.868v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087Zm176.087 0v-79.219h88.087v79.219h-88.087Zm64.74 695.045-55.436-55.436L601.435-303.13 446.043-458.521l55.436-55.436L656.87-359.13l154.826-154.827 55.436 55.436L712.306-303.13l154.826 154.826-55.436 55.436L656.87-247.694 501.479-92.868Zm110.347-695.045v-79.219h88.087v79.219h-88.087Zm176.087 176.087v-88.087h79.219v88.087h-79.219Zm0-176.087v-79.219q31.914 0 55.566 23.653 23.653 23.652 23.653 55.566h-79.219Z"/></svg>');
    --icon-conversion-path-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M766-106.999q-47.218 0-80.544-27.892-33.326-27.891-41.891-65.718H443q-67.865 0-112.128-44.345-44.263-44.345-44.263-112.326 0-67.416 44.263-111.764Q375.135-513.391 443-513.391h77q39.135 0 64.372-25.273 25.237-25.272 25.237-64.456 0-39.184-25.237-64.336-25.237-25.153-64.372-25.153H317.001q-10.131 37.827-42.957 65.718-32.826 27.892-80.044 27.892-53.04 0-90.02-36.99T67-726.033q0-53.054 36.98-90.011 36.98-36.957 90.02-36.957 47.218 0 80.044 27.892 32.826 27.891 42.957 65.718H520q67.696 0 112.044 44.347Q676.391-670.696 676.391-603t-44.347 112.044Q587.696-446.609 520-446.609h-77q-39.304 0-64.456 25.155-25.153 25.155-25.153 64.174 0 39.584 25.153 64.736 25.152 25.153 64.456 25.153h200.565q9.565-37.827 42.391-65.718 32.826-27.892 80.044-27.892 53.04 0 90.02 36.99 36.981 36.99 36.981 90.044 0 53.054-36.981 90.011-36.98 36.957-90.02 36.957ZM194-672q23 0 38.5-15.5T248-726q0-23-15.5-38.5T194-780q-23 0-38.5 15.5T140-726q0 23 15.5 38.5T194-672Z"/></svg>');
    --icon-conversion-path-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M766-106.999q-47.218 0-80.544-27.892-33.326-27.891-41.891-65.718H443q-67.865 0-112.128-44.345-44.263-44.345-44.263-112.326 0-67.416 44.263-111.764Q375.135-513.391 443-513.391h77q39.135 0 64.372-25.273 25.237-25.272 25.237-64.456 0-39.184-25.237-64.336-25.237-25.153-64.372-25.153H317.001q-10.131 37.827-42.957 65.718-32.826 27.892-80.044 27.892-53.04 0-90.02-36.99T67-726.033q0-53.054 36.98-90.011 36.98-36.957 90.02-36.957 47.218 0 80.044 27.892 32.826 27.891 42.957 65.718H520q67.696 0 112.044 44.347Q676.391-670.696 676.391-603t-44.347 112.044Q587.696-446.609 520-446.609h-77q-39.304 0-64.456 25.155-25.153 25.155-25.153 64.174 0 39.584 25.153 64.736 25.152 25.153 64.456 25.153h200.565q9.565-37.827 42.391-65.718 32.826-27.892 80.044-27.892 53.04 0 90.02 36.99 36.981 36.99 36.981 90.044 0 53.054-36.981 90.011-36.98 36.957-90.02 36.957ZM194-672q23 0 38.5-15.5T248-726q0-23-15.5-38.5T194-780q-23 0-38.5 15.5T140-726q0 23 15.5 38.5T194-672Z"/></svg>');
    --icon-select-all-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M172.652-92.868q-32.74 0-56.262-23.522t-23.522-56.262h79.784v79.784ZM92.868-260.652v-88.087h79.784v88.087H92.868Zm0-176.087v-88.087h79.784v88.087H92.868Zm0-175.087v-88.087h79.784v88.087H92.868Zm0-176.087q0-31.914 23.522-55.566 23.522-23.653 56.262-23.653v79.219H92.868Zm167.784 527.261v-439.261h439.261v439.261H260.652Zm0 167.784v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087ZM339.87-339.87h280.26v-280.26H339.87v280.26Zm96.869 247.002v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087ZM611.826-92.868v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087ZM787.913-92.868v-79.784h79.219q0 32.479-23.653 56.131-23.652 23.653-55.566 23.653Zm0-167.784v-88.087h79.219v88.087h-79.219Zm0-176.087v-88.087h79.219v88.087h-79.219Zm0-175.087v-88.087h79.219v88.087h-79.219Zm0-176.087v-79.219q31.914 0 55.566 23.653 23.653 23.652 23.653 55.566h-79.219Z"/></svg>');
    --icon-select-all-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M172.652-92.868q-32.74 0-56.262-23.522t-23.522-56.262h79.784v79.784ZM92.868-260.652v-88.087h79.784v88.087H92.868Zm0-176.087v-88.087h79.784v88.087H92.868Zm0-175.087v-88.087h79.784v88.087H92.868Zm0-176.087q0-31.914 23.522-55.566 23.522-23.653 56.262-23.653v79.219H92.868Zm167.784 527.261v-439.261h439.261v439.261H260.652Zm0 167.784v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087ZM339.87-339.87h280.26v-280.26H339.87v280.26Zm96.869 247.002v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087ZM611.826-92.868v-79.784h88.087v79.784h-88.087Zm0-695.045v-79.219h88.087v79.219h-88.087ZM787.913-92.868v-79.784h79.219q0 32.479-23.653 56.131-23.652 23.653-55.566 23.653Zm0-167.784v-88.087h79.219v88.087h-79.219Zm0-176.087v-88.087h79.219v88.087h-79.219Zm0-175.087v-88.087h79.219v88.087h-79.219Zm0-176.087v-79.219q31.914 0 55.566 23.653 23.653 23.652 23.653 55.566h-79.219Z"/></svg>');
    --icon-account-circle-off-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M530.348-530.348ZM435.87-435.87ZM480-145.087q54.739 0 107.372-17.662 52.632-17.661 96.28-50.381-45.112-31.107-97.012-50.858-51.901-19.751-106.64-19.751t-106.261 19.935q-51.521 19.934-96.826 50.674 43.648 32.72 95.998 50.381 52.35 17.662 107.089 17.662Zm95.044-340.131-50.914-50.913q14.945-7.641 22.212-20.862 7.267-13.221 7.267-29.442 0-30.916-21.511-52.262T480-660.043q-16.043 0-29.652 7.523-13.608 7.524-20.652 21.955l-50.913-50.348q18.869-22.739 45.174-34.326 26.304-11.587 56.043-11.587 58.793 0 99.592 40.799 40.799 40.8 40.799 99.592 0 29.739-11.586 56.044-11.587 26.304-33.761 45.173ZM818.392-241.87l-56.262-56.261q25.609-40.347 39.196-86.471 13.587-46.124 13.587-95.398 0-139.739-97.587-237.326Q619.739-814.913 480-814.913q-49.111 0-94.903 13.304-45.792 13.305-85.966 40.479l-57.261-57.262q52.565-36.87 113.065-56.587 60.5-19.717 125.065-19.717 85.954 0 161.553 32.557 75.598 32.557 131.814 88.772 56.215 56.216 88.772 131.814Q894.696-565.954 894.696-480q0 64.565-19.717 125.065T818.392-241.87ZM480-65.869q-85.868 0-161.391-32.348-75.522-32.348-131.783-88.609-56.261-56.261-88.61-131.783Q65.87-394.132 65.87-480q0-66.366 20.483-129.112 20.482-62.745 59.908-115.367L23.739-848l47.522-47.522L887.305-79.478l-47.522 47.522-637.957-636.957q-28.869 41.87-42.804 89.953-13.935 48.083-13.935 98.597 0 60.03 20.826 115.894 20.826 55.865 58.348 103.251 57.38-39.475 121.846-64.107Q410.573-349.957 480-349.957q47.13 0 91.761 11.566 44.63 11.565 87.761 32.13l115.479 116.044q-58.696 59.826-134.87 92.087T480-65.869Z"/></svg>');
    --icon-account-circle-off-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M530.348-530.348ZM435.87-435.87ZM480-145.087q54.739 0 107.372-17.662 52.632-17.661 96.28-50.381-45.112-31.107-97.012-50.858-51.901-19.751-106.64-19.751t-106.261 19.935q-51.521 19.934-96.826 50.674 43.648 32.72 95.998 50.381 52.35 17.662 107.089 17.662Zm95.044-340.131-50.914-50.913q14.945-7.641 22.212-20.862 7.267-13.221 7.267-29.442 0-30.916-21.511-52.262T480-660.043q-16.043 0-29.652 7.523-13.608 7.524-20.652 21.955l-50.913-50.348q18.869-22.739 45.174-34.326 26.304-11.587 56.043-11.587 58.793 0 99.592 40.799 40.799 40.8 40.799 99.592 0 29.739-11.586 56.044-11.587 26.304-33.761 45.173ZM818.392-241.87l-56.262-56.261q25.609-40.347 39.196-86.471 13.587-46.124 13.587-95.398 0-139.739-97.587-237.326Q619.739-814.913 480-814.913q-49.111 0-94.903 13.304-45.792 13.305-85.966 40.479l-57.261-57.262q52.565-36.87 113.065-56.587 60.5-19.717 125.065-19.717 85.954 0 161.553 32.557 75.598 32.557 131.814 88.772 56.215 56.216 88.772 131.814Q894.696-565.954 894.696-480q0 64.565-19.717 125.065T818.392-241.87ZM480-65.869q-85.868 0-161.391-32.348-75.522-32.348-131.783-88.609-56.261-56.261-88.61-131.783Q65.87-394.132 65.87-480q0-66.366 20.483-129.112 20.482-62.745 59.908-115.367L23.739-848l47.522-47.522L887.305-79.478l-47.522 47.522-637.957-636.957q-28.869 41.87-42.804 89.953-13.935 48.083-13.935 98.597 0 60.03 20.826 115.894 20.826 55.865 58.348 103.251 57.38-39.475 121.846-64.107Q410.573-349.957 480-349.957q47.13 0 91.761 11.566 44.63 11.565 87.761 32.13l115.479 116.044q-58.696 59.826-134.87 92.087T480-65.869Z"/></svg>');
    --icon-account-circle-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M224.261-261.218q62.435-42.869 123.869-65.804 61.435-22.935 132.116-22.935 70.68 0 132.889 23.369 62.208 23.369 123.604 65.37 42.87-54.565 60.522-106.997T814.913-480q0-142.313-96.271-238.613-96.271-96.3-238.543-96.3-142.273 0-238.642 96.3-96.37 96.3-96.37 238.613 0 59.304 17.885 111.601 17.885 52.296 61.289 107.181Zm255.553-184.825q-59.599 0-99.902-40.534-40.303-40.534-40.303-99.761t40.489-99.858q40.489-40.63 100.088-40.63t99.902 40.816q40.303 40.817 40.303 100.044t-40.489 99.575q-40.489 40.348-100.088 40.348Zm.324 380.174q-84.964 0-160.445-32.512-75.48-32.513-132.132-89.152-56.652-56.64-89.172-131.916-32.52-75.276-32.52-160.864 0-84.948 32.63-160.274 32.631-75.326 89.109-131.805 56.479-56.478 131.782-89.391 75.304-32.913 160.923-32.913 84.948 0 160.274 32.913 75.326 32.913 131.805 89.391 56.478 56.479 89.391 131.884 32.913 75.405 32.913 160.37 0 84.964-32.913 160.508-32.913 75.543-89.391 132.022-56.479 56.478-131.884 89.109-75.405 32.63-160.37 32.63ZM480-145.087q53.304 0 102.978-14.87 49.674-14.869 100.674-53.173-51.565-35.435-101.174-53.022Q532.87-283.739 480-283.739t-102.195 17.587q-49.326 17.587-100.892 53.022 51 38.304 100.392 53.173 49.391 14.87 102.695 14.87Zm0-367.739q32.229 0 52.919-20.37 20.69-20.369 20.69-52.956t-20.69-53.239q-20.69-20.652-52.919-20.652t-52.919 20.652q-20.69 20.652-20.69 53.239 0 32.587 20.69 52.956 20.69 20.37 52.919 20.37Zm0-73.609Zm.565 372.305Z"/></svg>');
    --icon-account-circle-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M224.261-261.218q62.435-42.869 123.869-65.804 61.435-22.935 132.116-22.935 70.68 0 132.889 23.369 62.208 23.369 123.604 65.37 42.87-54.565 60.522-106.997T814.913-480q0-142.313-96.271-238.613-96.271-96.3-238.543-96.3-142.273 0-238.642 96.3-96.37 96.3-96.37 238.613 0 59.304 17.885 111.601 17.885 52.296 61.289 107.181Zm255.553-184.825q-59.599 0-99.902-40.534-40.303-40.534-40.303-99.761t40.489-99.858q40.489-40.63 100.088-40.63t99.902 40.816q40.303 40.817 40.303 100.044t-40.489 99.575q-40.489 40.348-100.088 40.348Zm.324 380.174q-84.964 0-160.445-32.512-75.48-32.513-132.132-89.152-56.652-56.64-89.172-131.916-32.52-75.276-32.52-160.864 0-84.948 32.63-160.274 32.631-75.326 89.109-131.805 56.479-56.478 131.782-89.391 75.304-32.913 160.923-32.913 84.948 0 160.274 32.913 75.326 32.913 131.805 89.391 56.478 56.479 89.391 131.884 32.913 75.405 32.913 160.37 0 84.964-32.913 160.508-32.913 75.543-89.391 132.022-56.479 56.478-131.884 89.109-75.405 32.63-160.37 32.63ZM480-145.087q53.304 0 102.978-14.87 49.674-14.869 100.674-53.173-51.565-35.435-101.174-53.022Q532.87-283.739 480-283.739t-102.195 17.587q-49.326 17.587-100.892 53.022 51 38.304 100.392 53.173 49.391 14.87 102.695 14.87Zm0-367.739q32.229 0 52.919-20.37 20.69-20.369 20.69-52.956t-20.69-53.239q-20.69-20.652-52.919-20.652t-52.919 20.652q-20.69 20.652-20.69 53.239 0 32.587 20.69 52.956 20.69 20.37 52.919 20.37Zm0-73.609Zm.565 372.305Z"/></svg>');
    --icon-open-width-dim:url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M480-53.999 303.434-230.565 361-288.13l79.391 78.825v-174.304h79.218v174.304L599-288.13l57.566 57.565L480-53.999ZM225.565-308.434 53.999-480l172.566-172.566L284.13-595l-74.825 75.391h174.304v79.218H209.305L283.13-366l-57.565 57.566Zm508.87 0L676.87-366l74.39-74.391H577.391v-79.218H751.26L676.87-594l57.565-57.566L906.001-480 734.435-308.434ZM440.391-577.391V-751.26L366-676.87l-57.566-57.565L480-906.001l171.566 171.566L594-676.87l-74.391-74.39v173.869h-79.218Z"/></svg>');
    --icon-open-width-lit:url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M480-53.999 303.434-230.565 361-288.13l79.391 78.825v-174.304h79.218v174.304L599-288.13l57.566 57.565L480-53.999ZM225.565-308.434 53.999-480l172.566-172.566L284.13-595l-74.825 75.391h174.304v79.218H209.305L283.13-366l-57.565 57.566Zm508.87 0L676.87-366l74.39-74.391H577.391v-79.218H751.26L676.87-594l57.565-57.566L906.001-480 734.435-308.434ZM440.391-577.391V-751.26L366-676.87l-57.566-57.565L480-906.001l171.566 171.566L594-676.87l-74.391-74.39v173.869h-79.218Z"/></svg>');
    --icon-rotate-left-dim:url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M435-61.347q-51.957-7-100.066-25.848-48.108-18.848-88.674-51.674l57.697-57.566q31.434 24 64.304 36.935Q401.13-146.565 435-141.13v79.783Zm90 0v-79.783q108.304-21.566 179.109-102.087 70.804-80.522 70.804-195.261 0-120.782-80.848-207.282-80.847-86.5-202.195-86.5h-17.174L542.957-664l-57.566 57.566L318.825-773l166.566-166.566 57.566 56.436-70.522 71.086h18.305q76.13 0 142.478 29.696 66.348 29.696 115.631 80.674 49.282 50.978 77.565 118.739 28.282 67.761 28.282 144.457 0 145.652-93.239 250.609Q668.218-82.912 525-61.347ZM183.26-201.304q-30.261-39.695-49.609-88.739-19.347-49.044-25.782-103.435h79.653q5 37.435 18.217 71.022 13.218 33.586 35.652 63.021l-58.131 58.131Zm-75.391-282.174q5.869-51.696 25-99.739 19.13-48.044 50.391-90.87l58.697 55.435q-22.435 33-35.652 66.87-13.218 33.869-18.783 68.304h-79.653Z"/></svg>');
    --icon-rotate-left-lit:url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M435-61.347q-51.957-7-100.066-25.848-48.108-18.848-88.674-51.674l57.697-57.566q31.434 24 64.304 36.935Q401.13-146.565 435-141.13v79.783Zm90 0v-79.783q108.304-21.566 179.109-102.087 70.804-80.522 70.804-195.261 0-120.782-80.848-207.282-80.847-86.5-202.195-86.5h-17.174L542.957-664l-57.566 57.566L318.825-773l166.566-166.566 57.566 56.436-70.522 71.086h18.305q76.13 0 142.478 29.696 66.348 29.696 115.631 80.674 49.282 50.978 77.565 118.739 28.282 67.761 28.282 144.457 0 145.652-93.239 250.609Q668.218-82.912 525-61.347ZM183.26-201.304q-30.261-39.695-49.609-88.739-19.347-49.044-25.782-103.435h79.653q5 37.435 18.217 71.022 13.218 33.586 35.652 63.021l-58.131 58.131Zm-75.391-282.174q5.869-51.696 25-99.739 19.13-48.044 50.391-90.87l58.697 55.435q-22.435 33-35.652 66.87-13.218 33.869-18.783 68.304h-79.653Z"/></svg>');
    --icon-transform-dim:url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M633.782-20.782 472.173-181.26l51.609-51.61 73.217 73.783v-137.304H363.001q-30.967 0-51.984-20.643Q290-337.676 290-369.392v-221.781H73.782v-72.436H290v-137.304l-73.782 73.783-50.479-51.61 160.479-161.044L487.827-778.74l-51.609 51.61-73.217-73.783v431.521h523.217v73.001H670v137.304l73.782-73.783 51.044 51.61L633.782-20.782Zm-36.783-408.61v-161.781H423.001v-72.436h173.998q30.967 0 51.984 20.675Q670-622.26 670-591.173v161.781h-73.001Z"/></svg>');
    --icon-transform-lit:url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M633.782-20.782 472.173-181.26l51.609-51.61 73.217 73.783v-137.304H363.001q-30.967 0-51.984-20.643Q290-337.676 290-369.392v-221.781H73.782v-72.436H290v-137.304l-73.782 73.783-50.479-51.61 160.479-161.044L487.827-778.74l-51.609 51.61-73.217-73.783v431.521h523.217v73.001H670v137.304l73.782-73.783 51.044 51.61L633.782-20.782Zm-36.783-408.61v-161.781H423.001v-72.436h173.998q30.967 0 51.984 20.675Q670-622.26 670-591.173v161.781h-73.001Z"/></svg>');

    /* Note rotated CCW 90 degree.  *//*
    --icon-output-circle-dim: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" transform="rotate(-90)" fill="darkslategray" height="48" viewBox="0 -960 960 960" width="48"><path d="M480-64.869 279.869-265 336-320.566l104.391 103.391V-630h79.218v412.825L624-320.566 680.131-265 480-64.869ZM135.826-263.39q-30.853-48.687-46.73-103.844Q73.216-422.393 73.216-480q0-84.286 32.065-158.621 32.066-74.336 86.913-129.184 54.848-54.847 129.184-86.913Q395.714-886.783 480-886.783q84.286 0 158.621 32.065 74.336 32.066 129.184 86.913 54.847 54.848 86.913 129.257 32.065 74.41 32.065 158.78 0 57.638-15.87 112.79-15.869 55.152-46.739 103.587l-59.261-56.697q21.043-37.608 31.847-77.586 10.805-39.978 10.805-82.326 0-136.545-95.47-232.055-95.469-95.51-231.956-95.51t-231.812 95.51Q153.001-616.545 153.001-480q0 42.402 10.521 82.853 10.522 40.451 31 77.059l-58.696 56.697Z"/></svg>');
    --icon-output-circle-lit: url('data:image/svg+xml;charset=utf8,<svg xmlns="http://www.w3.org/2000/svg" transform="rotate(-90)" fill="ivory"         height="48" viewBox="0 -960 960 960" width="48"><path d="M480-64.869 279.869-265 336-320.566l104.391 103.391V-630h79.218v412.825L624-320.566 680.131-265 480-64.869ZM135.826-263.39q-30.853-48.687-46.73-103.844Q73.216-422.393 73.216-480q0-84.286 32.065-158.621 32.066-74.336 86.913-129.184 54.848-54.847 129.184-86.913Q395.714-886.783 480-886.783q84.286 0 158.621 32.065 74.336 32.066 129.184 86.913 54.847 54.848 86.913 129.257 32.065 74.41 32.065 158.78 0 57.638-15.87 112.79-15.869 55.152-46.739 103.587l-59.261-56.697q21.043-37.608 31.847-77.586 10.805-39.978 10.805-82.326 0-136.545-95.47-232.055-95.469-95.51-231.956-95.51t-231.812 95.51Q153.001-616.545 153.001-480q0 42.402 10.521 82.853 10.522 40.451 31 77.059l-58.696 56.697Z"/></svg>');
    /**/
}

*, *::before, *::after {
    box-sizing: border-box;
}

/* Overwrite some defaults. */
* {
    margin: 0;
    padding: 0;
    border: 0;
    user-select: auto;
    z-index: 0;
    /* cursor: default; */
}

*:focus {
    outline: none;
}

body {
    font-family: Tahoma, Geneva, sans-serif;  /* keep */
    font-size: 2vh; /* keep */
    -webkit-font-smoothing: antialiased;
}

img, picture, video, canvas, svg {
	display: block;
}

input, button, textarea, select {
    font: inherit;
}

p, h1, h2, h3, h4, h5, h6 {
    overflow-wrap: break-word;
}

/* Overlay to disable screen when bussy. */
#overlay {
  user-select: none;
  position: fixed;
  display: none;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0,0,0,0.5);
  z-index: 99999999;  /* 8x9 should be the biggest. */
}
#overlay div {
  user-select: none;
  position: absolute;
  white-space : nowrap;     /* Wrapping needs to be off. */
  top: 50%;
  left: 50%;
  font-size: 6vmin;
  color: Orange;
  transform: translate(-50%,-50%);
  -ms-transform: translate(-50%,-50%);
}

/* A special line.gValues is used to carry globals from server to browser. */
.gValues {
    visibility: hidden;
}

/* Generic classes. */
.invisible {
    visibility: hidden;
}
.invisirun {
    visibility: hidden;
}
.spaceDown {
   visibility: hidden;
}
.nodrop {
    cursor: no-drop;
}

/* Body */
body {
    overflow: hidden;  /* Todo: this should not be need! Remove. Fix scroll bars on body. */
    position: static;
}

h2.msg {
    margin: 0.5rem 1rem;
}

/* Todo: Add things like: ''@media only screen and (max-width: 1000px)'' */

/* Area types. */
#bar {
    display: flex;
    flex-flow: row wrap;
    justify-content: left;
    align-items: center;
    background: lightgrey;
    padding: .35vh .5vw .65vh .5vw;
    width: 100%;
    height: 5vh;
}
/* Image Scroller container. */
#srl {
    background: #dde; /* Nice background for the white floorplans */
    display: flex;
    overflow: scroll;
    width: 100%;
    height: 92vh; /* Makes 100vh for #bar and #srl. */
}
/* Status bar at the bottom. */
#sts {
    display: block;
    flex-flow: row wrap;
    justify-content: left;
    align-items: center;
    background: lightgrey;
    padding: .5vh .5vw;
    width: 100%;
    height: 3vh; /* Makes 100vh for #bar and #srl. */
}

/* Allow text select (and copy) for the <select> objects. Comes in handy for
// getting the label of the floorplan for example.
*/
#bar select {
    user-select: all;
}

/* Menu bar elements. */
#bar * { /* Set a base to work from. */
    background-color:  gray;
    color: white;
    flex-basis: 15vw;
    height: 4vh;
    border-width: .1vh;
    border-style: solid;
    border-color: #CCC #333 #333 #CCC;
    border-radius: .5vh;
    padding: 0 .5vw;
}
#bar #ttr {  /* Push everything after this to the right. */
    margin-left: auto;
    visibility: hidden;
}

/* Add some embelishment icons to help, dropdowns (selects), Logout button, and download buttons. */
#bar #help,
#bar select,
#bar input[title^="Log"],
#bar a[id^="dl_"],
#bar span.strip input[name^='--icon'] {
    background-repeat:   no-repeat;
    background-size:     1.28em 1.28em;
    padding-right:       1.4em;
}

/* Variable lenght. */
#bar select,
#bar input[title^="Log"],
#bar a[id^="dl_"] {
    background-position: right center;
    border-right:        .4em solid transparent;
}

/* Fixed length. Icon, Help "button". */
#bar #help,
#bar span.strip input[name^='--icon'] {
    background-position: center center;
    width:               2em;
}
#bar span.strip input[name='--icon-delete'] {
    background-image: var(--icon-delete-dim);
}
#bar span.strip input[name='--icon-delete']:hover,
#bar span.strip input[name='--icon-delete'].selected {
    background-image: var(--icon-delete-lit);
}

#bar span.strip input[name='--icon-add-box'] {
    background-image: var(--icon-add-box-dim);
}
#bar span.strip input[name='--icon-add-box']:hover,
#bar span.strip input[name='--icon-add-box'].selected {
    background-image: var(--icon-add-box-lit);
}

/* Remove Selection */
#bar span.strip input[name='--icon-remove-selection'] {
    background-image: var(--icon-remove-selection-dim);
}
#bar span.strip input[name='--icon-remove-selection']:hover,
#bar span.strip input[name='--icon-remove-selection'].selected {
    background-image: var(--icon-remove-selection-lit);
}

/* Conversion Path */
#bar span.strip input[name='--icon-conversion-path'] {
    background-image: var(--icon-conversion-path-dim);
}
#bar span.strip input[name='--icon-conversion-path']:hover,
#bar span.strip input[name='--icon-conversion-path'].selected {
    background-image: var(--icon-conversion-path-lit);
}

/* Select All */
#bar span.strip input[name='--icon-select-all'] {
    background-image: var(--icon-select-all-dim);
}
#bar span.strip input[name='--icon-select-all']:hover,
#bar span.strip input[name='--icon-select-all'].selected {
    background-image: var(--icon-select-all-lit);
}

/* Open Width */
#bar span.strip input[name='--icon-open-width'] {
    background-image: var(--icon-open-width-dim);
}
#bar span.strip input[name='--icon-open-width']:hover,
#bar span.strip input[name='--icon-open-width'].selected {
    background-image: var(--icon-open-width-lit);
}

/* Rotate Left */
#bar span.strip input[name='--icon-rotate-left'] {
    background-image: var(--icon-rotate-left-dim);
}
#bar span.strip input[name='--icon-rotate-left']:hover,
#bar span.strip input[name='--icon-rotate-left'].selected {
    background-image: var(--icon-rotate-left-lit);
}

/* Transform */
#bar span.strip input[name='--icon-transform'] {
    background-image: var(--icon-transform-dim);
}
#bar span.strip input[name='--icon-transform']:hover,
#bar span.strip input[name='--icon-transform'].selected {
    background-image: var(--icon-transform-lit);
}

/* Download anchor embelishment. */
#bar a[id^="dl_"] {
    background-size: 1.2em 1.4em;
    background-image: var(--icon-download-dim);
}
#bar a[id^="dl_"]:hover {
    background-image: var(--icon-download-lit);
}

#bar #help, #bar a[id^="dl_"], #bar #ttr {  /* Help, download links and divider. */
    flex-basis: auto;
}
#bar #help, #bar a[id^="dl_"] {  /* Help and download links. */
    text-decoration: none; /* Remove underline of links in menu bar. */
}

/* Logout input box embelishment. */
#bar input[title^="Logout"] {
    background-image: var(--icon-account-circle-off-dim);
}
#bar input[title^="Logout"]:hover {
    background-image: var(--icon-account-circle-off-lit);
}
/* Login input box embelishment. */
#bar input[title^="Login"] {
    background-image: var(--icon-account-circle-dim);
}
#bar input[title^="Login"]:hover {
    background-image: var(--icon-account-circle-lit);
}

/* Help button. */
#bar #help {
    width: 2em;
    background-position: center center;
    background-image: var(--icon-info-dim);
}
#bar #help:hover {
    background-image: var(--icon-info-lit);
}

#bar div,
#bar a {  /* Put text center center. */
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
}
#bar a {
    background-color:  lightgray;
    color:             gray;
}
#bar a:hover {
    background-color:  darkgray;
    color:             dimgray;
}

/* Drop down (select) embelishment. */
#bar select {
    appearance: none; -moz-appearance: none; -webkit-appearance: none;  /* No arrow(s) in input. */
    text-align: center;
    background-image: var(--icon-arrow-drop-down-circle-dim);
}
#bar select:hover, #bar select[data-id="pon"]:hover, #bar select[data-id="pin"]:hover {
    background-image: var(--icon-arrow-drop-down-circle-lit);
}
/* The pin and pon inputs are orange and green, therefore this: */
#bar select[data-id="pin"] {
    background-image: var(--icon-arrow-drop-down-circle-orn);
}
#bar select[data-id="pon"] {
    background-image: var(--icon-arrow-drop-down-circle-grn);
}

#bar select :disabled {
    color: dimgray; /* Note, #bar background is gray, dimgray is close to that. */
    /* font-style: italic; */
}

/* Stip with icons: */
#bar span.strip { /* Stip is just a holder for icons <input type="button"...>. */
    background-color:  transparent;
    margin: 0;
    padding: 0;
    border: 0;
    flex-basis: auto;
}
#bar span.strip input[type="button"],
#bar button { /* Input Button stuff.  */
    background-color:  gray;
    color: darkslategray;
    flex-basis: 2vw;
    min-width: 4vw;
}
#bar span.strip input[type="button"]:hover,
#bar button:hover {
    background-color:  gray;
}
#bar span.strip input[type="button"].selected {
    background-color:  gray;
}
#bar span.strip input[type="button"]:hover ,
#bar span.strip input[type="button"]:active,
#bar span.strip input[type="button"].selected,
#bar button.hover,
#bar button.selected,
#bar button:active {
    color: white; /* Make text white. */
}
#bar span.strip input[type="button"]:active,
#bar button:active { /* Todo: do we even use '#bar button's? */
    box-shadow: 0 -.1vh dimgray;
    transform: translateY(.1vh);   /* Both v-offset need to be the same. */
}
#bar span.strip input[type="button"].selected {
    box-shadow: 0 -.25vh dimgray;
    transform: translateY(.25vh);  /* Both v-offset need to be the same. */
}

#sts a#StatusClear {
    background-color: darkgreen;
    color: white;
    float: right;
    padding: 0 .5vw;
}

#sts a#ErrorReload {
    background-color: darkred;
    color: white;
    float: right;
    padding: 0 .5vw;
}

/* mouse over satus bar ERROR link */
#sts a#ErrorReload:hover::after {
  color: yellow;
  content: " (herstart)";
}


/* Menu bar items special properties. */

/* Container for <svg> and HTML elements like <input> that make up the image. */
#img {
    /* background:transparent; */
    overflow:visible;               /* Take as much space as needed, the #srl will scrollbar it. */
    background-origin: content-box; /* Pixels be here. */
    background-position: 0 0;
    background-repeat: no-repeat;
    height: 200%;                   /* So that added <input> elements won't change the size. */
    position:relative               /* Allow children absolute postion relative to #img.  */
}

/* Select drop-downs and text input overlaying all SVG. */
#img select, #img input {
    position      : relative;
    display       : block;
    padding       : 0 .2vh;
    text-align    : center;
    outline-width : .3vh;
    outline-style : solid;
    outline-color : blue;
    z-index       : 999;     /* > SVG z-indexes. */
}
#img select {
    font-size       : 2vh;  /* Makes font zoom resistant. */
    /* Try to remove scroll bar. Just voodoo for all browsers. */
    overflow-y      : auto;
    scrollbar-width : none;
}
#img input {
    font-size     : 2vh  /* Same size as map. */
}
/* Box to put text inside and measure.  */
#img .overselcon {
    white-space : nowrap;     /* Wrapping needs to be off. */
    z-index     : 999;        /* > SVG z-indexes. */
}

/* Since measure text is used for the oversel they need the same fontsize. */
#img .overselcon, #img .overselcon select, #img .overselcon select option {
    font-size   : 1.5vh;
}

svg {
  user-select: none; /* Don't allow slection of text in any SVG areas. */
}

#img>svg {
    border: none; /* Don't set a border: it messes up scaling in ffox and crashes chrome */
    z-index: 9;
}
#loupe svg {
    z-index: 99;  /* Loupe over (map/base) SVG. */
}

svg .nocatch {
    pointer-events: none; /* Don't catch any mouse events. */
}

/* Point overlay: xy.
// Note the ''#img>svg'' prefix. This selects the main (map) SVG, i.e., not the loupe.
*/
#img>svg circle[class^="xy"],
#img>svg circle[class*=" xy"] {
    opacity: 0.5;
    stroke-width: var(--svg-line-width);
    stroke: blue;
    fill: transparent;
    /* transition: stroke-width 0.4s, fill 0.4s; */
}
#img>svg circle[class^="xy"]:hover,
#img>svg circle[class*=" xy"]:hover {
    stroke-width: var(--svg-hover-line-width);
    fill: url(#cross);
}
#img>svg circle[class^="xy"].overactive,
#img>svg circle[class*=" xy"].overactive,
#img>svg circle[class^="xy"].overactive:hover,
#img>svg circle[class*=" xy"].overactive:hover {
    fill: url(#cross);
    visibility: visible;
}

/* For blinking we might use an opacity of 0, this will keep the thing clickable. */
.nopacity {
    opacity: 0;
}

/* Line Segment overlay: ls. */
#img>svg line[class^="ls"],
#img>svg line[class*=" ls"] {
    opacity: 0.2;
    stroke-width: var(--svg-line-width);
    stroke: url(#checkers);
    fill: transparent;
    /* transition: opacity 0.4s; */
}
#img>svg line[class^="ls"]:hover,
#img>svg line[class*=" ls"]:hover {
    stroke-width: var(--svg-highlight-line-width);
    opacity: 0.5;
}
#img>svg line[class^="ls"].overactive,
#img>svg line[class*=" ls"].overactive,
#img>svg line[class^="ls"].overactive:hover,
#img>svg line[class*=" ls"].overactive:hover {
    fill: transparent;
    stroke: url(#checkers);
    stroke-width: var(--svg-active-line-width);
    /* stroke-dasharray: 20,10,5,5,5,10; */
    visibility: visible;
    opacity: 1;
}

/* Stamp stuff. */
#img>svg path[class^="stamp"],
#img>svg path[class*=" stamp"] { /* The stamp, i.e. the walls. */
    stroke-width: var(--svg-active-over-width);
    stroke:       url(#contrast); /* purple; */
    opacity:      .75;
    fill:         none;
}
#img>svg path[class^="_stamp"].sa.overactive,
#img>svg path[class*=" _stamp"].sa.overactive {
    stroke:  none;
    fill:    lightblue;
    opacity: .3;
}

/* Service Area overlay: sa. */
#img>svg path[class^="sa"],
#img>svg path[class*=" sa"] {
    fill: transparent;
    stroke-width: var(--svg-over-width);
    stroke: black;
    /* transition: opacity 0.4s, stroke 0.7s; */
}
#img>svg path[class^="sa"]:hover,
#img>svg path[class*=" sa"]:hover {
    /* opacity: 0.5; */
}
#img>svg path[class^="sa"].overactive,
#img>svg path[class*=" sa"].overactive,
#img>svg path[class^="sa"].overactive:hover,
#img>svg path[class*=" sa"].overactive:hover {
    /* transition: stroke 0s; */
    stroke: url(#checkers);
    stroke-width: var(--svg-active-over-width);
    visibility: visible;
}
#img>svg path[class^="sa"].addhighlight,
#img>svg path[class*=" sa"].addhighlight,
#img>svg path[class^="sa"].addhighlight:hover,
#img>svg path[class*=" sa"].addhighlight:hover {
    opacity: 0.3;
    fill: limegreen;
}
#img>svg path[class^="sa"].rmhighlight,
#img>svg path[class*=" sa"].rmhighlight,
#img>svg path[class^="sa"].rmhighlight:hover,
#img>svg path[class*=" sa"].rmhighlight:hover {
    opacity: 0.2;
    fill: red;
}
/*
.debugrect {
    stroke: purple;
    stroke-width: var(--svg-active-line-width);
    fill: none;
    pointer-events: none;
}
*/
#img>svg text[class^="part_text"],
#img>svg text[class*=" part_text"],
#img>svg text[class^="part_text"]:hover,
#img>svg text[class*=" part_text"]:hover {
    fill: black;
    font-weight: bold;
    text-anchor: middle;
    dominant-baseline: middle;
    stroke: none;
    pointer-events: none; /* Don't catch any mouse events. */
}
#img>svg text[class^="woz_text"],
#img>svg text[class*=" woz_text"],
#img>svg text[class^="woz_text"]:hover,
#img>svg text[class*=" woz_text"]:hover {
    text-transform: lowercase;
    text-anchor: middle;
    dominant-baseline: middle;
    stroke: none;
    pointer-events: none; /* Don't catch any mouse events. */
}

#img>svg path[class^="sa"].hatch,
#img>svg path[class*=" sa"].hatch,
#img>svg path[class^="sa"].hatch:hover,
#img>svg path[class*=" sa"].hatch:hover {
    fill: url("#lhatch");
}
#img>svg path[class^="sa"].block,
#img>svg path[class*=" sa"].block,
#img>svg path[class^="sa"].block:hover,
#img>svg path[class*=" sa"].block:hover {
    fill: url("#rhatch");
}
#img>svg path[class^="sa"].hatch.block,
#img>svg path[class*=" sa"].hatch.block,
#img>svg path[class^="sa"].hatch.block:hover,
#img>svg path[class*=" sa"].hatch.block:hover {
    fill: url("#xhatch");
}

/* Overlays can be too thin for some purposes, so we make can them fat. */
#img>svg path[class^="sa"].overactive.overfat,
#img>svg path[class*=" sa"].overactive.overfat {
    stroke-width: var(--svg-active-over-width);
}

/* Text. Text "belong" to other objects, e.g.: text_poly_56345 belongs to poly_56345. */
#img>svg text[class^="text_"],
#img>svg text[class*=" text_"] {
    font-size: 2vh;
    color: darkslateblue;
    /* transition: opacity 10s; */
    pointer-events: none; /* Don't catch any mouse events, ever. */
}
/* Txthlt is for SVG boxes behind a text to make them more ledgable. */
#img>svg .txthlt {
    opacity: 0.8;
    fill: white;
    pointer-events: none; /* Don't catch any mouse events, ever. */
}

/* Since we place lines by hand, make them all butt ended. */
svg line {
    stroke-linecap: butt;
}

/* Line. */
#img>svg line[class^="line"],
#img>svg line[class*=" line"] {
    stroke: red;
    opacity: 0.9;
    stroke-width: var(--svg-line-width);
    fill: transparent;
    /* transition: stroke 10s;  /* Edit.js sets ''stroke:deeppink''. */
}

#img>svg line[class^="line"].pmatshighline,
#img>svg line[class*=" line"].pmatshighline,
#img>svg line[class^="line"].pmatshighline:hover,
#img>svg line[class*=" line"].pmatshighline:hover {
    /* transition: stroke 0s; */
    stroke: magenta; /* #0099CC; */
}
#img>svg line[class^="line"].rmhighline,
#img>svg line[class*=" line"].rmhighline,
#img>svg line[class^="line"].rmhighline:hover,
#img>svg line[class*=" line"].rmhighline:hover {
    /* transition: stroke 0s; */
    stroke: red;
}
#img>svg line[class^="line"].mvhighline,
#img>svg line[class*=" line"].mvhighline,
#img>svg line[class^="line"].mvhighline:hover,
#img>svg line[class*=" line"].mvhighline:hover {
    /* I ♥ fuyuzakura colors: #562135 #c3829e #e9b1cd #ffe7de #fcd1d7 */
    stroke: #562135;
}
#img>svg line[class^="line"].addhighline,
#img>svg line[class*=" line"].addhighline,
#img>svg line[class^="line"].addhighline:hover,
#img>svg line[class*=" line"].addhighline:hover {
    /* transition: stroke 0s; */
    stroke: limegreen;
}

/* Rect. */
#img>svg rect[class^="rect"],
#img>svg rect[class*=" rect"] {
    stroke-width: var(--svg-box-width);
    stroke: darkgreen;
    fill: transparent;
    /* transition: opacity 10s; */
}

/* Poly. */
#img>svg path[class^="poly"],
#img>svg path[class*=" poly"] {
    /* Stroke and fill should alwyas be set by functions in svggen.go. */
    opacity: .6; /* Make them transparend to show the underlaying pixels. */
    /* transition: opacity 10s;  */
}

/* Loupe related styles. */

/* Makes it easier to correlated dropdown boxes with the color inside the loupe. */
.pon, #bar [data-id="pon"] {
    background-color: darkgreen;  /* Dropdown box. */
    stroke: darkgreen;            /* Map outlines. */
    fill: none;
}
.pin, #bar [data-id="pin"] {
    background-color: darkorange;
    stroke: darkorange;
    fill: none;
}

/* Loupe it self. */
#loupe {
    opacity: 0.4;
    background: #AFA3;
    display:inline-block;
    box-sizing: border-box;
    position: absolute;
    top: 0; left: 0;
    overflow:hidden;
    padding: 0; margin: 0;
    font-size: 0px;
    pointer-events: none;
}
#loupebg {
    display:inline-block;
    position:relative;
}
.loupebglayer {
    position: absolute;
    padding: 0; margin: 0;
    border: 0.12%;  /* Todo: in pixels? */
}

/* Make circle always catch pointer EVENTS on infill. */
#loupe circle {
    pointer-events: fill;
}

/**** Pin/pon layer styles ****/

/* Hover borders for pin and pon layers. */
#loupe circle.pon:hover {
    stroke: green;
    stroke-width: var(--svg-loupe-hover-line-width);
}
#loupe circle.pin:hover {
    stroke: orange;
    stroke-width: var(--svg-loupe-hover-line-width);
}

/* Feature pin border. */
#loupe circle.pin.feature {
    stroke-dasharray: .0416;
    /* fill: red; */
}
.O_Mark.feature.typeP {
    stroke-dasharray: .0411;
    stroke-width: var(--svg-loupe-active-line-width);
    stroke: lightgray;
}

/* By default, loupe calsses are invisible. */
#loupe circle.ldot,
#loupe path.lpoly {
    visibility: hidden;
}
/* Set an ldot or lpoly to pon or pin to unhide them. */
#loupe circle.ldot.pin,
#loupe path.lpoly.pin {
    visibility: visible;
}
#loupe circle.ldot.pon,
#loupe path.lpoly.pon {
    visibility: visible;
}

/* Pons and pins on the underlaying map. */
#img>svg path.pin,
#img>svg path.pon {
    visibility: visible;
    stroke-width: var(--svg-loupe-line-width);
    opacity: 0.6;
}

#img>svg path.pin {
    stroke: darkorange;
}

#img>svg path.pon {
    stroke: darkgreen;
}

/* Alternate fill: cadetblue; indianred; slategray; */

/* O_Marks are little dots on the underlaying SVG map. */
.O_Mark {
    stroke: none;
    visibility: hidden;
}
/* Only a few types are visible.  */
.O_Mark.pin.typeP,
.O_Mark.pin.typeA,
.O_Mark.pin.typeS {
    opacity: 0.9;
    visibility: visible;
}

/* Set colors for pin types. */
.pin.typeP {
    fill: royalblue;
}

.pin.typeA {
    fill: slategray;
}

.pin.typeS {
    fill: darkorange;
}

/* Set colors for poin types. (Only selected pons will be visible.) */
.pon.typeS {
    fill: darkgreen;
}

/* RSP pins are put in the SVG as lines with class rsp_... */
svg line[class^="rsp_"],
svg line[class*=" rsp_"] {
    visibility: hidden; /* Normally you want this hidden. */
    /* DEBUG ...
    visibility:   visible;
    stroke:       red;
    stroke-width: var(--svg-loupe-hover-line-width);
   */
}

/* The Overview screen has a thumb (1/6th) sized SVG map
// followed by some HTML wrapped in a texty span.
*/
svg.thumb {
    float: left;
    vertical-align: top;
    margin-right: 0.5rem;
}

#texty {
    font-size: 1vh;
}

#texty .ovrv-header h1{
    margin: 0.2vh;
}

#texty .ovrv-header h2{
    margin: 0.2vh;
}

#texty dl, #texty dt, #texty dd {
}

#texty .appdsc {
    background: white;
    border: .1px solid gray;
    border-radius: 1vh;
    padding: 0.5vh;
    clear: both;
    margin: 1vh;
}

#texty .appcap {
    margin-bottom: 0.5vh;
}

#texty .appcap h2 {
    font-weight: normal;
    margin-top: 0.5vh;
}

#texty .appcap h3 {
    font-weight: normal;
    margin-top: 0.5vh;
    color: #666;
}

#texty table {
    padding: 1vh;
    border-collapse: collapse;
}

#texty tr {
}

#texty tbody {
    border-bottom: 0;
}

#texty thead {
    background-color: lightgray;
}

#texty th {
    vertical-align: top;
    padding: 1vh;
}

#texty tbody th {
    text-align: left;
}

#texty td {
    text-align: left;
    vertical-align: top;
    padding: 0.5vh 1vh;
}

#texty td.la {
    text-align: left;
}

#texty td.ra {
    text-align: right;
}

#texty td.ca {
    text-align: center;
}


/* 3D elements */

.storysign {
    width:             23px; /* Note: 1px == 0.1 meter. */
    height:            10px;
    top:               0.5px;
    box-shadow:        0px 0px .px rgba(63,63,63,0.6);
    border:            .3px solid rgba(63,0,127,0.4);
    background-color:  rgba(63,0,127,.3);
    color:             rgba(128,255,128,0.8);
    font-family:       Helvetica, sans-serif;
    text-align:        center;
    line-height:       normal;
    cursor:            default;
}

.storysign .number {
    position:     absolute;
    top:          0px;
    left:         0.6px;
    font-size:    3px;
}

.storysign .height {
    position:     absolute;
    top:          2.5px;
    left:         3.5px;
    font-size:    5px;
}

/* Login Failed, show on password box. Loginfailed is active for about 1 second. */
#bar input.loginfailed {
    background-color: darkred;
    border: 0.2vh solid red;
}

/* WOZ merge screen */
#wozmerge {
    color: black;
    font-size: 100%;
}
#wozmerge th.above {
    font-size: 1em;
}
#wozmerge .above.p2g {
    background-color: #BCF5A9;
}
#wozmerge .above.woz {
    background-color: #F3E2A9;
}
#wozmerge .header {
    display: inline-block;
    max-width: 75vw;
    border: 0.1vh solid lightgray;
    border-radius: 1vh;
    background-color: white;
    margin: 1vh;
    padding: 1vh 1.5vh;
    font-size: 0.75em;
}
#wozmerge .header h1 {
    padding-bottom: 1vh;
    font-size: 1em;
}
#wozmerge .header b,
#wozmerge .header span {
    font-size: 0.75em;
}
#wozmerge table {
    border-radius: 1vh;
    border-collapse: collapse;
    margin: 1vh;
    background-color: #eee;
}
#wozmerge tr:first-of-type th:first-of-type {
  border-top-left-radius: 1vh;
}
#wozmerge tr:first-of-type th:last-of-type {
  border-top-right-radius: 1vh;
}
#wozmerge tr:last-of-type td:first-of-type {
  border-bottom-left-radius: 1vh;
}
#wozmerge tr:last-of-type td:last-of-type {
  border-bottom-right-radius: 1vh;
}
#wozmerge th {
    position: sticky;
    top: 0;
    vertical-align: bottom;
    padding: .25vh;
    background-color: #eee;
    font-size: 0.5em;
}
#wozmerge td {
    padding: 0.2vh 0.5vh;
    font-size: 0.5em;
}
#wozmerge td.sep {
    border-top: solid 0.1vh #555;
    padding: 0px;
}
#wozmerge td.mnem {
    background-color: yellow;
    text-align: center;
}
#wozmerge td.mnem.dopy {
    color: lightgray;
}

#wozmerge td.blink {
    background-color: lightgray;
}

#wozmerge th.hide,
#wozmerge td.hide,
#wozmerge tr.hide
{
    display: none;
}

#wozmerge td.p2g.odd {
    background-color: #BCF5A9;
}
#wozmerge td.p2g.odd.dopy {
    background-color: rgba(188, 245, 169, 0.2);
    color: #aaa;
}
#wozmerge td.p2g.even {
    background-color: #5FB404;
}
#wozmerge td.p2g.even.dopy {
    background-color: rgba(95, 180, 4, 0.2);
    color: #aaa;
}
#wozmerge td.woz.odd {
    background-color: #F3E2A9;
}
#wozmerge td.woz.odd.dopy {
    background-color: rgba(243, 226, 169, 0.2);
    color: #aaa;
}
#wozmerge td.woz.even {
    background-color: #DBA901;
}
#wozmerge td.woz.even.dopy {
    background-color: rgba(219, 169, 1, 0.2);
    color: #aaa;
}

#wozmerge td.woz.odd.markedI,
#wozmerge td.woz.odd.markedU {
    background-color: #BCF5A9;
}
#wozmerge td.woz.even.markedI,
#wozmerge td.woz.even.markedU {
    background-color: #5FB404;
}
#wozmerge td.woz.markedD {
    color: red;
    text-decoration: line-through;
}

#wozmerge td.woz.odd.markedI.dopy,
#wozmerge td.woz.odd.markedU.dopy {
    background-color: rgba(188, 245, 169, 0.2);
    color: #aaa;
}
#wozmerge td.woz.even.markedI.dopy,
#wozmerge td.woz.even.markedU.dopy {
    background-color: rgba(95, 180, 4, 0.2);
    color: #aaa;
}

#wozmerge tr:hover td {
  color:blue;
  border-top: 0.1vh solid grey;
  border-bottom: 0.1vh solid grey;
}

#wozmerge tr:hover td.mnem,
#wozmerge tr:hover td.p2g {
    cursor: pointer;
}

#wozmerge tr:hover td.woz.editable.markedI,
#wozmerge tr:hover td.woz.editable.markedU {
    cursor: text;
}

#wozmerge tr:hover td.mnem.dopy,
#wozmerge tr:hover td.p2g.dopy,
#wozmerge tr:hover td.woz.dopy {
  color:#aaa;
  border: none;
  cursor: default;
}

#wozmerge th select {
    font-size: 1em;
    outline-style: none;
}

#wozmerge input {
    outline-style: none;
    margin: 0.1vh;
    padding: 0 0.1vh;
    width: 1.5vh;
    heigth: 1.5vh;
}

#wozmerge input.textinput {
    width: 100%;
}
