/*
Theme Name: 0x4148
Theme URI: https://0x4148.com
Author: Ahmed Sultan (0x4148)
Description: Monochrome editorial theme for Ahmed Sultan (0x4148) — security research home. Light/Dark/System, Articulat CF, research-first typography.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.0
Text Domain: zero-x-4148
*/

/* =========================================================================
   Fonts — self-hosted Articulat CF (brand), IBM Plex Mono (code/metadata),
   Noto Naskh Arabic (Arabic post). font-display: swap, real weights only.
   ========================================================================= */
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-400-italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-500.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-500-italic.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-600-italic.woff2") format("woff2");font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Articulat CF";src:url("assets/fonts/articulat-cf-700-italic.woff2") format("woff2");font-weight:700;font-style:italic;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("assets/fonts/ibm-plex-mono-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("assets/fonts/ibm-plex-mono-500.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Noto Naskh Arabic";src:url("assets/fonts/noto-naskh-arabic-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Noto Naskh Arabic";src:url("assets/fonts/noto-naskh-arabic-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF}

/* =========================================================================
   Design tokens — monochrome. Light is the default; dark via [data-theme].
   No hue anywhere. State is carried by weight, underline, border, contrast.
   ========================================================================= */
:root{
  --bg:#F4F4F2; --surface:#ECEBE7; --text:#131313; --secondary:#484848;
  --muted:#7B7B7B; --border:#DCDAD5; --code-bg:#ECEBE7; --focus:#131313;
  --rule-strong:#131313;

  --font-sans:"Articulat CF",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --font-ar:"Noto Naskh Arabic","Articulat CF",serif;

  --container:1280px;
  --prose:46rem;              /* ~736px; comfortable reading for prose pages */
  --gutter:clamp(20px,4vw,48px);

  /* Fluid type scale */
  --fs-h1-home:clamp(2rem,1.3rem + 2.6vw,2.75rem);   /* 32 -> 44 */
  --fs-h1-art:clamp(1.875rem,1.4rem + 1.9vw,2.5rem);  /* 30 -> 40 */
  --fs-h2:clamp(1.3rem,1.08rem + 0.9vw,1.6875rem);    /* ~21 -> 27 */
  --fs-h3:clamp(1.15rem,1.02rem + 0.5vw,1.375rem);    /* ~18 -> 22 */
  --fs-body:clamp(1rem,0.95rem + 0.25vw,1.125rem);    /* 16 -> 18 */
  --fs-small:0.9375rem;
  --fs-nav:0.9375rem;
  --fs-meta:0.8125rem;        /* 13 */
  --fs-code:0.875rem;         /* 14 */
  --lh-body:1.72;
  --lh-tight:1.18;

  --space-1:0.5rem; --space-2:1rem; --space-3:1.5rem; --space-4:2rem;
  --space-5:3rem; --space-6:4.5rem; --space-7:6.5rem;
}
:root[data-theme="dark"]{
  --bg:#101010; --surface:#191919; --text:#F5F5F5; --secondary:#B2B2B2;
  --muted:#A1A1A1; --border:#363636; --code-bg:#1D1D1D; --focus:#F5F5F5;
  --rule-strong:#F5F5F5;
}
/* Light is the default. Dark applies only when the viewer explicitly chooses it
   (no automatic prefers-color-scheme switch). */

/* =========================================================================
   Reset / base
   ========================================================================= */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);
  font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-feature-settings:"kern" 1;
}
img{max-width:100%;height:auto}
hr{border:0;border-top:1px solid var(--border);margin:var(--space-5) 0}
::selection{background:var(--text);color:var(--bg)}

a{color:var(--text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:0.18em;text-decoration-color:var(--muted)}
a:hover{text-decoration-color:var(--text)}
a:focus-visible,button:focus-visible,input:focus-visible,:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:1px}

h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);color:var(--text);line-height:var(--lh-tight);margin:0;font-weight:600;letter-spacing:-0.012em}

/* Skip link — hidden with the clip technique (NOT left:-9999px, which balloons
   scrollWidth under dir="rtl" and breaks the Arabic post's layout). */
.skip-link{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
  background:var(--text);color:var(--bg);text-decoration:none;z-index:100}
.skip-link:focus{position:fixed;left:8px;top:8px;width:auto;height:auto;margin:0;padding:10px 16px;
  clip:auto;clip-path:none;overflow:visible}

/* Screen-reader-only utility (used by search form label etc.) */
.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* =========================================================================
   Layout primitives
   ========================================================================= */
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}
.prose-container{max-width:var(--prose)}
.site{display:flex;flex-direction:column;min-height:100vh}
main{flex:1 0 auto;width:100%}
.section{margin-block:var(--space-6)}

/* =========================================================================
   Header / nav — compact, editorial
   ========================================================================= */
.site-header{position:sticky;top:0;z-index:100;background:var(--bg);border-bottom:1px solid var(--border)}
.site-header .container{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:68px}
.wordmark{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-weight:500;font-size:1.0625rem;letter-spacing:0.01em;text-decoration:none;color:var(--text);padding:4px 0}
.wordmark:hover{text-decoration:none}
.wordmark .hx{color:var(--muted)}
.logo{display:block;flex:none}
.wordmark .logo{height:34px;width:34px}
.logo-dark{display:none}
:root[data-theme="dark"] .logo-light{display:none}
:root[data-theme="dark"] .logo-dark{display:block}
.site-nav{display:flex;align-items:center;gap:clamp(14px,2.4vw,30px)}
.site-nav a{font-size:var(--fs-nav);text-decoration:none;color:var(--secondary);padding:6px 0;position:relative}
.site-nav a:hover{color:var(--text)}
.site-nav a[aria-current="page"]{color:var(--text);box-shadow:inset 0 -1px 0 var(--text)}

/* Header: wordmark + nav on the left, mode switch on the right */
.header-left{display:flex;align-items:center;gap:clamp(18px,3vw,34px)}
.header-right{display:flex;align-items:center}

/* Theme switch — a small sun/moon icon button (top-left) */
.theme-switch{appearance:none;background:transparent;border:1px solid var(--border);border-radius:50%;
  width:34px;height:34px;flex:none;display:inline-flex;align-items:center;justify-content:center;
  color:var(--secondary);cursor:pointer;padding:0;transition:color .15s ease,border-color .15s ease}
.theme-switch:hover{color:var(--text);border-color:var(--text)}
.theme-switch svg{display:block}
.theme-switch .ic-sun{display:none}
:root[data-theme="dark"] .theme-switch .ic-moon{display:none}
:root[data-theme="dark"] .theme-switch .ic-sun{display:inline-flex}

/* =========================================================================
   Footer
   ========================================================================= */
.site-footer{border-top:1px solid var(--border);margin-top:var(--space-7);padding-block:var(--space-3)}
.site-footer .container{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-4)}
.footer-left{display:flex;align-items:center;gap:12px;flex:0 1 auto;min-width:0}
.footer-mark{display:inline-flex;opacity:.85;transition:opacity .2s ease}
.footer-mark:hover{opacity:1}
.footer-mark .logo{height:30px;width:30px}
.footer-slogan{flex:0 1 auto;margin:0;font-family:var(--font-sans);font-style:italic;color:var(--secondary);
  font-size:0.9375rem;letter-spacing:-0.005em;white-space:nowrap;text-align:center}
.site-footer .colophon{color:var(--muted);font-size:var(--fs-small);margin:0;white-space:nowrap}
@media(max-width:860px){
  .site-footer .container{flex-direction:column;text-align:center;gap:var(--space-2)}
  .footer-slogan{white-space:normal}
}
.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-1) var(--space-4);list-style:none;margin:0;padding:0}
.footer-links a{font-size:var(--fs-small);color:var(--secondary);text-decoration:none}
.footer-links a:hover{color:var(--text);text-decoration:underline;text-decoration-color:var(--text)}

/* =========================================================================
   Homepage (photo + social left, identity + bio right, research below)
   ========================================================================= */
.home-hero{display:grid;grid-template-columns:300px 1fr;gap:clamp(34px,5vw,72px);
  padding:clamp(40px,6vw,76px) 0 clamp(36px,5vw,60px);align-items:start}
.home-aside{position:sticky;top:84px}
.home-photo{margin:0;aspect-ratio:4/5;overflow:hidden;background:#000;
  border:1px solid var(--border);border-radius:16px}
.home-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 16%;
  filter:grayscale(1) contrast(1.04);transition:transform .6s ease,filter .6s ease}
.home-photo:hover img{transform:scale(1.035);filter:grayscale(1) contrast(1.08)}

.home-social{display:flex;flex-direction:column;gap:0;margin-top:16px}
.home-social a{display:flex;align-items:center;gap:11px;
  font-family:var(--font-mono);font-size:13px;color:var(--secondary);text-decoration:none;
  padding:10px 2px;border-bottom:1px solid var(--border)}
.home-social a:last-child{border-bottom:0}
.home-social a:hover{color:var(--text)}
.home-social .social-ic{display:inline-flex;width:18px;justify-content:center;color:var(--muted);flex:none}
.home-social a:hover .social-ic{color:var(--text)}
.home-social .social-tx{flex:1}

.home-name{font-size:var(--fs-h1-home);font-weight:700;line-height:1;letter-spacing:-0.028em;margin:0}
.home-handle{font-family:var(--font-mono);font-size:0.9375rem;color:var(--muted);margin:0.75rem 0 0}
.home-tagline{font-size:1rem;color:var(--secondary);margin:1rem 0 0}
.home-bio{max-width:54ch;margin:var(--space-3) 0 0;font-size:1.125rem;line-height:1.72}
.home-bio p{margin:0 0 var(--space-2)}
.home-bio p:last-child{margin-bottom:0}
.home-bio a{text-decoration:underline;text-decoration-color:var(--muted)}
.home-more{margin:var(--space-3) 0 0}
.home-more a{font-family:var(--font-mono);font-size:0.84rem;color:var(--text);text-decoration:none;
  border-bottom:1px solid var(--text);padding-bottom:2px}
.home-more a:hover{color:var(--secondary);border-color:var(--secondary)}

.home-work{border-top:1px solid var(--rule-strong);padding-top:clamp(28px,4vw,46px)}
.home-work-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}
.home-work-head h2{font-size:1.3125rem;font-weight:600;letter-spacing:-0.01em;margin:0}
.home-work-head .section-more{font-family:var(--font-mono);font-size:0.8125rem;color:var(--secondary);text-decoration:none;white-space:nowrap}
.home-work-head .section-more:hover{color:var(--text)}
.home-work-blurb{color:var(--muted);font-size:var(--fs-small);margin:0.6rem 0 1.1rem;max-width:60ch}
.home-rows{list-style:none;margin:0;padding:0}
.home-row{display:grid;grid-template-columns:7rem 1fr auto;gap:var(--space-3);align-items:baseline;
  padding:var(--space-3) 0;border-bottom:1px solid var(--border)}
.home-row-date{font-family:var(--font-mono);font-size:var(--fs-meta);color:var(--muted);white-space:nowrap}
.home-row-title{font-size:1.125rem;font-weight:600;line-height:1.3;min-width:0}
.home-row-title a{text-decoration:none}
.home-row-title a:hover{text-decoration:underline;text-decoration-color:var(--text)}
.home-row-cat{font-family:var(--font-mono);font-size:var(--fs-meta);color:var(--muted);white-space:nowrap;text-align:right}

@media(max-width:760px){
  .home-hero{grid-template-columns:1fr}
  .home-aside{position:static;max-width:300px}
  .home-row{grid-template-columns:1fr;gap:0.25rem}
  .home-row-cat{text-align:left}
}

/* About page — photo/social sidebar + content (fills the width) */
.about-layout{display:grid;grid-template-columns:300px 1fr;gap:clamp(34px,5vw,72px);
  padding:clamp(36px,5vw,64px) 0 clamp(36px,5vw,56px);align-items:start}
.about-aside{position:sticky;top:84px}
.about-title{font-size:var(--fs-h1-art);font-weight:700;letter-spacing:-0.022em;line-height:1.05;
  margin:0 0 var(--space-3);max-width:18ch}
.about-main .entry-content{max-width:46rem}
.about-main .entry-content > h2:first-of-type{margin-top:var(--space-4)}
@media(max-width:820px){
  .about-layout{grid-template-columns:1fr}
  .about-aside{position:static;max-width:300px}
}

/* Legacy homepage classes (kept for safety; unused by current front-page) */
.intro-grid{display:grid;grid-template-columns:1fr auto;gap:clamp(24px,5vw,64px);align-items:start}
.portrait{width:clamp(148px,22vw,224px);aspect-ratio:1;flex:none}
.portrait img{display:block;width:100%;height:100%;object-fit:cover;filter:grayscale(1);border:1px solid var(--border)}

/* Section heading pattern — a label + a strong rule, no all-caps, no eyebrow */
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);
  border-bottom:1.5px solid var(--rule-strong);padding-bottom:0.6rem;margin-bottom:var(--space-3)}
.section-head h2{font-size:var(--fs-h2);font-weight:600}
.section-head .section-more{font-size:var(--fs-small);color:var(--secondary);text-decoration:none;white-space:nowrap}
.section-head .section-more:hover{color:var(--text);text-decoration:underline}

/* Research / post index rows */
.post-list{list-style:none;margin:0;padding:0}
.post-row{display:grid;grid-template-columns:7.5rem 1fr;gap:var(--space-3);
  padding:var(--space-3) 0;border-bottom:1px solid var(--border);align-items:baseline}
.post-row:first-child{padding-top:0}
.post-row .post-date{font-family:var(--font-mono);font-size:var(--fs-meta);color:var(--muted);white-space:nowrap;padding-top:0.15rem}
.post-row .post-main{min-width:0}
.post-row .post-title{font-size:1.1875rem;font-weight:600;line-height:1.3;margin:0}
.post-row .post-title a{text-decoration:none}
.post-row .post-title a:hover{text-decoration:underline;text-decoration-color:var(--text)}
.post-row .post-terms{font-family:var(--font-mono);font-size:var(--fs-meta);color:var(--muted);margin-top:0.4rem}
.post-row .post-excerpt{color:var(--secondary);font-size:var(--fs-small);margin:0.5rem 0 0;line-height:1.55}

/* Areas of work — definition list, not cards */
.areas{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3) var(--space-4)}
.area{border-top:1px solid var(--border);padding-top:var(--space-2)}
.area h3{font-size:1.0625rem;font-weight:600;margin:0 0 0.35rem}
.area p{margin:0;color:var(--secondary);font-size:var(--fs-small);line-height:1.55}

.lead-block{max-width:var(--prose);color:var(--secondary)}

/* =========================================================================
   Article / single + pages
   ========================================================================= */
.page-header{padding-block:var(--space-5) var(--space-3)}
.page-header h1{font-size:var(--fs-h1-art);font-weight:700;letter-spacing:-0.02em;max-width:22ch}
.article-meta{font-family:var(--font-mono);font-size:var(--fs-meta);color:var(--muted);margin-top:var(--space-2);
  display:flex;flex-wrap:wrap;gap:0.4rem 1.1rem}
.article-meta a{color:var(--secondary);text-decoration:none}
.article-meta a:hover{color:var(--text);text-decoration:underline}

/* Archive note — quiet, clearly site chrome, not body text */
.archive-note{max-width:var(--prose);border:1px solid var(--border);border-left:3px solid var(--secondary);
  background:var(--surface);color:var(--secondary);font-size:var(--fs-small);line-height:1.55;
  padding:var(--space-2) var(--space-3);margin:var(--space-4) 0}
.archive-note b{color:var(--text);font-weight:600}

/* Single-post layout: article + sticky TOC on the right */
/* Blog posts read wider than the narrow prose pages (About/home) */
.single-layout{--prose:56rem;display:grid;grid-template-columns:minmax(0,var(--prose)) 240px;gap:clamp(32px,4vw,64px);
  justify-content:center;align-items:start}
.single-main{min-width:0}
.single-toc{position:sticky;top:84px;max-height:calc(100vh - 120px);overflow-y:auto}
.toc .toc-title{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin:0 0 0.85rem}
.toc ul{list-style:none;margin:0;padding:0;border-left:1px solid var(--border)}
.toc li{margin:0}
.toc li a{display:block;padding:5px 0 5px 14px;margin-left:-1px;border-left:1px solid transparent;
  color:var(--secondary);text-decoration:none;font-size:13px;line-height:1.4}
.toc li.toc-l2 a{padding-left:28px;font-size:12.5px;color:var(--muted)}
.toc li.toc-l3 a{padding-left:40px;font-size:12px;color:var(--muted)}
.toc li a:hover{color:var(--text)}
.toc li a.active{color:var(--text);border-left-color:var(--text);font-weight:600}
@media (max-width:1040px){
  .single-layout{grid-template-columns:1fr;max-width:var(--prose);margin-inline:auto}
  .single-toc{display:none}
}

.entry-content{max-width:var(--prose);font-size:var(--fs-body);overflow-wrap:break-word}
.entry-content > *{margin-block:0 var(--space-3)}
.entry-content h2{font-size:var(--fs-h2);font-weight:600;margin-top:var(--space-5);margin-bottom:var(--space-2)}
.entry-content h3{font-size:var(--fs-h3);font-weight:600;margin-top:var(--space-4);margin-bottom:var(--space-1)}
.entry-content h4{font-size:1.0625rem;font-weight:600;margin-top:var(--space-3);margin-bottom:var(--space-1)}
.entry-content p{margin:0 0 var(--space-3)}
.entry-content a{text-decoration:underline;text-decoration-color:var(--secondary)}
.entry-content a[href^="http"]:not([href*="localhost"])::after{content:"";}
.entry-content ul,.entry-content ol{margin:0 0 var(--space-3);padding-left:1.4em}
.entry-content li{margin-bottom:0.4rem}
.entry-content li::marker{color:var(--muted)}
.entry-content img{border:1px solid var(--border);margin-block:var(--space-2)}
.entry-content img.aligncenter{display:block;margin-inline:auto}
.entry-content figure{margin:var(--space-3) 0}
.entry-content figcaption{font-size:var(--fs-meta);color:var(--muted);margin-top:0.5rem;font-family:var(--font-mono)}
.entry-content blockquote{margin:var(--space-3) 0;padding:0.2rem 0 0.2rem var(--space-3);
  border-left:2px solid var(--border);color:var(--secondary);font-style:italic}
.entry-content blockquote p:last-child{margin-bottom:0}
.entry-content code{font-family:var(--font-mono);font-size:0.9em;background:var(--code-bg);
  padding:0.12em 0.35em;border-radius:2px;border:1px solid var(--border);
  overflow-wrap:anywhere;word-break:break-word}
/* Code inside a <pre> keeps its own no-wrap + horizontal scroll */
.entry-content pre code{overflow-wrap:normal;word-break:normal}

/* About epigraph — the ensō slogan as an elegant pull-quote */
.entry-content .about-epigraph{
  font-family:var(--font-sans);font-size:clamp(1.5rem,1.15rem + 1.6vw,2.125rem);
  font-style:italic;font-weight:400;line-height:1.24;letter-spacing:-0.02em;
  color:var(--text);max-width:18ch;margin:var(--space-5) 0;
  padding-top:var(--space-3);border-top:1px solid var(--rule-strong)}

/* Credentials (About) — each cert a clean, scannable tag */
.entry-content ul.cred-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;
  margin:var(--space-2) 0 0;padding:0;max-width:var(--prose)}
.entry-content ul.cred-list li{margin:0;font-family:var(--font-mono);font-size:0.8125rem;
  color:var(--secondary);background:var(--surface);border:1px solid var(--border);
  border-radius:5px;padding:6px 11px;line-height:1.3;white-space:nowrap}
.entry-content ul.cred-list li::marker{content:""}
.entry-content .cred-note{font-size:var(--fs-small);color:var(--muted);margin-top:var(--space-2)}

/* Training providers (About) — plain, scannable names */
.entry-content ul.trainer-list{display:flex;flex-wrap:wrap;gap:8px 10px;list-style:none;
  margin:var(--space-3) 0 0;padding:0;max-width:var(--prose)}
.entry-content ul.trainer-list li{margin:0;font-size:0.9375rem;color:var(--text);
  line-height:1.3;border:1px solid var(--border);border-radius:6px;
  padding:7px 12px;white-space:nowrap}
.entry-content ul.trainer-list li::marker{content:""}
.entry-content .trainer-note{font-size:var(--fs-small);color:var(--muted);
  margin-top:var(--space-2)}

/* "Find me" — elegant icon-tile grid (About) */
.find-me-section{max-width:var(--prose);margin-top:var(--space-6)}
.find-me-section h2{font-size:var(--fs-h2);font-weight:600;letter-spacing:-0.01em;margin:0 0 var(--space-2)}
.find-me-intro{color:var(--secondary);font-size:1.0625rem;line-height:1.6;margin:0 0 var(--space-3);max-width:58ch}
.find-me{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;list-style:none;margin:0;padding:0}
.find-me li{margin:0}
.find-me li::marker{content:""}
.find-me a{display:flex;align-items:center;gap:12px;padding:13px 15px;
  border:1px solid var(--border);border-radius:9px;background:var(--surface);
  color:var(--text);text-decoration:none;font-size:0.9375rem;
  transition:border-color .15s ease,background .15s ease}
.find-me a:hover{border-color:var(--text);background:var(--bg)}
.find-me .fm-ic{display:inline-flex;align-items:center;color:var(--secondary);flex:none}
.find-me a:hover .fm-ic{color:var(--text)}
.find-me .fm-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.find-me .fm-arr{color:var(--muted);font-family:var(--font-mono);font-size:13px;flex:none}
.find-me a:hover .fm-arr{color:var(--text)}
.find-me .fm-email{grid-column:1 / -1}
.find-me .fm-email a{background:var(--bg)}
.find-me .fm-email .fm-label{font-family:var(--font-mono);font-size:0.875rem}
.find-me-note{color:var(--muted);font-size:var(--fs-small);font-style:italic;margin:var(--space-3) 0 0}
.entry-content pre code,.entry-content .highlight code{background:transparent;border:0;padding:0}

/* Headings get a hover permalink anchor */
.entry-content :is(h2,h3,h4){scroll-margin-top:88px;position:relative}
.heading-anchor{position:absolute;left:-1.1em;top:0;opacity:0;text-decoration:none;color:var(--muted);font-family:var(--font-mono);font-weight:400}
.entry-content :is(h2,h3,h4):hover .heading-anchor,.heading-anchor:focus{opacity:1}

/* Tables (English posts) */
.entry-content table{border-collapse:collapse;width:100%;font-size:var(--fs-small);margin:var(--space-3) 0;display:block;overflow-x:auto}
.entry-content th,.entry-content td{border:1px solid var(--border);padding:0.5rem 0.7rem;text-align:left;vertical-align:top}
.entry-content th{font-weight:600;background:var(--surface)}

/* Inline Hugo table-of-contents is hidden — replaced by the sticky sidebar TOC */
.entry-content #TableOfContents{display:none}

/* Author byline + related */
.entry-footer{max-width:var(--prose);margin-top:var(--space-5);padding-top:var(--space-3);border-top:1px solid var(--border)}
.byline{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-small);color:var(--secondary)}
.byline .byline-name{color:var(--text);font-weight:600;text-decoration:none}
.byline .byline-name:hover{text-decoration:underline}
.related{margin-top:var(--space-4)}
.related h2{font-size:1.0625rem;font-weight:600;margin:0 0 var(--space-2)}

/* External link marker — word, not arrow/icon (kept subtle, mono) */
.ext::after{content:" ↗";font-family:var(--font-mono);color:var(--muted);font-size:0.85em}

/* =========================================================================
   Pagination
   ========================================================================= */
.pagination{display:flex;gap:var(--space-2);align-items:center;justify-content:space-between;
  margin-top:var(--space-5);padding-top:var(--space-3);border-top:1px solid var(--border);font-size:var(--fs-small)}
.pagination a,.pagination span{text-decoration:none;color:var(--secondary);padding:6px 10px;border:1px solid var(--border);border-radius:2px}
.pagination a:hover{color:var(--text);border-color:var(--text)}
.pagination .current{color:var(--text);border-color:var(--text);font-weight:600}
.nav-links{display:flex;gap:var(--space-2);flex-wrap:wrap}

/* =========================================================================
   Search form
   ========================================================================= */
.search-form{display:flex;gap:var(--space-1);max-width:var(--prose);margin-block:var(--space-3)}
.search-form input[type="search"]{flex:1;font-family:var(--font-sans);font-size:1rem;padding:0.6rem 0.8rem;
  background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:2px}
.search-form button{font-family:var(--font-sans);font-size:0.9375rem;font-weight:500;padding:0.6rem 1.1rem;
  background:var(--text);color:var(--bg);border:0;border-radius:2px;cursor:pointer}
.search-form button:hover{opacity:0.88}

/* 404 — minimal, centered; the big numeral is the one bold element */
.notfound{max-width:40rem;margin-inline:auto;text-align:center;
  padding-block:clamp(var(--space-5),9vh,var(--space-7))}
.notfound .nf-big{font-family:var(--font-sans);font-weight:700;line-height:.92;
  letter-spacing:-0.02em;font-size:clamp(5rem,3rem + 13vw,11rem);
  color:var(--text);margin:0}
.notfound .nf-title{font-size:var(--fs-h2);font-weight:700;line-height:var(--lh-tight);
  margin:var(--space-2) 0 var(--space-1)}
.notfound .nf-lead{color:var(--secondary);font-size:var(--fs-body);
  line-height:var(--lh-body);max-width:32rem;margin:0 auto var(--space-3)}
.notfound .nf-term{display:inline-flex;align-items:baseline;gap:.55ch;flex-wrap:wrap;
  justify-content:center;font-family:var(--font-mono);font-size:var(--fs-code);
  color:var(--muted);background:var(--surface);border:1px solid var(--border);
  border-radius:8px;padding:10px 15px;max-width:100%;overflow-wrap:anywhere}
.notfound .nf-cmd{color:var(--secondary);font-weight:500}
.notfound .nf-path{color:var(--text)}
.notfound .nf-arr{color:var(--muted)}
.notfound .nf-code{color:var(--text);font-weight:600}
.notfound .nf-cursor{display:inline-block;width:.55ch;height:1.05em;margin-left:.15ch;
  background:var(--text);vertical-align:text-bottom;animation:nf-blink 1.1s steps(1) infinite}
@keyframes nf-blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.notfound .nf-cursor{animation:none}}
.notfound .nf-actions{display:flex;gap:var(--space-3);justify-content:center;
  flex-wrap:wrap;margin:var(--space-4) 0 var(--space-3)}
.notfound .nf-actions a{font-size:var(--fs-nav);color:var(--text);text-decoration:none;
  padding-bottom:3px;border-bottom:1px solid var(--border);transition:border-color .15s ease}
.notfound .nf-actions a:hover{border-color:var(--text)}
.notfound .nf-search{max-width:22rem;margin-inline:auto}

/* =========================================================================
   Arabic / RTL
   ========================================================================= */
[dir="rtl"],.rtl{direction:rtl;text-align:right}
.lang-ar .entry-content,.entry-content [lang="ar"]{font-family:var(--font-ar);line-height:1.95}
.lang-ar .entry-content{direction:rtl;text-align:right}
.lang-ar .entry-content ul,.lang-ar .entry-content ol{padding-left:0;padding-right:1.4em}
.lang-ar .entry-content blockquote{border-left:0;border-right:2px solid var(--border);padding:0.2rem var(--space-3) 0.2rem 0}
.lang-ar .page-header h1{direction:rtl;text-align:right;font-family:var(--font-ar)}

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width:720px){
  .intro-grid{grid-template-columns:1fr}
  .portrait{order:-1;width:clamp(120px,40vw,160px)}
  .areas{grid-template-columns:1fr}
  .post-row{grid-template-columns:1fr;gap:0.3rem}
  .post-row .post-date{padding-top:0}
  .site-header .container{min-height:60px;gap:var(--space-2)}
  .site-footer .container{flex-direction:column;gap:var(--space-2)}
}
@media (max-width:460px){
  .site-nav{gap:14px}
  .theme-toggle button{padding:6px 7px}
}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){*{animation-duration:0.001ms!important;transition-duration:0.001ms!important}}

/* Print */
@media print{.site-header,.site-footer,.theme-toggle,.pagination{display:none}a{text-decoration:none;color:#000}}
