.settings-modal { overflow: hidden; h2 { font-size: 1.3rem; font-weight: 500; margin-top: 1em; margin-bottom: 1em; margin-right: 1em; } h3 { font-size: 1.2rem; font-weight: 500; margin-top: 1em; margin-bottom: 0.5em; margin-right: 1em; border-bottom: 1px solid var(--border); padding-bottom: 0.25em; box-sizing: border-box; padding-left: 0.5em; } h4 { font-size: 1.1rem; margin-top: 1em; margin-right: 1em; margin-bottom: 0.5em; margin-left: 1em; } h5 { font-size: 1rem; margin-left: 1em; margin-bottom: 0.25em; margin-top: 0.75em; } .toolbar { display: flex; flex-wrap: wrap; gap: 0.5em; align-items: end; .header-buttons { display: flex; flex: 1 0 auto; justify-content: end; align-items: end; &:not(.btn-group) { gap: 0.5em; } .header-text { flex: 1 0 auto; } } .button-default { flex: 0 0 auto; padding: 0.5em; font-size: 1rem; } .popover-wrapper { display: flex; } } p { line-height: 1.5; margin-left: 2em; } .sidenote { margin-left: 5em; padding: 0.25em 1em; margin-top: 0.25em; } .setting-description { margin-top: 0.2em; margin-bottom: 0; margin-left: 0; font-size: 80%; } .setting-item { display: grid; grid-template-areas: "label control" "label desc" ". draft"; grid-template-columns: 4fr 5fr; column-gap: 0.5em; align-items: baseline; padding: 0.5em 0; line-height: 1.5em; .setting-label { grid-area: label; text-align: right; } .ModifiedIndicator, .LocalSettingIndicator { grid-area: indicator; } .setting-control { grid-area: control; &.textarea { align-self: baseline; overflow: auto; } &.checkbox { display: grid; grid-template-columns: subgrid; .label { grid-area: label; text-align: right; } .checkbox-indicator { grid-area: control; height: 1.5em; line-height: 1.5em; align-self: baseline; } .-mobile & { .label { text-align: left; } } } } .setting-control.setting-label { grid-column: 1 / 3; text-align: left; } .setting-description { grid-area: desc; } .DraftButtons { grid-area: draft; } } .vertical-tab-switcher { height: 100%; } .setting-list, .option-list { list-style-type: none; padding-left: 0; margin: 0; &.suboptions { margin-left: 2em; border-top: 1px dotted var(--border); border-bottom: 1px dotted var(--border); } .btn:not(.dropdown-button) { padding: 0 2em; } .btn-group { .button-default { flex: 0 1 auto; } } &.two-column { display: grid; grid-template-columns: 1fr 1fr; margin-left: 2em; border-bottom: 1px solid var(--border); padding-bottom: 0.5em; margin-bottom: 1em; .setting-item { grid-template-columns: 3fr 1fr; } > li { margin: 0; break-inside: avoid; } } } .settings-modal-panel { overflow: hidden; transition: transform; transition-timing-function: ease-in-out; transition-duration: 300ms; width: 70em; max-width: 90vw; height: 90vh; @media all and (width <= 800px) { max-width: 100vw; height: 100%; } >.panel-body { height: 100%; overflow-y: hidden; .btn { min-height: 2em; } } } .settings-footer { display: flex; flex-wrap: wrap; line-height: 2; >* { margin-right: 0.5em; } .extra-content { display: flex; flex-grow: 1; } } &.-mobile { .tabs { .menu-item { font-size: 1.2em; padding-top: 0.75em; padding-bottom: 0.75em; } } li { .sidenote { margin-left: 1em; } } /* stylelint-disable no-descending-specificity */ .setting-item { grid-template-columns: 1fr min-content; column-gap: 0.5em; padding: 1em; align-items: center; .setting-label { text-align: left; } .checkbox { .label { text-align: left; order: 2; } .checkbox-indicator { order: 1; } } } ul { padding: 0; li:not(:first-child) { .setting-item { border-top: 1px solid var(--border); } } } .setting-list:not(.suboptions), .option-list { &.two-column { grid-template-columns: 1fr; } } .UnitSetting { padding-right: 0.5em; } } &.peek { .settings-modal-panel { /* Explanation: * Modal is positioned vertically centered. * 100vh - 100% = Distance between modal's top+bottom boundaries and screen * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen * + 100% - we move modal completely off-screen, it's top boundary touches * bottom of the screen * - 50px - leaving tiny amount of space so that titlebar + tiny amount of modal is visible */ transform: translateY(calc(((100vh - 100%) / 2 + 100%) - 50px)); @media all and (width <= 800px) { /* For mobile, the modal takes 100% of the available screen. This ensures the minimized modal is always 50px above the browser bottom bar regardless of whether or not it is visible. */ transform: translateY(calc(100% - 50px)); } } } }