:root{--bg-primary: #0f1117;--bg-secondary: #161b22;--bg-tertiary: #1c2028;--border: #2d333b;--text-primary: #e1e4e8;--text-secondary: #8b949e;--text-muted: #484f58;--text-dimmed: #6e7681;--accent-blue: #58a6ff;--accent-green: #3fb950;--accent-red: #f85149;--accent-purple: #bc8cff;--accent-orange: #f0883e;--accent-yellow: #f0c000;--hover-bg: #263040}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6}.container{max-width:1100px;margin:0 auto;padding:2rem 1rem}h1{font-size:1.5rem;margin-bottom:1.5rem;color:#f0f3f6;border-bottom:1px solid var(--border);padding-bottom:.75rem}nav{display:flex;gap:.5rem;margin-bottom:2rem;flex-wrap:wrap;align-items:center}nav a,nav button{padding:.4rem 1rem;border-radius:6px;text-decoration:none;color:var(--text-secondary);background:var(--bg-tertiary);border:1px solid var(--border);font-size:.85rem;transition:all .15s;cursor:pointer}nav a:hover,nav a.active,nav button:hover{background:var(--hover-bg);color:var(--accent-blue);border-color:var(--accent-blue)}nav .logout{margin-left:auto;color:var(--accent-red)!important;border-color:#f8514933!important}nav .logout:hover{border-color:var(--accent-red)!important}.section{margin-bottom:2.5rem}.section h2{font-size:1.1rem;color:var(--text-secondary);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.05em;font-weight:500}.section-desc{font-size:.8rem;color:var(--text-muted);margin-bottom:.75rem}table{width:100%;border-collapse:collapse;font-size:.85rem}thead th{text-align:left;padding:.5rem .75rem;color:var(--text-secondary);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}tbody tr{border-bottom:1px solid var(--bg-secondary);transition:background .1s}tbody tr:hover{background:var(--bg-secondary)}td{padding:.5rem .75rem;vertical-align:top}td.project{color:var(--accent-blue);overflow:hidden;text-overflow:ellipsis}td.task-name{overflow:hidden;text-overflow:ellipsis}td.task-name a{color:var(--text-primary);text-decoration:none}td.task-name a:hover{text-decoration:underline;color:var(--accent-blue)}td.due{white-space:nowrap}td.status{white-space:nowrap;font-weight:600}td.action{color:var(--accent-purple);font-size:.8rem;overflow:hidden;text-overflow:ellipsis}.status-done{color:var(--accent-green)}.status-progress{color:var(--accent-blue)}.status-blocked{color:var(--accent-red)}.status-new{color:var(--text-secondary)}.status-unknown{color:var(--text-dimmed)}.badge{font-weight:700;font-size:.7rem;padding:.1rem .35rem;border-radius:3px;margin-left:.3rem;vertical-align:middle}.badge-overdue{background:#f8514966;color:var(--accent-red)}.badge-due{background:#d29922ab;color:var(--accent-yellow)}.badge-nodate{background:#f8514933;color:var(--accent-orange)}.empty{color:var(--text-muted);font-style:italic;font-size:.875rem;padding:.5rem 0}.login-box{max-width:360px;margin:4rem auto;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;padding:2rem}.login-box h1{text-align:center;border:none;padding:0;margin-bottom:1.5rem}.login-box label{display:block;font-size:.85rem;color:var(--text-secondary);margin-bottom:.3rem}.login-box input{width:100%;padding:.5rem .75rem;margin-bottom:1rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:.9rem}.login-box input:focus{outline:none;border-color:var(--accent-blue)}.login-box button{width:100%;padding:.6rem;background:#238636;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer;font-weight:600}.login-box button:hover{background:#2ea043}.error{color:var(--accent-red);font-size:.85rem;margin-bottom:1rem;text-align:center}.sync-bar{display:flex;align-items:center;gap:.75rem;font-size:.8rem;color:var(--text-muted);margin-bottom:1.5rem;padding:.5rem .75rem;background:var(--bg-secondary);border-radius:6px;border:1px solid var(--border)}.sync-bar button{padding:.3rem .75rem;border-radius:4px;border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-secondary);font-size:.8rem;cursor:pointer}.sync-bar button:hover{background:var(--hover-bg);color:var(--accent-blue);border-color:var(--accent-blue)}.sync-bar button:disabled{opacity:.5;cursor:not-allowed}.uf-container{position:relative;margin-bottom:1.5rem}.uf-input-row{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;padding:.4rem .6rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;cursor:text;min-height:38px}.uf-input-row:focus-within{border-color:var(--accent-blue)}.uf-input{flex:1;min-width:140px;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:.85rem;padding:.15rem 0}.uf-input::placeholder{color:var(--text-muted)}.uf-token{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;line-height:1.4}.uf-token-type{opacity:.6;font-weight:600;text-transform:uppercase;font-size:.65rem}.token-status{background:#58a6ff26;color:var(--accent-blue)}.token-project{background:#3fb95026;color:var(--accent-green)}.token-search{background:#bc8cff26;color:var(--accent-purple)}.uf-token-remove{background:none;border:none;color:inherit;opacity:.5;cursor:pointer;font-size:.9rem;line-height:1;padding:0 2px}.uf-token-remove:hover{opacity:1}.uf-clear{background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1;flex-shrink:0}.uf-clear:hover{color:var(--accent-red)}.uf-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;max-height:240px;overflow-y:auto;z-index:50;box-shadow:0 8px 24px #0006}.uf-suggestion{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;cursor:pointer;font-size:.8rem}.uf-suggestion:hover,.uf-selected{background:var(--hover-bg)}.uf-suggestion-prefix{font-size:.65rem;font-weight:700;text-transform:uppercase;color:var(--text-muted);min-width:50px}.uf-suggestion-label{color:var(--text-primary)}.loading{text-align:center;padding:3rem;color:var(--text-muted)}
