/*
Theme Name: Cold Ledger
Theme URI: https://heru.blog
Author: Heru Irawan
Description: A Swiss, documentation-grade theme for heru.blog -- WordPress root-cause troubleshooting, presented with editorial precision. Built as a lightweight custom theme: self-hosted fonts, no page-builder overhead, no external requests.
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: cold-ledger
*/

@font-face{font-family:'Public Sans';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/public-sans-latin-400-normal.woff2') format('woff2');}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:700;font-display:swap;src:url('assets/fonts/public-sans-latin-700-normal.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/ibm-plex-sans-latin-400-normal.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('assets/fonts/ibm-plex-sans-latin-600-normal.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/ibm-plex-mono-latin-400-normal.woff2') format('woff2');}

:root{
  --bg:#F1F2F3; --surface:#FFFFFF; --ink:#101316;
  --ink-70:rgba(16,19,22,.7); --ink-55:rgba(16,19,22,.55); --ink-12:rgba(16,19,22,.12);
  --accent:#2563EB; --accent-ink:#FFFFFF;
  --font-heading:'Public Sans',sans-serif; --font-body:'IBM Plex Sans',sans-serif; --font-mono:'IBM Plex Mono',monospace;
  --radius-sm:2px; --radius-md:4px;
  --sp-sm:8px; --sp-md:16px; --sp-lg:32px; --sp-xl:64px; --sp-2xl:96px;
  --container:1120px;
}

*,*::before,*::after{box-sizing:border-box;}
:where(html){scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){:where(html){scroll-behavior:auto;} *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}}
:where(body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ul,ol){margin:0;}
:where(ul,ol){padding:0;list-style:none;}
:where(img,svg){display:block;max-width:100%;}
:where(a){color:inherit;text-decoration:none;}

body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-weight:400;line-height:1.6;font-size:17px;-webkit-font-smoothing:antialiased;}

.container{max-width:var(--container);margin-inline:auto;padding-inline:var(--sp-lg);}
@media (max-width:640px){.container{padding-inline:var(--sp-md);}}

h1,h2,h3,h4,.font-heading{font-family:var(--font-heading);font-weight:700;line-height:1.1;letter-spacing:-0.01em;}
.font-mono{font-family:var(--font-mono);}

/* Header / nav */
.site-header{border-bottom:1px solid var(--ink-12);background:var(--bg);position:sticky;top:0;z-index:20;}
.header-inner{display:flex;align-items:center;justify-content:space-between;height:64px;}
.wordmark{font-family:var(--font-heading);font-weight:700;font-size:18px;}
.site-nav ul,.nav-list{display:flex;gap:var(--sp-lg);list-style:none;margin:0;padding:0;}
.site-nav a{font-size:14px;font-weight:600;padding-block:4px;border-bottom:1px solid transparent;}
.site-nav a:hover,.site-nav a[aria-current='page']{border-bottom-color:var(--accent);color:var(--accent);}
.nav-toggle{display:none;background:none;border:1px solid var(--ink-12);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;padding:6px 10px;color:var(--ink);}
@media (max-width:760px){
  .nav-toggle{display:block;}
  .site-nav ul{position:absolute;top:64px;left:0;right:0;background:var(--surface);border-bottom:1px solid var(--ink-12);flex-direction:column;gap:0;padding:var(--sp-sm) 0;display:none;}
  .site-nav.is-open ul{display:flex;}
  .site-nav a{padding:12px var(--sp-lg);border-bottom:1px solid var(--ink-12)!important;}
}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-body);font-weight:600;font-size:15px;padding:12px 20px;border-radius:var(--radius-md);border:1px solid transparent;}
.btn-primary{background:var(--accent);color:var(--accent-ink);}
.btn-secondary{background:transparent;color:var(--ink);border-color:var(--ink-12);}
.btn-secondary:hover{border-color:var(--accent);color:var(--accent);}

/* Hero */
.hero{padding-block:var(--sp-2xl) var(--sp-xl);border-bottom:1px solid var(--ink-12);}
.hero-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:var(--sp-xl);align-items:end;}
.hero h1{font-size:clamp(32px,4.5vw,52px);max-width:20ch;}
.hero .lede{font-size:18px;color:var(--ink-70);max-width:46ch;margin-top:var(--sp-md);}
.hero .cta-row{display:flex;gap:var(--sp-md);margin-top:var(--sp-lg);flex-wrap:wrap;}
.hero-side{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-md);}
.hero-meta{font-family:var(--font-mono);font-size:13px;color:var(--ink-55);border-left:2px solid var(--accent);padding-left:var(--sp-md);}
@media (max-width:760px){.hero-grid{grid-template-columns:1fr;}.hero{padding-block:var(--sp-xl) var(--sp-lg);}}

/* Section rhythm */
.section{padding-block:var(--sp-xl);border-bottom:1px solid var(--ink-12);}
.section:last-of-type{border-bottom:none;}
.section-head{margin-bottom:var(--sp-lg);}
.section-head h2{font-size:clamp(24px,3vw,32px);}

/* Split (asymmetric, variance 0.2 = restrained) */
.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-xl);}
@media (max-width:760px){.split{grid-template-columns:1fr;gap:var(--sp-lg);}}
.stat-list{display:flex;flex-direction:column;}
.stat-row{display:flex;justify-content:space-between;padding-block:var(--sp-md);border-top:1px solid var(--ink-12);font-family:var(--font-mono);font-size:14px;}
.stat-row:last-child{border-bottom:1px solid var(--ink-12);}
.stat-row span:first-child{color:var(--ink-55);}

/* Cards / list rows */
.row-card{display:block;padding-block:var(--sp-lg);border-top:1px solid var(--ink-12);}
.row-card:last-child{border-bottom:1px solid var(--ink-12);}
.row-card .meta{font-family:var(--font-mono);font-size:13px;color:var(--ink-55);margin-bottom:6px;}
.row-card h3{font-size:20px;margin-bottom:6px;}
.row-card p{color:var(--ink-70);max-width:65ch;}
.empty-state{padding:var(--sp-xl) 0;color:var(--ink-55);font-family:var(--font-mono);font-size:14px;border-top:1px solid var(--ink-12);border-bottom:1px solid var(--ink-12);}

/* Prose (page/post content) */
.prose{max-width:70ch;font-size:17px;line-height:1.7;}
.prose h2{font-size:26px;margin-top:var(--sp-xl);margin-bottom:var(--sp-md);}
.prose h3{font-size:20px;margin-top:var(--sp-lg);margin-bottom:var(--sp-sm);}
.prose p{margin-bottom:var(--sp-md);color:var(--ink);}
.prose a{color:var(--accent);border-bottom:1px solid currentColor;}
.prose ul,.prose ol{margin-bottom:var(--sp-md);padding-left:1.2em;list-style:disc;}
.prose ol{list-style:decimal;}
.prose blockquote{border-left:2px solid var(--accent);padding-left:var(--sp-md);color:var(--ink-70);margin:var(--sp-lg) 0;}
.prose pre{background:var(--surface);border:1px solid var(--ink-12);border-radius:var(--radius-md);padding:var(--sp-md);overflow-x:auto;font-family:var(--font-mono);font-size:14px;margin:var(--sp-lg) 0;}
.prose code{font-family:var(--font-mono);font-size:.9em;background:var(--surface);border:1px solid var(--ink-12);border-radius:var(--radius-sm);padding:1px 5px;}
.prose pre code{border:none;padding:0;background:none;}
.page-title{padding-block:var(--sp-xl) var(--sp-lg);border-bottom:1px solid var(--ink-12);margin-bottom:var(--sp-xl);}
.page-title h1{font-size:clamp(28px,4vw,40px);}
.post-meta{font-family:var(--font-mono);font-size:13px;color:var(--ink-55);margin-top:var(--sp-sm);}

/* CTA strip */
.cta-strip{background:var(--ink);color:var(--bg);text-align:left;}
.cta-strip .container{padding-block:var(--sp-xl);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap;}
.cta-strip h2{color:var(--bg);font-size:clamp(22px,3vw,30px);max-width:20ch;}
.cta-strip .btn-primary{background:var(--accent);}

/* Footer */
.site-footer{padding-block:var(--sp-lg);}
.footer-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-sm);font-size:13px;color:var(--ink-55);font-family:var(--font-mono);}
.footer-links{display:flex;gap:var(--sp-md);}
/* Normalize core Gutenberg block elements (buttons, etc.) to theme tokens for content-block consistency */
.wp-block-button__link,.wp-element-button{font-family:var(--font-body);font-weight:600;border-radius:var(--radius-md)!important;box-shadow:none!important;}
.wp-block-button.is-style-outline .wp-block-button__link{border-color:var(--ink-12);color:var(--ink);}
.wp-block-button:not(.is-style-outline) .wp-block-button__link{background:var(--ink);color:var(--bg);}
.wp-block-tag-cloud a,.tagcloud a{font-family:var(--font-mono);font-size:13px!important;border:1px solid var(--ink-12);border-radius:var(--radius-sm);padding:4px 10px;background:var(--surface);}
/* About page photo slot (placeholder until a real photo is chosen) */
/* Shared circular avatar system -- the one declared radius exception (see DESIGN.md) */
.avatar-circle{border-radius:50%;background:var(--surface);display:flex;align-items:center;justify-content:center;flex-shrink:0;aspect-ratio:1/1;overflow:hidden;}
.avatar-circle img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block;}
.avatar-circle-inner{text-align:center;}
.avatar-initials{display:block;font-family:var(--font-heading);font-weight:700;color:var(--ink-55);}
.avatar-label{display:block;margin-top:6px;font-family:var(--font-mono);color:var(--ink-55);text-transform:uppercase;letter-spacing:.04em;}

.hero-photo.avatar-circle{width:150px;}
.hero-photo .avatar-initials{font-size:28px;}
.hero-photo .avatar-label{font-size:9px;}
@media (max-width:760px){.hero-photo.avatar-circle{width:110px;}}

.about-photo-row{margin-bottom:var(--sp-lg);display:flex;justify-content:center;}
.about-photo.avatar-circle{width:200px;}
.about-photo .avatar-initials{font-size:40px;}
.about-photo .avatar-label{font-size:11px;}
@media (max-width:640px){.about-photo.avatar-circle{width:150px;}}

/* About page centered intro (declared exception, see DESIGN.md) */
.page-title.text-center{text-align:center;}
.about-intro-center{text-align:center;}
.about-prose{margin-inline:auto;text-align:left;}