| | :root { |
| | --bg-color: #0d0d0d; |
| | --text-color: #00ff41; |
| | --accent-color: #008F11; |
| | --warn-color: #ffb000; |
| | --error-color: #ff0000; |
| | --dim-color: #4a5a4a; |
| | --font-main: 'Fira Code', monospace; |
| | --glow: 0 0 10px rgba(0, 255, 65, 0.5); |
| | } |
| |
|
| | body { |
| | background-color: var(--bg-color); |
| | color: var(--text-color); |
| | font-family: var(--font-main); |
| | margin: 0; |
| | padding: 20px; |
| | line-height: 1.6; |
| | min-height: 100vh; |
| | } |
| |
|
| | .mini-link { |
| | font-size: 0.8em; |
| | color: var(--warn-color); |
| | text-decoration: none; |
| | margin-left: 10px; |
| | border: 1px solid transparent; |
| | padding: 2px 5px; |
| | white-space: nowrap; |
| | } |
| |
|
| | .mini-link:hover { |
| | border-color: var(--warn-color); |
| | background: rgba(255, 176, 0, 0.1); |
| | } |
| |
|
| | |
| | .crs-scanline { |
| | position: fixed; |
| | top: 0; |
| | left: 0; |
| | width: 100%; |
| | height: 100%; |
| | background: linear-gradient(to bottom, |
| | rgba(255, 255, 255, 0), |
| | rgba(255, 255, 255, 0) 50%, |
| | rgba(0, 0, 0, 0.2) 50%, |
| | rgba(0, 0, 0, 0.2)); |
| | background-size: 100% 4px; |
| | pointer-events: none; |
| | z-index: 999; |
| | } |
| |
|
| | |
| | .overlay { |
| | position: fixed; |
| | top: 0; |
| | left: 0; |
| | width: 100%; |
| | height: 100%; |
| | background: #000; |
| | display: flex; |
| | justify-content: center; |
| | align-items: center; |
| | z-index: 1000; |
| | } |
| |
|
| | .login-box { |
| | padding: 40px; |
| | border: 2px solid var(--accent-color); |
| | text-align: center; |
| | background: rgba(0, 20, 0, 0.9); |
| | } |
| |
|
| | .blur-hidden { |
| | filter: blur(10px); |
| | pointer-events: none; |
| | opacity: 0.3; |
| | } |
| |
|
| | input[type="password"] { |
| | background: #000; |
| | border: 1px solid var(--accent-color); |
| | color: var(--text-color); |
| | font-family: var(--font-main); |
| | padding: 10px; |
| | margin-bottom: 20px; |
| | font-size: 1.2em; |
| | text-align: center; |
| | width: 200px; |
| | } |
| |
|
| | .error-msg { |
| | color: var(--error-color); |
| | margin-top: 10px; |
| | min-height: 1.5em; |
| | } |
| |
|
| | .container { |
| | max-width: 800px; |
| | margin: 0 auto; |
| | transition: all 0.5s ease; |
| | } |
| |
|
| | .status-line { |
| | border-bottom: 1px solid var(--dim-color); |
| | padding-bottom: 10px; |
| | margin-bottom: 20px; |
| | font-size: 0.9em; |
| | color: var(--warn-color); |
| | } |
| |
|
| | .card { |
| | border: 1px solid var(--accent-color); |
| | padding: 15px; |
| | margin-bottom: 20px; |
| | background: rgba(0, 20, 0, 0.3); |
| | } |
| |
|
| | .neon-border { |
| | box-shadow: 0 0 5px var(--accent-color); |
| | } |
| |
|
| | h3 { |
| | margin-top: 0; |
| | border-bottom: 1px dashed var(--dim-color); |
| | padding-bottom: 5px; |
| | } |
| |
|
| | .input-group { |
| | margin-bottom: 15px; |
| | } |
| |
|
| | label { |
| | display: block; |
| | font-size: 0.8em; |
| | color: var(--dim-color); |
| | margin-bottom: 5px; |
| | } |
| |
|
| | .btn, |
| | .btn-primary, |
| | .btn-warn, |
| | .btn-rating, |
| | .btn-emoji { |
| | background: transparent; |
| | border: 1px solid var(--accent-color); |
| | color: var(--text-color); |
| | |
| | font-family: var(--font-main); |
| | padding: 8px 12px; |
| | cursor: pointer; |
| | transition: all 0.2s; |
| | margin-right: 5px; |
| | margin-bottom: 5px; |
| | text-transform: uppercase; |
| | } |
| |
|
| | .btn:hover, |
| | .btn-primary:hover, |
| | .btn-rating:hover, |
| | .btn-emoji:hover { |
| | background: var(--accent-color); |
| | color: var(--bg-color); |
| | |
| | box-shadow: var(--glow); |
| | } |
| |
|
| | .btn-warn { |
| | border-color: var(--warn-color); |
| | color: var(--warn-color); |
| | } |
| |
|
| | .btn-warn:hover { |
| | background: var(--warn-color); |
| | color: #000; |
| | } |
| |
|
| | .btn-primary { |
| | width: 100%; |
| | font-weight: bold; |
| | border: 2px solid var(--text-color); |
| | margin-top: 10px; |
| | } |
| |
|
| | .rating-buttons, |
| | .emoji-buttons { |
| | display: flex; |
| | flex-wrap: wrap; |
| | gap: 5px; |
| | } |
| |
|
| | .btn-rating.selected, |
| | .btn-emoji.selected { |
| | background: var(--text-color); |
| | color: var(--bg-color); |
| | font-weight: bold; |
| | } |
| |
|
| | textarea { |
| | width: 100%; |
| | background: #111; |
| | border: 1px solid var(--dim-color); |
| | color: var(--text-color); |
| | font-family: var(--font-main); |
| | padding: 10px; |
| | box-sizing: border-box; |
| | } |
| |
|
| | .console-output { |
| | max-height: 400px; |
| | overflow-y: auto; |
| | font-size: 0.85em; |
| | white-space: pre-wrap; |
| | background: #000; |
| | padding: 10px; |
| | border: 1px dotted var(--dim-color); |
| | } |
| |
|
| | |
| | ::-webkit-scrollbar { |
| | width: 8px; |
| | } |
| |
|
| | ::-webkit-scrollbar-track { |
| | background: #111; |
| | } |
| |
|
| | ::-webkit-scrollbar-thumb { |
| | background: var(--dim-color); |
| | } |
| |
|
| | ::-webkit-scrollbar-thumb:hover { |
| | background: var(--accent-color); |
| | } |
| |
|
| | .large-text { |
| | font-size: 1.5em; |
| | font-weight: bold; |
| | color: var(--warn-color); |
| | } |
| |
|
| | |
| | .palier-block { |
| | margin-bottom: 20px; |
| | border-left: 2px solid var(--dim-color); |
| | padding-left: 10px; |
| | } |
| |
|
| | .palier-header { |
| | background: #222; |
| | font-weight: bold; |
| | color: #fff; |
| | padding: 2px 5px; |
| | display: inline-block; |
| | margin-bottom: 5px; |
| | } |
| |
|
| | .palier-meta { |
| | color: #0ff; |
| | font-size: 0.9em; |
| | margin-bottom: 10px; |
| | } |
| |
|
| | .log-line { |
| | margin: 4px 0; |
| | display: flex; |
| | flex-wrap: wrap; |
| | align-items: center; |
| | gap: 6px; |
| | max-width: 100%; |
| | } |
| |
|
| | .today-line { |
| | font-weight: bold; |
| | color: var(--text-color); |
| | background: rgba(0, 255, 65, 0.1); |
| | padding: 2px 5px; |
| | } |
| |
|
| | .future-line { |
| | color: var(--dim-color); |
| | margin-top: 4px; |
| | line-height: 1.4; |
| | } |
| |
|
| | .future-item { |
| | display: inline-block; |
| | } |
| |
|
| | .dim { |
| | color: #555; |
| | } |
| |
|
| | .dose { |
| | font-weight: bold; |
| | } |
| |
|
| | .dose-20 { |
| | color: #00ff41; |
| | } |
| |
|
| | .dose-10 { |
| | color: var(--warn-color); |
| | } |
| |
|
| | .dose-0 { |
| | color: #555; |
| | } |
| |
|
| | |
| | .date { |
| | min-width: 120px; |
| | flex-shrink: 0; |
| | } |
| |
|
| | .dose { |
| | flex-shrink: 0; |
| | } |
| |
|
| | .stars { |
| | color: var(--warn-color); |
| | font-family: sans-serif; |
| | flex-shrink: 0; |
| | } |
| |
|
| | .emoji { |
| | flex-shrink: 0; |
| | } |
| |
|
| | |
| | .comment-wrapper { |
| | display: flex; |
| | align-items: center; |
| | gap: 4px; |
| | flex: 0 1 auto; |
| | min-width: 0; |
| | } |
| |
|
| | .comment { |
| | font-style: italic; |
| | color: #aaa; |
| | display: inline; |
| | overflow: hidden; |
| | text-overflow: ellipsis; |
| | white-space: nowrap; |
| | flex: 0 1 auto; |
| | min-width: 0; |
| | max-width: 350px; |
| | } |
| |
|
| | .comment.expanded { |
| | white-space: normal; |
| | word-wrap: break-word; |
| | overflow: visible; |
| | max-width: 100%; |
| | display: inline; |
| | } |
| |
|
| | .view-toggle { |
| | color: var(--accent-color); |
| | cursor: pointer; |
| | text-decoration: none; |
| | font-size: 0.9em; |
| | font-weight: bold; |
| | user-select: none; |
| | white-space: nowrap; |
| | flex-shrink: 0; |
| | display: inline-flex; |
| | align-items: center; |
| | justify-content: center; |
| | width: 16px; |
| | height: 16px; |
| | text-align: center; |
| | border: 1px solid var(--accent-color); |
| | border-radius: 2px; |
| | padding: 0; |
| | margin-left: 4px; |
| | } |
| |
|
| | .view-toggle:hover { |
| | color: var(--bg-color); |
| | background-color: var(--accent-color); |
| | box-shadow: 0 0 5px var(--accent-color); |
| | } |
| |
|
| | |
| | @media (max-width: 600px) { |
| | .comment { |
| | max-width: 270px !important; |
| | } |
| |
|
| | .date { |
| | min-width: 100px; |
| | } |
| |
|
| | .log-line { |
| | gap: 4px; |
| | font-size: 0.9em; |
| | } |
| |
|
| | .view-toggle { |
| | width: 18px; |
| | height: 18px; |
| | font-size: 1em; |
| | } |
| | } |
| |
|
| | |
| | .month-block { |
| | margin-bottom: 20px; |
| | font-family: var(--font-main); |
| | } |
| |
|
| | .month-title { |
| | background: #ffb000; |
| | color: #000; |
| | font-weight: bold; |
| | text-align: center; |
| | margin-bottom: 5px; |
| | } |
| |
|
| | .week-row { |
| | display: flex; |
| | justify-content: space-between; |
| | } |
| |
|
| | .header-row { |
| | color: #0ff; |
| | font-weight: bold; |
| | border-bottom: 1px solid #333; |
| | } |
| |
|
| | .day-cell { |
| | width: 14%; |
| | text-align: center; |
| | padding: 2px 0; |
| | position: relative; |
| | } |
| |
|
| | @keyframes blink { |
| |
|
| | 0%, |
| | 100% { |
| | background: var(--dim-color); |
| | color: var(--text-color); |
| | } |
| |
|
| | 50% { |
| | background: transparent; |
| | color: var(--text-color); |
| | } |
| | } |
| |
|
| | .today-h { |
| | outline: 1px solid var(--text-color); |
| | font-weight: bold; |
| | animation: blink 2s infinite ease-in-out; |
| | } |
| |
|
| | .day-cell.empty { |
| | background: transparent; |
| | } |
| |
|
| | .day-num { |
| | margin-right: 2px; |
| | } |
| |
|
| | .dose-badge { |
| | display: inline-block; |
| | } |
| |
|
| | |
| | .terminal-overlay { |
| | position: absolute; |
| | top: 0; |
| | left: 0; |
| | width: 100%; |
| | height: 100%; |
| | background: rgba(0, 0, 0, 0.95); |
| | z-index: 10; |
| | display: flex; |
| | flex-direction: column; |
| | justify-content: center; |
| | align-items: center; |
| | font-family: var(--font-main); |
| | color: var(--text-color); |
| | padding: 20px; |
| | box-sizing: border-box; |
| | border: 1px solid var(--text-color); |
| | box-shadow: inset 0 0 20px rgba(0, 255, 65, 0.2); |
| | } |
| |
|
| | .terminal-status { |
| | font-size: 1.2em; |
| | margin-bottom: 20px; |
| | min-height: 1.5em; |
| | text-shadow: 0 0 5px var(--text-color); |
| | } |
| |
|
| | .progress-container { |
| | width: 80%; |
| | max-width: 400px; |
| | border: 1px solid var(--dim-color); |
| | padding: 2px; |
| | margin-bottom: 10px; |
| | } |
| |
|
| | .progress-bar-text { |
| | font-family: monospace; |
| | white-space: pre; |
| | color: var(--text-color); |
| | font-size: 1.1em; |
| | } |
| |
|
| | .terminal-logs { |
| | font-size: 0.8em; |
| | color: var(--dim-color); |
| | height: 60px; |
| | overflow: hidden; |
| | width: 80%; |
| | text-align: left; |
| | border-top: 1px dashed var(--dim-color); |
| | padding-top: 5px; |
| | display: flex; |
| | flex-direction: column-reverse; |
| | |
| | } |
| |
|
| | @keyframes flash-success { |
| | 0% { |
| | background-color: rgba(0, 0, 0, 0.95); |
| | color: var(--text-color); |
| | } |
| |
|
| | 50% { |
| | background-color: var(--text-color); |
| | color: #000; |
| | } |
| |
|
| | 100% { |
| | background-color: rgba(0, 0, 0, 0.95); |
| | color: var(--text-color); |
| | } |
| | } |
| |
|
| | .flash-success { |
| | animation: flash-success 0.5s ease-out; |
| | } |