diff --git a/.gitignore b/.gitignore index ea2198f..7c4bd7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ output/ .packages/ -.DS_Store \ No newline at end of file +.DS_Store +backups/ \ No newline at end of file diff --git a/.gitignore~ b/.gitignore~ deleted file mode 100644 index e69de29..0000000 diff --git a/20241210001045-technical.org b/20241210001045-technical.org old mode 100755 new mode 100644 diff --git a/20241210001045-technical_moc.org b/20241210001045-technical_moc.org old mode 100755 new mode 100644 diff --git a/20241210001150-aoc_notes.org b/20241210001150-aoc_notes.org old mode 100755 new mode 100644 diff --git a/20241210001206-leetcode_notes.org b/20241210001206-leetcode_notes.org old mode 100755 new mode 100644 diff --git a/20241210004247-emacs_moc.org b/20241210004247-emacs_moc.org old mode 100755 new mode 100644 diff --git a/20241210004247-emacs_stuff.org b/20241210004247-emacs_stuff.org old mode 100755 new mode 100644 diff --git a/20241210004329-org_roam.org b/20241210004329-org_roam.org old mode 100755 new mode 100644 diff --git a/20241210004453-gtd.org b/20241210004453-gtd.org old mode 100755 new mode 100644 diff --git a/20241210012703-fyp.org b/20241210012703-fyp.org old mode 100755 new mode 100644 diff --git a/20241210152650-uni.org b/20241210152650-uni.org old mode 100755 new mode 100644 diff --git a/20241210152650-uni_moc.org b/20241210152650-uni_moc.org old mode 100755 new mode 100644 diff --git a/20241210152713-tpis.org b/20241210152713-tpis.org old mode 100755 new mode 100644 diff --git a/20241210232054-uml_fyp.org b/20241210232054-uml_fyp.org old mode 100755 new mode 100644 diff --git a/20241210233721-brain_moc.org b/20241210233721-brain_moc.org old mode 100755 new mode 100644 diff --git a/20241211161232- job_application_cover_letters.org b/20241211161232- job_application_cover_letters.org old mode 100755 new mode 100644 diff --git a/20241211161232-applications.org b/20241211161232-applications.org old mode 100755 new mode 100644 diff --git a/20241212013207-haskell_notes.org b/20241212013207-haskell_notes.org old mode 100755 new mode 100644 diff --git a/20241212013902-lazy_evaluation.org b/20241212013902-lazy_evaluation.org old mode 100755 new mode 100644 diff --git a/20241213005125-c_notes.org b/20241213005125-c_notes.org old mode 100755 new mode 100644 diff --git a/20241213005156-socket_programming_in_c.org b/20241213005156-socket_programming_in_c.org old mode 100755 new mode 100644 diff --git a/20241217234535-web_port_notes.org b/20241217234535-web_port_notes.org old mode 100755 new mode 100644 diff --git a/20241217234944-wp_emacs_config_blorg.org b/20241217234944-wp_emacs_config_blorg.org old mode 100755 new mode 100644 diff --git a/20241220234456-github_notes.org b/20241220234456-github_notes.org old mode 100755 new mode 100644 diff --git a/20241231172511-book_notes.org b/20241231172511-book_notes.org old mode 100755 new mode 100644 diff --git a/20241231172543-the_science_of_self_discipline.org b/20241231172543-the_science_of_self_discipline.org old mode 100755 new mode 100644 diff --git a/20250111213016-wp_prefront_cortex_blog.org b/20250111213016-wp_prefront_cortex_blog.org old mode 100755 new mode 100644 diff --git a/20250120110833-afp.org b/20250120110833-afp.org old mode 100755 new mode 100644 diff --git a/20250120111047-afp_week1.org b/20250120111047-afp_week1.org old mode 100755 new mode 100644 diff --git a/20250120113936-afp_lab_1.org b/20250120113936-afp_lab_1.org old mode 100755 new mode 100644 diff --git a/20250121110241-afp_lec_1.org b/20250121110241-afp_lec_1.org old mode 100755 new mode 100644 diff --git a/20250128110828-afp_week2.org b/20250128110828-afp_week2.org old mode 100755 new mode 100644 diff --git a/20250128111008-afp_lec_2.org b/20250128111008-afp_lec_2.org old mode 100755 new mode 100644 diff --git a/20250213124335-i3_wm.org b/20250213124335-i3_wm.org old mode 100755 new mode 100644 diff --git a/20250214155617-wp_new_emacs_config_blorg.org b/20250214155617-wp_new_emacs_config_blorg.org old mode 100755 new mode 100644 diff --git a/20250218110239-afp_week5.org b/20250218110239-afp_week5.org old mode 100755 new mode 100644 diff --git a/20250218110346-afp_lec_5.org b/20250218110346-afp_lec_5.org old mode 100755 new mode 100644 diff --git a/20250218174735-emacs_stuff_keybindings.org b/20250218174735-emacs_stuff_keybindings.org old mode 100755 new mode 100644 diff --git a/20250226184629-wp_urge_surfing_blorg.org b/20250226184629-wp_urge_surfing_blorg.org old mode 100755 new mode 100644 diff --git a/20250314223811-wp_growth_mindset.org b/20250314223811-wp_growth_mindset.org old mode 100755 new mode 100644 diff --git a/20250314230952-wp_emotional_intelligence.org b/20250314230952-wp_emotional_intelligence.org old mode 100755 new mode 100644 diff --git a/20250324041724-wp_week_12_reflections.org b/20250324041724-wp_week_12_reflections.org old mode 100755 new mode 100644 diff --git a/20250326002128-emacs_stuff_elisp.org b/20250326002128-emacs_stuff_elisp.org old mode 100755 new mode 100644 diff --git a/20250329114733-ise.org b/20250329114733-ise.org old mode 100755 new mode 100644 diff --git a/20250329114848-ise_week_1.org b/20250329114848-ise_week_1.org old mode 100755 new mode 100644 diff --git a/20250329121843-ise_week_2.org b/20250329121843-ise_week_2.org old mode 100755 new mode 100644 diff --git a/20250329142725-ise_week_3.org b/20250329142725-ise_week_3.org old mode 100755 new mode 100644 diff --git a/20250329200158-ise_week_4.org b/20250329200158-ise_week_4.org old mode 100755 new mode 100644 diff --git a/20250329231658-emacs_stuff_magit.org b/20250329231658-emacs_stuff_magit.org old mode 100755 new mode 100644 diff --git a/20250331201944-ise_week_5.org b/20250331201944-ise_week_5.org old mode 100755 new mode 100644 diff --git a/20250331202447-ise_week_7.org b/20250331202447-ise_week_7.org old mode 100755 new mode 100644 diff --git a/20250402185735-java_moc.org b/20250402185735-java_moc.org old mode 100755 new mode 100644 diff --git a/20250402185735-technical_java_notes.org b/20250402185735-technical_java_notes.org old mode 100755 new mode 100644 diff --git a/20250403120140-fyp_report_planning.org b/20250403120140-fyp_report_planning.org old mode 100755 new mode 100644 diff --git a/20250412234351-wp_sadness.org b/20250412234351-wp_sadness.org old mode 100755 new mode 100644 diff --git a/20250417173809-linux_moc.org b/20250417173809-linux_moc.org old mode 100755 new mode 100644 diff --git a/20250417173809-linux_stuff.org b/20250417173809-linux_stuff.org old mode 100755 new mode 100644 diff --git a/20250417173821-wacom_notes.org b/20250417173821-wacom_notes.org old mode 100755 new mode 100644 diff --git a/20250420012258-emacs_stuff_evil.org b/20250420012258-emacs_stuff_evil.org old mode 100755 new mode 100644 diff --git a/20250428133236-systemd_services.org b/20250428133236-systemd_services.org old mode 100755 new mode 100644 diff --git a/20250430001952-microlise_assessment.org b/20250430001952-microlise_assessment.org old mode 100755 new mode 100644 diff --git a/20250516161728-gpg_encryption.org b/20250516161728-gpg_encryption.org old mode 100755 new mode 100644 diff --git a/20250703183239-linux_arch_linux.org b/20250703183239-linux_arch_linux.org old mode 100755 new mode 100644 diff --git a/20250715223949-the_clean_coder.html b/20250715223949-the_clean_coder.html deleted file mode 100755 index 4c1ca7a..0000000 --- a/20250715223949-the_clean_coder.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - - -The-Clean-Coder - - - - - -
-

The-Clean-Coder

-
-

Table of Contents

- -
-
-

1. Chapter 1: PROFESIONALISM

-
-
-
-

1.1. Do no harm

-
-

-No harm should be done to the function of our software. The harm comes about when there are bugs, the QA should find no bugs in the software. If the software is too complex to run without there being bugs, reduce the complexity of the software. Find ways to ensure that the code is designed so that it is easy to test. Aim for 100% test coverage, everything should be tested; automate the testing so you don't waste too much time. -

-
-
-
-

1.2. Do no harm to the structure

-
-

-It is the structure of your code that allows it to be flexible. If you compromise the structure, you compromise the future. If you want the software to be flexible, you have to flex it. This is done by making easy changes to it all the time, which is known as merciless refactoring. -

-
-
-
-

1.3. Work ethic

-
-

-Your career is your responsability and nobody else's. The 40 hours at work should be spent on the employers problems, and the extra 20 hours should be spent reading, practicing, learning, and otherwise enhancing your career. -

-
-
-
-

1.4. Know your field

-
-

-Do you know what a Nassi-Schneiderman chart is? If not, why not? Do you know the difference between a Mealy and a Moore state machine? You should. Could you write a quicksort without looking it up? Do you know what the term “Transform Analysis” means? Could you perform a functional decomposition with Data Flow Diagrams? What does the term “Tramp Data” mean? Have you heard the term “Conascence”? What is a Parnas Table? If you want to be a professional, you should know a sizable chunk of ideas, disciplines, techniques, tools, and terminologies and constantly be increasing the size of that chunk. -

- -

-Here is a minimal list of the things that every software professional should be conversant with: -• Design patterns. You ought to be able to describe all 24 patterns in the GOF book and have a working knowledge of many of the patterns in the POSA books. -• Design principles. You should know the SOLID principles and have a good understanding of the component principles. -• Methods. You should understand XP, Scrum, Lean, Kanban, Waterfall, Structured Analysis, and Structured Design. -• Disciplines. You should practice TDD, Object-Oriented design, Structured Programming, Continuous Integration, and Pair Programming. -• Artifacts: You should know how to use: UML, DFDs, Structure Charts, Petri Nets, State Transition Diagrams and Tables, flow charts, and decision tables. -

-
-
-
-

1.5. Continuous learning

-
-

-Read books, articles, blogs, tweets. Go to conferences. Go to user groups. Participate in reading and study groups. Learn things that are outside your comfort zone. If you are a .NET programmer, learn Java. If you are a Java programmer, learn Ruby. If you are a C programmer, learn Lisp. If you want to really bend your brain, learn Prolog and Forth! -

-
-
-
-

1.6. Practice

-
-

-Doing your daily job is performance, not practice. Practice is when you specifically exercise your skills outside of the performance of your job for the sole purpose of refining and enhancing those skills. More on this later. -

-
-
-
-

1.7. Collaboration

-
-

-Make a speacial effort to practice, program, plan and design together (not for 100% of your time). -

-
-
-
-

1.8. Mentoring

-
-

-The best way to learn is to teach. -

-
-
-
-

1.9. Know your domain

-
-

-It is the responsibility of every software professional to understand the domain of the solutions they are programming. If you are writing an accounting system, you should know the accounting field. If you are writing a travel application, you should know the travel industry. When starting a project in a new domain, read a book or two on the topic. Interview your customer and users about the foundation and basics of the domain. Spend some time with the experts, and try to understand their principles and values. -

-
-
-
-

1.10. Identify with your Employer/Customer

-
-

-Put yourself in your employer’s shoes and make sure that the features you are developing are really going to address your employer’s needs. -

-
-
-
-

1.11. Humility

-
-

-Professionals know they are arrogant and are not falsely humble. A professional knows his job and takes pride in his work. A professional is confident in his abilities, and takes bold and calculated risks based on that confidence. A professional is not timid. However, a professional also knows that there will be times when he will fail, his risk calculations will be wrong, his abilities will fall short. Be your own critique and never ridicule others, accept ridicule when deserved and laugh it off when it's not. -

-
-
-
-
-
-

Author: Zaine Qayyum

-

Created: 2025-07-16 Wed 21:52

-

Validate

-
- - diff --git a/20250715223949-the_clean_coder.org b/20250715223949-the_clean_coder.org old mode 100755 new mode 100644 diff --git a/20250717230336-recipes_main.org b/20250717230336-recipes_main.org old mode 100755 new mode 100644 diff --git a/20250717230336-recipes_moc.org b/20250717230336-recipes_moc.org old mode 100755 new mode 100644 diff --git a/20250719174944-recipes_ideas.org b/20250719174944-recipes_ideas.org old mode 100755 new mode 100644 diff --git a/20250719175023-recipes_done.org b/20250719175023-recipes_done.org old mode 100755 new mode 100644 diff --git a/20250722221649-career_moc.org b/20250722221649-career_moc.org old mode 100755 new mode 100644 diff --git a/20250723171109-maven_pom_file.org b/20250723171109-maven_pom_file.org old mode 100755 new mode 100644 diff --git a/20250723182408-so-good-they-cant-ignore-you.org b/20250723182408-so-good-they-cant-ignore-you.org old mode 100755 new mode 100644 diff --git a/20250723182408-so_good_they_cant_ignore_you.org b/20250723182408-so_good_they_cant_ignore_you.org old mode 100755 new mode 100644 diff --git a/20250723183655-career_capital.org b/20250723183655-career_capital.org old mode 100755 new mode 100644 diff --git a/20250723183755-deliberate_practice.org b/20250723183755-deliberate_practice.org old mode 100755 new mode 100644 diff --git a/20250723184233-advanced_networking.org b/20250723184233-advanced_networking.org old mode 100755 new mode 100644 diff --git a/20250723184430-stanford_marshmallow_experiment.org b/20250723184430-stanford_marshmallow_experiment.org old mode 100755 new mode 100644 diff --git a/20250723185056-neuroplasticity.org b/20250723185056-neuroplasticity.org old mode 100755 new mode 100644 diff --git a/20250723185829-test_driven_development.org b/20250723185829-test_driven_development.org old mode 100755 new mode 100644 diff --git a/20250723185943-bowling_kata.org b/20250723185943-bowling_kata.org old mode 100755 new mode 100644 diff --git a/20250723190203-java_portswrigger_test.org b/20250723190203-java_portswrigger_test.org old mode 100755 new mode 100644 diff --git a/20250723190656-java_junit_testing.org b/20250723190656-java_junit_testing.org old mode 100755 new mode 100644 diff --git a/20250723190927-self_hosting.org b/20250723190927-self_hosting.org old mode 100755 new mode 100644 diff --git a/20250723200800-postgres.org b/20250723200800-postgres.org old mode 100755 new mode 100644 diff --git a/20250724230557-books_org_agenda.org b/20250724230557-books_org_agenda.org old mode 100755 new mode 100644 diff --git a/20250727120306-nextcloud.org b/20250727120306-nextcloud.org old mode 100755 new mode 100644 diff --git a/20250727121051-networking_moc.org b/20250727121051-networking_moc.org old mode 100755 new mode 100644 diff --git a/20250727122406-database_moc.org b/20250727122406-database_moc.org old mode 100755 new mode 100644 diff --git a/20250727174809-books_moc.org b/20250727174809-books_moc.org old mode 100755 new mode 100644 diff --git a/20250727174903-book_recs.org b/20250727174903-book_recs.org old mode 100755 new mode 100644 diff --git a/20250727221512-clean_code.org b/20250727221512-clean_code.org old mode 100755 new mode 100644 diff --git a/20250804201706-big_o_complexity.org b/20250804201706-big_o_complexity.org old mode 100755 new mode 100644 diff --git a/20250804212215-how_to_solve_leetcode.org b/20250804212215-how_to_solve_leetcode.org old mode 100755 new mode 100644 diff --git a/20250804212606-leetcode_arrays.org b/20250804212606-leetcode_arrays.org old mode 100755 new mode 100644 diff --git a/20250804214537-python_set.org b/20250804214537-python_set.org old mode 100755 new mode 100644 diff --git a/20250805141906-python_dictionary.org b/20250805141906-python_dictionary.org old mode 100755 new mode 100644 diff --git a/20250805143427-python_sorted_function.org b/20250805143427-python_sorted_function.org old mode 100755 new mode 100644 diff --git a/20250805143741-python_lambda.org b/20250805143741-python_lambda.org old mode 100755 new mode 100644 diff --git a/20250806111925-non_technical_moc.org b/20250806111925-non_technical_moc.org old mode 100755 new mode 100644 diff --git a/20250806155335-emacs_stuff_org_publish.org b/20250806155335-emacs_stuff_org_publish.org old mode 100755 new mode 100644 diff --git a/20250819174119-naqshe_hayat.org b/20250819174119-naqshe_hayat.org old mode 100755 new mode 100644 diff --git a/20250918120519-misc_moc.org b/20250918120519-misc_moc.org old mode 100755 new mode 100644 diff --git a/20250918120706-wedding_moc.org b/20250918120706-wedding_moc.org old mode 100755 new mode 100644 diff --git a/20250926151524-workflow_moc.org b/20250926151524-workflow_moc.org old mode 100755 new mode 100644 diff --git a/20251002154125-microlise_moc.org b/20251002154125-microlise_moc.org old mode 100755 new mode 100644 diff --git a/20251002154204-pre_work_prep_microlise.org b/20251002154204-pre_work_prep_microlise.org old mode 100755 new mode 100644 diff --git a/20251019114736-server_moc.org b/20251019114736-server_moc.org old mode 100755 new mode 100644 diff --git a/20251019114758-old_nextcloud_server_code.org b/20251019114758-old_nextcloud_server_code.org old mode 100755 new mode 100644 diff --git a/20251101123637-backlog.org b/20251101123637-backlog.org old mode 100755 new mode 100644 diff --git a/20251109205925-old_nginx_code.org b/20251109205925-old_nginx_code.org old mode 100755 new mode 100644 diff --git a/20251122223053-keyboard.org b/20251122223053-keyboard.org old mode 100755 new mode 100644 diff --git a/20251214210526-useful_c_imports.org b/20251214210526-useful_c_imports.org old mode 100755 new mode 100644 diff --git a/20251223215636-design_patterns_notes.html b/20251223215636-design_patterns_notes.html deleted file mode 100755 index 5174796..0000000 --- a/20251223215636-design_patterns_notes.html +++ /dev/null @@ -1,368 +0,0 @@ - - - - - - - -design-patterns-notes - - - - -
-

design-patterns-notes

-
-

Table of Contents

- -
-
-

1. Design patterns. What are they?

-
-

-They are reusable solutions to common problems in software design. They help to make code more flexible, maintainable, and scalable. -

- -

-Patterns allow you to say more with less. When you use a pattern in a description, other developers quickly know precisely the design you have in mind. -

-
-
-

1.1. OO concepts:

-
-
-
-

1.1.1. Abstraction:

-
-

-Focuses on essential features while hiding unnecessary internal details, allowing developers to work with high‑level concepts instead of implementation complexity. -

- -

-Example: A Car class exposes start() and stop() methods without revealing how the engine ignition system works. -

-
-
-
-

1.1.2. Inheritance:

-
-

-Enables one class to derive properties and behaviours from another, promoting code reuse and creating natural parent–child hierarchies. -

- -

-Example: A Dog class inherits from an Animal class, automatically gaining attributes like age and methods like eat(). -

-
-
-
-

1.1.3. Encapsulation:

-
-

-Protects an object’s internal state by restricting direct access to its data and exposing controlled interfaces for interaction. -

- -

-Example: A BankAccount class keeps its balance private and provides deposit() and withdraw() methods to modify it safely. -

-
-
-
-

1.1.4. Polymorphism:

-
-

-Allows different objects to respond to the same interface or method call in their own unique ways, enabling flexible and extensible system design. -

- -

-Example: Calling makeSound() on an Animal reference triggers bark() for a Dog and meow() for a Cat. -

-
-
-
-
-

1.2. OO principles:

-
-
    -
  • Encapsulate what varies
  • - -
  • Favor composition over inheritance
  • - -
  • Program to interfaces, not implementations
  • - -
  • Strive for loosely coupled designs between objects that interact
  • -
-
-
-
-

1.3. OO Patterns

-
-

-You have: -

-
    -
  • behavioural patterns
  • -
  • creational patterns
  • -
  • structural patterns
  • -
-
-
-

1.3.1. Behavioural patterns

-
-
-
    -
  1. Structural:
    -
    -

    -The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. -

    -
    -
  2. -
  3. Observer:
    -
    -

    -The Observer Pattern defines a one-to-many dependency between objects so that when -one object changes state, all of its dependents are notified and updated automatically. -

    - -

    -Subjects, or as we also know them, Observables, update Observers using a common -interface -

    - -

    -Observers are loosely coupled in that the Observable knows nothing about them, -other than that they implement the Observer interface. -

    - -

    -You can push or pull data from the Observable when using the pattern (pull is -considered more “correct”). -

    - -

    -Don’t depend on a specific order of notification for your Observers. -

    - -

    -Java has several implementations of the Observer Pattern, including the general -purpose java.util.Observable -

    -
    -
  4. -
-
-
-
-
-
-

Created: 2025-12-24 Wed 14:03

-

Validate

-
- - diff --git a/20251223215636-design_patterns_notes.org b/20251223215636-design_patterns_notes.org old mode 100755 new mode 100644 diff --git a/20251223215636-design_patterns_notes.org~ b/20251223215636-design_patterns_notes.org~ deleted file mode 100755 index b21b102..0000000 --- a/20251223215636-design_patterns_notes.org~ +++ /dev/null @@ -1,71 +0,0 @@ -:PROPERTIES: -:ID: 631b2086-4b8f-4fe3-829d-be1dc014e293 -:END: -#+title: design-patterns-notes -#+filetags: :notes:career:technical: - -* Design patterns. What are they? - - -They are reusable solutions to common problems in software design. They help to make code more flexible, maintainable, and scalable. - -Patterns allow you to say more with less. When you use a pattern in a description, other developers quickly know precisely the design you have in mind. - -** OO concepts: -*** Abstraction: -Focuses on essential features while hiding unnecessary internal details, allowing developers to work with high‑level concepts instead of implementation complexity. - -Example: A Car class exposes start() and stop() methods without revealing how the engine ignition system works. - -*** Inheritance: -Enables one class to derive properties and behaviours from another, promoting code reuse and creating natural parent–child hierarchies. - -Example: A Dog class inherits from an Animal class, automatically gaining attributes like age and methods like eat(). - -*** Encapsulation: -Protects an object’s internal state by restricting direct access to its data and exposing controlled interfaces for interaction. - -Example: A BankAccount class keeps its balance private and provides deposit() and withdraw() methods to modify it safely. - -*** Polymorphism: -Allows different objects to respond to the same interface or method call in their own unique ways, enabling flexible and extensible system design. - -Example: Calling makeSound() on an Animal reference triggers bark() for a Dog and meow() for a Cat. - -** OO principles: - -- Encapsulate what varies - -- Favor composition over inheritance - -- Program to interfaces, not implementations - -- Strive for loosely coupled designs between objects that interact - -** OO Patterns - -You have: -- *behavioural* patterns -- *creational* patterns -- *structural* patterns - -*** Behavioural patterns -**** Structural: -The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. -**** Observer: -The Observer Pattern defines a one-to-many dependency between objects so that when -one object changes state, all of its dependents are notified and updated automatically. - -Subjects, or as we also know them, Observables, update Observers using a common -interface - -Observers are loosely coupled in that the Observable knows nothing about them, -other than that they implement the Observer interface. - -You can push or pull data from the Observable when using the pattern (pull is -considered more “correct”). - -Don’t depend on a specific order of notification for your Observers. - -Java has several implementations of the Observer Pattern, including the general -purpose java.util.Observable diff --git a/20251223220531-technical_commonplace.org b/20251223220531-technical_commonplace.org old mode 100755 new mode 100644 diff --git a/20251229180039-airflow.org~ b/20251229180039-airflow.org~ deleted file mode 100644 index ba6ba96..0000000 --- a/20251229180039-airflow.org~ +++ /dev/null @@ -1,5 +0,0 @@ -:PROPERTIES: -:ID: c6cf8f7a-778f-4e83-b607-753ef8dbb3f1 -:END: -#+title: airflow - diff --git a/20251229180156-airflow_tasks.org~ b/20251229180156-airflow_tasks.org~ deleted file mode 100644 index 6246851..0000000 --- a/20251229180156-airflow_tasks.org~ +++ /dev/null @@ -1,6 +0,0 @@ -:PROPERTIES: -:ID: 1ea42d73-3cd1-4cac-a6ee-028de21d08d5 -:END: -#+title: Airflow Tasks -#+filetags: :airflow:database:docs: - diff --git a/20251229180249-airflow_dags.org~ b/20251229180249-airflow_dags.org~ deleted file mode 100644 index a8a190d..0000000 --- a/20251229180249-airflow_dags.org~ +++ /dev/null @@ -1,6 +0,0 @@ -:PROPERTIES: -:ID: 3b16e19a-62f0-4705-a451-a8790181941f -:END: -#+title: Airflow Dags - -A DAG (short for directed acyclic graphs) is a model that encapsulates everything needed to execute a workflow. [[https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html][See this]] diff --git a/Makefile b/Makefile index 8e72b13..af8d87d 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all fast clean tests help +.PHONY: all fast clean norm tests help # Default target: full build with search index all: @@ -15,6 +15,10 @@ clean: @echo "Cleaning output directory..." rm -rf output/ +norm: + @echo "sorting out the backups..." + find . -path ./backups -prune -o -type f -name '*~' -exec mv {} backups/ \; + tests: @echo "Running all the tests..." emacs -batch -l ert -l tests/macros-tests.el -f ert-run-tests-batch-and-exit @@ -26,4 +30,5 @@ help: @echo " make fast - Fast rebuild (without search index)" @echo " make clean - Remove output directory" @echo " make tests - Run all of the tests associated with the project" + @echo " make norm - Move all files that end with ~ to the backup folder" @echo " make help - Show this help message" diff --git a/all-files.org b/all-files.org old mode 100755 new mode 100644 diff --git a/assets/scripts/script.js~ b/assets/scripts/script.js~ deleted file mode 100755 index bf8af6c..0000000 --- a/assets/scripts/script.js~ +++ /dev/null @@ -1,335 +0,0 @@ - - -/* Event listener function for the COPY BUTTON */ -document.addEventListener("DOMContentLoaded", function () { - document.querySelectorAll("pre.src").forEach(function (codeBlock) { - const button = document.createElement("button"); - button.innerText = "Copy"; - button.className = "copy-btn"; - - // Append button inside
-	codeBlock.appendChild(button);
-
-	button.addEventListener("click", function () {
-	    const text = codeBlock.innerText.replace(button.innerText, ""); // exclude button text
-	    navigator.clipboard.writeText(text.trim()).then(() => {
-		button.innerText = "Copied!";
-		setTimeout(() => (button.innerText = "Copy"), 1500);
-	    });
-	});
-    });
-});
-
-
-/* Event listener for footnotes and sidenotes*/
-document.addEventListener("DOMContentLoaded", () => {
-    document.querySelectorAll('a.footref[href^="#fn"]').forEach(ref => {
-	const sup = ref.closest("sup") || ref;
-	// idempotent: don't insert twice
-	if (sup.nextElementSibling && sup.nextElementSibling.classList?.contains("footnote-sidenote")) return;
-	
-	const targetId = ref.getAttribute("href").replace(/^#/, ""); // works for fn.2 or fn2
-
-	const anchor   = document.getElementById(targetId);
-	if (!anchor) return;
-	
-	const footdef = anchor.closest(".footdef") || anchor.parentElement;
-	if (!footdef) return;
-	
-	// 1) Prefer leaf paragraphs to avoid div+p duplication
-	let paras = footdef.querySelectorAll("p.footpara");
-	if (!paras.length) {
-	    // fallback: any .footpara elements that don't contain another .footpara
-	    paras = footdef.querySelectorAll(".footpara:not(:has(.footpara))");
-	}
-
-	// 2) Build HTML, de-duplicating by text content
-	let parts = [];
-	if (paras.length) {
-	    const seen = new Set();
-	    parts = Array.from(paras).map(p => {
-		const txt = p.textContent.trim().replace(/\s+/g, " ");
-		if (seen.has(txt)) return "";
-		seen.add(txt);
-		return p.innerHTML.trim();
-	    }).filter(Boolean);
-	}
-
-	// 3) Fallback: clean full block if no paras found
-	if (!parts.length) {
-	    const clone = footdef.cloneNode(true);
-	    clone.querySelectorAll("sup.footnum, a[role='doc-backlink']").forEach(n => n.remove());
-	    parts = [clone.innerHTML.trim()];
-	}
-
-	// 4) Insert the sidenote
-	const sn = document.createElement("span");
-	sn.className = "sidenote footnote-sidenote";
-	sn.setAttribute("data-fn", (ref.textContent || "").trim());
-	sn.innerHTML = parts.join(" ");
-	
-	sup.insertAdjacentElement("afterend", sn);
-    });
-});
-
-
-/* Function for setting the theme */
-(function(){
-    const root = document.documentElement;
-    const storageKey = "theme";
-    const saved = localStorage.getItem(storageKey);
-    if (saved === "dark" || saved === "light") {
-	root.setAttribute("data-theme", saved);
-    }
-    const btn = document.getElementById("theme-toggle");
-    if (!btn) return;
-    btn.addEventListener("click", () => {
-	const current = root.getAttribute("data-theme");
-	const next = current === "dark" ? "light" : "dark";
-	// If no current (auto), assume we’re toggling to dark first
-	const target = current ? next : "dark";
-	root.setAttribute("data-theme", target);
-	localStorage.setItem(storageKey, target);
-    });
-})();
-
-
-// Simple, timezone-safe if you pass UTC (…Z) in the datetime
-document.addEventListener('DOMContentLoaded', () => {
-  const els = document.querySelectorAll('time.countdown');
-  if (!els.length) return;
-
-  const plural = (n, w) => `${n} ${w}${n === 1 ? '' : 's'}`;
-
-  const render = (el) => {
-    const raw = el.getAttribute('datetime');
-    const label = el.dataset.label || '';
-    const target = new Date(raw);           // Prefer ISO like 2025-12-31T00:00:00Z
-    if (isNaN(target)) { el.textContent = '—'; return; }
-
-    const now = new Date();
-    let diff = target - now;
-
-    if (diff <= 0) {
-      el.textContent = `${label ? label + ' ' : ''}today`;
-      el.classList.add('expired');
-      return;
-    }
-
-    const d = Math.floor(diff / 86400000);  diff -= d * 86400000;
-    const h = Math.floor(diff / 3600000);   diff -= h * 3600000;
-    const m = Math.floor(diff / 60000);     diff -= m * 60000;
-    const s = Math.floor(diff / 1000);
-
-    const pieces = [];
-    if (d) pieces.push(plural(d, 'day'));
-    pieces.push(`${h}h ${m}m ${s}s`);
-
-    el.textContent = `${label ? label + ' in : ' : ''}${pieces.join(' ')}`;
-  };
-
-  const tick = () => els.forEach(render);
-  tick();
-  setInterval(tick, 1000); // update every second
-});
-
-
-
-/* Event listener for scrolling and changing the active label on the TOC */
-document.addEventListener("DOMContentLoaded", () => {
-    const toc = document.querySelector("#text-table-of-contents");
-    if (!toc) { console.warn("No #text-table-of-contents found"); return; }
-
-    const links = toc.querySelectorAll('a[href^="#"]'); // '^=' is a starts with operator.
-    // Intro   matches  
-    if (!links.length) { console.warn("No ToC links found"); return; }
-
-    // Map: id -> link
-    const linkById = new Map();
-    links.forEach(a => {
-	const id = decodeURIComponent(a.getAttribute("href").slice(1));
-	const el = document.getElementById(id);
-	if (el) linkById.set(id, a);
-    });
-    if (!linkById.size) { console.warn("No matching headings with IDs"); return; }
-
-    // Headings to observe (h2–h4 usually)
-    const headings = [...document.querySelectorAll("h2[id], h3[id], h4[id]")]
-	  .filter(h => linkById.has(h.id));
-
-    // Helper to mark active
-    const setActive = (id) => {
-	links.forEach(a => {
-	    const active = a.getAttribute("href") === `#${id}`;
-	    a.classList.toggle("is-active", active);
-	    if (active) a.setAttribute("aria-current", "true");
-	    else a.removeAttribute("aria-current");
-	});
-    };
-
-    // Calculate sticky header offset in px
-    const headerOffsetPx = 6.5 * parseFloat(getComputedStyle(document.documentElement).fontSize);
-
-    // Track visible headings (id -> distance from top)
-    const visible = new Map();
-
-    const observer = new IntersectionObserver((entries) => {
-	entries.forEach(entry => {
-	    const id = entry.target.id;
-	    if (entry.isIntersecting) {
-		// How far from the top (after header offset)
-		const dist = entry.target.getBoundingClientRect().top - headerOffsetPx;
-		visible.set(id, dist);
-	    } else {
-		visible.delete(id);
-	    }
-	});
-	
-	if (visible.size) {
-	    // Choose the heading closest to the top (>= -headerOffset)
-	    const topMost = [...visible.entries()]
-		  .sort((a,b) => Math.abs(a[1]) - Math.abs(b[1]))[0][0];
-	    setActive(topMost);
-	    // console.log("Active:", topMost, visible);
-	}
-    }, {
-	root: null,                                   // track relative to viewport
-	rootMargin: `-${headerOffsetPx}px 0px -70% 0px`,
-	threshold: [0, 0.01, 0.1]                     // fire as soon as it enters
-    });
-    
-    headings.forEach(h => observer.observe(h));
-
-    // Initial highlight (in case load mid‑page)
-    let bestId = null, bestDist = Infinity;
-    headings.forEach(h => {
-	const top = h.getBoundingClientRect().top - headerOffsetPx;
-	const dist = top < 0 ? Math.abs(top) : top + 1e6;
-	if (dist < bestDist) { bestDist = dist; bestId = h.id; }
-    });
-    if (bestId) setActive(bestId);
-    
-    // smooth-scroll ToC clicks
-    toc.addEventListener("click", (e) => {
-	const a = e.target.closest('a[href^="#"]');
-	if (!a) return;
-	const id = decodeURIComponent(a.hash.slice(1));
-	const el = document.getElementById(id);
-	if (!el) return;
-	e.preventDefault();
-	el.scrollIntoView({ behavior: "smooth", block: "start" });
-	el.setAttribute("tabindex", "-1");
-	el.focus({ preventScroll: true });
-	history.pushState(null, "", `#${id}`);
-    });
-});
-
-
-document.addEventListener("click", (e) => {
-  const link = e.target.closest("a");
-  if (!link) return;
-
-  const href = link.getAttribute("href");
-  if (!href) return;
-
-  // Ignore pure fragment links (#foo)
-  if (href.startsWith("#")) return;
-
-  // Resolve relative → absolute
-  const url = new URL(href, window.location.href);
-
-  // Only intercept same-origin HTML pages
-  if (url.origin !== window.location.origin) return;
-  if (!url.pathname.endsWith(".html")) return;
-
-  e.preventDefault();
-
-  pushPane(url.pathname + url.hash);
-});
-
-async function pushPane(urlWithHash) {
-  const [url, hash] = urlWithHash.split("#");
-
-  const track = document.querySelector(".stack-track");
-
-const existing = [...track.children].find(p => p.dataset.url === urlWithHash);
-if (existing) {
-  existing.scrollIntoView({ behavior: "smooth", inline: "end" });
-  return;
-}
-  const res = await fetch(url);
-  const html = await res.text();
-  const doc = new DOMParser().parseFromString(html, "text/html");
-
-  const content = doc.querySelector("#content");
-  if (!content) return;
-
-  const pane = document.createElement("article");
-  pane.className = "stack-pane";
-  pane.dataset.url = urlWithHash;
-  
-  pane.innerHTML = `
-  
- -
-`; - - pane.appendChild(content); - track.appendChild(pane); - pane.scrollIntoView({ behavior: "smooth", inline: "end" }); - - // Scroll to the anchor if present - if (hash) { - requestAnimationFrame(() => { - const target = pane.querySelector(`#${CSS.escape(hash)}`); - target?.scrollIntoView({ behavior: "smooth", block: "start" }); - }); - } -pane.querySelector(".pane-close").addEventListener("click", () => { - pane.remove(); - updateURL(); -}); - - updateURL(); -} - -function updateURL() { - const panes = [...document.querySelectorAll(".stack-pane")]; - - const urls = panes.map(p => p.dataset.url); - - const params = new URLSearchParams(window.location.search); - params.set("stackedNotes", urls.join("|")); - - history.replaceState({}, "", "?" + params.toString()); -} - -window.addEventListener("DOMContentLoaded", async () => { - const params = new URLSearchParams(window.location.search); - const stack = params.get("stackedNotes"); - if (!stack) return; - - const urls = stack.split("|"); - - // First pane is already rendered by Org - const base = urls[0]; - const current = window.location.pathname + window.location.hash; - - // Only continue if URL matches base - if (base !== current && !base.startsWith(window.location.pathname)) { - console.warn("Stack base mismatch:", base, current); - return; - } - - // Load remaining panes sequentially - for (const url of urls.slice(1)) { - await pushPane(url); - } - - // Scroll to last pane - const panes = document.querySelectorAll(".stack-pane"); - panes[panes.length - 1]?.scrollIntoView({ - behavior: "auto", - inline: "end" - }); -}); diff --git a/assets/scripts/search.js~ b/assets/scripts/search.js~ deleted file mode 100755 index 8255750..0000000 --- a/assets/scripts/search.js~ +++ /dev/null @@ -1,34 +0,0 @@ -let index = []; - -fetch("/search-index.json") - .then(r => r.json()) - .then(data => index = data); - -const box = document.getElementById("search-box"); -const results = document.getElementById("search-results"); - - -document.addEventListener("click", (e) => { - const searchBox = document.getElementById("search-box"); - const results = document.getElementById("search-results"); - -}); - - -box.addEventListener("input", () => { - const q = box.value.toLowerCase(); - results.innerHTML = ""; - - if (q.length < 2) return; - - index - .filter(e => - e.title.toLowerCase().includes(q) - ) - //.slice(0, 10) - .forEach(e => { - const div = document.createElement("div"); - div.innerHTML = `${e.title}`; - results.appendChild(div); - }); -}); diff --git a/assets/styles/media.css~ b/assets/styles/media.css~ deleted file mode 100755 index ac30e08..0000000 --- a/assets/styles/media.css~ +++ /dev/null @@ -1,106 +0,0 @@ -@media (max-width: 600px){ - .banner-header{ flex-direction: column; align-items: center; text-align: center; } - .banner-logo{ margin: 0 0 .5rem 0; } - nav{ flex-wrap: wrap; justify-content: center; gap: .5rem; font-size: 1rem; } - - - .theme-toggle { - position: static; - order: 2; - margin-left: .5rem; - padding: .3rem .6rem; - background: transparent; - } - - .banner-header { - flex-wrap: wrap; - justify-content: center; - } - .banner-header nav { - display: flex; - align-items: center; - flex-wrap: wrap; - } - - body.no-sidenotes { - margin-left: 1em; - margin-right: 1em; - } - - #mobile-move-panel { - display: block; - } - -} -@media (prefers-color-scheme: dark){ - :root:not([data-theme="light"]){ - --bg: #0f1115; - --fg: #e6e6e6; - --link: #8ab4ff; - --heading: #9ecbff; - --code-bg: #1a1d24; - - --note-color: #c2c7cf; - --note-bg: transparent; - - --border: #2a2f3a; - --chip-bg: #1f2330; - --chip-fg: #cfd3da; - --muted: #a9b0bb; - } - .countdown-wrap { - color: var(--fg, #ddd); - } - time.countdown { - color: var(--accent, #7abfff); - background: color-mix(in srgb, var(--accent, #7abfff) 15%, transparent); - box-shadow: 0 0 6px rgba(255,255,255,0.05); - } - time.countdown.expired { - color: #777; - } -} - -@media (max-width: 1250px){ - #preamble.status{ - padding-right: var(--body-pad); - } - - #content.content{ - padding-right: var(--body-pad); - } - .sidenote, - .marginnote{ - float: none; - clear: both; - width: auto; - display: block; - margin: 0.5rem 0 0.75rem; - padding-left: 0.75rem; - border-left: 3px solid rgba(0,0,0,.08); - margin-right: 0; - } - .fullwidth{ - max-width: calc(100vw - 2 * var(--body-pad)); - } - .sidenote, .marginnote{ - border-left: 3px solid color-mix(in oklab, var(--fg) 12%, transparent); - } - .sidenote .mn-img, - .marginnote .mn-img{ - border-color: color-mix(in oklab, var(--fg) 12%, transparent); - } - - #table-of-contents{ - float: none; - position: static; - width: auto; - margin: 0 0 1rem; - padding: .5rem .75rem; - border-right: 0; - border-left: 3px solid color-mix(in oklab, var(--fg) 12%, transparent); - background: color-mix(in oklab, var(--bg) 96%, var(--fg) 4%); - border-radius: 4px; - } - -} diff --git a/assets/styles/org.css~ b/assets/styles/org.css~ deleted file mode 100755 index 84cdf06..0000000 --- a/assets/styles/org.css~ +++ /dev/null @@ -1,2462 +0,0 @@ -/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html { - font-family:sans-serif; - line-height:1.15; - -ms-text-size-adjust:100%; - -webkit-text-size-adjust:100% -} -body { - margin:0 -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -main, -menu, -nav, -section, -summary { - display:block -} -audio, -canvas, -progress, -video { - display:inline-block -} -audio:not([controls]) { - display:none; - height:0 -} -progress { - vertical-align:baseline -} -[hidden], -template { - display:none -} -a { - background-color:transparent; - -webkit-text-decoration-skip:objects -} -a:active, -a:hover { - outline-width:0 -} -abbr[title] { - border-bottom:none; - text-decoration:underline; - -webkit-text-decoration:underline dotted; - text-decoration:underline dotted -} -b, -strong { - font-weight:inherit; - font-weight:bolder -} -dfn { - font-style:italic -} -h1 { - font-size:2em; - margin:.67em 0 -} -mark { - background-color:#ff0; - color:#000 -} -small { - font-size:80% -} -sub, -sup { - font-size:75%; - line-height:0; - position:relative; - vertical-align:baseline -} -sub { - bottom:-.25em -} -sup { - top:-.5em -} -img { - border-style:none -} -svg:not(:root) { - overflow:hidden -} -code, -kbd, -pre, -samp { - font-family:monospace,monospace; - font-size:1em -} -figure { - margin:1em 40px -} -hr { - box-sizing:content-box; - height:0; - overflow:visible -} -button, -input, -optgroup, -select, -textarea { - font:inherit; - margin:0 -} -optgroup { - font-weight:700 -} -button, -input { - overflow:visible -} -button, -select { - text-transform:none -} -[type=reset], -[type=submit], -button, -html [type=button] { - -webkit-appearance:button -} -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner, -button::-moz-focus-inner { - border-style:none; - padding:0 -} -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring, -button:-moz-focusring { - outline:1px dotted ButtonText -} -fieldset { - border:1px solid silver; - margin:0 2px; - padding:.35em .625em .75em -} -legend { - box-sizing:border-box; - color:inherit; - display:table; - max-width:100%; - padding:0; - white-space:normal -} -textarea { - overflow:auto -} -[type=checkbox], -[type=radio] { - box-sizing:border-box; - padding:0 -} -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height:auto -} -[type=search] { - -webkit-appearance:textfield; - outline-offset:-2px -} -[type=search]::-webkit-search-cancel-button, -[type=search]::-webkit-search-decoration { - -webkit-appearance:none -} -::-webkit-input-placeholder { - color:inherit; - opacity:.54 -} -::-webkit-file-upload-button { - -webkit-appearance:button; - font:inherit -} -body { - color:#000; - background-color:#fff -} -.org-alert-high { - color:#ff8c00; - font-weight:700 -} -.org-alert-low { - color:#00008b -} -.org-alert-moderate { - color:gold; - font-weight:700 -} -.org-alert-saved-fringe { - background-color:#f2f2f2 -} -.org-alert-trivial { - color:Dark purple -} -.org-alert-urgent { - color:red; - font-weight:700 -} -.org-anzu-match-1 { - color:#000; - background-color:#7fffd4 -} -.org-anzu-match-2 { - color:#000; - background-color:#00ff7f -} -.org-anzu-match-3 { - color:#000; - background-color:#ff0 -} -.org-anzu-mode-line, -.org-anzu-mode-line-no-match { - color:#008b00; - font-weight:700 -} -.org-anzu-replace-highlight { - color:#b0e2ff; - background-color:#cd00cd -} -.org-anzu-replace-to { - color:red -} -.org-bbdb-field-name { - color:sienna -} -.org-bbdb-name { - color:#00f -} -.org-bbdb-organization { - color:#b22222 -} -.org-beacon-fallback-background { - background-color:#000 -} -.org-biblio-results-header { - color:#483d8b; - font-size:150%; - font-weight:700 -} -.org-bold { - font-weight:700 -} -.org-bold-italic { - font-weight:700; - font-style:italic -} -.org-bookmark-menu-bookmark { - font-weight:700 -} -.org-bookmark-menu-heading { - color:#228b22 -} -.org-buffer-menu-buffer { - font-weight:700 -} -.org-builtin { - color:#483d8b -} -.org-button { - color:#3a5fcd; - text-decoration:underline -} -.org-c-annotation { - color:#008b8b -} -.org-cal-china-x-general-holiday { - background-color:#228b22 -} -.org-cal-china-x-important-holiday { - background-color:#8b0000 -} -.org-calendar-iso-week { - color:pink; - font-weight:700 -} -.org-calendar-iso-week-header { - color:#0ff -} -.org-calendar-month-header { - color:#00f -} -.org-calendar-today { - text-decoration:underline -} -.org-calendar-weekday-header { - color:#008b8b -} -.org-calendar-weekend-header { - color:#b22222 -} -.org-comint-highlight-input { - font-weight:700 -} -.org-comint-highlight-prompt { - color:#0000cd -} -.org-comment, -.org-comment-delimiter { - color:#b22222 -} -.org-compilation-column-number { - color:#8b2252 -} -.org-compilation-error { - color:red; - font-weight:700 -} -.org-compilation-info { - color:#228b22; - font-weight:700 -} -.org-compilation-line-number { - color:#a020f0 -} -.org-compilation-mode-line-exit { - color:#228b22; - font-weight:700 -} -.org-compilation-mode-line-fail { - color:red; - font-weight:700 -} -.org-compilation-mode-line-run, -.org-compilation-warning { - color:#ff8c00; - font-weight:700 -} -.org-completions-annotations { - font-style:italic -} -.org-completions-first-difference { - font-weight:700 -} -.org-constant { - color:#008b8b -} -.org-cursor { - background-color:#eead0e -} -.org-custom-button { - color:#000; - background-color:#d3d3d3 -} -.org-custom-button-mouse { - color:#000; - background-color:#e5e5e5 -} -.org-custom-button-pressed { - color:#000; - background-color:#d3d3d3 -} -.org-custom-button-pressed-unraised { - color:#8b008b; - text-decoration:underline -} -.org-custom-button-unraised { - text-decoration:underline -} -.org-custom-changed { - color:#fff; - background-color:#00f -} -.org-custom-comment { - background-color:#d9d9d9 -} -.org-custom-comment-tag { - color:#00008b -} -.org-custom-face-tag { - color:#00f; - font-weight:700 -} -.org-custom-group-subtitle { - font-weight:700 -} -.org-custom-group-tag { - color:#00f; - font-size:120%; - font-weight:700 -} -.org-custom-group-tag-1 { - color:red; - font-size:120%; - font-weight:700 -} -.org-custom-invalid { - color:#ff0; - background-color:red -} -.org-custom-link { - color:#3a5fcd; - text-decoration:underline -} -.org-custom-modified { - color:#fff; - background-color:#00f -} -.org-custom-rogue { - color:pink; - background-color:#000 -} -.org-custom-saved { - text-decoration:underline -} -.org-custom-set { - color:#00f; - background-color:#fff -} -.org-custom-state { - color:#006400 -} -.org-custom-themed { - color:#fff; - background-color:#00f -} -.org-custom-variable-button { - font-weight:700; - text-decoration:underline -} -.org-custom-variable-tag { - color:#00f; - font-weight:700 -} -.org-custom-visibility { - color:#3a5fcd; - font-size:80%; - text-decoration:underline -} -.org-diary { - color:red -} -.org-diary-anniversary { - color:#a020f0 -} -.org-diary-time { - color:sienna -} -.org-dired-async-failures { - color:red -} -.org-dired-async-message { - color:#ff0 -} -.org-dired-async-mode-message { - color:gold -} -.org-dired-directory { - color:#00f -} -.org-dired-flagged { - color:red; - font-weight:700 -} -.org-dired-header { - color:#228b22 -} -.org-dired-ignored { - color:#7f7f7f -} -.org-dired-mark { - color:#008b8b -} -.org-dired-marked { - color:#ff8c00; - font-weight:700 -} -.org-dired-perm-write { - color:#b22222 -} -.org-dired-symlink { - color:#a020f0 -} -.org-dired-warning { - color:red; - font-weight:700 -} -.org-doc { - color:#8b2252 -} -.org-eldoc-highlight-function-argument { - font-weight:700 -} -.org-epa-field-body { - font-style:italic -} -.org-epa-field-name, -.org-epa-mark { - font-weight:700 -} -.org-epa-mark { - color:red -} -.org-epa-string { - color:#00008b -} -.org-epa-validity-disabled { - font-style:italic -} -.org-epa-validity-high { - font-weight:700 -} -.org-epa-validity-low, -.org-epa-validity-medium { - font-style:italic -} -.org-error { - color:red; - font-weight:700 -} -.org-escape-glyph { - color:brown -} -.org-evil-ex-commands { - font-style:italic; - text-decoration:underline -} -.org-evil-ex-info { - color:red; - font-style:italic -} -.org-evil-ex-lazy-highlight { - background-color:#afeeee -} -.org-evil-ex-search { - color:#b0e2ff; - background-color:#cd00cd -} -.org-evil-ex-substitute-matches { - background-color:#afeeee -} -.org-evil-ex-substitute-replacement { - color:red; - text-decoration:underline -} -.org-ffap { - background-color:#b4eeb4 -} -.org-file-name-shadow { - color:#7f7f7f -} -.org-flycheck-error { - text-decoration:underline -} -.org-flycheck-error-list-checker-name { - color:#00f -} -.org-flycheck-error-list-column-number { - color:#008b8b -} -.org-flycheck-error-list-error { - color:red; - font-weight:700 -} -.org-flycheck-error-list-filename { - color:sienna -} -.org-flycheck-error-list-highlight { - background-color:#b4eeb4 -} -.org-flycheck-error-list-id, -.org-flycheck-error-list-id-with-explainer { - color:#228b22 -} -.org-flycheck-error-list-info { - color:#228b22; - font-weight:700 -} -.org-flycheck-error-list-line-number { - color:#008b8b -} -.org-flycheck-error-list-warning { - color:#ff8c00; - font-weight:700 -} -.org-flycheck-fringe-error { - color:red; - font-weight:700 -} -.org-flycheck-fringe-info { - color:#228b22; - font-weight:700 -} -.org-flycheck-fringe-warning { - color:#ff8c00; - font-weight:700 -} -.org-flycheck-info, -.org-flycheck-warning, -.org-flyspell-duplicate, -.org-flyspell-incorrect { - text-decoration:underline -} -.org-fringe { - background-color:#f2f2f2 -} -.org-function-name { - color:#00f -} -.org-glyphless-char { - font-size:60% -} -.org-golden-ratio-scroll-highlight-line { - color:#fff; - background-color:#53868b; - font-weight:700 -} -.org-header-line { - color:#333; - background-color:#e5e5e5 -} -.org-helm-action { - text-decoration:underline -} -.org-helm-bookmark-addressbook { - color:tomato -} -.org-helm-bookmark-directory { - color:#8b0000; - background-color:#d3d3d3 -} -.org-helm-bookmark-file { - color:#00b2ee -} -.org-helm-bookmark-file-not-found { - color:#6c7b8b -} -.org-helm-bookmark-gnus { - color:#f0f -} -.org-helm-bookmark-info { - color:#0f0 -} -.org-helm-bookmark-man { - color:#8b5a00 -} -.org-helm-bookmark-w3m { - color:#ff0 -} -.org-helm-buffer-archive { - color:gold -} -.org-helm-buffer-directory { - color:#8b0000; - background-color:#d3d3d3 -} -.org-helm-buffer-file { - color:#483d8b -} -.org-helm-buffer-modified { - color:#b22222 -} -.org-helm-buffer-not-saved { - color:#ee6363 -} -.org-helm-buffer-process { - color:#cd6839 -} -.org-helm-buffer-saved-out { - color:red; - background-color:#000 -} -.org-helm-buffer-size { - color:#708090 -} -.org-helm-candidate-number, -.org-helm-candidate-number-suspended { - color:#000; - background-color:#faffb5 -} -.org-helm-delete-async-message { - color:#ff0 -} -.org-helm-etags-file { - color:#8b814c; - text-decoration:underline -} -.org-helm-ff-denied { - color:red; - background-color:#000 -} -.org-helm-ff-directory { - color:#8b0000; - background-color:#d3d3d3 -} -.org-helm-ff-dirs { - color:#00f -} -.org-helm-ff-dotted-directory { - color:#000; - background-color:#696969 -} -.org-helm-ff-dotted-symlink-directory { - color:#ff8c00; - background-color:#696969 -} -.org-helm-ff-executable { - color:#0f0 -} -.org-helm-ff-file { - color:#483d8b -} -.org-helm-ff-invalid-symlink { - color:#000; - background-color:red -} -.org-helm-ff-pipe { - color:#ff0; - background-color:#000 -} -.org-helm-ff-prefix { - color:#000; - background-color:#ff0 -} -.org-helm-ff-socket { - color:#ff1493 -} -.org-helm-ff-suid { - color:#fff; - background-color:red -} -.org-helm-ff-symlink { - color:#b22222 -} -.org-helm-ff-truename { - color:#8b2252 -} -.org-helm-grep-cmd-line { - color:#228b22 -} -.org-helm-grep-file { - color:#8a2be2; - text-decoration:underline -} -.org-helm-grep-finish { - color:#0f0 -} -.org-helm-grep-lineno { - color:#ff7f00 -} -.org-helm-grep-match { - color:#b00000 -} -.org-helm-header { - color:#333; - background-color:#e5e5e5 -} -.org-helm-header-line-left-margin { - color:#000; - background-color:#ff0 -} -.org-helm-helper { - color:#333; - background-color:#e5e5e5 -} -.org-helm-history-deleted { - color:#000; - background-color:red -} -.org-helm-history-remote { - color:#ff6a6a -} -.org-helm-lisp-completion-info { - color:red -} -.org-helm-lisp-show-completion { - background-color:#2f4f4f -} -.org-helm-locate-finish { - color:#0f0 -} -.org-helm-m-x-key { - color:orange; - text-decoration:underline -} -.org-helm-match { - color:#b00000 -} -.org-helm-match-item { - color:#b0e2ff; - background-color:#cd00cd -} -.org-helm-minibuffer-prompt { - color:#0000cd -} -.org-helm-moccur-buffer { - color:#00ced1; - text-decoration:underline -} -.org-helm-non-file-buffer { - font-style:italic -} -.org-helm-prefarg { - color:red -} -.org-helm-resume-need-update { - background-color:red -} -.org-helm-selection { - background-color:#097209 -} -.org-helm-selection-line { - background-color:#b4eeb4 -} -.org-helm-separator { - color:#ffbfb5 -} -.org-helm-source-header { - color:#000; - background-color:#abd7f0; - font-size:130%; - font-weight:700 -} -.org-helm-visible-mark { - background-color:#d1f5ea -} -.org-help-argument-name { - font-style:italic -} -.org-highlight { - background-color:#b4eeb4 -} -.org-highlight-indent-guides-character { - color:#e6e6e6 -} -.org-highlight-indent-guides-even { - background-color:#e6e6e6 -} -.org-highlight-indent-guides-odd { - background-color:#f3f3f3 -} -.org-highlight-indent-guides-stack-character { - color:#ccc -} -.org-highlight-indent-guides-stack-even { - background-color:#ccc -} -.org-highlight-indent-guides-stack-odd { - background-color:#d9d9d9 -} -.org-highlight-indent-guides-top-character { - color:#b3b3b3 -} -.org-highlight-indent-guides-top-even { - background-color:#b3b3b3 -} -.org-highlight-indent-guides-top-odd { - background-color:silver -} -.org-highlight-numbers-number { - color:#008b8b -} -.org-hl-line { - background-color:#b4eeb4 -} -.org-holiday { - background-color:pink -} -.org-hydra-face-amaranth { - color:#e52b50; - font-weight:700 -} -.org-hydra-face-blue { - color:#00f; - font-weight:700 -} -.org-hydra-face-pink { - color:#ff6eb4; - font-weight:700 -} -.org-hydra-face-red { - color:red; - font-weight:700 -} -.org-hydra-face-teal { - color:#367588; - font-weight:700 -} -.org-ido-first-match { - font-weight:700 -} -.org-ido-incomplete-regexp { - color:red; - font-weight:700 -} -.org-ido-indicator { - color:#ff0; - background-color:red -} -.org-ido-only-match { - color:#228b22 -} -.org-ido-subdir { - color:red -} -.org-ido-virtual { - color:#483d8b -} -.org-info-header-node { - color:brown; - font-weight:700; - font-style:italic -} -.org-info-header-xref { - color:#3a5fcd; - text-decoration:underline -} -.org-info-index-match { - background-color:#ff0 -} -.org-info-menu-header { - font-weight:700 -} -.org-info-menu-star { - color:red -} -.org-info-node { - color:brown; - font-weight:700; - font-style:italic -} -.org-info-title-1 { - font-size:172%; - font-weight:700 -} -.org-info-title-2 { - font-size:144%; - font-weight:700 -} -.org-info-title-3 { - font-size:120%; - font-weight:700 -} -.org-info-title-4 { - font-weight:700 -} -.org-info-xref { - color:#3a5fcd; - text-decoration:underline -} -.org-isearch { - color:#b0e2ff; - background-color:#cd00cd -} -.org-isearch-fail { - background-color:#ffc1c1 -} -.org-italic { - font-style:italic -} -.org-keyword { - color:#a020f0 -} -.org-lazy-highlight { - background-color:#afeeee -} -.org-link { - color:#3a5fcd; - text-decoration:underline -} -.org-link-visited { - color:#8b008b; - text-decoration:underline -} -.org-lv-separator { - background-color:#ccc -} -.org-match { - background-color:#ff0 -} -.org-mcXcursor-bar { - background-color:#000 -} -.org-mcXregion { - background-color:gtk_selection_bg_color -} -.org-me-dired-dim-0 { - color:#b3b3b3 -} -.org-me-dired-dim-1 { - color:#7f7f7f -} -.org-me-dired-executable { - color:#0f0 -} -.org-message-cited-text { - color:red -} -.org-message-header-cc { - color:#191970 -} -.org-message-header-name { - color:#6495ed -} -.org-message-header-newsgroups { - color:#00008b; - font-weight:700; - font-style:italic -} -.org-message-header-other { - color:#4682b4 -} -.org-message-header-subject { - color:navy; - font-weight:700 -} -.org-message-header-to { - color:#191970; - font-weight:700 -} -.org-message-header-xheader { - color:#00f -} -.org-message-mml { - color:#228b22 -} -.org-message-separator { - color:brown -} -.org-minibuffer-prompt { - color:#0000cd -} -.org-mm-command-output { - color:#cd0000 -} -.org-mode-line { - color:#000; - background-color:#bfbfbf -} -.org-mode-line-buffer-id, -.org-mode-line-buffer-id-inactive, -.org-mode-line-emphasis { - font-weight:700 -} -.org-mode-line-inactive { - color:#333; - background-color:#e5e5e5 -} -.org-mu4e-attach-number { - color:sienna; - font-weight:700 -} -.org-mu4e-cited-1 { - color:#483d8b; - font-style:italic -} -.org-mu4e-cited-2 { - color:#5cacee; - font-style:italic -} -.org-mu4e-cited-3 { - color:sienna; - font-style:italic -} -.org-mu4e-cited-4 { - color:#a020f0; - font-style:italic -} -.org-mu4e-cited-5, -.org-mu4e-cited-6 { - color:#b22222; - font-style:italic -} -.org-mu4e-cited-7 { - color:#228b22; - font-style:italic -} -.org-mu4e-compose-header, -.org-mu4e-compose-separator { - color:brown; - font-style:italic -} -.org-mu4e-contact { - color:sienna -} -.org-mu4e-context { - color:#006400; - font-weight:700 -} -.org-mu4e-draft { - color:#8b2252 -} -.org-mu4e-flagged { - color:#008b8b; - font-weight:700 -} -.org-mu4e-footer { - color:#b22222 -} -.org-mu4e-forwarded { - color:#483d8b -} -.org-mu4e-header { - color:#000; - background-color:#fff -} -.org-mu4e-header-highlight { - background-color:#000; - font-weight:700; - text-decoration:underline -} -.org-mu4e-header-key { - color:#6495ed; - font-weight:700 -} -.org-mu4e-header-marks { - color:#483d8b -} -.org-mu4e-header-title, -.org-mu4e-header-value { - color:#228b22 -} -.org-mu4e-highlight { - background-color:#b4eeb4 -} -.org-mu4e-link { - color:#3a5fcd; - text-decoration:underline -} -.org-mu4e-modeline { - color:#8b4500; - font-weight:700 -} -.org-mu4e-moved { - color:#b22222; - font-style:italic -} -.org-mu4e-ok { - color:#b22222; - font-weight:700 -} -.org-mu4e-region-code { - background-color:#2f4f4f -} -.org-mu4e-replied, -.org-mu4e-special-header-value { - color:#483d8b -} -.org-mu4e-system { - color:#b22222; - font-style:italic -} -.org-mu4e-title { - color:#228b22; - font-weight:700 -} -.org-mu4e-trashed { - color:#b22222; - text-decoration:line-through -} -.org-mu4e-unread { - color:#a020f0; - font-weight:700 -} -.org-mu4e-url-number { - color:#008b8b; - font-weight:700 -} -.org-mu4e-view-body { - color:#000; - background-color:#fff -} -.org-mu4e-warning { - color:red; - font-weight:700 -} -.org-next-error { - background-color:gtk_selection_bg_color -} -.org-nobreak-space { - color:brown; - text-decoration:underline -} -.org-org-agenda-calendar-event, -.org-org-agenda-calendar-sexp { - color:#000; - background-color:#fff -} -.org-org-agenda-clocking { - background-color:#ff0 -} -.org-org-agenda-column-dateline { - background-color:#e5e5e5 -} -.org-org-agenda-current-time { - color:#b8860b -} -.org-org-agenda-date { - color:#00f -} -.org-org-agenda-date-today { - color:#00f; - font-weight:700; - font-style:italic -} -.org-org-agenda-date-weekend { - color:#00f; - font-weight:700 -} -.org-org-agenda-diary { - color:#000; - background-color:#fff -} -.org-org-agenda-dimmed-todo { - color:#7f7f7f -} -.org-org-agenda-done { - color:#228b22 -} -.org-org-agenda-filter-category, -.org-org-agenda-filter-effort, -.org-org-agenda-filter-regexp, -.org-org-agenda-filter-tags { - color:#000; - background-color:#bfbfbf -} -.org-org-agenda-restriction-lock { - background-color:#eee -} -.org-org-agenda-structure { - color:#00f -} -.org-org-archived { - color:#7f7f7f -} -.org-org-block { - color:#7f7f7f -} -.org-org-block-begin-line, -.org-org-block-end-line { - color:#b22222 -} -.org-org-checkbox { - font-weight:700 -} -.org-org-checkbox-statistics-done { - color:#228b22; - font-weight:700 -} -.org-org-checkbox-statistics-todo { - color:red; - font-weight:700 -} -.org-org-clock-overlay { - color:#000; - background-color:#d3d3d3 -} -.org-org-code { - color:#7f7f7f -} -.org-org-column, -.org-org-column-title { - background-color:#e5e5e5 -} -.org-org-column-title { - font-weight:700; - text-decoration:underline -} -.org-org-date { - color:#bfaf87; - text-decoration:underline -} -.org-org-date-selected { - color:red -} -.org-org-default { - color:#000; - background-color:#fff -} -.org-org-document-info { - color:#191970 -} -.org-org-document-info-keyword { - color:#7f7f7f -} -.org-org-document-title { - color:#191970; - font-weight:700 -} -.org-org-done { - color:#228b22; - font-weight:700 -} -.org-org-drawer { - color:#00f -} -.org-org-ellipsis { - color:#b8860b; - text-decoration:underline -} -.org-org-footnote { - color:#96b4cd; - text-decoration:underline -} -.org-org-formula { - color:#b22222 -} -.org-org-habit-alert { - background-color:#f5f946 -} -.org-org-habit-alert-future { - background-color:#fafca9 -} -.org-org-habit-clear { - background-color:#8270f9 -} -.org-org-habit-clear-future { - background-color:#d6e4fc -} -.org-org-habit-overdue { - background-color:#f9372d -} -.org-org-habit-overdue-future { - background-color:#fc9590 -} -.org-org-habit-ready { - background-color:#4df946 -} -.org-org-habit-ready-future { - background-color:#acfca9 -} -.org-org-headline-done { - color:#bc8f8f -} -.org-org-hide { - color:#fff -} -.org-org-latex-and-related { - color:#8b4513 -} -.org-org-level-1 { - color:#edd1c5 -} -.org-org-level-2 { - color:#ebebb7 -} -.org-org-level-3 { - color:#cce8cc -} -.org-org-level-4 { - color:#c9deec -} -.org-org-level-5 { - color:#dce3e8 -} -.org-org-level-6 { - color:#dde6dd -} -.org-org-level-7 { - color:#e8e8ce -} -.org-org-level-8 { - color:#e8dedb -} -.org-org-link { - color:#c5d2dc; - text-decoration:underline -} -.org-org-list-dt { - font-weight:700 -} -.org-org-macro { - color:#8b4513 -} -.org-org-meta-line { - color:#b22222 -} -.org-org-mode-line-clock { - color:#000; - background-color:#bfbfbf -} -.org-org-mode-line-clock-overrun { - color:#000; - background-color:red -} -.org-org-priority { - color:#a020f0 -} -.org-org-quote { - color:#7f7f7f -} -.org-org-ref-acronym { - color:#ee7600; - text-decoration:underline -} -.org-org-ref-cite { - color:#c3d5c3; - text-decoration:underline -} -.org-org-ref-glossary { - color:#8968cd; - text-decoration:underline -} -.org-org-ref-label { - color:#8b008b; - text-decoration:underline -} -.org-org-ref-ref { - color:#e1cc96; - text-decoration:underline -} -.org-org-scheduled { - color:#006400 -} -.org-org-scheduled-previously { - color:#b22222 -} -.org-org-scheduled-today { - color:#006400 -} -.org-org-sexp-date { - color:#a020f0 -} -.org-org-special-keyword { - color:#88949f -} -.org-org-table { - color:#00f -} -.org-org-tag, -.org-org-tag-group { - font-weight:700 -} -.org-org-target { - text-decoration:underline -} -.org-org-time-grid { - color:#b8860b -} -.org-org-todo { - color:red; - font-weight:700 -} -.org-org-upcoming-deadline { - color:#b22222 -} -.org-org-verbatim, -.org-org-verse { - color:#7f7f7f -} -.org-org-warning { - color:red; - font-weight:700 -} -.org-outline-1 { - color:#00f -} -.org-outline-2 { - color:sienna -} -.org-outline-3 { - color:#a020f0 -} -.org-outline-4 { - color:#b22222 -} -.org-outline-5 { - color:#228b22 -} -.org-outline-6 { - color:#008b8b -} -.org-outline-7 { - color:#483d8b -} -.org-outline-8 { - color:#8b2252 -} -.org-package-description { - color:#000; - background-color:#fff -} -.org-package-name { - color:#3a5fcd; - text-decoration:underline -} -.org-package-status-avail-obso { - color:#b22222 -} -.org-package-status-available { - color:#000; - background-color:#fff -} -.org-package-status-built-in { - color:#483d8b -} -.org-package-status-dependency { - color:#b22222 -} -.org-package-status-disabled { - color:red; - font-weight:700 -} -.org-package-status-external { - color:#483d8b -} -.org-package-status-held { - color:#008b8b -} -.org-package-status-incompat, -.org-package-status-installed { - color:#b22222 -} -.org-package-status-unsigned { - color:red; - font-weight:700 -} -.org-pdf-isearch-batch { - background-color:#ff0 -} -.org-pdf-isearch-lazy { - background-color:#afeeee -} -.org-pdf-isearch-match { - color:#b0e2ff; - background-color:#cd00cd -} -.org-pdf-occur-document { - color:#8b2252 -} -.org-pdf-occur-page { - color:#228b22 -} -.org-pdf-view-rectangle { - background-color:#b4eeb4 -} -.org-pdf-view-region { - background-color:gtk_selection_bg_color -} -.org-powerline-active0 { - color:#000; - background-color:#bfbfbf -} -.org-powerline-active1 { - color:#fff; - background-color:#2b2b2b -} -.org-powerline-active2 { - color:#fff; - background-color:#666 -} -.org-powerline-inactive0 { - color:#333; - background-color:#e5e5e5 -} -.org-powerline-inactive1 { - color:#333; - background-color:#1c1c1c -} -.org-powerline-inactive2 { - color:#333; - background-color:#333 -} -.org-preprocessor { - color:#483d8b -} -.org-query-replace { - color:#b0e2ff; - background-color:#cd00cd -} -.org-rainbow-delimiters-depth-1 { - color:#ffdead -} -.org-rainbow-delimiters-depth-2 { - color:#00bfff -} -.org-rainbow-delimiters-depth-3 { - color:#ffdead -} -.org-rainbow-delimiters-depth-4 { - color:#00bfff -} -.org-rainbow-delimiters-depth-5 { - color:#ffdead -} -.org-rainbow-delimiters-depth-6 { - color:#00bfff -} -.org-rainbow-delimiters-depth-7 { - color:#ffdead -} -.org-rainbow-delimiters-depth-8 { - color:#00bfff -} -.org-rainbow-delimiters-depth-9 { - color:#ffdead -} -.org-rainbow-delimiters-unmatched { - color:#88090b -} -.org-reb-match-0 { - background-color:#add8e6 -} -.org-reb-match-1 { - background-color:#7fffd4 -} -.org-reb-match-2 { - background-color:#00ff7f -} -.org-reb-match-3 { - background-color:#ff0 -} -.org-rectangle-preview { - background-color:gtk_selection_bg_color -} -.org-regexp-grouping-backslash, -.org-regexp-grouping-construct { - font-weight:700 -} -.org-region { - background-color:gtk_selection_bg_color -} -.org-secondary-selection { - background-color:#ff0 -} -.org-semantic-highlight-edits, -.org-semantic-highlight-func-current-tag { - background-color:#e5e5e5 -} -.org-semantic-unmatched-syntax { - text-decoration:underline -} -.org-sgml-namespace { - color:#483d8b -} -.org-sh-escaped-newline { - color:#8b2252 -} -.org-sh-heredoc { - color:#ee0 -} -.org-sh-quoted-exec { - color:#f0f -} -.org-shadow { - color:#7f7f7f -} -.org-show-paren-match { - background-color:#40e0d0 -} -.org-show-paren-mismatch { - color:#fff; - background-color:#a020f0 -} -.org-sp-pair-overlay, -.org-sp-show-pair-enclosing { - background-color:#b4eeb4 -} -.org-sp-show-pair-match { - background-color:#40e0d0 -} -.org-sp-show-pair-mismatch { - color:#fff; - background-color:#a020f0 -} -.org-sp-wrap-overlay { - background-color:#b4eeb4 -} -.org-sp-wrap-overlay-closing-pair { - color:red; - background-color:#b4eeb4 -} -.org-sp-wrap-overlay-opening-pair { - color:#0f0; - background-color:#b4eeb4 -} -.org-sp-wrap-tag-overlay { - background-color:#b4eeb4 -} -.org-spaceline-flycheck-error { - color:#fc5c94; - background-color:#333 -} -.org-spaceline-flycheck-info { - color:#8de6f7; - background-color:#333 -} -.org-spaceline-flycheck-warning { - color:#f3ea98; - background-color:#333 -} -.org-spaceline-python-venv { - color:#fbf -} -.org-speedbar-button { - color:#008b00 -} -.org-speedbar-directory { - color:#00008b -} -.org-speedbar-file { - color:#008b8b -} -.org-speedbar-highlight { - background-color:#0f0 -} -.org-speedbar-selected { - color:red; - text-decoration:underline -} -.org-speedbar-separator { - color:#fff; - background-color:#00f; - text-decoration:overline -} -.org-speedbar-tag { - color:brown -} -.org-string { - color:#8b2252 -} -.org-success { - color:#228b22; - font-weight:700 -} -.org-table-cell { - color:#e5e5e5; - background-color:#00f -} -.org-tex-math { - color:#8b2252 -} -.org-tool-bar { - color:#000; - background-color:#bfbfbf -} -.org-tooltip { - color:#000; - background-color:#ffffe0 -} -.org-trailing-whitespace { - background-color:red -} -.org-tty-menu-disabled { - color:#d3d3d3; - background-color:#00f -} -.org-tty-menu-enabled { - color:#ff0; - background-color:#00f; - font-weight:700 -} -.org-tty-menu-selected { - background-color:red -} -.org-type { - color:#228b22 -} -.org-underline { - text-decoration:underline -} -.org-undo-tree-visualizer-active-branch { - color:#000; - font-weight:700 -} -.org-undo-tree-visualizer-current { - color:red -} -.org-undo-tree-visualizer-default { - color:#bebebe -} -.org-undo-tree-visualizer-register { - color:#ff0 -} -.org-undo-tree-visualizer-unmodified { - color:#0ff -} -.org-variable-name { - color:sienna -} -.org-vhlXdefault { - background-color:#ff0 -} -.org-warning { - color:#ff8c00; - font-weight:700 -} -.org-warning-1 { - color:red; - font-weight:700 -} -.org-wgrep { - color:#fff; - background-color:#228b22 -} -.org-wgrep-delete { - color:pink; - background-color:#228b22 -} -.org-wgrep-done { - color:#00f -} -.org-wgrep-file { - color:#fff; - background-color:#228b22 -} -.org-wgrep-reject { - color:red; - font-weight:700 -} -.org-which-key-command-description { - color:#00f -} -.org-which-key-docstring { - color:#b22222 -} -.org-which-key-group-description { - color:#a020f0 -} -.org-which-key-highlighted-command { - color:#00f; - text-decoration:underline -} -.org-which-key-key { - color:#008b8b -} -.org-which-key-local-map-description { - color:#00f -} -.org-which-key-note, -.org-which-key-separator { - color:#b22222 -} -.org-which-key-special-key { - color:#008b8b; - font-weight:700 -} -.org-whitespace-big-indent { - color:#b22222; - background-color:red -} -.org-whitespace-empty { - color:#b22222; - background-color:#ff0 -} -.org-whitespace-hspace { - color:#d3d3d3; - background-color:#cdc9a5 -} -.org-whitespace-indentation { - color:#b22222; - background-color:#ff0 -} -.org-whitespace-line { - color:violet; - background-color:#333 -} -.org-whitespace-newline { - color:#d3d3d3 -} -.org-whitespace-space { - color:#d3d3d3; - background-color:#ffffe0 -} -.org-whitespace-space-after-tab { - color:#b22222; - background-color:#ff0 -} -.org-whitespace-space-before-tab { - color:#b22222; - background-color:#ff8c00 -} -.org-whitespace-tab { - color:#d3d3d3; - background-color:beige -} -.org-whitespace-trailing { - color:#ff0; - background-color:red; - font-weight:700 -} -.org-widget-button { - font-weight:700 -} -.org-widget-button-pressed { - color:red -} -.org-widget-documentation { - color:#006400 -} -.org-widget-field { - background-color:#d9d9d9 -} -.org-widget-inactive { - color:#7f7f7f -} -.org-widget-single-line-field { - background-color:#d9d9d9 -} -.org-window-divider { - color:#999 -} -.org-window-divider-first-pixel { - color:#ccc -} -.org-window-divider-last-pixel { - color:#666 -} -a { - color:inherit; - background-color:inherit; - font:inherit; - text-decoration:inherit -} -a:hover { - text-decoration:underline -} -body { - width:95%; - margin:2% auto; - font-size:14px; - line-height:1.4em; - font-family:Georgia,serif; - color:#333 -} -@media screen and (min-width:600px) { - body { - font-size:18px - } -} -@media screen and (min-width:910px) { - body { - /*! width:900px; */ - } -} -::-moz-selection { - background:#d6edff -} -::selection { - background:#d6edff -} -p { - margin:1em auto -} -dl, -ol, -ul { - margin:0 auto -} -.title { - margin:.8em auto; - color:#000 -} -.subtitle, -.title { - text-align:center -} -.subtitle { - font-size:1.1em; - line-height:1.4; - font-weight:700; - margin:1em auto -} -.abstract { - margin:auto; - width:80%; - font-style:italic -} -.abstract p:last-of-type:before { - content:" "; - white-space:pre -} -.status { - font-size:90%; - margin:2em auto -} -[class^=section-number-] { - margin-right:.5em -} -[id^=orgheadline] { - clear:both -} -#footnotes { - font-size:90% -} -.footpara { - display:inline; - margin:.2em auto -} -.footdef { - margin-bottom:1em -} -.footdef sup { - padding-right:.5em -} -a { - color:#527d9a; - text-decoration:none -} -a:hover { - color:#035; - border-bottom:1px dotted -} -figure { - padding:0; - margin:1em auto; - text-align:center -} -img { - max-width:100%; - vertical-align:middle -} -.MathJax_Display { - margin:0!important; - width:90%!important -} -h1, -h2, -h3, -h4, -h5, -h6 { - color:#a5573e; - line-height:1em; - font-family:Helvetica,sans-serif -} -h1, -h2, -h3 { - line-height:1.4em -} -h4, -h5, -h6 { - font-size:1em -} -@media screen and (min-width:600px) { - h1 { - font-size:2em - } - h2 { - font-size:1.5em - } - h3 { - font-size:1.3em - } - h1, - h2, - h3 { - line-height:1.4em - } - h4, - h5, - h6 { - font-size:1.1em - } -} -dt { - font-weight:700 -} -table { - margin:1em auto; - border-top:2px solid; - border-collapse:collapse -} -table, -thead { - border-bottom:2px solid -} -table td+td, -table th+th { - border-left:1px solid grey -} -table tr { - border-top:1px solid #d3d3d3 -} -td, -th { - padding:.3em .6em; - vertical-align:middle -} -caption.t-above { - caption-side:top -} -caption.t-bottom { - caption-side:bottom -} -caption { - margin-bottom:.3em -} -figcaption { - margin-top:.3em -} -th.org-center, -th.org-left, -th.org-right { - text-align:center -} -td.org-right { - text-align:right -} -td.org-left { - text-align:left -} -td.org-center { - text-align:center -} -blockquote { - margin:1em 2em; - padding-left:1em; - border-left:3px solid #ccc -} -kbd { - background-color:#f7f7f7; - font-size:80%; - margin:0 .1em; - padding:.1em .6em -} -.todo { - background-color:red -} -.done, -.todo { - color:#fff; - padding:.1em .3em; - border-radius:3px; - background-clip:padding-box; - font-size:80%; - font-family:Lucida Console,monospace; - line-height:1 -} -.done { - background-color:green -} -.priority { - color:orange; - font-family:Lucida Console,monospace -} -#table-of-contents li { - clear:both -} -.tag { - font-family:Lucida Console,monospace; - font-size:.7em; - font-weight:400 -} -.tag span { - padding:.3em; - float:right; - margin-right:.5em; - border:1px solid #bbb; - border-radius:3px; - background-clip:padding-box; - color:#333; - background-color:#eee; - line-height:1 -} -.timestamp { - color:#bebebe; - font-size:90% -} -.timestamp-kwd { - color:#5f9ea0 -} -.org-right { - margin-left:auto; - margin-right:0; - text-align:right -} -.org-left { - margin-left:0; - margin-right:auto; - text-align:left -} -.org-center { - margin-left:auto; - margin-right:auto; - text-align:center -} -.underline { - text-decoration:underline -} -#postamble p, -#preamble p { - font-size:90%; - margin:.2em -} -p.verse { - margin-left:3% -} -:not(pre)>code { - padding:2px 5px; - margin:auto 1px; - border:1px solid #ddd; - border-radius:3px; - background-clip:padding-box; - color:#333; - font-size:80% -} -.org-src-container { - border:1px solid #ccc; - box-shadow:3px 3px 3px #eee; - font-family:Lucida Console,monospace; - font-size:80%; - margin:1em auto; - padding:.1em .5em; - position:relative -} -.org-src-container>pre { - overflow:auto -} -.org-src-container>pre:before { - display:block; - position:absolute; - background-color:#b3b3b3; - top:0; - right:0; - padding:0 .5em; - border-bottom-left-radius:8px; - border:0; - color:#fff; - font-size:80% -} -.org-src-container>pre.src-sh:before { - content:"sh" -} -.org-src-container>pre.src-bash:before { - content:"bash" -} -.org-src-container>pre.src-emacs-lisp:before { - content:"Emacs Lisp" -} -.org-src-container>pre.src-R:before { - content:"R" -} -.org-src-container>pre.src-cpp:before { - content:"C++" -} -.org-src-container>pre.src-c:before { - content:"C" -} -.org-src-container>pre.src-html:before { - content:"HTML" -} -.org-src-container>pre.src-javascript:before, -.org-src-container>pre.src-js:before { - content:"Javascript" -} -// More languages 0% http://orgmode.org/worg/org-contrib/babel/languages.html .org-src-container>pre.src-abc:before { - content:"ABC" -} -.org-src-container>pre.src-asymptote:before { - content:"Asymptote" -} -.org-src-container>pre.src-awk:before { - content:"Awk" -} -.org-src-container>pre.src-C:before { - content:"C" -} -.org-src-container>pre.src-calc:before { - content:"Calc" -} -.org-src-container>pre.src-clojure:before { - content:"Clojure" -} -.org-src-container>pre.src-comint:before { - content:"comint" -} -.org-src-container>pre.src-css:before { - content:"CSS" -} -.org-src-container>pre.src-D:before { - content:"D" -} -.org-src-container>pre.src-ditaa:before { - content:"Ditaa" -} -.org-src-container>pre.src-dot:before { - content:"Dot" -} -.org-src-container>pre.src-ebnf:before { - content:"ebnf" -} -.org-src-container>pre.src-forth:before { - content:"Forth" -} -.org-src-container>pre.src-F90:before { - content:"Fortran" -} -.org-src-container>pre.src-gnuplot:before { - content:"Gnuplot" -} -.org-src-container>pre.src-haskell:before { - content:"Haskell" -} -.org-src-container>pre.src-io:before { - content:"Io" -} -.org-src-container>pre.src-java:before { - content:"Java" -} -.org-src-container>pre.src-latex:before { - content:"LaTeX" -} -.org-src-container>pre.src-ledger:before { - content:"Ledger" -} -.org-src-container>pre.src-ly:before { - content:"Lilypond" -} -.org-src-container>pre.src-lisp:before { - content:"Lisp" -} -.org-src-container>pre.src-makefile:before { - content:"Make" -} -.org-src-container>pre.src-matlab:before { - content:"Matlab" -} -.org-src-container>pre.src-max:before { - content:"Maxima" -} -.org-src-container>pre.src-mscgen:before { - content:"Mscgen" -} -.org-src-container>pre.src-Caml:before { - content:"Objective" -} -.org-src-container>pre.src-octave:before { - content:"Octave" -} -.org-src-container>pre.src-org:before { - content:"Org" -} -.org-src-container>pre.src-perl:before { - content:"Perl" -} -.org-src-container>pre.src-picolisp:before { - content:"Picolisp" -} -.org-src-container>pre.src-plantuml:before { - content:"PlantUML" -} -.org-src-container>pre.src-python:before { - content:"Python" -} -.org-src-container>pre.src-ruby:before { - content:"Ruby" -} -.org-src-container>pre.src-sass:before { - content:"Sass" -} -.org-src-container>pre.src-scala:before { - content:"Scala" -} -.org-src-container>pre.src-scheme:before { - content:"Scheme" -} -.org-src-container>pre.src-screen:before { - content:"Screen" -} -.org-src-container>pre.src-sed:before { - content:"Sed" -} -.org-src-container>pre.src-shell:before { - content:"shell" -} -.org-src-container>pre.src-shen:before { - content:"Shen" -} -.org-src-container>pre.src-sql:before { - content:"SQL" -} -.org-src-container>pre.src-sqlite:before { - content:"SQLite" -} -.org-src-container>pre.src-stan:before { - content:"Stan" -} -.org-src-container>pre.src-vala:before { - content:"Vala" -} -.org-src-container>pre.src-axiom:before { - content:"Axiom" -} -.org-src-container>pre.src-browser:before { - content:"HTML" -} -.org-src-container>pre.src-cypher:before { - content:"Neo4j" -} -.org-src-container>pre.src-elixir:before { - content:"Elixir" -} -.org-src-container>pre.src-request:before { - content:"http" -} -.org-src-container>pre.src-ipython:before { - content:"iPython" -} -.org-src-container>pre.src-kotlin:before { - content:"Kotlin" -} -.org-src-container>pre.src-Flavored Erlang lfe:before { - content:"Lisp" -} -.org-src-container>pre.src-mongo:before { - content:"MongoDB" -} -.org-src-container>pre.src-prolog:before { - content:"Prolog" -} -.org-src-container>pre.src-rec:before { - content:"rec" -} -.org-src-container>pre.src-ML sml:before { - content:"Standard" -} -.org-src-container>pre.src-Translate translate:before { - content:"Google" -} -.org-src-container>pre.src-typescript:before { - content:"Typescript" -} -.org-src-container>pre.src-rust:before { - content:"Rust" -} -.inlinetask { - background:#ffc; - border:2px solid grey; - margin:10px; - padding:10px -} -#org-div-home-and-up { - font-size:70%; - text-align:right; - white-space:nowrap -} -.linenr { - font-size:90% -} -.code-highlighted { - background-color:#ff0 -} -#bibliography { - font-size:90% -} -#bibliography table { - width:100% -} -.creator { - display:block -} -@media screen and (min-width:600px) { - .creator { - display:inline; - float:right - } -} diff --git a/assets/styles/style.css~ b/assets/styles/style.css~ deleted file mode 100755 index 69b16d7..0000000 --- a/assets/styles/style.css~ +++ /dev/null @@ -1,647 +0,0 @@ -/* ========================================================= - TOKENS / CUSTOM PROPERTIES - ========================================================= */ - -:root { - --gutter: 2rem; - --margin: 420px; - --body-pad: 1rem; - - --content-min: 60ch; - --content-max: 880px; - --content: clamp( - var(--content-min), - calc(100vi - (2 * var(--body-pad)) - (2 * (var(--margin) + var(--gutter)))), - var(--content-max) - ); - - --bleed: 48px; - --fullwidth-cap: 860px; - - --bg: #fff; - --page-bg: #fafafc; - --fg: #000; - - --heading: #004c99; - --link: #0a84ff; - --link-2: var(--link); - - --code-bg: #f0f0f0; - - --border: #d7d7d7; - --active-toc: #cacaca; - - --muted: #666; - --note-color: #555; - --note-bg: transparent; - - --chip-bg: #f0f0f0; - --chip-fg: #444; - - /* Compatibility aliases (you reference these later) */ - --border-color: var(--border); - --text-color: var(--fg); - --muted-text: var(--muted); - --link-color: var(--link); - --link-hover-color: var(--fg); - --bg-alt: #fafafa; -} - -/* ========================================================= - BASE / TYPOGRAPHY - ========================================================= */ - -html, -body { - margin: 0; - background-color: var(--page-bg); - color: var(--fg); - transition: background-color 0.3s, color 0.3s; - font-family: Inter, sans-serif; -} - -/* Keep your layout intent (column app shell) */ -body { - display: flex; - flex-direction: column; -} - -h1, -h2, -h3 { - color: var(--heading); -} - -a { - color: var(--link-2); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -/* ========================================================= - PREAMBLE / HEADER - ========================================================= */ - -#preamble { - top: 0; - z-index: 20; - background: var(--bg); - border-bottom: 1px solid var(--border); -} - -#preamble .banner-header, -#preamble #updated { - max-width: 100%; -} - -.banner-header { - position: relative; /* anchor for Close All */ - display: flex; - justify-content: center; /* center main group */ - align-items: center; - gap: 1rem; - - padding: 0.5rem 1rem; -} - -.banner-logo { - height: 80px; - width: auto; - margin-right: 1.5rem; - border-radius: 50%; -} - -nav { - display: flex; - gap: 1rem; - font-weight: 600; - font-size: 1.1rem; -} - -#updated { - font-size: 0.75rem; - color: var(--muted); - opacity: 0.7; - white-space: nowrap; -} - -#close-all { - position: absolute; - right: 1rem; - top: 50%; - transform: translateY(-50%); - - background: transparent; - border: 1px solid var(--border); - border-radius: 4px; - - padding: 0.25rem 0.5rem; /* smaller so it doesn’t dominate */ - font-size: 0.8rem; - color: var(--muted); - cursor: pointer; -} - -#close-all:hover { - color: var(--fg); - border-color: var(--fg); -} - -.banner-header > a { - display: flex; - align-items: center; -} - - -@media (max-width: 768px) { - .banner-header { - grid-template-columns: 1fr; - gap: 0.75rem; - text-align: center; - } - - .banner-logo { - margin: 0 auto; - } - - #close-all { - justify-self: center; - } -} - - -/* ========================================================= - CONTENT WRAPPER - ========================================================= */ - -#content.content { - max-width: var(--content); - margin-left: auto !important; - margin-right: auto !important; - padding-left: var(--body-pad); - padding-right: var(--body-pad); - box-sizing: content-box; - position: relative; -} - -#content .figure, -#content img:not(.fullwidth) { - max-width: 100%; - height: auto; -} - -/* ========================================================= - STACKED PANE LAYOUT - ========================================================= */ - -#stack-root { - position: relative; - width: 100vw; - height: calc(100vh - 120px); - overflow-x: auto; - overflow-y: hidden; - flex: 1 1 auto; - scroll-snap-type: x proximity; -} - -.stack-track { - display: flex; - flex-direction: row; - align-items: stretch; - width: max-content; - height: 100%; -} - -.stack-pane { - flex: 0 0 auto; - - width: clamp(420px, 33vw, 860px); - max-width: 100vw; - - height: 100%; - overflow-y: auto; - overflow-x: hidden; - - position: relative; /* needed for ::after positioning */ - background-color: var(--bg); - border-right: 1px solid var(--border); -} - -.stack-pane::after { - content: ""; - position: absolute; - top: 0; - right: 0; - width: 12px; - height: 100%; - pointer-events: none; - opacity: 0.15; -} - -.stack-pane:last-child { - box-shadow: -4px 0 16px rgba(0, 0, 0, 0.06); -} - -/* Scrollbar (WebKit) */ -.stack-pane::-webkit-scrollbar { - width: 8px; -} - -.stack-pane::-webkit-scrollbar-thumb { - background-color: color-mix(in oklab, var(--fg) 25%, transparent); - border-radius: 4px; -} - -/* ========================================================= - PANE HEADER + CLOSE BUTTON - ========================================================= */ - -.pane-root { - background-color: var(--bg); -} - -.pane-header { - position: sticky; - top: 0; - z-index: 5; - - display: flex; - justify-content: flex-end; - - background: inherit; - padding: 0.25rem 0.5rem; - border-bottom: 1px solid var(--border); -} - -.pane-close { - background: none; - border: none; - font-size: 1.4rem; - line-height: 1; - cursor: pointer; - - color: var(--muted); - padding: 0.1rem 0.4rem; -} - -.pane-close:hover { - color: var(--fg); -} - -/* ========================================================= - FOOTER - ========================================================= */ - -footer { - color: var(--fg); - padding: 1rem; - border-radius: 6px; - text-align: center; - font-size: 0.9rem; - font-style: italic; - - flex-shrink: 0; - margin-top: 0; - - border-top: 1px solid var(--border); - background: var(--bg); - - /* If you want it sticky later, use: - position: sticky; - bottom: 0; - */ - bottom: 0; - z-index: 10; -} - -/* ========================================================= - LISTS - ========================================================= */ - -ul, -ol { - margin: 1rem 0 1.5rem 1.5rem; - padding: 0; - line-height: 1.5; -} - -ul { - list-style: none; -} - -ul li { - position: relative; - padding-left: 1.2em; -} - -ul li::before { - content: "•"; - position: absolute; - left: 0; - top: 0; - color: var(--heading); - font-weight: bold; -} - -ol { - counter-reset: list-counter; - list-style: none; -} - -ol li { - counter-increment: list-counter; - position: relative; - padding-left: 1.8em; -} - -ol li::before { - content: counter(list-counter) "."; - position: absolute; - left: 0; - top: 0; - color: var(--heading); - font-weight: bold; -} - -li { - margin-bottom: 8px; - display: flow-root; -} - -li::after { - content: none; -} - -li ul, -li ol { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -li ul li::before { - content: "–"; - font-weight: normal; - color: var(--note-color); -} - -li ol li::before { - font-weight: normal; - color: var(--note-color); -} - -/* ========================================================= - EPIGRAPH - ========================================================= */ - -.epigraph { - margin: 2rem auto; - max-width: 80%; - font-style: italic; -} - -.epigraph blockquote { - margin: 0; - padding: 1rem 1.5rem; - border-left: 4px solid var(--heading); - background-color: color-mix(in oklab, var(--bg) 94%, var(--fg) 6%); - color: var(--fg); - line-height: 1.6; -} - -.epigraph blockquote footer { - margin-top: 0.75rem; - font-style: normal; - font-size: 0.9em; - color: var(--muted); - text-align: right; -} - -.epigraph blockquote cite { - font-style: italic; - font-weight: 500; - color: var(--link); -} - -.epigraph blockquote::before, -.epigraph blockquote::after { - content: none; -} - -/* ========================================================= - UTILITIES / MISC - ========================================================= */ - -.hidden { - display: none !important; -} - -/* bigger-picture.js controls */ -.bp-x { - right: 72px; -} -.bp-next, -.bp-prev { - right: 8px; -} -.bp-prev { - left: 8px; -} -.bp-wrap { - transition: opacity 0.18s ease; -} -.bp-wrap.bp-fadeout { - opacity: 0; -} -.bp-controls { - padding-top: env(safe-area-inset-top, 0); - padding-right: calc(env(safe-area-inset-right, 0) + 8px); -} - -/* code copy button */ -.copy-btn { - position: absolute; - top: 0.4em; - right: 0.4em; - background-color: var(--code-bg); - color: var(--heading); - border: 1px solid var(--heading); - border-radius: 4px; - padding: 0.2em 0.6em; - font-size: 0.8rem; - cursor: pointer; - z-index: 10; - transition: background-color 0.3s; -} - -/* ========================================================= - BACKLINKS - ========================================================= */ - -.backlinks-section { - margin-top: 4rem; - padding-top: 1.5rem; - border-top: 1px solid var(--border); - opacity: 0.95; - color: var(--muted); -} - -.backlinks-list { - margin-top: 0.75rem; - padding-left: 0; -} - -.backlinks-list li { - margin-bottom: 0.4rem; - font-size: 0.9rem; - list-style: none; -} - -.backlinks-list li::before { - content: "↩ "; - opacity: 0.5; - margin-right: 0.2rem; -} - -.backlinks-list li a { - text-decoration: none; - font-weight: 500; - color: var(--link); - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - padding-bottom: 0.05em; - transition: color 0.15s ease, border-color 0.15s ease; -} - -.backlinks-list li a:hover, -.backlinks-list li a:focus { - color: var(--fg); - border-bottom-color: currentColor; -} - -/* ========================================================= - SEARCH - ========================================================= */ - -.banner-search { - position: relative; - max-width: 28rem; -} - -#search-box { - width: 100%; - padding: 0.55rem 0.75rem; - font-size: 0.95rem; - font-family: inherit; - - background-color: var(--bg-alt); - color: var(--fg); - - border: 1px solid var(--border); - border-radius: 4px; - - transition: border-color 0.15s ease, box-shadow 0.15s ease, - background-color 0.15s ease; -} - -#search-box:focus { - outline: none; - background-color: #fff; - border-color: var(--link); - box-shadow: 0 0 0 2px rgba(42, 93, 176, 0.15); -} - -#search-box::placeholder { - color: #888; - font-style: italic; -} - -#search-results { - position: absolute; - top: calc(100% + 0.3rem); - left: 0; - right: 0; - - background-color: #fff; - border: 1px solid var(--border); - border-radius: 4px; - - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08); - - max-height: 18rem; - overflow-y: auto; - - z-index: 1000; -} - -#search-results > * { - padding: 0.45rem 0.65rem; - font-size: 0.9rem; - line-height: 1.3; - - cursor: pointer; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} - -#search-results > *:last-child { - border-bottom: none; -} - -#search-results > *:hover, -#search-results > *.active { - background-color: rgba(42, 93, 176, 0.08); -} - -/* ========================================================= - RESPONSIVE - ========================================================= */ - -@media (max-width: 768px) { - #stack-root { - overflow-x: hidden; - overflow-y: auto; - } - - .stack-track { - flex-direction: column; - width: 100%; - } - - .stack-pane { - width: 100%; - height: auto; - border-right: none; - border-bottom: 1px solid var(--border); - } -} -/* ========================================================= - FULLSCREEN PANE MODE - ========================================================= */ - -body.pane-fullscreen #stack-root { - overflow: hidden; -} - -body.pane-fullscreen .stack-track { - width: 100%; -} - -body.pane-fullscreen .stack-pane { - width: 100% !important; - max-width: none; - border-right: none; -} - -body.pane-fullscreen .stack-pane::after { - display: none; -} - -/* Only the active fullscreen pane remains */ -body.pane-fullscreen .stack-pane:not(.is-fullscreen) { - display: none; -} - -/* Optional: make content breathe more in fullscreen */ -body.pane-fullscreen #content.content { - max-width: 900px; -} diff --git a/book-notes/Head First Design Patterns.org~ b/book-notes/Head First Design Patterns.org~ deleted file mode 100644 index abe9704..0000000 --- a/book-notes/Head First Design Patterns.org~ +++ /dev/null @@ -1,5 +0,0 @@ -* Head First Design Patterns -:PROPERTIES: -:NOTER_DOCUMENT: ../../../pdfs/bootcamp/Head First Design Patterns.pdf -:ID: dc9ece84-0b14-4afd-b25a-786cf1618996 -:END: diff --git a/build.el~ b/build.el~ deleted file mode 100755 index 57f822d..0000000 --- a/build.el~ +++ /dev/null @@ -1,311 +0,0 @@ -;; ----------------------------- -;; Package bootstrap (BATCH SAFE) -;; ----------------------------- -(require 'package) - -(setq package-user-dir (expand-file-name "./.packages")) -(setq package-archives - '(("melpa" . "https://melpa.org/packages/") - ("gnu" . "https://elpa.gnu.org/packages/"))) - -(package-initialize) - -(unless package-archive-contents - (package-refresh-contents)) - -(unless (package-installed-p 'org-roam) - (package-install 'org-roam)) - -(require 'ox-publish) -(require 'org) -(require 'ox-html) -(require 'json) -(require 'org-roam) -(require 'ob-latex) -(require 'seq) -(require 'cl-lib) - - -(setq org-id-locations-file "~/.emacs.d/.org-id-locations") - -(defun z/org-html-wrap-content-for-stack (orig-fun contents info) - "Wrap Org HTML #content in stack container, leaving postamble outside." - (let* ((html (funcall orig-fun contents info)) - (page (file-name-base (plist-get info :output-file))) - - (stack-close - "")) - - (setq html - (replace-regexp-in-string - "
" - (format - "
-
-
-
" - page) - html - nil t)) - - (setq html - (replace-regexp-in-string - "
" - (concat stack-close "\n
") - html - nil t)) - - html)) - -(advice-add 'org-html-template :around #'z/org-html-wrap-content-for-stack) - - -(add-to-list 'load-path default-directory) - -(defvar z-shared-head - " - - - - - - - - - -" - ) - -(defvar z-preamble - " -
- \"Site - -
- -
-
- -
Updated: %C
- - -
-" - ) - -(defvar z-postamble - "
-
-
-Copyright © 2022-2025 Zaine Qayyum. All rights reserved unless otherwise noted.
-
-Created with %c on Arch GNU/Linux -
-
") - -(defvar z/build-full-rebuild t - "If non-nil, generate expensive artifacts like search-index.json.") - -(defun z/generate-all-files-page () - "Generate all-files.org from search-index.json." - (let* ((json-file "~/master-folder/org_files/org_roam/output/search-index.json") - (out-file "~/master-folder/org_files/org_roam/all-files.org") - (data (append (json-read-file json-file) nil))) - - (message "🔎 Loaded %d entries from search-index.json" (length data)) - - (with-temp-file out-file - (insert "#+title: All Files\n") - (insert "#+options: toc:nil\n\n") - (insert "A complete alphabetical index of all published pages.\n\n") - - (setq data - (sort data - (lambda (a b) - (string-lessp - (downcase (cdr (assoc 'title a))) - (downcase (cdr (assoc 'title b))))))) - - (let ((current-letter nil)) - (dolist (entry data) - (let* ((title (cdr (assoc 'title entry))) - (raw-url (cdr (assoc 'url entry))) - (id (cdr (assoc 'id entry))) - (letter (upcase (substring title 0 1)))) - - (unless (equal letter current-letter) - (setq current-letter letter) - (insert (format "* %s\n" letter))) - - (insert (format "- [[id:%s][%s]]\n" id title)))))))) - - -;; Babel language support -(org-babel-do-load-languages - 'org-babel-load-languages - '((latex . t) - (org . t))) - -(setq org-confirm-babel-evaluate nil ;; Disable confirmation for code block evaluation - org-export-with-smart-quotes t ;; turns " into curly quotes - org-html-self-link-headlines t ;; headlines link to self - org-html-validation-link nil ;; dont validate html (in order to check it is up to web standards) - org-html-inline-images t ;; self-expl - org-export-with-sub-superscripts t ;; render h_x as large h with subscript x - ) -(load-file (expand-file-name "macros.el" default-directory)) - -;; Configure LaTeX image generation -(setq org-latex-create-formula-image-program 'imagemagick) - - - - -(defun my/get-org-roam-backlinks (filename) - "Return backlinks for the given org-roam file. FILENAME should be the full path to the org-roam file." - (save-excursion - (with-current-buffer (find-file-noselect filename) - (goto-char (point-min)) - (if (and (featurep 'org-roam) (org-roam-node-at-point)) - (let* ((node (org-roam-node-at-point)) - (backlinks (org-roam-backlinks-get node))) - (mapcar (lambda (backlink) - (let ((source-node (org-roam-backlink-source-node backlink))) - (list - :file (org-roam-node-file source-node) - :title (org-roam-node-title source-node) - :content (with-current-buffer - (find-file-noselect (org-roam-node-file source-node)) - (goto-char (org-roam-backlink-point backlink)) - (thing-at-point 'sentence t)) - :link (format "[[id:%s][%s]]" - (org-roam-node-id source-node) - (org-roam-node-title source-node))))) - backlinks) - ) - nil)))) - - -(defun my/org-export-insert-backlinks (_backend) - "Insert Org-roam backlinks before export, with HTML attributes." - (when (and (featurep 'org-roam) - (org-roam-node-at-point)) - (let ((backlinks (my/get-org-roam-backlinks (buffer-file-name)))) - (when backlinks - (goto-char (point-max)) - (insert "\n#+ATTR_HTML: :class backlinks-section :id backlinks\n Backlinks\n") - (insert "#+ATTR_HTML: :class backlinks-list\n") - (dolist (bl backlinks) - (insert (format "- %s\n" - (plist-get bl :link)))))))) - - -(add-hook 'org-export-before-processing-hook - #'my/org-export-insert-backlinks) - - -(setq org-id-locations-file "~/.emacs.d/.org-id-locations") -(setq org-roam-directory "~/master-folder/org_files/org_roam/") -(org-id-update-id-locations) - -(setq org-html-link-home "") -(setq org-html-link-up "") - -(defun z/generate-search-index (&rest _) - "Generate search-index.json with title, url, and id." - (when z/build-full-rebuild - (message "Generating search-index.json...") - (let* ((org-dir "~/master-folder/org_files/org_roam/") - (out-file "~/master-folder/org_files/org_roam/output/search-index.json") - (files - (seq-filter - (lambda (f) - (not (string-match-p "/\\.#[^/]+\\.org$" f))) - (directory-files-recursively org-dir "\\.org$"))) - (index '())) - (dolist (file files) - (with-current-buffer (find-file-noselect file) - (let ((id (org-id-get nil))) - (when id - (push `((title . ,(or (org-get-title) "Untitled")) - (url . ,(concat "/" (file-name-base file) ".html")) - (id . ,id)) - index))))) - ;; De-duplicate by ID - (setq index - (cl-remove-duplicates - index - :key (lambda (e) (cdr (assoc 'id e))) - :test #'string=)) - (with-temp-file out-file - (insert (json-encode index))) - (message "search-index.json generated (%d entries)." (length index))))) - - -(add-hook 'org-publish-after-publishing-hook - #'z/generate-search-index) - - - - -(setq org-publish-project-alist - `( - ("org-roam" - :base-directory "~/master-folder/org_files/org_roam/" - :base-extension "org" - :publishing-directory "~/master-folder/org_files/org_roam/output/" - :recursive t - :publishing-function org-html-publish-to-html - - :with-author nil - :with-creator nil - :with-date t - :with-toc nil - :section-numbers nil - - :html-preamble ,z-preamble - :html-postamble ,z-postamble - :html-head ,z-shared-head) - - ("org-static" - :base-directory "~/master-folder/org_files/org_roam/assets/" - :base-extension "css\\|js\\|png\\|jpg\\|gif" - :publishing-directory "~/master-folder/org_files/org_roam/output/assets/" - :recursive t - :publishing-function org-publish-attachment))) - -;(delete-directory "~/master-folder/org_files/org_roam/output/" t) -(message "Directory deleted") - - -(defun z/build-full () - "Full rebuild: Org, assets, and search index." - (interactive) - (setq z/build-full-rebuild t) - (org-id-update-id-locations) - (z/generate-all-files-page) - (org-publish "org-roam" t) - (org-publish "org-static" t) - (message "✅ Full rebuild complete")) - -(defun z/build-fast () - "Fast rebuild: Org + assets only (no JSON)." - (interactive) - (setq z/build-full-rebuild nil) - (z/generate-all-files-page) - (org-publish "org-roam" t) - (org-publish "org-static" t) - (message "⚡ Fast rebuild complete (no search index)")) - - - -(org-id-update-id-locations) -(cond - ((member "--fast" command-line-args-left) - (z/build-fast)) - (t - (z/build-full))) diff --git a/index.org b/index.org old mode 100755 new mode 100644 diff --git a/index.org~ b/index.org~ deleted file mode 100755 index e86a420..0000000 --- a/index.org~ +++ /dev/null @@ -1,10 +0,0 @@ -:PROPERTIES: -:ID: DE792A73-FD00-4048-82D8-AB6E84E869F2 -:END: -#+title: Index - -* [[id:b2fb976a-c23c-4275-8a53-da343c223b97][Brain MOC]] - -* [[https://roam.zainezq.com][Roam]] - -[[./assets/Screenshot_20251227_153037.png]] diff --git a/lisp/macros.el~ b/lisp/macros.el~ deleted file mode 100755 index 5be6c23..0000000 --- a/lisp/macros.el~ +++ /dev/null @@ -1,22 +0,0 @@ -;; ----------------------------- -;; Org export macros (batch-safe) -;; ----------------------------- - -(setq org-export-global-macros - '( - ;; --- Tufte-style sidenotes --- - ("sidenote" - . "@@html:$1@@") - - ;; --- Single epigraph --- - ("epigraph_single" - . "@@html:

$1

$2
@@") - - ;; --- Multi-line epigraph (optional) --- - ("epigraph" - . "@@html:
$1
@@") - - ;; --- New thought / drop cap --- - ("newthought" - . "@@html:$1@@") - )) diff --git a/tests/build-tests.el~ b/tests/build-tests.el~ deleted file mode 100644 index e69de29..0000000 diff --git a/tests/macros-tests.el~ b/tests/macros-tests.el~ deleted file mode 100644 index e69de29..0000000