Files
thelounge/client/css/settings.css
Max Leiter 2a745fc35d theme
2026-04-12 20:45:44 -07:00

378 lines
7.1 KiB
CSS

/* Cards */
.setting-card {
background-color: #f7f8f9;
background-color: color-mix(in srgb, var(--body-bg-color) 6%, var(--window-bg-color));
border: 1px solid #edeef0;
border-color: color-mix(in srgb, var(--body-color) 8%, var(--window-bg-color));
border-radius: 8px;
padding: 10px 20px 16px;
margin-bottom: 16px;
}
.setting-card-title {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--body-color-muted);
margin: 0 0 4px;
padding: 0;
border: none;
}
.setting-card-intro {
font-size: 13px;
color: var(--body-color-muted);
line-height: 1.4;
margin-bottom: 8px;
}
/* Setting rows */
.setting-row {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 16px;
padding: 10px 0;
}
.setting-row + .setting-row {
border-top: 1px solid #f0f1f2;
border-top-color: color-mix(in srgb, var(--body-color) 6%, var(--window-bg-color));
}
.setting-row-text {
flex: 1;
min-width: 0;
}
.setting-row-label {
font-size: 14px;
font-weight: 500;
color: var(--body-color);
line-height: 1.4;
}
.setting-row-description {
font-size: 13px;
color: var(--body-color-muted);
line-height: 1.4;
margin-top: 2px;
}
/* Toggle switch */
.setting-toggle {
position: relative;
flex-shrink: 0;
width: 40px;
height: 22px;
margin-top: 1px;
}
.setting-toggle input[type="checkbox"] {
opacity: 0;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
margin: 0;
cursor: pointer;
z-index: 1;
}
.setting-toggle .toggle-track {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
background-color: color-mix(in srgb, var(--body-color) 20%, var(--window-bg-color));
border-radius: 11px;
transition: background-color 0.2s;
pointer-events: none;
}
.setting-toggle .toggle-thumb {
position: absolute;
top: 2px;
left: 2px;
width: 18px;
height: 18px;
background-color: var(--window-bg-color);
border-radius: 50%;
transition: transform 0.2s;
pointer-events: none;
box-shadow: 0 1px 3px rgb(0 0 0 / 15%);
}
.setting-toggle input:checked + .toggle-track {
background-color: var(--button-color);
}
.setting-toggle input:checked + .toggle-track .toggle-thumb {
transform: translateX(18px);
}
.setting-toggle input:focus-visible + .toggle-track {
box-shadow: 0 0 0 3px rgb(132 206 136 / 50%);
}
.setting-toggle input:disabled + .toggle-track {
opacity: 0.4;
cursor: not-allowed;
}
.setting-toggle input:disabled {
cursor: not-allowed;
}
.setting-row:has(.setting-toggle input:disabled) .setting-row-text {
opacity: 0.5;
}
/* Radio pills */
.setting-radio-pills {
display: flex;
border-radius: 6px;
overflow: hidden;
border: 1px solid #ddd;
border-color: color-mix(in srgb, var(--body-color) 15%, var(--window-bg-color));
margin-top: 8px;
}
.setting-radio-pill {
flex: 1;
position: relative;
}
.setting-radio-pill input[type="radio"] {
opacity: 0;
position: absolute;
width: 100%;
height: 100%;
margin: 0;
cursor: pointer;
z-index: 1;
}
.setting-radio-pill .pill-label {
display: block;
padding: 8px 12px;
font-size: 13px;
font-weight: 500;
text-align: center;
color: var(--body-color-muted);
background-color: transparent;
transition: background-color 0.15s, color 0.15s;
cursor: pointer;
white-space: nowrap;
}
.setting-radio-pill + .setting-radio-pill .pill-label {
border-left: 1px solid #ddd;
border-left-color: color-mix(in srgb, var(--body-color) 15%, var(--window-bg-color));
}
.setting-radio-pill input:checked + .pill-label {
background-color: var(--button-color);
color: var(--button-text-color-hover);
}
.setting-radio-pill input:focus-visible + .pill-label {
box-shadow: inset 0 0 0 2px rgb(132 206 136 / 50%);
}
/* Text inputs inside cards */
.setting-card .input {
margin-bottom: 0;
margin-top: 8px;
}
.setting-card textarea.input {
margin-top: 8px;
}
/* Space between stacked label+input groups */
.setting-card > .input + .setting-row-text {
border-top: 1px solid #f0f1f2;
border-top-color: color-mix(in srgb, var(--body-color) 6%, var(--window-bg-color));
padding-top: 12px;
margin-top: 10px;
}
/* Label+input group following a toggle row gets the same separator */
.setting-row + .setting-row-text {
border-top: 1px solid #f0f1f2;
border-top-color: color-mix(in srgb, var(--body-color) 6%, var(--window-bg-color));
padding-top: 10px;
}
/* Action rows */
.setting-action-row {
padding: 10px 0;
}
.setting-action-row + .setting-action-row {
border-top: 1px solid #f0f1f2;
border-top-color: color-mix(in srgb, var(--body-color) 6%, var(--window-bg-color));
}
.setting-action-row .btn {
margin-bottom: 0;
}
/* Info/warning panels */
.setting-info-panel {
padding: 10px 12px;
border-radius: 6px;
font-size: 13px;
line-height: 1.5;
margin-top: 8px;
}
.setting-info-panel.warning {
background-color: #fdf6ec;
background-color: color-mix(in srgb, #f0ad4e 12%, var(--window-bg-color));
color: #8a6d3b;
color: color-mix(in srgb, #8a6d3b 80%, var(--body-color));
}
.setting-info-panel.error {
color: #e74c3c;
}
.setting-info-panel p {
margin: 0 0 6px;
}
.setting-info-panel p:last-child {
margin-bottom: 0;
}
.setting-info-panel .btn {
margin-top: 8px;
margin-bottom: 0;
}
/* Settings h2 override (.window h2 reset) */
#settings h2 {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--body-color-muted);
border-bottom: none;
margin: 0 0 4px;
padding: 0;
}
#settings .container > form > div > .setting-card:first-child {
margin-top: 0;
}
/* Password form */
#settings .setting-card .password-container {
margin-bottom: 8px;
}
#settings .setting-card .password-container:last-of-type {
margin-bottom: 0;
}
#settings .setting-card .password-container + .feedback,
#settings .setting-card .password-container ~ div > .btn {
margin-top: 12px;
}
#settings .setting-card .feedback {
margin-bottom: 1em;
}
#settings .setting-card .feedback.error {
color: #e74c3c;
}
#settings .setting-card .feedback.success {
color: #2ecc40;
}
#settings .error {
color: #e74c3c;
margin-top: 0.2em;
}
/* Session list */
#settings .setting-card h3 {
font-size: 14px;
font-weight: 600;
color: var(--body-color);
margin: 16px 0 8px;
}
#settings .setting-card h3:first-child {
margin-top: 0;
}
/* Settings - mobile nav */
@media screen and (max-width: calc(768px + 320px)) {
.settings-menu {
padding-bottom: 8px;
margin-bottom: 8px;
border-bottom: 1px solid #edeef0;
border-bottom-color: color-mix(in srgb, var(--body-color) 8%, var(--window-bg-color));
}
.settings-menu ul {
display: flex;
gap: 4px;
justify-content: center;
}
.settings-menu li {
font-size: 14px;
}
.settings-menu button {
padding: 6px 14px;
border-radius: 6px;
text-align: center;
}
.settings-menu button.active {
background-color: var(--button-color);
color: var(--button-text-color-hover);
}
.settings-menu button::before {
display: none;
}
}
@media screen and (max-width: 480px) {
.setting-card {
padding: 8px 14px 12px;
}
.setting-radio-pills {
flex-direction: column;
}
.setting-radio-pill + .setting-radio-pill .pill-label {
border-left: none;
border-top: 1px solid #ddd;
border-top-color: color-mix(in srgb, var(--body-color) 15%, var(--window-bg-color));
}
}