IndieBlog

Pure Blog IndieWeb Boilerplate

Front End CSS

/* ------------------------------
indieBlog CUSTOM CSS

Core PureBlog styles ship in /assets/css/style.css. Anything in this file
overrides or extends those, and is loaded after them so equal-specificity
rules already win — !important is rarely needed.

Available CSS custom properties (defined either inline by includes/header.php
or as aliases in core style.css):
  --bg-light / --bg-dark
  --text-light / --text-dark
  --accent-light / --accent-dark         (alias: --accent-color)
  --border-light / --border-dark         (alias: --border-color)
  --accent-bg-light / --accent-bg-dark   (alias: --accent-bg-color)
  --font-stack
------------------------------ */

/* The site-author block in content/includes/footer.php carries
   class="site-author h-card". Generic <footer> styling (centering, max-width,
   border-top) is inherited from core; the rules below give the h-card a
   card layout with the avatar floated left of the text block. */

.h-card {
  margin-top: 25px;
}

.h-card-img {
  float: left;
  max-width: 150px;
  margin-right: 20px;
  border-radius: 6px;
  border: 2px solid var(--accent-color);
}

.h-card-text {
  text-align: left;
}

/* The h-card sits inside .notes-feed > .note-card > .note-card-body in the
   footer markup. .notes-feed is a column container (one card today, but
   leaves room to add more cards later); .note-card is the visible card
   surface; .note-card-body just trims margins on its first/last <p>. */
.notes-feed {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  max-width: 100%;
}

.note-card {
  background: var(--accent-bg-color);
  border: 1px solid var(--border-color);
  border-radius: 6px;
  padding: 1rem 1.25rem 0.75rem;
}

.note-card-body p:first-child {
  margin-top: 0;
}

.note-card-body p:last-child {
  margin-bottom: 0.5rem;
}

/* Heading inside the h-card carries the site name link (p-name p-author).
   The original rule referenced var(--font-main) / var(--font-title) which
   aren't defined anywhere in the project — those are dropped here, so the
   heading inherits the body font-stack. Re-add a font-family rule if you
   define a custom property for it. */
.h-card-header {
  text-align: left;
  font-size: 1.4em;
}

.h-card-header a {
  text-decoration: none;
}

h6.h-card-header {
  margin-top: 10px;
}

/* SVG icons emitted inline by post-list, post-meta, and .post.php. */
.icon {
  fill: var(--accent-color);
  height: 1.5em;
  width: 1.5em;
  vertical-align: -20%;
}

/* Author byline avatar in the single-post layout (.post.php). */
#author-img {
  height: 18px;
  width: 18px;
  display: inline;
  vertical-align: middle;
  margin: 0 5px 5px 0;
}

/* ------------------------------
WEBMENTIONS / INTERACTIONS

These classes are NOT emitted by any server-side template — they're rendered
at runtime by the webmention display script injected via footer_inject_post.
Static grep for them in /content or /includes will find nothing; that's
expected. Don't strip them.
------------------------------ */

.comments-header {
  display: none;
}

.webmentions {
  margin-top: 1rem;
  font-size: 0.95rem;
  max-width: 100%;
}

/* Summary header styled like an h2 */
.webmentions summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 2em;
  line-height: 1.2;
  margin-bottom: 0.5rem;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}

.webmentions summary .counts {
  font-size: 0.67em;
  margin-left: 0.5em;
}

/* ------------------------------
AVATAR STACK
------------------------------ */

.avatar-container {
  position: relative;
  display: inline-block;
  margin-left: -18px;
  min-width: 40px;
}

.avatar-container:first-child {
  margin-left: 0;
}

.webmention-avatar {
  border-radius: 50%;
  width: 54px;
  height: 54px;
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px #ddd;
}

/* Emoji reaction overlay on top of the avatar */
.avatar-emoji {
  position: absolute;
  bottom: 0;
  right: 0;
  font-size: 20px;
  background: none;
  width: auto;
  height: auto;
  padding: 0;
  line-height: 1;
}

/* ------------------------------
REACTIONS ROW
------------------------------ */

.reactions-row {
  display: flex;
  align-items: center;
  margin-bottom: 0.6rem;
}

/* ------------------------------
MENTION / COMMENT LIST
------------------------------ */

.webmentions ul {
  list-style: none;
  padding-left: 0;
  margin: 0.5rem 0 0 0;
}

.webmentions li {
  margin: 0.75rem 0;
}

/* ------------------------------
REPLIES / COMMENTS
------------------------------ */

.webmention-reply {
  display: flex;
  gap: 12px;
  margin: 0.75rem 0;

  /* mini card styling */
  background: var(--accent-bg-color);
  border: 1px solid var(--border-light);
  border-radius: 6px;
  padding: 0.6rem 0.8rem;
}

/* Comment text */
.webmention-reply blockquote {
  margin: 0;
  padding-left: 10px;
  border-left: 3px solid var(--border-light);
  font-style: normal;
  max-width: 85%;
}

.webmention-reply p:first-child {
  margin-top: 0;
}

.webmention-reply p:last-child {
  margin-bottom: 0;
}

/* Avatar inside a reply */
.webmention-reply img {
  border-radius: 50%;
  width: 42px;
  height: 42px;
  flex-shrink: 0;
}