:root { --accent: #222222; --accent-dark: #111111; --accent-light: #f4f4f4; --bg: #fafbfc; --card-bg: #fff; --border: #e0e0e0; --border-light: #f3f3f3; --shadow-sm: 0 2px 8px rgba(0,0,0,0.04); --shadow: 0 8px 30px rgba(0,0,0,0.07); --shadow-lg: 0 12px 42px rgba(0,0,0,0.13); --text: #181818; --text-heading: #111111; --text-secondary: #444; --muted: #888; --danger: #222; --danger-light: #f8f8f8; --success: #222; --success-light: #f4f4f4; --warning: #222; --warning-light: #f4f4f4; } body { background: var(--bg); color: var(--text); } body { background: var(--bg); } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Inter', 'Segoe UI', 'Arial', 'Helvetica Neue', Helvetica, Arial, sans-serif; background: var(--bg); color: var(--text); margin: 0; padding: 0; line-height: 1.5; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #app-container { max-width: 1200px; width: 94vw; min-height: 90vh; margin: 48px auto; padding: 48px 48px 56px 48px; background: var(--card-bg); border-radius: 32px; box-shadow: var(--shadow-lg); display: flex; flex-direction: column; position: relative; overflow: hidden; border: 1.5px solid var(--border); } @media (max-width: 700px) { #app-container { padding: 12px 2vw 28px 2vw; min-width: 0; border-radius: 18px; } } #tab-content-list { background: #fafbfc; color: #181818; border-radius: 18px; box-shadow: 0 4px 32px rgba(0,0,0,0.07); border: 1.5px solid #e0e0e0; padding: 32px 18px 32px 18px; margin-bottom: 32px; } #tab-content-list .table-responsive { background: #fff; border-radius: 16px; box-shadow: 0 2px 12px rgba(0,0,0,0.06); border: 1.5px solid #e0e0e0; padding: 12px 0; } #tab-content-list .todos-table th, #tab-content-list .todos-table td { color: #181818; } #tab-content-list .todos-table th { background: #222; color: #fff; border-bottom: 2px solid #e0e0e0; font-weight: 700; } #tab-content-list .todos-table td { background: #fff; } #tab-content-list .todos-table tbody tr:nth-child(even) td { background: #f4f4f4; } #tab-content-list .todos-table tbody tr:hover td { background: #e0e0e0; color: #111; font-weight: 600; } @media (max-width: 700px) { #app-container { padding: 8px 2vw 24px 2vw; min-width: 0; } } h1, h2, h3 { font-weight: 700; letter-spacing: -0.02em; color: var(--text-heading); margin-bottom: 0.8em; } h1 { font-size: 2.2rem; margin-bottom: 1.2rem; color: var(--accent-dark); } h2 { font-size: 1.8rem; color: var(--accent); } h3 { font-size: 1.4rem; color: var(--text-secondary); } .tab-bar { display: flex; background: #f4f4f4; border-radius: 999px; padding: 4px; margin-bottom: 40px; box-shadow: var(--shadow-sm); gap: 0; align-items: center; justify-content: flex-start; width: fit-content; position: relative; z-index: 1; } .tab-btn { background: none; border: none; outline: none; color: var(--muted); font-size: 1.05em; font-weight: 600; padding: 12px 32px; border-radius: 999px; cursor: pointer; transition: all 0.2s ease-in-out; position: relative; overflow: hidden; } .tab-btn:hover { color: var(--text); } .tab-btn.active, #tab-list-btn.tab-btn.active { background: #222; color: #fff; box-shadow: 0 4px 16px rgba(0,0,0,0.13); border: none; } .tab-btn:focus-visible, #tab-list-btn:focus-visible { outline: 2px solid #222; outline-offset: 2px; } .tab-btn, #tab-list-btn { border: none; box-shadow: none; } .tab-btn:hover, #tab-list-btn:hover { background: #444; color: #fff; box-shadow: 0 2px 8px #e0e0e0; } .tab-btn { color: #222; background: transparent; font-weight: 700; } .tab-btn:hover { background: #e0e0e0; color: #111; box-shadow: 0 2px 8px #e0e0e0; } .tab-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } .tab-content { display: none; animation: fadeIn 0.4s cubic-bezier(0.2, 0.8, 0.2, 1); width: 100%; } .tab-content.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } } .add-todo-btn, button[type="button"], button { background: #222; color: #fff; border: none; border-radius: 12px; padding: 12px 28px; font-size: 1em; font-weight: 600; cursor: pointer; margin-top: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.11); transition: all 0.2s ease-in-out; position: relative; overflow: hidden; letter-spacing: 0.01em; } .add-todo-btn:hover, button[type="button"]:hover, button:hover { background: #444; color: #fff; box-shadow: 0 4px 16px rgba(0,0,0,0.13); border: 2px solid #e0e0e0; transform: translateY(-1px) scale(1.03); } button:active { background: #111; color: #fff; box-shadow: 0 1px 2px #222; border: 2px solid #e0e0e0; transform: translateY(1px) scale(0.97); } button:focus-visible { outline: 2px solid #222; outline-offset: 2px; } button.secondary { background: #f4f4f4; color: #222; border: 2px solid #888; } button.secondary:hover { background: #222; color: #fff; border: 2px solid #e0e0e0; } button.danger { background: #111; color: #fff; border: 2px solid #888; } button.danger:hover { background: #444; color: #fff; border: 2px solid #222; } .add-todo-btn:hover, button[type="button"]:hover, button:hover { background: var(--accent-dark); box-shadow: 0 4px 12px rgba(100,27,46,0.14); transform: translateY(-1px); } button:active { background: #641B2E; transform: translateY(1px); box-shadow: 0 2px 4px rgba(100,27,46,0.13); } .add-todo-btn:hover, button[type="button"]:hover, button:hover { background: var(--accent-dark); box-shadow: 0 4px 12px rgba(108,99,255,0.15); transform: translateY(-1px); } button:active { background: #3b36a5; transform: translateY(1px); box-shadow: 0 2px 4px rgba(108,99,255,0.1); } button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } /* Secondary button style */ button.secondary { background: transparent; color: var(--accent); border: 1.5px solid var(--accent); box-shadow: none; } button.secondary:hover { background: var(--accent-light); color: var(--accent-dark); box-shadow: 0 2px 8px rgba(108,99,255,0.07); } button.danger { background: var(--danger); } button.danger:hover { background: #c53030; box-shadow: 0 4px 12px rgba(229,62,62,0.15); } input, select, textarea { font-family: inherit; font-size: 1em; padding: 12px 16px; border: 1.5px solid var(--border); border-radius: 10px; margin-top: 6px; margin-bottom: 18px; background: #fafbff; color: var(--text); transition: all 0.2s ease; box-shadow: 0 1px 2px rgba(0,0,0,0.02); width: 100%; } input:hover, select:hover, textarea:hover { border-color: #d1d5db; } input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(108,99,255,0.15); background: #fff; } label { font-weight: 600; font-size: 0.95em; color: var(--text-secondary); margin-bottom: 4px; display: block; } ::placeholder { color: var(--muted); opacity: 0.7; } .table-responsive { width: 100%; overflow-x: auto; max-width: 100vw; margin: 0; padding: 0; } .todos-table { width: 100%; min-width: 1100px; border-collapse: separate; border-spacing: 0; font-size: 0.95em; background: #fff; border-radius: 16px; overflow: hidden; margin-bottom: 24px; table-layout: auto; } .todos-table th { background: linear-gradient(90deg, #641B2E 0%, #8A2D3B 40%, #BE5B50 80%, #FBDB93 100%); color: #fff; font-weight: 700; font-size: 0.97em; padding: 18px 16px; position: sticky; top: 0; z-index: 2; border: none; letter-spacing: 0.01em; text-shadow: 0 2px 6px #8A2D3B, 0 1px 1px #641B2E; text-transform: uppercase; border-bottom: 3px solid #FBDB93; } .todos-table td { border: none; padding: 16px; background: #fff; color: #641B2E; vertical-align: middle; transition: all 0.2s ease; border-bottom: 1px solid #FBDB93; } .todos-table tbody tr:nth-child(even) td { background: #FBDB93; color: #641B2E; } .todos-table tbody tr:hover td { background: #BE5B50; color: #fff; } .todos-table tbody tr:last-child td { border-bottom: none; } .todos-table tbody tr:nth-child(even) td { background: #fafbff; } .todos-table tbody tr:hover td { background: #f0f0ff; } .todos-table tbody tr:last-child td { border-bottom: none; } .todos-table th.sortable { cursor: pointer; user-select: none; position: relative; } .todos-table th.sortable:after { content: ''; display: inline-block; margin-left: 8px; border: 4px solid transparent; border-top-color: #fff; vertical-align: middle; opacity: 0.6; } .todos-table th.sortable[data-col]:hover { background: #5146e1; } .table-edit-input { background: #f7f8fe; border: 1.5px solid var(--accent); border-radius: 7px; padding: 7px 10px; font-size: 1em; box-shadow: 0 1px 4px rgba(108,99,255,0.07); } /* Modal (black/white/grey palette) */ .modal { position: fixed; z-index: 2000; left: 0; top: 0; right: 0; bottom: 0; background: rgba(20,20,20,0.55); display: flex; align-items: center; justify-content: center; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); animation: fadeIn 0.2s ease-out; } .modal-content { background: #fff; padding: 36px 28px 28px 28px; border-radius: 18px; box-shadow: 0 8px 40px rgba(0,0,0,0.18); min-width: 340px; max-width: 96vw; max-height: 90vh; overflow-y: auto; animation: modalSlideIn 0.2s cubic-bezier(0.2, 0.8, 0.2, 1); border: 2px solid #e0e0e0; } .modal-edit-todo h2 { margin-top: 0; margin-bottom: 24px; color: #111; font-size: 1.4em; font-weight: 700; text-align: left; } .modal-close-btn { position: absolute; top: 18px; right: 18px; background: none; border: none; font-size: 1.9em; color: #888; cursor: pointer; transition: color 0.15s; z-index: 10; } .modal-close-btn:hover { color: #222; } #modal-todo-form input:focus, #modal-todo-form textarea:focus, #modal-todo-form select:focus { outline: 2px solid #222; border-color: #222; background: #f4f4f4; } #modal-todo-form input, #modal-todo-form textarea, #modal-todo-form select { background: #fafbfc; border: 1.5px solid #e0e0e0; color: #181818; border-radius: 8px; padding: 10px 12px; font-size: 1em; margin-bottom: 10px; width: 100%; box-sizing: border-box; transition: border-color 0.15s, background 0.15s; } #modal-todo-form label { font-weight: 600; color: #444; margin-bottom: 4px; display: block; } #modal-todo-form .add-todo-btn { margin-top: 18px; width: 100%; background: #222; color: #fff; border: none; border-radius: 8px; font-size: 1.1em; font-weight: 700; padding: 12px 0; transition: background 0.15s; } #modal-todo-form .add-todo-btn:hover { background: #444; } @keyframes modalSlideIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } #password-modal input[type='password'] { font-size: 1em; padding: 14px 16px; margin-bottom: 16px; border: 1.5px solid var(--border); border-radius: 10px; width: 100%; background: #fff; } #password-modal-error { color: var(--danger); margin-top: 12px; font-size: 0.9em; padding: 10px 14px; background: var(--danger-light); border-radius: 8px; font-weight: 500; } ::-webkit-scrollbar { width: 10px; background: #f4f6fa; } ::-webkit-scrollbar-thumb { background: #d5d7e3; border-radius: 6px; } .form-section { margin-bottom: 16px; } .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; } @media (max-width: 900px) { .todos-table { min-width: 800px; } .grid-3 { grid-template-columns: 1fr; } .grid-2 { grid-template-columns: 1fr; } } @media (max-width: 600px) { .todos-table { min-width: 500px; } #app-container { padding: 4px 0 18px 0; } } #app-container { max-width: 98vw; width: 98vw; min-height: 90vh; margin: 16px auto; padding: 16px 16px 32px 16px; background: #fff; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); box-sizing: border-box; display: flex; flex-direction: column; } @media (min-width: 1200px) { #app-container { max-width: 1600px; width: 98vw; } } .tab-bar { display: flex; gap: 0; margin-bottom: 24px; border-bottom: 2px solid #e5e7eb; } .tab-btn { flex: 1; padding: 12px 0; background: none; border: none; border-bottom: 3px solid transparent; font-size: 1.1rem; font-weight: 500; cursor: pointer; transition: border-bottom 0.2s, background 0.2s; } .tab-btn.active { border-bottom: 3px solid #2563eb; background: #f1f5fb; color: #2563eb; } .tab-content { display: none; } .tab-content.active { display: block; } h1 { text-align: center; } form { display: flex; flex-direction: column; gap: 18px; margin-bottom: 24px; } .form-section { display: flex; flex-direction: column; gap: 6px; margin-bottom: 0; } .form-section.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; } .form-section.grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 18px; } form label { font-weight: 500; margin-bottom: 3px; } form input, form select, form textarea { padding: 8px; border: 1px solid #ccc; border-radius: 4px; font-size: 1rem; width: 100%; box-sizing: border-box; } .add-todo-btn { margin-top: 10px; padding: 12px 0; background: #2563eb; color: #fff; border: none; border-radius: 6px; font-size: 1.1rem; font-weight: bold; cursor: pointer; transition: background 0.2s; } .add-todo-btn:hover { background: #1742a7; } @media (max-width: 700px) { .form-section.grid-2, .form-section.grid-3 { grid-template-columns: 1fr; } } #todos-list { margin-top: 24px; } .table-responsive { width: 100%; overflow-x: auto; max-width: 100vw; margin: 0; padding: 0; } .todos-table { width: 100%; min-width: 1100px; border-collapse: collapse; font-size: 1rem; background: #fff; table-layout: auto; } .todos-table th, .todos-table td { border: 1px solid #e5e7eb; padding: 8px 10px; text-align: left; vertical-align: top; } .todos-table th { background: #f1f5fb; position: sticky; top: 0; z-index: 1; } .todos-table tbody tr:nth-child(even) { background: #f8f9fa; } .todos-table a { color: #2563eb; text-decoration: underline; } .todos-table .status-Busy { color: #d97706; font-weight: bold; } .todos-table .status-Done { color: #16a34a; font-weight: bold; } .todos-table .status-W4A { color: #2563eb; font-weight: bold; } .todos-table .status-blank { color: #6b7280; } .status-Busy { color: #d97706; } .status-Done { color: #16a34a; } .status-W4A { color: #2563eb; } .status-blank { color: #6b7280; } .urgent, .importance, .prio { font-weight: bold; }