diff --git a/app/static/css/base.css b/app/static/css/base.css index bd1f219..a5bd24e 100644 --- a/app/static/css/base.css +++ b/app/static/css/base.css @@ -228,31 +228,131 @@ code, pre { font-family: var(--font-mono); } padding: 20px 24px; margin-bottom: 20px; box-shadow: var(--shadow-sm); + max-width: 860px; } .settings-section h2 { margin-top: 0; font-size: 16px; padding-bottom: 12px; border-bottom: 1px solid var(--border); - margin-bottom: 16px; + margin-bottom: 18px; } -.settings-section form { display: flex; flex-direction: column; gap: 12px; max-width: 520px; } -.settings-section label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--text-muted); } -.settings-section input, .settings-section select, .settings-section textarea { - padding: 8px 10px; + +.settings-form { display: flex; flex-direction: column; gap: 18px; } + +/* ---- Toggle grid (tabular on/off switches) ---- */ +.toggle-grid { + display: grid; + grid-template-columns: 1fr; + border: 1px solid var(--border); + border-radius: var(--radius-md); + overflow: hidden; + background: var(--surface-2); +} +.toggle-grid.compact .toggle-row { padding: 10px 14px; } +.toggle-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + padding: 14px 16px; + border-bottom: 1px solid var(--border); + transition: background .15s; +} +.toggle-row:last-child { border-bottom: none; } +.toggle-row:hover { background: var(--surface-3); } +.toggle-label { display: flex; flex-direction: column; gap: 2px; min-width: 0; } +.toggle-title { font-size: 14px; color: var(--text); font-weight: 500; } +.toggle-help { font-size: 12px; color: var(--text-dim); } + +/* iOS-style switch */ +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 22px; + flex-shrink: 0; +} +.switch input { opacity: 0; width: 0; height: 0; } +.switch .slider { + position: absolute; + cursor: pointer; + inset: 0; + background: var(--surface-3); + border: 1px solid var(--border-hi); + border-radius: 22px; + transition: background .2s, border-color .2s; +} +.switch .slider::before { + position: absolute; + content: ""; + height: 16px; + width: 16px; + left: 2px; + top: 2px; + background: var(--text-muted); + border-radius: 50%; + transition: transform .2s, background .2s; +} +.switch input:checked + .slider { + background: var(--accent-hover); + border-color: var(--accent-hover); +} +.switch input:checked + .slider::before { + transform: translateX(18px); + background: #fff; +} +.switch input:focus-visible + .slider { + box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.25); +} + +/* ---- Labeled input rows ---- */ +.field-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 14px 20px; +} +.field-row { display: flex; flex-direction: column; gap: 6px; min-width: 0; } +.field-row.wide { grid-column: 1 / -1; } +.field-label { + font-size: 11px; + color: var(--text-muted); + text-transform: uppercase; + letter-spacing: .5px; + font-weight: 600; +} +.field-input { + padding: 8px 12px; border: 1px solid var(--border); background: var(--surface-2); color: var(--text); border-radius: var(--radius-sm); font-size: 13px; font-family: inherit; + transition: border-color .15s, box-shadow .15s; } -.settings-section input:focus, .settings-section select:focus, .settings-section textarea:focus { +.field-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.15); } -.settings-section button { align-self: flex-start; } +.field-input::placeholder { color: var(--text-dim); } + +/* Inline (non-grid) single field row */ +.settings-form > .field-row { max-width: 280px; } + +.form-bar { + display: flex; + gap: 10px; + padding-top: 12px; + border-top: 1px solid var(--border); + margin-top: 4px; +} + +@media (max-width: 640px) { + .field-grid { grid-template-columns: 1fr; } + .toggle-row { padding: 12px 14px; } +} /* ======================================================================== Buttons (global) diff --git a/app/templates/base.html b/app/templates/base.html index 55a98a5..a137a39 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -5,8 +5,8 @@