diff --git a/assets/scripts/auth.js b/assets/scripts/auth.js index 5300186..5d582a3 100644 --- a/assets/scripts/auth.js +++ b/assets/scripts/auth.js @@ -68,6 +68,8 @@ form.addEventListener("submit", async (event) => { event.preventDefault(); const submit = form.querySelector("button[type='submit']"); + form.classList.add("is-loading"); + form.setAttribute("aria-busy", "true"); if (submit) submit.disabled = true; if (message) message.textContent = ""; @@ -79,6 +81,8 @@ if (message) message.textContent = error.message; } finally { if (submit) submit.disabled = false; + form.classList.remove("is-loading"); + form.removeAttribute("aria-busy"); } }); } diff --git a/assets/styles/misc.css b/assets/styles/misc.css index e4e5ae0..c57626d 100644 --- a/assets/styles/misc.css +++ b/assets/styles/misc.css @@ -428,28 +428,163 @@ h2[id], h3[id], h4[id] { scroll-margin-top: 6.5rem; } /* border: 1px solid var(--border, #ccc); */ } .auth-page { - min-height: 70vh; + min-height: min(760px, calc(100vh - 12rem)); display: grid; place-items: center; - padding: 3rem 1rem; + padding: clamp(1.5rem, 4vw, 4rem) 1rem; + box-sizing: border-box; +} + +.auth-panel { + width: min(100%, 440px); + overflow: hidden; + border: 1px solid color-mix(in oklab, var(--border) 86%, transparent); + border-radius: 8px; + background: + linear-gradient(180deg, + color-mix(in oklab, var(--surface) 96%, var(--accent) 4%), + var(--surface)); + box-shadow: 0 22px 60px color-mix(in oklab, #000 16%, transparent); +} + +.auth-intro { + padding: clamp(1.4rem, 4vw, 2rem) clamp(1.2rem, 4vw, 2rem) 1.1rem; + border-bottom: 1px solid color-mix(in oklab, var(--border) 76%, transparent); +} + +.auth-kicker { + margin: 0 0 0.45rem; + color: var(--accent); + font-size: 0.76rem; + font-weight: 800; + letter-spacing: 0; + text-transform: uppercase; +} + +.auth-intro h1 { + margin: 0; + color: var(--fg); + font-size: clamp(1.8rem, 8vw, 2.45rem); + line-height: 1.05; +} + +.auth-intro p:last-child { + max-width: 32ch; + margin: 0.8rem 0 0; + color: var(--muted); + line-height: 1.5; } .auth-form { - width: min(100%, 360px); display: grid; - gap: 0.8rem; + gap: 1rem; + padding: clamp(1.2rem, 4vw, 2rem); } -.auth-form h1 { - margin: 0 0 0.5rem; +.auth-field { + display: grid; + gap: 0.4rem; +} + +.auth-field label { + color: color-mix(in oklab, var(--fg) 82%, var(--muted) 18%); + font-size: 0.88rem; + font-weight: 800; } .auth-form input { width: 100%; box-sizing: border-box; + border: 1px solid color-mix(in oklab, var(--border) 92%, var(--fg) 8%); + border-radius: 7px; + background: color-mix(in oklab, var(--surface) 88%, var(--bg) 12%); + color: var(--fg); + font: inherit; + min-height: 3rem; + padding: 0.78rem 0.85rem; + transition: border-color 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease; +} + +.auth-form input:focus { + border-color: var(--accent); + box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent) 18%, transparent); + outline: none; +} + +.auth-submit { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.6rem; + min-height: 3rem; + margin-top: 0.25rem; + border: 1px solid color-mix(in oklab, var(--accent) 72%, var(--fg) 28%); + border-radius: 7px; + background: color-mix(in oklab, var(--accent) 92%, #111 8%); + color: #fff; + cursor: pointer; + font: inherit; + font-weight: 800; + transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease; +} + +.auth-submit:hover { + box-shadow: 0 12px 28px color-mix(in oklab, var(--accent) 28%, transparent); + filter: brightness(1.03); + transform: translateY(-1px); +} + +.auth-submit:focus-visible { + box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent) 24%, transparent); + outline: none; +} + +.auth-submit:disabled { + cursor: progress; + filter: grayscale(0.2); + opacity: 0.78; + transform: none; +} + +.auth-submit-spinner { + display: none; + width: 1rem; + height: 1rem; + border: 2px solid rgb(255 255 255 / 0.42); + border-top-color: #fff; + border-radius: 50%; +} + +.auth-form.is-loading .auth-submit-spinner { + display: inline-block; + animation: auth-spin 0.8s linear infinite; } .auth-message { min-height: 1.4em; + margin: 0; color: #a33; + font-size: 0.9rem; + line-height: 1.45; +} + +.auth-message:empty { + visibility: hidden; +} + +@keyframes auth-spin { + to { + transform: rotate(360deg); + } +} + +@media (max-width: 600px) { + .auth-page { + min-height: calc(100vh - 10rem); + padding: 1rem 0; + } + + .auth-panel { + width: 100%; + } } diff --git a/home/login.org b/home/login.org index 7833bd3..98574b1 100644 --- a/home/login.org +++ b/home/login.org @@ -6,16 +6,30 @@ #+BEGIN_EXPORT html - - Login - Username - + + + Private site + Sign in to Zainezq + Use your account details to continue to the private site. + - Password - + + + Username + + - Login - - + + Password + + + + + Sign in + + + + + #+END_EXPORT diff --git a/posts/posts-list.org b/posts/posts-list.org index c72bb91..c0ec23e 100644 --- a/posts/posts-list.org +++ b/posts/posts-list.org @@ -4,7 +4,8 @@ See the categories: @@html:Categories@@ * Posts: -- [[file:career/career-list.org][Career List]] @@html:09-05-2026 00:35@@ +- [[file:career/career-list.org][Career List]] @@html:09-05-2026 00:54@@ +- [[file:posts-list.sync-conflict-20260509-005434-VT6366A.org][Posts List]] @@html:09-05-2026 00:54@@ - [[file:posts-list.sync-conflict-20260417-233432-VT6366A.org][Posts List]] @@html:14-04-2026 16:36@@ - [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:11-03-2026 17:18@@ @@html:learning@@ @@html:notes@@ - [[file:career/javascript.org][Understands the Javascript language]] @@html:11-03-2026 16:52@@ @@html:learning@@ @@html:notes@@ diff --git a/posts/posts-list.sync-conflict-20260509-005434-VT6366A.org b/posts/posts-list.sync-conflict-20260509-005434-VT6366A.org new file mode 100644 index 0000000..55e2223 --- /dev/null +++ b/posts/posts-list.sync-conflict-20260509-005434-VT6366A.org @@ -0,0 +1,27 @@ +#+TITLE: Posts List +#+OPTIONS: toc:nil num:nil + +See the categories: @@html:Categories@@ + +* Posts: +- [[file:career/career-list.org][Career List]] @@html:09-05-2026 00:35@@ +- [[file:posts-list.sync-conflict-20260417-233432-VT6366A.org][Posts List]] @@html:14-04-2026 16:36@@ +- [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:11-03-2026 17:18@@ @@html:learning@@ @@html:notes@@ +- [[file:career/javascript.org][Understands the Javascript language]] @@html:11-03-2026 16:52@@ @@html:learning@@ @@html:notes@@ +- [[file:career/restful-api.org][Restful API]] @@html:15-02-2026 23:00@@ @@html:learning@@ @@html:notes@@ +- [[file:career/database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:18-01-2026 23:00@@ @@html:learning@@ @@html:notes@@ +- [[file:career/monitoring-and-logging.org][Monitoring and Logging]] @@html:18-01-2026 23:00@@ @@html:learning@@ @@html:notes@@ +- [[file:career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] @@html:18-01-2026 23:00@@ @@html:learning@@ @@html:notes@@ +- [[file:career/probation-objectives.org][Probation Objectives:]] @@html:08-12-2025 17:55@@ @@html:review@@ @@html:notes@@ +- [[file:career/airflow.org][Datamarts, Airflow and DAG's]] @@html:15-11-2025 18:37@@ @@html:learning@@ @@html:notes@@ +- [[file:career/normalisation.org][Benefits of Normalisation]] @@html:10-11-2025 18:04@@ @@html:learning@@ @@html:notes@@ +- [[file:career/management-of-self.org][Management of self training]] @@html:06-11-2025 22:01@@ @@html:learning@@ @@html:notes@@ +- [[file:career/wireframe-designs.org][Wireframe Designs]] @@html:06-11-2025 22:01@@ @@html:learning@@ @@html:notes@@ +- [[file:career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] @@html:06-11-2025 22:01@@ @@html:learning@@ @@html:notes@@ +- [[file:career/career-intro.org][Career Introduction]] @@html:06-11-2025 21:29@@ @@html:introduction@@ +- [[file:career/invest-principles.org][Invest Principles]] @@html:06-11-2025 21:08@@ @@html:learning@@ @@html:notes@@ +- [[file:career/retrospectives.org][Retrospectives]] @@html:05-11-2025 20:46@@ @@html:learning@@ @@html:notes@@ +- [[file:career/lean.org][Lean]] @@html:05-11-2025 20:46@@ @@html:learning@@ @@html:notes@@ +- [[file:career/owasp.org][OWASP Top Ten]] @@html:19-10-2025 13:21@@ @@html:learning@@ @@html:notes@@ +- [[file:career/solid-principles.org][SOLID Principles]] @@html:18-10-2025 19:14@@ @@html:learning@@ @@html:notes@@ +- [[file:posts-intro.org][Posts Introduction]] @@html:06-08-2025 00:00@@ @@html:introduction@@ diff --git a/recently-updated.org b/recently-updated.org index d7e0fb6..6aabaf6 100644 --- a/recently-updated.org +++ b/recently-updated.org @@ -2,7 +2,10 @@ #+OPTIONS: toc:nil num:nil * Recently Updated (top 26 files) -- [[file:home/login.org][Login]] @@html:2026-05-09 00:33@@ +- [[file:sitemap.sync-conflict-20260509-005434-VT6366A.org][Sitemap]] @@html:2026-05-09 00:54@@ +- [[file:posts/posts-list.sync-conflict-20260509-005434-VT6366A.org][Posts List]] @@html:2026-05-09 00:54@@ +- [[file:recently-updated.sync-conflict-20260509-005434-VT6366A.org][Recently Updated]] @@html:2026-05-09 00:54@@ +- [[file:home/login.org][Login]] @@html:2026-05-09 00:46@@ - [[file:home/guide/setup.org][Setup]] @@html:2026-05-09 00:33@@ - [[file:blogs/2026/05-may/ai-datacamp-08-05.org][AI Datacamp]] @@html:2026-05-08 12:49@@ - [[file:blogs/2026/05-may/using-codex-07-05-26.org][Using Codex]] @@html:2026-05-07 16:12@@ @@ -25,6 +28,3 @@ - [[file:blogs/2026/04-april/weekly-target-06-04-26.org][[06-04-2026] - Weekly target]] @@html:2026-04-06 22:53@@ - [[file:blogs/2026/04-april/making-notes-through-org-noter-06-05.org][Making Notes through Org Noter]] @@html:2026-04-06 14:30@@ - [[file:blogs/2026/04-april/05-04-week-review.org][[05-04-2026] - Weekly Review]] @@html:2026-04-05 12:00@@ -- [[file:blogs/2026/04-april/joining-new-team-meeting-02-04-2026.org][New team meeting]] @@html:2026-04-02 16:03@@ -- [[file:blogs/2026/03-march/intellectually-challenging-myself-30-03-26.org][Intellectually challenging oneself]] @@html:2026-03-31 11:14@@ -- [[file:blogs/2026/03-march/cooking-dinner-29-03-26.org][Cooking Dinner (num)]] @@html:2026-03-30 11:49@@ diff --git a/recently-updated.sync-conflict-20260509-005434-VT6366A.org b/recently-updated.sync-conflict-20260509-005434-VT6366A.org new file mode 100644 index 0000000..5ef2963 --- /dev/null +++ b/recently-updated.sync-conflict-20260509-005434-VT6366A.org @@ -0,0 +1,27 @@ +#+TITLE: Recently Updated +#+OPTIONS: toc:nil num:nil + +* Recently Updated (top 26 files) +- [[file:home/login.org][Login]] @@html:2026-05-09 00:33@@ +- [[file:home/guide/setup.org][Setup]] @@html:2026-05-09 00:33@@ +- [[file:blogs/2026/05-may/ai-datacamp-08-05.org][AI Datacamp]] @@html:2026-05-08 12:49@@ +- [[file:blogs/2026/05-may/using-codex-07-05-26.org][Using Codex]] @@html:2026-05-07 16:12@@ +- [[file:blogs/2026/05-may/03-05-week-review.org][[03-05-2026] - Weekly Review]] @@html:2026-05-03 12:00@@ +- [[file:blogs/2026/05-may/sun-soak-01-05.org][Soaking in the sun]] @@html:2026-05-01 12:27@@ +- [[file:blogs/2026/04-april/wise-words-29-04.org][Wise Words I need to engrain]] @@html:2026-04-29 11:31@@ +- [[file:blogs/2026/04-april/april-almost-over-28-04.org][April is almost over...]] @@html:2026-04-28 15:33@@ +- [[file:blogs/2026/04-april/26-04-week-review.org][[26-04-2026] - Weekly Review]] @@html:2026-04-26 12:00@@ +- [[file:blogs/2026/04-april/adding-more-wird-22-04-26.org][Adding another Wird]] @@html:2026-04-22 16:04@@ +- [[file:home/wird-tracker.org][Wird Tracker]] @@html:2026-04-22 11:58@@ +- [[file:blogs/2026/04-april/sitting-outside-in-the-sun-21-04-26.org][Sitting in the sun]] @@html:2026-04-21 13:01@@ +- [[file:blogs/2026/04-april/19-04-week-review.org][[19-04-2026] - Weekly Review]] @@html:2026-04-19 12:00@@ +- [[file:blogs/2026/04-april/ending-the-week-17-04-26.org][End of week thoughts]] @@html:2026-04-17 16:17@@ +- [[file:blogs/2026/04-april/16-04-26.org][Rambles]] @@html:2026-04-16 16:02@@ +- [[file:posts/posts-list.sync-conflict-20260417-233432-VT6366A.org][Posts List]] @@html:2026-04-14 16:36@@ +- [[file:blogs/2026/04-april/comparison-14-04.org][Comparison is the thief of joy]] @@html:2026-04-14 09:55@@ +- [[file:blogs/2026/04-april/12-04-week-review.org][[12-04-2026] - Weekly Review]] @@html:2026-04-12 12:00@@ +- [[file:blogs/2026/04-april/starting-new-rotation-08-04-26.org][Starting new rotation]] @@html:2026-04-08 16:15@@ +- [[file:blogs/2026/04-april/action-plan-07-04-26.org][Action plan to change teams]] @@html:2026-04-07 10:04@@ +- [[file:blogs/2026/04-april/weekly-target-06-04-26.org][[06-04-2026] - Weekly target]] @@html:2026-04-06 22:53@@ +- [[file:blogs/2026/04-april/making-notes-through-org-noter-06-05.org][Making Notes through Org Noter]] @@html:2026-04-06 14:30@@ +- [[file:blogs/2026/04-april/05-04-week-review.org][[05-04-2026] - Weekly Review]] @@html:2026-04-05 12:00@@ diff --git a/sitemap.org b/sitemap.org index a84c6ca..767257a 100644 --- a/sitemap.org +++ b/sitemap.org @@ -1,6 +1,8 @@ #+TITLE: Sitemap - [[file:index.org][Home]] +- [[file:recently-updated.sync-conflict-20260509-005434-VT6366A.org][Recently Updated]] +- [[file:sitemap.sync-conflict-20260509-005434-VT6366A.org][Sitemap]] - [[file:wip.org][Work in progress]] - [[file:recently-updated.org][Recently Updated]] - tags @@ -11,16 +13,40 @@ - [[file:tags/notes.org][Tag: notes]] - [[file:tags/review.org][Tag: review]] - [[file:tags/website.org][Tag: website]] + - [[file:tags/life.org][Tag: life]] - [[file:tags/update.org][Tag: update]] - [[file:tags/insights.org][Tag: insights]] - - [[file:tags/life.org][Tag: life]] + - [[file:tags/emacs.org][Tag: emacs]] - [[file:tags/education.org][Tag: education]] - [[file:tags/reading.org][Tag: reading]] - - [[file:tags/emacs.org][Tag: emacs]] - [[file:tags/maths.org][Tag: maths]] +- books + - [[file:books/books-list.org][Books List]] + - clean-code + - [[file:books/clean-code/clean-code-notes.org][Clean Code Notes]] +- lima + - [[file:lima/lima-list.org][Lima]] +- home + - [[file:home/countdown.org][Countdown]] + - [[file:home/contact.org][Contact]] + - [[file:home/backlog.org][Backlog]] + - [[file:home/notes.org][Notes]] + - [[file:home/services.org][Service]] + - [[file:home/status.org][Competency Status Board]] + - [[file:home/wird-tracker.org][Wird Tracker]] + - [[file:home/login.org][Login]] + - [[file:home/categories.org][Categories]] + - guide + - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] + - [[file:home/guide/setup.org][Setup]] +- blogs + - [[file:blogs/blogs-intro.org][Blogs Introduction]] + - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] + - [[file:blogs/blogs-list.org][Blogs List]] - posts - [[file:posts/posts-intro.org][Posts Introduction]] - [[file:posts/posts-list.sync-conflict-20260417-233432-VT6366A.org][Posts List]] + - [[file:posts/posts-list.sync-conflict-20260509-005434-VT6366A.org][Posts List]] - [[file:posts/posts-list.org][Posts List]] - career - [[file:posts/career/solid-principles.org][SOLID Principles]] @@ -41,27 +67,4 @@ - [[file:posts/career/restful-api.org][Restful API]] - [[file:posts/career/javascript.org][Understands the Javascript language]] - [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - - [[file:posts/career/career-list.org][Career List]] -- blogs - - [[file:blogs/blogs-intro.org][Blogs Introduction]] - - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] - - [[file:blogs/blogs-list.org][Blogs List]] -- books - - [[file:books/books-list.org][Books List]] - - clean-code - - [[file:books/clean-code/clean-code-notes.org][Clean Code Notes]] -- lima - - [[file:lima/lima-list.org][Lima]] -- home - - [[file:home/countdown.org][Countdown]] - - [[file:home/contact.org][Contact]] - - [[file:home/backlog.org][Backlog]] - - [[file:home/notes.org][Notes]] - - [[file:home/services.org][Service]] - - [[file:home/status.org][Competency Status Board]] - - [[file:home/wird-tracker.org][Wird Tracker]] - - [[file:home/login.org][Login]] - - [[file:home/categories.org][Categories]] - - guide - - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] - - [[file:home/guide/setup.org][Setup]] \ No newline at end of file + - [[file:posts/career/career-list.org][Career List]] \ No newline at end of file diff --git a/sitemap.sync-conflict-20260509-005434-VT6366A.org b/sitemap.sync-conflict-20260509-005434-VT6366A.org new file mode 100644 index 0000000..a13c45f --- /dev/null +++ b/sitemap.sync-conflict-20260509-005434-VT6366A.org @@ -0,0 +1,67 @@ +#+TITLE: Sitemap + +- [[file:index.org][Home]] +- [[file:wip.org][Work in progress]] +- [[file:recently-updated.org][Recently Updated]] +- tags + - [[file:tags/review.sync-conflict-20260328-203248-VT6366A.org][Tag: review]] + - [[file:tags/life.sync-conflict-20260417-233423-VT6366A.org][Tag: life]] + - [[file:tags/introduction.org][Tag: introduction]] + - [[file:tags/learning.org][Tag: learning]] + - [[file:tags/notes.org][Tag: notes]] + - [[file:tags/review.org][Tag: review]] + - [[file:tags/website.org][Tag: website]] + - [[file:tags/life.org][Tag: life]] + - [[file:tags/education.org][Tag: education]] + - [[file:tags/update.org][Tag: update]] + - [[file:tags/insights.org][Tag: insights]] + - [[file:tags/emacs.org][Tag: emacs]] + - [[file:tags/maths.org][Tag: maths]] + - [[file:tags/reading.org][Tag: reading]] +- books + - [[file:books/books-list.org][Books List]] + - clean-code + - [[file:books/clean-code/clean-code-notes.org][Clean Code Notes]] +- lima + - [[file:lima/lima-list.org][Lima]] +- home + - [[file:home/countdown.org][Countdown]] + - [[file:home/contact.org][Contact]] + - [[file:home/backlog.org][Backlog]] + - [[file:home/notes.org][Notes]] + - [[file:home/services.org][Service]] + - [[file:home/status.org][Competency Status Board]] + - [[file:home/wird-tracker.org][Wird Tracker]] + - [[file:home/login.org][Login]] + - [[file:home/categories.org][Categories]] + - guide + - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] + - [[file:home/guide/setup.org][Setup]] +- blogs + - [[file:blogs/blogs-intro.org][Blogs Introduction]] + - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] + - [[file:blogs/blogs-list.org][Blogs List]] +- posts + - [[file:posts/posts-intro.org][Posts Introduction]] + - [[file:posts/posts-list.sync-conflict-20260417-233432-VT6366A.org][Posts List]] + - [[file:posts/posts-list.org][Posts List]] + - career + - [[file:posts/career/solid-principles.org][SOLID Principles]] + - [[file:posts/career/owasp.org][OWASP Top Ten]] + - [[file:posts/career/retrospectives.org][Retrospectives]] + - [[file:posts/career/lean.org][Lean]] + - [[file:posts/career/invest-principles.org][Invest Principles]] + - [[file:posts/career/career-intro.org][Career Introduction]] + - [[file:posts/career/management-of-self.org][Management of self training]] + - [[file:posts/career/wireframe-designs.org][Wireframe Designs]] + - [[file:posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] + - [[file:posts/career/normalisation.org][Benefits of Normalisation]] + - [[file:posts/career/airflow.org][Datamarts, Airflow and DAG's]] + - [[file:posts/career/probation-objectives.org][Probation Objectives:]] + - [[file:posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] + - [[file:posts/career/monitoring-and-logging.org][Monitoring and Logging]] + - [[file:posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] + - [[file:posts/career/restful-api.org][Restful API]] + - [[file:posts/career/javascript.org][Understands the Javascript language]] + - [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] + - [[file:posts/career/career-list.org][Career List]]
Private site
Use your account details to continue to the private site.