/* Generated from lib/theme.nix — variant: production
   DO NOT EDIT BY HAND. Change tokens in lib/theme.nix and rebuild. */
:root {
  /* Colors */
  --color-bg-base: #1a1c23;
  --color-bg-light: #242730;
  --color-bg-medium: #1e2028;
  --color-bg-dark: #14161c;
  --color-bg-button: #2f333b;
  --color-accent: #8b6cf6;
  --color-accent-hover: #a78bfa;
  --color-accent-active: #7a5be0;
  --color-accent-glow: rgba(139, 108, 246, 0.08);
  --color-accent-glow-subtle: rgba(139, 108, 246, 0.05);
  --color-text: #c8c9cb;
  --color-text-muted: rgba(255, 255, 255, 0.5);
  --color-text-bright: #ffffff;
  --color-border: rgba(255, 255, 255, 0.1);
  --color-border-subtle: rgba(255, 255, 255, 0.05);

  /* Typography */
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --font-mono: 'Source Code Pro', 'Consolas', 'Monaco', monospace;
  --font-weight-normal: 400;
  --font-weight-bold: 700;
  --font-weight-black: 900;

  /* Spacing */
  --space-xs: 0.5em;
  --space-sm: 1em;
  --space-md: 2em;
  --space-lg: 3em;
  --space-xl: 4em;
  --space-2xl: 6em;

  /* Borders */
  --radius-sm: 0.25em;
  --radius-md: 0.35em;
  --radius-lg: 0.5em;

  /* Transitions */
  --transition-fast: 0.25s ease-in-out;
}

/*
  Cleaned foundation CSS for personal website.
  Based on Escape Velocity by HTML5 UP (html5up.net | @ajlkn).
  
  Dark theme with purple accent.
  FontAwesome references removed. jQuery/JS-specific bloat removed.
  Kept: reset, typography, responsive grid, buttons, sections, footer.
*/

/* Reset */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var, b,
u, i, center, dl, dt, dd, ol, ul, li, fieldset,
form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, figure, figcaption,
footer, header, hgroup, menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}

article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block;
}

body {
  line-height: 1;
}

ol, ul {
  list-style: none;
}

blockquote, q {
  quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

body {
  -webkit-text-size-adjust: none;
}

mark {
  background-color: transparent;
  color: inherit;
}

input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

input, select, textarea {
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
}

/* =========================================================================
   Design Tokens — emitted from lib/theme.nix at build time and prepended
   to this file. Do not redefine :root here. Structural CSS only below.
   ========================================================================= */

/* =========================================================================
   Reusable Inner Page Patterns
   ========================================================================= */

/* Inner page hero — mirrors homepage #intro atmosphere.
   Must beat .wrapper.style1 { background: var(--color-accent) } (solid accent
   is Escape Velocity heritage for filled bands; full-page solid accent is
   unreadable — especially staging teal). Specificity: two classes + one. */
.wrapper.style1.inner-hero {
  background:
    radial-gradient(ellipse at 20% 50%, var(--color-accent-glow) 0%, transparent 50%),
    radial-gradient(ellipse at 80% 50%, var(--color-accent-glow-subtle) 0%, transparent 50%),
    var(--color-bg-base);
  color: var(--color-text);
}

.wrapper.style1.inner-hero .title {
  background: var(--color-bg-base);
  color: var(--color-text-bright);
}

.wrapper.style1.inner-hero h1,
.wrapper.style1.inner-hero h2,
.wrapper.style1.inner-hero h3,
.wrapper.style1.inner-hero h4,
.wrapper.style1.inner-hero h5,
.wrapper.style1.inner-hero h6,
.wrapper.style1.inner-hero strong,
.wrapper.style1.inner-hero b,
.wrapper.style1.inner-hero a {
  color: var(--color-text-bright);
}

/* Standalone utility (same atmosphere if used without .wrapper.style1) */
.inner-hero {
  background:
    radial-gradient(ellipse at 20% 50%, var(--color-accent-glow) 0%, transparent 50%),
    radial-gradient(ellipse at 80% 50%, var(--color-accent-glow-subtle) 0%, transparent 50%),
    var(--color-bg-base);
}

/* Decorative ornament divider (reuse homepage pattern) */
.ornament {
  display: flex;
  justify-content: center;
  margin: var(--space-md) 0;
}

.ornament svg {
  opacity: 0.6;
  transition: opacity var(--transition-fast);
}

.ornament svg:hover {
  opacity: 1;
}

/* Icon card — reusable highlight pattern from homepage */
.icon-card {
  text-align: center;
}

.icon-card .icon-card-svg {
  display: flex;
  justify-content: center;
  margin-bottom: var(--space-sm);
}

.icon-card .icon-card-svg svg {
  width: 48px;
  height: 48px;
  opacity: 0.7;
  transition: opacity var(--transition-fast);
}

.icon-card:hover .icon-card-svg svg {
  opacity: 1;
}

.icon-card h3 {
  color: var(--color-accent) !important;
  margin: -0.35em 0 0.75em 0;
  font-size: 1.15em;
  letter-spacing: 0.05em;
}

/* Section intro with optional ornament */
.section-intro {
  text-align: center;
  margin-bottom: var(--space-lg);
}

/* Box model */
html {
  box-sizing: border-box;
  background-color: var(--color-bg-base);
}

*, *:before, *:after {
  box-sizing: inherit;
}

/* Basic typography */
body, input, textarea, select {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-weight: 400;
  background-color: var(--color-bg-base) !important;
  color: var(--color-text);
  font-size: 14pt;
  line-height: 1.75em;
  letter-spacing: 0.025em;
  padding-top: 3em;
}

h1, h2, h3, h4, h5, h6 {
  font-weight: 700;
  color: #ffffff;
}

h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
  color: inherit;
  text-decoration: none;
}

a {
  transition: color .25s ease-in-out;
  text-decoration: underline;
  color: var(--color-accent-hover);
}

a:hover {
  text-decoration: none;
  color: var(--color-accent-hover);
}

strong, b {
  font-weight: 700;
  color: #ffffff;
}

blockquote {
  border-left: solid 0.5em rgba(255, 255, 255, 0.15);
  padding: 1em 0 1em 2em;
  font-style: italic;
}

em, i {
  font-style: italic;
}

hr {
  border: 0;
  border-top: solid 1px rgba(255, 255, 255, 0.1);
  margin: 2em 0 2em 0;
}

sub {
  position: relative;
  top: 0.5em;
  font-size: 0.8em;
}

sup {
  position: relative;
  top: -0.5em;
  font-size: 0.8em;
}

.nobr {
  white-space: nowrap;
}

p, ul, ol, dl, table, blockquote, form {
  margin-bottom: 2em;
}

/* Container */
.container {
  margin: 0 auto;
  max-width: 100%;
  width: 68em;
}

@media screen and (max-width: 1680px) {
  .container { width: 70em; }
}

@media screen and (max-width: 1280px) {
  .container { width: calc(100% - 100px); }
}

@media screen and (max-width: 980px) {
  .container { width: calc(100% - 100px); }
}

@media screen and (max-width: 736px) {
  .container { width: calc(100% - 40px); }
}

/* Row — responsive flex grid */
.row {
  display: flex;
  flex-wrap: wrap;
  box-sizing: border-box;
  align-items: stretch;
}

.row > * {
  box-sizing: border-box;
}

.row.aln-center { justify-content: center; }
.row.aln-left   { justify-content: flex-start; }
.row.aln-right  { justify-content: flex-end; }
.row.aln-top    { align-items: flex-start; }
.row.aln-middle { align-items: center; }
.row.aln-bottom { align-items: flex-end; }

/* Column widths (12-column grid) */
.row > .col-1  { width: 8.33333%; }
.row > .col-2  { width: 16.66667%; }
.row > .col-3  { width: 25%; }
.row > .col-4  { width: 33.33333%; }
.row > .col-5  { width: 41.66667%; }
.row > .col-6  { width: 50%; }
.row > .col-7  { width: 58.33333%; }
.row > .col-8  { width: 66.66667%; }
.row > .col-9  { width: 75%; }
.row > .col-10 { width: 83.33333%; }
.row > .col-11 { width: 91.66667%; }
.row > .col-12 { width: 100%; }

/* Offsets */
.row > .off-1  { margin-left: 8.33333%; }
.row > .off-2  { margin-left: 16.66667%; }
.row > .off-3  { margin-left: 25%; }
.row > .off-4  { margin-left: 33.33333%; }
.row > .off-5  { margin-left: 41.66667%; }
.row > .off-6  { margin-left: 50%; }
.row > .off-7  { margin-left: 58.33333%; }
.row > .off-8  { margin-left: 66.66667%; }
.row > .off-9  { margin-left: 75%; }
.row > .off-10 { margin-left: 83.33333%; }
.row > .off-11 { margin-left: 91.66667%; }
.row > .off-12 { margin-left: 100%; }

/* Column gutters */
.row { margin-top: -50px; margin-left: -50px; }
.row > * { padding: 50px 0 0 50px; }

@media screen and (max-width: 1280px) {
  .row { margin-top: -35px; margin-left: -35px; }
  .row > * { padding: 35px 0 0 35px; }
  .row > .col-1-large  { width: 8.33333%; }
  .row > .col-2-large  { width: 16.66667%; }
  .row > .col-3-large  { width: 25%; }
  .row > .col-4-large  { width: 33.33333%; }
  .row > .col-5-large  { width: 41.66667%; }
  .row > .col-6-large  { width: 50%; }
  .row > .col-7-large  { width: 58.33333%; }
  .row > .col-8-large  { width: 66.66667%; }
  .row > .col-9-large  { width: 75%; }
  .row > .col-10-large { width: 83.33333%; }
  .row > .col-11-large { width: 91.66667%; }
  .row > .col-12-large { width: 100%; }
}

@media screen and (max-width: 980px) {
  .row > .col-1-medium  { width: 8.33333%; }
  .row > .col-2-medium  { width: 16.66667%; }
  .row > .col-3-medium  { width: 25%; }
  .row > .col-4-medium  { width: 33.33333%; }
  .row > .col-5-medium  { width: 41.66667%; }
  .row > .col-6-medium  { width: 50%; }
  .row > .col-7-medium  { width: 58.33333%; }
  .row > .col-8-medium  { width: 66.66667%; }
  .row > .col-9-medium  { width: 75%; }
  .row > .col-10-medium { width: 83.33333%; }
  .row > .col-11-medium { width: 91.66667%; }
  .row > .col-12-medium { width: 100%; }
  .row { margin-top: -50px; margin-left: -50px; }
  .row > * { padding: 50px 0 0 50px; }
}

@media screen and (max-width: 736px) {
  .row { margin-top: -30px; margin-left: -30px; }
  .row > * { padding: 30px 0 0 30px; }
  .row > .col-1-small  { width: 8.33333%; }
  .row > .col-2-small  { width: 16.66667%; }
  .row > .col-3-small  { width: 25%; }
  .row > .col-4-small  { width: 33.33333%; }
  .row > .col-5-small  { width: 41.66667%; }
  .row > .col-6-small  { width: 50%; }
  .row > .col-7-small  { width: 58.33333%; }
  .row > .col-8-small  { width: 66.66667%; }
  .row > .col-9-small  { width: 75%; }
  .row > .col-10-small { width: 83.33333%; }
  .row > .col-11-small { width: 91.66667%; }
  .row > .col-12-small { width: 100%; }
}

/* Section / Article */
section, article {
  margin: 0 0 4em 0;
}

section > :last-child,
article > :last-child,
section:last-child,
article:last-child {
  margin-bottom: 0;
}

header.style1 {
  text-align: center;
  padding: 3em 0 3em 0;
}

header.style1 h2 {
  font-weight: 700;
  font-size: 2em;
  letter-spacing: 0.075em;
  line-height: 1.5em;
}

header.style1 p {
  color: #9ca0a8;
  display: block;
  margin: 1.15em 0 0 0;
  font-size: 1.3em;
  letter-spacing: 0.075em;
  line-height: 1.5em;
}

/* Image */
.image {
  display: inline-block;
}

.image img {
  display: block;
  width: 100%;
}

.image.fit {
  display: block;
  width: 100%;
}

.image.left {
  float: left;
  margin: 0 2em 2em 0;
}

.image.centered {
  display: block;
  margin: 0 0 2em 0;
}

.image.centered img {
  margin: 0 auto;
  width: auto;
}

.image.featured {
  display: block;
  width: 100%;
  margin: 0 0 2em 0;
}

/* Button */
input[type="button"],
input[type="submit"],
input[type="reset"],
button,
.button {
  transition: all .25s ease-in-out;
  display: inline-block;
  background: #444;
  text-align: center;
  text-transform: uppercase;
  font-weight: 700;
  letter-spacing: 0.25em;
  text-decoration: none;
  border-radius: 0.35em;
  border: 0;
  outline: 0;
  cursor: pointer;
  padding: 0 2.25em 0 2.25em;
  font-size: 0.9em;
  min-width: 12em;
  height: 4em;
  line-height: 4em;
  color: #fff;
}

input[type="button"]:hover,
input[type="submit"]:hover,
input[type="reset"]:hover,
button:hover,
.button:hover {
  background-color: var(--color-accent-hover);
}

input[type="button"].large,
input[type="submit"].large,
input[type="reset"].large,
button.large,
.button.large {
  font-size: 1em;
  min-width: 14em;
}

/* style1: filled accent */
input[type="button"].style1,
input[type="submit"].style1,
input[type="reset"].style1,
button.style1,
.button.style1 {
  background: var(--color-accent);
  color: #fff;
}

input[type="button"].style1:hover,
input[type="submit"].style1:hover,
input[type="reset"].style1:hover,
button.style1:hover,
.button.style1:hover {
  background-color: var(--color-accent-hover);
}

input[type="button"].style1:active,
input[type="submit"].style1:active,
input[type="reset"].style1:active,
button.style1:active,
.button.style1:active {
  background-color: var(--color-accent-active);
}

/* style2: outline */
input[type="button"].style2,
input[type="submit"].style2,
input[type="reset"].style2,
button.style2,
.button.style2 {
  background: none;
  color: var(--color-text);
  box-shadow: inset 0px 0px 2px 0px rgba(255, 255, 255, 0.25);
}

input[type="button"].style2:hover,
input[type="submit"].style2:hover,
input[type="reset"].style2:hover,
button.style2:hover,
.button.style2:hover {
  box-shadow: inset 0px 0px 2px 0px rgba(255, 255, 255, 0.5);
}

input[type="button"].style2:active,
input[type="submit"].style2:active,
input[type="reset"].style2:active,
button.style2:active,
.button.style2:active {
  box-shadow: inset 0px 0px 2px 0px #fff;
}

/* style3: dark filled */
input[type="button"].style3,
input[type="submit"].style3,
input[type="reset"].style3,
button.style3,
.button.style3 {
  background: var(--color-bg-button);
  color: #fff;
}

input[type="button"].style3:hover,
input[type="submit"].style3:hover,
input[type="reset"].style3:hover,
button.style3:hover,
.button.style3:hover {
  background-color: #3f434b;
}

input[type="button"].style3:active,
input[type="submit"].style3:active,
input[type="reset"].style3:active,
button.style3:active,
.button.style3:active {
  background-color: #1f232b;
}

/* List */
ul {
  list-style: disc;
  padding-left: 1em;
}

ul li {
  padding-left: 0.5em;
}

ul.style2 {
  list-style: none;
  padding-left: 0;
}

ul.style2 li {
  border-top: solid 1px rgba(255, 255, 255, 0.1);
  padding: 1.5em 0 0 0;
  margin: 1.5em 0 0 0;
}

ul.style2 li:first-child {
  border-top: 0;
  padding-top: 0;
  margin-top: 0;
}

ol {
  list-style: decimal;
  padding-left: 1.25em;
}

ol li {
  padding-left: 0.25em;
}

/* Actions */
ul.actions {
  list-style: none;
  padding-left: 0;
  margin: 3em 0 0 0;
}

ul.actions li {
  display: inline-block;
  margin: 0 0.75em 0 0.75em;
  padding-left: 0;
}

ul.actions li:first-child {
  margin-left: 0;
}

ul.actions li:last-child {
  margin-right: 0;
}

ul.actions.special {
  text-align: center;
}

/* Feature List */
.feature-list {
  max-width: 58em;
  margin-left: auto;
  margin-right: auto;
  position: relative;
  top: 0.75em;
}

.feature-list section {
  border-top: solid 1px rgba(255, 255, 255, 0.1);
  padding-top: 3em;
  padding-left: 5em;
  position: relative;
}

@media screen and (min-width: 981px) {
  .feature-list > .row > :nth-child(-n+2) > section {
    border-top: 0;
    padding-top: 0;
  }
}

.feature-list h3 {
  color: var(--color-accent) !important;
  margin: -0.35em 0 0.75em 0;
  font-size: 1.15em;
  letter-spacing: 0.05em;
}

.feature-list.small section {
  padding-left: 3.5em;
}

/* Box */
.box header {
  margin: 0 0 1.5em 0;
}

.box header.style1 {
  position: relative;
  margin: -0.5em 0 0 0;
  padding-top: 0;
}

.box h2 {
  margin: 0 0 0.75em 0;
  font-size: 1.15em;
  letter-spacing: 0.05em;
}

.box h3 {
  margin: 0 0 0.5em 0;
  font-size: 1em;
  font-weight: 600;
  letter-spacing: 0.05em;
}

/* Wrapper */
.wrapper {
  position: relative;
  padding: 6em 0 9em 0;
}

.wrapper .title {
  position: absolute;
  top: 0;
  left: 50%;
  text-align: center;
  text-transform: uppercase;
  display: block;
  font-weight: 700;
  letter-spacing: 0.25em;
  font-size: 0.9em;
  width: 25em;
  height: 3.25em;
  top: -3.25em;
  line-height: 3.25em;
  margin-bottom: -3.25em;
  margin-left: -12.5em;
  padding-top: 0.5em;
}

/* style1: accent background */
.wrapper.style1 {
  background: var(--color-accent);
  color: rgba(255, 255, 255, 0.75);
}

.wrapper.style1 .title {
  background: var(--color-accent);
  color: #fff;
}

.wrapper.style1 h1, .wrapper.style1 h2, .wrapper.style1 h3,
.wrapper.style1 h4, .wrapper.style1 h5, .wrapper.style1 h6,
.wrapper.style1 strong, .wrapper.style1 b, .wrapper.style1 a {
  color: #fff;
}

/* style2: light background */
.wrapper.style2 {
  background: var(--color-bg-light);
}

.wrapper.style2 .title {
  background: var(--color-bg-light);
  color: #fff;
}

/* style3: medium background */
.wrapper.style3 {
  background: var(--color-bg-medium);
}

.wrapper.style3 .title {
  background: var(--color-bg-medium);
  color: #fff;
}

.wrapper.style3 .image {
  border: solid 10px var(--color-bg-button);
}

/* Page Wrapper */
#page-wrapper > section {
  margin-bottom: 0;
}

/* Header */
#header {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  height: 24em;
  background: var(--color-bg-base);
  padding: 0;
}

.homepage #header {
  height: 35em;
}

/* Logo */
#logo {
  width: 100%;
  text-align: center;
  position: relative;
  top: 1.5em;
}

#logo h1 {
  font-weight: 900;
  text-transform: uppercase;
  color: #fff;
  font-size: 2em;
  letter-spacing: 0.25em;
}

#logo p {
  color: rgba(255, 255, 255, 0.5);
  text-transform: uppercase;
  margin: 1.25em 0 0 0;
  display: block;
  letter-spacing: 0.2em;
  font-size: 0.9em;
}

/* Nav */
#nav {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  text-align: center;
  z-index: 1000;
  background: var(--color-bg-base);
  padding: 0.5em 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

#nav > ul {
  display: inline-block;
  border-radius: 0.35em;
  box-shadow: inset 0px 0px 1px 1px rgba(255, 255, 255, 0.25);
  padding: 0 1.5em 0 1.5em;
  margin: 0;
}

#nav > ul > li {
  display: inline-block;
  text-align: center;
  padding: 0 1.5em 0 1.5em;
}

#nav > ul > li > a {
  display: block;
  color: rgba(255, 255, 255, 0.75);
  text-transform: uppercase;
  text-decoration: none;
  font-size: 0.7em;
  letter-spacing: 0.25em;
  height: 5em;
  line-height: 5em;
  transition: all .25s ease-in-out;
}

#nav > ul > li > a:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

/* Focus-visible for general links */
a:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

/* Focus-visible for buttons */
.button:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

/* Skip link for keyboard users */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 9999;
  padding: 1em;
  background: var(--color-accent);
  color: #fff;
  text-decoration: none;
}

.skip-link:focus {
  left: 0;
}

#nav > ul > li:hover > a {
  color: #fff;
}

#nav > ul > li.active > a {
  color: #fff;
}

/* Intro section */
#intro {
  padding-bottom: 8em;
  text-align: center;
  background: radial-gradient(ellipse at 20% 50%, var(--color-accent-glow) 0%, transparent 50%),
              radial-gradient(ellipse at 80% 50%, var(--color-accent-glow-subtle) 0%, transparent 50%);
}

#intro p.style1 {
  font-size: 1.5em;
  letter-spacing: 0.075em;
}

#intro p.style2 {
  font-weight: 700;
  color: #fff;
  border-radius: 0.35em;
  box-shadow: inset 0px 0px 1px 1px rgba(255, 255, 255, 0.25);
  font-size: 2.75em;
  letter-spacing: 0.075em;
  line-height: 1.35em;
  padding: 1em 0 1em 0;
  margin-bottom: 1em;
}

#intro p.style2 a {
  color: inherit;
  text-decoration: none;
}

#intro p.style3 {
  font-size: 1.1em;
  width: 48em;
  margin: 0 auto;
}

/* Hero ornament */
.hero-ornament {
  display: flex;
  justify-content: center;
  margin: 2em 0;
}

.hero-ornament svg {
  opacity: 0.6;
  transition: opacity 0.3s ease;
}

.hero-ornament svg:hover {
  opacity: 1;
}

/* Features */
#features header.style1 {
  padding-bottom: 5em;
}

#features ul.actions {
  margin-top: 5em;
}

/* Highlights */
#highlights .highlight {
  text-align: center;
}

#highlights .highlight h3 {
  color: var(--color-accent);
  margin: 0 0 0.75em 0;
  font-size: 1.15em;
  letter-spacing: 0.05em;
}

.highlight-icon {
  display: flex;
  justify-content: center;
  margin-bottom: 1em;
}

.highlight-icon svg {
  width: 48px;
  height: 48px;
  opacity: 0.7;
  transition: opacity 0.3s ease;
}

.highlight:hover .highlight-icon svg {
  opacity: 1;
}

/* Footer */
#footer {
  background: var(--color-bg-dark);
  color: rgba(255, 255, 255, 0.5);
  padding-bottom: 6em;
}

#footer h1, #footer h2, #footer h3, #footer h4, #footer h5, #footer h6,
#footer strong, #footer b, #footer a {
  color: #fff;
}

#footer hr {
  border-top-color: rgba(255, 255, 255, 0.05);
}

#footer .title {
  background: var(--color-bg-dark);
  color: rgba(255, 255, 255, 0.75);
}

#footer header.style1 {
  padding-bottom: 6em;
  margin-bottom: 6em;
  border-bottom: solid 1px rgba(255, 255, 255, 0.05);
}

#footer header.style1 h2 {
  color: #fff;
}

#footer .feature-list {
  max-width: 100%;
}

#footer .feature-list section {
  border-top-color: rgba(255, 255, 255, 0.05);
}

#footer .feature-list h3:before {
  background: var(--color-bg-button);
}

/* Copyright */
#copyright {
  text-align: center;
  padding-top: 6em;
  margin-top: 6em;
  border-top: solid 1px rgba(255, 255, 255, 0.05);
}

#copyright ul {
  display: inline-block;
  border-radius: 0.35em;
  box-shadow: inset 0px 0px 1px 1px rgba(255, 255, 255, 0.05);
  color: rgba(255, 255, 255, 0.25);
  padding: 0.75em 2em;
  font-size: 0.9em;
  list-style: none;
}

#copyright ul li {
  display: inline-block;
  margin-left: 1em;
  padding-left: 1em;
  border-left: solid 1px rgba(255, 255, 255, 0.05);
}

#copyright ul li:first-child {
  border-left: 0;
  margin-left: 0;
  padding-left: 0;
}

#copyright a {
  color: inherit;
}

#copyright a:hover {
  color: #fff;
}

/* Large responsive */
@media screen and (max-width: 1280px) {
  body, input, select, textarea {
    font-size: 11pt;
    line-height: 1.5em;
    letter-spacing: 0.015em;
  }

  .wrapper {
    padding: 4em 0 7em 0;
  }

  #logo { margin-top: -0.5em !important; }
  #logo h1 { font-size: 1.75em; }

  #intro { padding-bottom: 7em; }
  #intro p.style1 { font-size: 1.25em; }
  #intro p.style2 { font-size: 2.25em; }

  #footer { padding-bottom: 4em; }
  #footer header.style1 {
    padding-bottom: 4em;
    margin-bottom: 4em;
  }

  #copyright { padding-top: 4em; margin-top: 4em; }
}

/* Medium responsive */
@media screen and (max-width: 980px) {
  #nav {
    display: block;
    position: static;
    height: auto;
    background: var(--color-bg-base);
    border-bottom: 1px solid #2d2e36;
  }

  #nav > ul {
    display: flex;
    flex-direction: column;
    padding: 0;
    margin: 0;
  }

  #nav > ul > li {
    display: block;
    height: auto;
    line-height: 1.5;
    padding: 0.5em 1em;
    border-bottom: 1px solid #2d2e36;
  }

  #nav > ul > li:last-child {
    border-bottom: none;
  }

  #nav > ul > li > a {
    height: auto;
    line-height: 1.5;
    letter-spacing: 0.05em;
  }

  #logo { top: 0; }

  header br { display: none; }

  .feature-list { max-width: 40em; }
  .feature-list section { padding-top: 4em; }
  .feature-list > .row > :first-child > section {
    border-top: 0;
    padding-top: 0;
  }

  #intro p.style3 { width: auto; }

  #highlights .highlight {
    max-width: 40em;
    margin-left: auto;
    margin-right: auto;
  }

  #footer .feature-list {
    border-top: solid 1px rgba(255, 255, 255, 0.05);
    padding-top: 4em;
  }
}

/* Small responsive */
@media screen and (max-width: 736px) {
  body, input, select, textarea {
    line-height: 1.5em;
    font-size: 10.5pt;
    letter-spacing: 0;
  }

  h2, h3, h4, h5, h6 {
    font-size: 1.2em;
    letter-spacing: 0.05em;
    margin: 0 0 1em 0;
  }

  hr { margin: 1em 0 1em 0; }
  section, article { clear: both; }
  header br { display: none; }

  header.style1 { padding: 0 0 1em 0; }
  header.style1 h2 {
    font-size: 1.5em;
    letter-spacing: 0.075em;
    line-height: 1.25em;
  }
  header.style1 p {
    font-size: 1em;
    letter-spacing: 0;
    display: block;
    margin: 0;
  }

  input[type="button"],
  input[type="submit"],
  input[type="reset"],
  button,
  .button {
    display: block;
    width: 100%;
    font-size: 1em;
    max-width: 30em;
    margin: 0 auto;
  }

  ul.actions { margin: 2em 0 0 0; }
  ul.actions li {
    margin: 15px 0 0 0;
    display: block;
  }
  ul.actions li:first-child { margin-top: 0; }

  .feature-list section { padding-top: 2em; padding-left: 4em; }

  .wrapper { padding: 3em 0 6em 0; }

  .wrapper .title {
    font-size: 0.9em;
    width: 18em;
    height: 2.5em;
    top: -2.5em;
    line-height: 2.5em;
    margin-bottom: -2.5em;
    margin-left: -9em;
    padding-top: 0.5em;
  }

  #header { height: 17em; }
  .homepage #header { height: 20em; }

  #logo { text-align: center; padding-left: 2em; padding-right: 2em; }
  #logo h1 { font-size: 1.5em; letter-spacing: 0.2em; }
  #logo p {
    margin: 1.25em 0 0 0;
    display: block;
    letter-spacing: 0.2em;
    font-size: 0.9em;
  }

  #intro {
    text-align: center;
    padding-right: 2em;
    padding-left: 2em;
    padding-bottom: 5em;
    margin: 0 auto;
  }
  #intro p.style1 { margin-bottom: 1.5em; }
  #intro p.style2 {
    font-size: 1.5em;
    letter-spacing: 0.05em;
    line-height: 1.25em;
    padding: 1.25em;
  }

  #features header.style1 { padding-bottom: 4em; }
  #features ul.actions { margin-top: 4em; }

  #footer { padding-bottom: 0; }
  #footer header.style1 {
    padding-bottom: 0;
    margin-bottom: 2em;
    border-bottom: 0;
  }
  #footer .feature-list { border-top: 0; padding-top: 0; }

  #copyright { padding-top: 0; margin-top: 4em; border-top: 0; }
  #copyright ul {
    padding: 1em 2em;
    width: 100%;
  }
  #copyright ul li {
    display: block;
    margin: 0.5em 0 0 0;
    border-left: 0;
    padding: 0;
  }
  #copyright ul li:first-child { margin-top: 0; }
}

/*
  blog/css/blog.css
  Blog-specific CSS for the personal website.
  Magazine-style grid layout, blog post typography, and card styling.
*/

/* =========================================================================
   Blog Index Grid — Magazine Layout
   ========================================================================= */

.blog-index-grid {
  max-width: 68em;
  margin: 0 auto;
}

/* Featured post — full width, hero-style */
.blog-featured {
  margin-bottom: 3em;
  padding: 2em;
  background: var(--color-bg-light);
  border-radius: 0.35em;
  border-left: 4px solid var(--color-accent);
}

.blog-featured h2 {
  font-size: 1.75em;
  letter-spacing: 0.05em;
  margin: 0 0 0.5em 0;
}

.blog-featured h2 a {
  color: #fff;
  text-decoration: none;
}

.blog-featured h2 a:hover {
  color: var(--color-accent-hover);
}

.blog-featured .blog-card-description {
  font-size: 1.1em;
  line-height: 1.6em;
  color: var(--color-text);
}

/* Responsive grid for remaining posts */
.blog-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2em;
}

@media screen and (max-width: 980px) {
  .blog-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 736px) {
  .blog-grid {
    grid-template-columns: 1fr;
  }
}

/* =========================================================================
   Blog Cards
   ========================================================================= */

.blog-card {
  background: var(--color-bg-medium);
  border-radius: 0.35em;
  padding: 1.5em;
  transition: background 0.25s ease-in-out, transform 0.25s ease-in-out;
}

.blog-card:hover {
  background: var(--color-bg-light);
  transform: translateY(-2px);
}

.blog-card h3 {
  font-size: 1.15em;
  letter-spacing: 0.05em;
  margin: 0 0 0.5em 0;
}

.blog-card h3 a {
  color: #fff;
  text-decoration: none;
}

.blog-card h3 a:hover {
  color: var(--color-accent-hover);
}

.blog-card-meta {
  font-size: 0.85em;
  color: rgba(255, 255, 255, 0.5);
  margin-bottom: 0.75em;
}

.blog-card-meta span {
  display: inline-block;
  margin-right: 1em;
}

.blog-card-description {
  font-size: 0.95em;
  line-height: 1.6em;
  color: var(--color-text);
  margin-bottom: 1em;
}

.blog-card-tags {
  list-style: none;
  padding: 0;
  margin: 1em 0 0 0;
}

.blog-card-tags li {
  display: inline-block;
  padding: 0;
  margin: 0 0.5em 0.5em 0;
}

.tag {
  display: inline-block;
  background: var(--color-bg-button);
  color: var(--color-accent-hover);
  font-size: 0.8em;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  padding: 0.25em 0.75em;
  border-radius: 0.25em;
}

/* =========================================================================
   Blog subscribe link
   ========================================================================= */

.blog-subscribe {
  text-align: center;
  margin: 2em 0;
  color: rgba(255, 255, 255, 0.5);
  font-size: 0.9em;
}

.blog-subscribe a {
  color: var(--color-accent-hover);
  text-decoration: none;
}

.blog-subscribe a:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

/* =========================================================================
   Individual Blog Post
   ========================================================================= */

.blog-post {
  max-width: 48em;
  margin: 0 auto;
  padding: 2em 0;
}

.blog-post-header {
  margin-bottom: 2em;
  padding-bottom: 2em;
  border-bottom: solid 1px rgba(255, 255, 255, 0.1);
}

.blog-post-header h1 {
  font-size: 2em;
  font-weight: 900;
  letter-spacing: 0.05em;
  line-height: 1.3em;
  margin: 0 0 0.5em 0;
}

.blog-post-subtitle {
  font-size: 1.15em;
  color: #9ca0a8;
  margin: 0 0 1em 0;
  line-height: 1.5em;
}

.blog-post-meta {
  font-size: 0.9em;
  color: rgba(255, 255, 255, 0.5);
  margin-bottom: 0.5em;
}

.blog-post-meta span {
  display: inline-block;
  margin-right: 1em;
}

.blog-post-authors {
  font-size: 0.9em;
  color: rgba(255, 255, 255, 0.5);
  margin-bottom: 1em;
}

.blog-post-authors a {
  color: var(--color-accent-hover);
}

.blog-post-tags {
  list-style: none;
  padding: 0;
  margin: 1em 0 0 0;
}

.blog-post-tags li {
  display: inline-block;
  padding: 0;
  margin: 0 0.5em 0.5em 0;
}

/* Blog featured image */
.blog-post-image {
  margin: 1.5em 0 0 0;
}

.blog-post-image img {
  max-width: 100%;
  height: auto;
  border-radius: 0.35em;
  border: 1px solid rgba(255, 255, 255, 0.1);
}

/* Reading progress bar — pure CSS, no JS */
.reading-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: rgba(139, 108, 246, 0.2);
  z-index: 10000;
}

.reading-progress::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--color-accent);
  transform-origin: left;
  /* Pure CSS scroll-driven animation */
  animation: reading-progress-fill linear;
  animation-timeline: scroll(root block);
}

@keyframes reading-progress-fill {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

/* Fallback for browsers without scroll-driven animations */
@supports not (animation-timeline: scroll()) {
  .reading-progress {
    display: none;
  }
}

/* Back to blog breadcrumb */
.back-to-blog {
  display: inline-block;
  color: var(--color-accent-hover);
  text-decoration: none;
  font-size: 0.9em;
  letter-spacing: 0.05em;
  margin-bottom: 1.5em;
  text-transform: uppercase;
}

.back-to-blog:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

/* =========================================================================
   Blog Post Body Typography
   ========================================================================= */

.blog-post-body {
  font-size: 1.05em;
  line-height: 1.8em;
  color: var(--color-text);
}

.blog-post-body h2 {
  font-size: 1.5em;
  font-weight: 700;
  letter-spacing: 0.05em;
  margin: 2em 0 0.75em 0;
  padding-bottom: 0.3em;
  border-bottom: solid 1px rgba(255, 255, 255, 0.1);
}

.blog-post-body h3 {
  font-size: 1.2em;
  font-weight: 700;
  letter-spacing: 0.05em;
  margin: 1.5em 0 0.5em 0;
}

.blog-post-body h4 {
  font-size: 1.05em;
  font-weight: 700;
  letter-spacing: 0.05em;
  margin: 1.5em 0 0.5em 0;
}

.blog-post-body p {
  margin-bottom: 1.25em;
}

.blog-post-body a {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

.blog-post-body a:hover {
  color: var(--color-accent-hover);
}

.blog-post-body ul,
.blog-post-body ol {
  margin-bottom: 1.25em;
  padding-left: 1.5em;
}

.blog-post-body li {
  margin-bottom: 0.5em;
}

.blog-post-body blockquote {
  border-left: solid 4px var(--color-accent);
  padding: 0.75em 1.5em;
  margin: 1.5em 0;
  background: var(--color-accent-glow-subtle);
  font-style: italic;
  color: #d0d1d4;
}

.blog-post-body code {
  font-family: 'Source Code Pro', 'Consolas', 'Monaco', monospace;
  font-size: 0.9em;
  background: var(--color-bg-button);
  padding: 0.15em 0.4em;
  border-radius: 0.25em;
  color: #e0e1e5;
}

.blog-post-body pre {
  background: var(--color-bg-medium);
  border: solid 1px rgba(255, 255, 255, 0.1);
  border-radius: 0.35em;
  padding: 1.25em;
  margin: 1.5em 0;
  overflow-x: auto;
}

.blog-post-body pre code {
  background: none;
  padding: 0;
  font-size: 0.85em;
  line-height: 1.5em;
  color: #e0e1e5;
}

.blog-post-body hr {
  border: 0;
  border-top: solid 1px rgba(255, 255, 255, 0.1);
  margin: 2em 0;
}

.blog-post-body img {
  max-width: 100%;
  height: auto;
  border-radius: 0.35em;
  margin: 1.5em 0;
}

.blog-post-body table {
  width: 100%;
  margin: 1.5em 0;
  border-collapse: collapse;
}

.blog-post-body th {
  font-weight: 700;
  color: #fff;
  text-align: left;
  padding: 0.75em;
  border-bottom: solid 2px rgba(255, 255, 255, 0.15);
}

.blog-post-body td {
  padding: 0.75em;
  border-bottom: solid 1px rgba(255, 255, 255, 0.05);
}

.blog-post-body tr:nth-child(even) td {
  background: rgba(255, 255, 255, 0.02);
}

/* =========================================================================
   Responsive Adjustments
   ========================================================================= */

@media screen and (max-width: 980px) {
  .blog-post-header h1 {
    font-size: 1.6em;
  }

  .blog-post {
    padding: 1em 0;
  }

  .blog-featured {
    padding: 1.5em;
  }

  .blog-featured h2 {
    font-size: 1.4em;
  }
}

@media screen and (max-width: 736px) {
  .blog-post-header h1 {
    font-size: 1.35em;
  }

  .blog-post-body {
    font-size: 1em;
    line-height: 1.6em;
  }

  .blog-post-body h2 {
    font-size: 1.25em;
  }

  .blog-post-body pre {
    padding: 0.75em;
  }

  .blog-card {
    padding: 1em;
  }

  .blog-featured {
    padding: 1em;
  }
}
