/* ==========================================================================
   KINKSLAYER — UNIFIED INNER PAGES CSS  (Option B unification, REVISED
   deploy-prep pass 2026-11-14)

   Every selector below was tested against the LIVE captured markup in
   ../live-captures/ (article-correlation-2026-11-14.html = a single post
   WITH the author sidebar; archive-kink-identity-2026-11-14.html = a
   category archive). The first-pass file targeted classic-theme classes
   (.site-header, .entry-title, .widget-area, .archive-title, .ks-dateline)
   that DO NOT EXIST on this site — Twenty Twenty-Five renders block
   markup (wp-block-*). Those rules were deleted or rewritten; each section
   here names the capture element it targets.

   Load order: enqueued from functions.php with a dependency on the child
   theme stylesheet (see functions-append.php), so these rules land after
   style.css. NOTE: a <style> block printed in <head> on the live site
   (the author-sidebar fixes and the Articles-page card rules, visible in
   both captures) uses !important in places and keeps winning inside the
   author sidebar — this file deliberately does not fight it.
   ========================================================================== */

:root{
  --n-ink:#0b0b0b; --n-panel:#141414; --n-panel2:#1a1a1a; --n-line:#2b2b2b;
  --n-bone:#f2ede4; --n-mut:#a79f92; --n-red:#e10600; --n-deep:#760000;
  --n-purple:#5e2b97;
  /* Font stacks match live theme.json: display=Anton, body=Lato,
     type=Special Elite. (First pass wrongly used Inter.) */
  --n-head:'Anton',Impact,sans-serif; --n-type:'Special Elite','Courier New',monospace;
  --n-body:'Lato',Helvetica,Arial,sans-serif;
}

/* ---------- base layer ----------
   Targets: <body> classes verified in the captures —
   article: "single single-post postid-9142 ... wp-theme-twentytwentyfive
   wp-child-theme-kinkslayer-child"; archive: "archive category
   category-kink-identity ...". body.page / body.author / body.search /
   body.blog are the standard WP classes for the remaining inner page
   types (no captures for them; rules here are background/color only,
   which theme.json already sets — this is a safety net, not a re-skin). */
body.single, body.archive, body.page, body.author, body.search, body.blog{
  background:var(--n-ink); color:var(--n-bone); font-family:var(--n-body);
}
::selection{ background:var(--n-deep); color:#fff; }

/* ---------- site chrome: header / footer template parts ----------
   Targets (both captures): <header class="wp-block-template-part"> and
   <footer class="wp-block-template-part">. Inside the header:
   <p class="wp-block-site-title"><a ...>Kinkslayer</a></p>,
   <p class="wp-block-site-tagline">, and
   <nav class="wp-block-navigation ..."> with .wp-block-navigation-item__content
   links. There is NO .site-header / .main-navigation markup on this site. */
header.wp-block-template-part{
  background:#000; border-top:4px solid var(--n-red); border-bottom:1px solid var(--n-line);
}
footer.wp-block-template-part{
  background:#000; border-top:1px solid var(--n-line); color:var(--n-mut);
}
.wp-block-site-title, .wp-block-site-title a{
  font-family:var(--n-head); text-transform:uppercase; letter-spacing:.5px;
  color:var(--n-bone); text-decoration:none;
}
.wp-block-site-title a:hover{ color:var(--n-red); }
.wp-block-site-tagline{
  font-family:var(--n-type); color:var(--n-red); letter-spacing:2px; text-transform:uppercase;
}
.wp-block-navigation a, .wp-block-navigation-item__content{
  font-family:var(--n-head); letter-spacing:1.5px; text-transform:uppercase;
  color:var(--n-bone); text-decoration:none;
}
.wp-block-navigation a:hover, .wp-block-navigation-item__content:hover{ color:var(--n-red); }
footer.wp-block-template-part a{ color:var(--n-mut); }
footer.wp-block-template-part a:hover{ color:var(--n-bone); }

/* ---------- single article ----------
   Targets (article capture): <h1 class="wp-block-post-title"> (the h1
   scoping matters — the author sidebar's LATEST list reuses
   .wp-block-post-title on <h4> elements), the date line
   <p class="kinkslayer-post-dates has-small-font-size"> printed by the
   functions.php render_block filter directly under the title (the first
   pass styled a ".ks-dateline" class that does not exist), the terms list
   <div class="taxonomy-category wp-block-post-terms">, the featured image
   <figure class="wp-block-post-featured-image">, and the body copy in
   <div class="entry-content wp-block-post-content ..."> — post-content
   carries BOTH classes; we target .wp-block-post-content. */
body.single h1.wp-block-post-title{
  font-family:var(--n-head); text-transform:uppercase; letter-spacing:.4px;
  font-size:clamp(30px,5vw,46px); line-height:1.08; color:var(--n-bone); margin-bottom:10px;
}
.kinkslayer-post-dates{
  font-family:var(--n-type); color:var(--n-mut); font-size:13px;
  text-transform:uppercase; letter-spacing:.5px;
}
body.single .wp-block-post-date, body.single .wp-block-post-author-name{
  font-family:var(--n-type); color:var(--n-mut); font-size:13.5px;
  text-transform:uppercase; letter-spacing:.5px;
}
body.single .wp-block-post-terms a{
  display:inline-block; background:var(--n-red); color:#fff; font-family:var(--n-head);
  font-size:11px; letter-spacing:1.5px; text-transform:uppercase;
  padding:5px 9px; text-decoration:none;
}
body.single .wp-block-post-terms a:hover{ background:var(--n-deep); }
.wp-block-post-featured-image img{
  border:1px solid var(--n-line); border-bottom:4px solid var(--n-red);
}
body.single .wp-block-post-content{ font-size:16.5px; line-height:1.7; color:var(--n-bone); }
body.single .wp-block-post-content p{ margin:0 0 1.15em; }
body.single .wp-block-post-content a{
  color:var(--n-red); text-decoration:underline; text-underline-offset:3px;
}
body.single .wp-block-post-content h2, body.single .wp-block-post-content h3{
  font-family:var(--n-head); text-transform:uppercase; letter-spacing:.6px; color:var(--n-bone);
}
body.single .wp-block-post-content blockquote, body.single .wp-block-post-content .wp-block-quote{
  border-left:4px solid var(--n-red); background:var(--n-panel);
  margin:1.4em 0; padding:16px 20px; font-family:var(--n-type); color:var(--n-bone);
}
body.single .wp-block-post-content ul, body.single .wp-block-post-content ol{ line-height:1.65; }
body.single .wp-block-post-content img{ border:1px solid var(--n-line); }
/* Previous / next article links (article capture:
   .wp-block-post-navigation-link with __arrow spans). */
.wp-block-post-navigation-link a{
  font-family:var(--n-head); letter-spacing:1.5px; text-transform:uppercase;
  color:var(--n-red); text-decoration:none;
}
.wp-block-post-navigation-link a:hover{ color:var(--n-bone); }

/* ---------- article sidebar (About the Author) + the ad that follows it ----------
   Target (article capture): the sidebar is
   <div class="wp-block-group author-sidebar ..." style="background:#1a1a1a;
   color:#f4ecdf; border:1px solid #333"> sitting in a 320px column, and it
   CONTAINS .author-sidebar-photo and .author-social-links. It carries its
   own inline styling plus !important rules in the live head <style> block,
   so this file does NOT restyle its internals — only the gap before the
   ad slot that functions-append.php moves in directly AFTER this box. */
body.single .author-sidebar{ margin-bottom:0; }
.ks-ad-slot--sidebar{ margin:16px 0; }

/* ---------- archives / category pages ----------
   Targets (archive capture): <h1 class="wp-block-query-title">Category:
   <span>Kink & Identity</span></h1> (there is no .archive-title /
   .page-header markup), and the query loop
   <ul class="wp-block-post-template"> <li class="wp-block-post ...">
   whose cards contain .wp-block-post-featured-image,
   <h2 class="wp-block-post-title"><a>, .wp-block-post-date and the post
   body in <div class="entry-content wp-block-post-content"> — the archive
   template renders full post CONTENT in each card, not an excerpt, so
   card body text is sized down a step to keep the river scannable.
   NOTE: each card's inner .wp-block-group carries inline padding
   (var(--wp--preset--spacing--60) top/bottom) that CSS cannot override
   without !important; the panel treatment is applied to the <li> itself
   and the inner padding simply reads as card padding.
   No pagination markup exists in the capture (the category's 8 posts all
   fit one page) — the first pass's .nav-links/.pagination rules were
   dropped; if pagination ever appears it will be the
   .wp-block-query-pagination block, which has NOT been verified. */
body.archive .wp-block-query-title{
  font-family:var(--n-head); text-transform:uppercase; letter-spacing:1px; color:var(--n-bone);
  background:#000; border-left:8px solid var(--n-red); padding:12px 16px; margin:0 0 20px;
}
body.archive .wp-block-post-template > li.wp-block-post{
  background:var(--n-panel); border:1px solid var(--n-line);
  padding:20px 18px; margin-bottom:16px; list-style:none;
}
body.archive h2.wp-block-post-title{
  font-family:var(--n-head); text-transform:uppercase; letter-spacing:.4px;
  font-size:22px; line-height:1.2; margin:0 0 8px;
}
body.archive h2.wp-block-post-title a{ color:var(--n-bone); text-decoration:none; }
body.archive h2.wp-block-post-title a:hover{ color:var(--n-red); }
body.archive .wp-block-post-date{
  font-family:var(--n-type); color:var(--n-mut); font-size:12.5px; text-transform:uppercase;
}
body.archive .wp-block-post-content{ font-size:15.5px; line-height:1.65; color:var(--n-bone); }
body.archive .wp-block-post-content a{ color:var(--n-red); }

/* ---------- comments ----------
   Targets (article capture): <div class="wp-block-comments
   wp-block-comments-query-loop"> wraps the list, and the form is
   <form class="comment-form" id="commentform"> inside
   .wp-block-post-comments-form, headed by
   <h3 class="comment-reply-title">. The submit button is
   <p class="form-submit wp-block-button"><input type="submit"
   class="wp-block-button__link wp-element-button"> — there is NO
   .comments-area and NO .submit class (first-pass rules rewritten). */
body.single .wp-block-comments{
  background:var(--n-panel); border:1px solid var(--n-line); padding:22px;
}
.comment-reply-title{
  font-family:var(--n-head); text-transform:uppercase; letter-spacing:.6px; color:var(--n-bone);
}
.wp-block-post-comments-form .comment-form input[type="text"],
.wp-block-post-comments-form .comment-form input[type="email"],
.wp-block-post-comments-form .comment-form input[type="url"],
.wp-block-post-comments-form .comment-form textarea{
  background:var(--n-panel2); border:1px solid var(--n-line); color:var(--n-bone); padding:10px 12px;
}
.wp-block-post-comments-form .comment-form input[type="submit"]{
  background:var(--n-red); color:#fff; border:0; font-family:var(--n-head);
  letter-spacing:1.5px; text-transform:uppercase; padding:12px 22px; cursor:pointer;
}
.wp-block-post-comments-form .comment-form input[type="submit"]:hover{ background:var(--n-deep); }
.wp-block-post-comments-form .comment-form label{
  font-family:var(--n-type); color:var(--n-mut); font-size:12.5px; text-transform:uppercase;
}

/* ---------- house ad slots (inner pages) ----------
   Markup is printed by functions-append.php (per-category variant picked
   in PHP): .ks-ad--rope on Kink & Identity, .ks-ad--florist on the four
   relationship categories, plain .ks-ad (PUT YOUR AD HERE) elsewhere.
   functions-append.php wraps each ad in a .ks-ad-slot container; the
   sidebar container is moved by inline script to directly after the
   .author-sidebar box. These selectors target our own deployed markup,
   so they exist by construction once stage 3 of the runbook is live. */
.ks-ad-slot{ display:block; }
.ks-ad{
  display:flex; flex-direction:column; align-items:center; gap:2px; text-align:center;
  text-decoration:none; border:1px dashed #3d3d3d; background:var(--n-panel); padding:16px 20px;
}
.ks-ad:hover{ border-color:var(--n-red); }
.ks-ad__tag{ font:400 10px/1 var(--n-type); letter-spacing:2px; text-transform:uppercase; color:var(--n-mut); }
.ks-ad__main{ font:400 clamp(20px,3.4vw,30px)/1.05 var(--n-head); letter-spacing:2px; text-transform:uppercase; color:var(--n-bone); }
.ks-ad__sub{ font:400 12.5px/1.4 var(--n-type); color:var(--n-mut); }
.ks-ad--sidebar{ margin:0; padding:18px 14px; }
.ks-ad--sidebar .ks-ad__main{ font-size:21px; }
.ks-ad--footer{ max-width:1180px; margin:26px auto; }
.ks-ad--rope{ border-color:#5a3a2a; background:#171110; }
.ks-ad--rope .ks-ad__main{ color:#e8b48c; }
.ks-ad--florist{ border-color:#4a3a56; background:#131118; }
.ks-ad--florist .ks-ad__main{ color:#d9b8e6; }

/* ---------- author page (V2 is the reference; safety rails only) ----------
   The V2 author page already speaks this design language and carries its
   own styling; nothing here re-skins it — the base layer above plus this
   header guarantee are the whole treatment. */
body.author header.wp-block-template-part{ background:#000; }

/* ---------- responsive ---------- */
@media (max-width:640px){
  .ks-ad--footer{ margin-left:14px; margin-right:14px; }
  body.single .wp-block-comments{ padding:16px; }
  body.archive .wp-block-post-template > li.wp-block-post{ padding:16px 14px; }
}

/* ==========================================================================
   HOT-PINK OVERRIDES (2026-11-14, unification deploy addendum)
   The Site Editor's saved Additional CSS still contains four hover rules in
   the retired hot pink #ff2e88, all declared !important:
     - author archive post-title hovers
     - author profile social-link hovers
     - single-post author-sidebar heading hovers
     - single-post author-sidebar social-link hovers
   These overrides repeat those selectors with an added `html` element,
   which raises specificity above the originals, so brand red wins at equal
   !important regardless of stylesheet order. Original Additional CSS backed
   up at unification/live-theme/additional-css-original-2026-11-14.css; if
   that field is ever cleaned at the source, these rules can come out.
   ========================================================================== */
html body.author main .wp-block-post-template h2.wp-block-post-title a:hover,
html body.author main .wp-block-post-template h2.wp-block-post-title a:focus,
html body.author main .author-social-links a:hover,
html body.author main .author-social-links a:focus,
html body.single main .author-sidebar h3 a:hover,
html body.single main .author-sidebar h3 a:focus,
html body.single main .author-sidebar h4.wp-block-post-title a:hover,
html body.single main .author-sidebar h4.wp-block-post-title a:focus,
html body.single main .author-sidebar .author-social-links a:hover,
html body.single main .author-sidebar .author-social-links a:focus {
  color: #E10600 !important;
}
