Spaces:
Running
Running
/* --- CSS Variables --- */ | |
:root { | |
--body-bg: #f0f0f0; /* Light gray background */ | |
--container-bg: #ffffff; | |
--text-color: #333333; | |
--text-color-secondary: #555555; | |
--border-color: #e0e0e0; | |
--input-bg: #ffffff; | |
--input-border: #cccccc; | |
--input-focus-border: #86b7fe; /* Bootstrap focus blue */ | |
--button-primary-bg: #0d6efd; /* Bootstrap primary */ | |
--button-primary-hover-bg: #0b5ed7; | |
--button-danger-bg: #dc3545; /* Bootstrap danger */ | |
--button-danger-hover-bg: #bb2d3b; | |
--button-text-color: #ffffff; | |
--link-color: #0d6efd; | |
--status-error-color: #dc3545; | |
--status-success-color: #198754; /* Bootstrap success */ | |
--notification-bg: #f8f9fa; /* Light gray */ | |
--notification-border: #dee2e6; | |
--shadow-color: rgba(0, 0, 0, 0.08); | |
--border-radius: 8px; /* Rounded corners */ | |
} | |
.dark-mode { | |
--body-bg: #1a1a1a; /* Dark charcoal */ | |
--container-bg: #2c2c2c; /* Slightly lighter dark */ | |
--text-color: #e0e0e0; /* Light gray text */ | |
--text-color-secondary: #aaaaaa; | |
--border-color: #444444; /* Darker border */ | |
--input-bg: #333333; | |
--input-border: #555555; | |
--input-focus-border: #0d6efd; /* Keep focus blue */ | |
--button-primary-bg: #0d6efd; | |
--button-primary-hover-bg: #0b5ed7; | |
--button-danger-bg: #dc3545; | |
--button-danger-hover-bg: #bb2d3b; | |
--button-text-color: #ffffff; | |
--link-color: #58a6ff; /* Lighter blue for links */ | |
--status-error-color: #f86c7c; | |
--status-success-color: #4cd08a; | |
--notification-bg: #333333; | |
--notification-border: #444444; | |
--shadow-color: rgba(255, 255, 255, 0.05); | |
} | |
/* --- Global Styles --- */ | |
* { | |
box-sizing: border-box; | |
} | |
body { | |
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; | |
line-height: 1.6; | |
margin: 0; | |
padding: 0; | |
background-color: var(--body-bg); | |
color: var(--text-color); | |
transition: background-color 0.3s ease, color 0.3s ease; /* Smooth theme transition */ | |
} | |
/* --- Layout --- */ | |
.container { | |
max-width: 800px; /* Max width for content */ | |
margin: 30px auto; /* Center container */ | |
padding: 25px; | |
background-color: var(--container-bg); | |
border: 1px solid var(--border-color); | |
border-radius: var(--border-radius); | |
box-shadow: 0 4px 12px var(--shadow-color); | |
transition: background-color 0.3s ease, border-color 0.3s ease; | |
} | |
.header { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
margin-bottom: 25px; | |
padding-bottom: 15px; | |
border-bottom: 1px solid var(--border-color); | |
} | |
.content-section { | |
margin-bottom: 25px; | |
padding: 20px; | |
border: 1px solid var(--border-color); | |
border-radius: var(--border-radius); | |
background-color: var(--container-bg); /* Same as main container or slightly different */ | |
} | |
/* Remove extra padding/border if nested inside container with padding */ | |
.container > .content-section { | |
padding: 0; | |
border: none; | |
background: none; | |
margin-bottom: 20px; | |
} | |
h1, h2 { | |
color: var(--text-color); | |
margin-top: 0; | |
margin-bottom: 0.75em; | |
} | |
h1 { font-size: 1.8em; } | |
h2 { font-size: 1.4em; } | |
hr { | |
border: none; | |
border-top: 1px solid var(--border-color); | |
margin: 25px 0; | |
} | |
a { | |
color: var(--link-color); | |
text-decoration: none; | |
} | |
a:hover { | |
text-decoration: underline; | |
} | |
/* --- Forms --- */ | |
.form-group { | |
margin-bottom: 15px; | |
} | |
label { | |
display: block; /* Label on top */ | |
margin-bottom: 6px; | |
font-weight: 500; | |
color: var(--text-color-secondary); | |
} | |
input[type="email"], | |
input[type="password"] { | |
width: 100%; | |
padding: 10px 12px; | |
border: 1px solid var(--input-border); | |
border-radius: var(--border-radius); | |
background-color: var(--input-bg); | |
color: var(--text-color); | |
font-size: 1em; | |
transition: border-color 0.2s ease, background-color 0.2s ease; | |
} | |
input[type="email"]:focus, | |
input[type="password"]:focus { | |
outline: none; | |
border-color: var(--input-focus-border); | |
box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.25); | |
} | |
.form-switch { | |
margin-top: 15px; | |
font-size: 0.9em; | |
color: var(--text-color-secondary); | |
} | |
/* --- Buttons --- */ | |
.btn { | |
display: inline-block; | |
padding: 10px 18px; | |
border: none; | |
border-radius: var(--border-radius); | |
cursor: pointer; | |
font-size: 1em; | |
font-weight: 500; | |
text-align: center; | |
transition: background-color 0.2s ease; | |
color: var(--button-text-color); /* Common text color */ | |
} | |
.btn-primary { | |
background-color: var(--button-primary-bg); | |
} | |
.btn-primary:hover { | |
background-color: var(--button-primary-hover-bg); | |
} | |
.btn-danger { | |
background-color: var(--button-danger-bg); | |
} | |
.btn-danger:hover { | |
background-color: var(--button-danger-hover-bg); | |
} | |
#theme-toggle { | |
padding: 8px 12px; | |
font-size: 0.9em; | |
background-color: #6c757d; /* Secondary button color */ | |
} | |
#theme-toggle:hover { | |
background-color: #5c636a; | |
} | |
/* --- Status Messages --- */ | |
.status-message { | |
margin-top: 15px; | |
padding: 10px; | |
border-radius: var(--border-radius); | |
font-weight: 500; | |
display: none; /* Hidden by default */ | |
border: 1px solid transparent; | |
} | |
.status-message.success { | |
color: var(--status-success-color); | |
background-color: rgba(25, 135, 84, 0.1); /* Light green background */ | |
border-color: rgba(25, 135, 84, 0.2); | |
} | |
.status-message:not(.success) { /* Default to error style */ | |
color: var(--status-error-color); | |
background-color: rgba(220, 53, 69, 0.1); /* Light red background */ | |
border-color: rgba(220, 53, 69, 0.2); | |
} | |
/* --- Notifications --- */ | |
#notifications { | |
margin-top: 15px; | |
padding: 15px; | |
border: 1px solid var(--notification-border); | |
border-radius: var(--border-radius); | |
background-color: var(--notification-bg); | |
min-height: 100px; | |
max-height: 300px; | |
overflow-y: auto; | |
transition: background-color 0.3s ease, border-color 0.3s ease; | |
} | |
#notifications p { | |
margin: 0 0 8px 0; /* Space below each notification */ | |
padding: 8px 0; | |
border-bottom: 1px solid var(--border-color); | |
font-size: 0.95em; | |
} | |
#notifications p:last-child { | |
border-bottom: none; | |
margin-bottom: 0; | |
} | |
#notifications p em { /* Style the placeholder */ | |
color: var(--text-color-secondary); | |
font-style: italic; | |
} |