/*
Theme Name: Programming Insider
Theme URI: https://programminginsider.co.uk/
Author: Programming Insider
Description: A fast, distraction-free editorial theme for a programming and tech blog. Line-number article gutter, syntax-tag category labels, dark mode, and a mobile-first responsive layout with no build step or heavy JS.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: programming-insider
*/

:root{
  --ink:#14171c;
  --paper:#faf9f6;
  --paper-2:#f1efe9;
  --text:#1b1e24;
  --text-soft:#565b66;
  --line:#dedad0;
  --blue:#3159f0;
  --teal:#177a63;
  --amber:#b8710f;
  --radius:3px;
  --maxw:1180px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ink:#faf9f6;
    --paper:#14161a;
    --paper-2:#1b1e24;
    --text:#f1efe9;
    --text-soft:#a3a8b3;
    --line:#2b2e35;
    --blue:#7c96ff;
    --teal:#4fc9a8;
    --amber:#e0a349;
  }
}
:root[data-theme="dark"]{
  --ink:#faf9f6;
  --paper:#14161a;
  --paper-2:#1b1e24;
  --text:#f1efe9;
  --text-soft:#a3a8b3;
  --line:#2b2e35;
  --blue:#7c96ff;
  --teal:#4fc9a8;
  --amber:#e0a349;
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--paper);
  color:var(--text);
  font-family:'IBM Plex Sans',-apple-system,Segoe UI,sans-serif;
  line-height:1.55;
}
a{color:inherit;text-decoration:none;}
img{max-width:100%;height:auto;display:block;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;}
.screen-reader-text{position:absolute;left:-9999px;}

/* ---------- Header ---------- */
header.site{
  border-bottom:1px solid var(--line);
  position:sticky;top:0;
  background:var(--paper);
  z-index:50;
}
.header-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 0;
}
.logo{
  font-family:'Newsreader',Georgia,serif;
  font-weight:600;font-size:1.5rem;
  display:flex;align-items:baseline;gap:2px;
}
.logo .dot{color:var(--blue);}
nav.primary{display:flex;gap:28px;font-size:.92rem;font-weight:500;}
nav.primary ul{list-style:none;display:flex;gap:28px;margin:0;padding:0;}
nav.primary a{padding:6px 0;border-bottom:2px solid transparent;transition:border-color .15s ease;}
nav.primary a:hover,nav.primary a:focus-visible{border-color:var(--blue);}
.header-actions{display:flex;align-items:center;gap:14px;}
.search-btn, .menu-btn, .theme-toggle{
  background:none;border:1px solid var(--line);border-radius:var(--radius);
  width:36px;height:36px;display:flex;align-items:center;justify-content:center;
  color:var(--text);cursor:pointer;
}
.menu-btn{display:none;}

/* ---------- Hero ---------- */
.hero{border-bottom:1px solid var(--line);padding:56px 0 48px;}
.hero-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:56px;align-items:center;}
.kicker{font-family:'IBM Plex Mono',monospace;font-size:.78rem;color:var(--teal);letter-spacing:.02em;margin:0 0 14px;}
.hero h1{font-family:'Newsreader',Georgia,serif;font-weight:600;font-size:clamp(1.9rem,3.4vw,3.1rem);line-height:1.08;margin:0 0 18px;max-width:20ch;}
.hero p.excerpt{color:var(--text-soft);font-size:1.06rem;max-width:52ch;margin:0 0 22px;}
.meta-line{font-size:.85rem;color:var(--text-soft);display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.meta-line .cat{color:var(--blue);font-weight:600;}
.hero-media{aspect-ratio:4/3;background:linear-gradient(155deg,var(--paper-2),var(--line));border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);}
.hero-media img{width:100%;height:100%;object-fit:cover;}

/* ---------- Section heading ---------- */
.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 0 22px;border-bottom:1px solid var(--line);padding-bottom:12px;}
.section-head h2{font-family:'Newsreader',Georgia,serif;font-weight:600;font-size:1.5rem;margin:0;}
.section-head a{font-size:.86rem;color:var(--blue);font-weight:600;}

/* ---------- Latest: editor-style list with line gutter ---------- */
.latest{padding:52px 0;border-bottom:1px solid var(--line);}
.article-list{list-style:none;margin:0;padding:0;}
.article-row{display:grid;grid-template-columns:44px 96px 1fr;gap:20px;align-items:flex-start;padding:22px 0;border-bottom:1px solid var(--line);}
.article-row:last-child{border-bottom:none;}
.line-no{font-family:'IBM Plex Mono',monospace;color:var(--text-soft);font-size:.85rem;padding-top:3px;text-align:right;}
.thumb{width:96px;height:72px;border-radius:var(--radius);background:var(--paper-2);border:1px solid var(--line);overflow:hidden;}
.thumb img{width:100%;height:100%;object-fit:cover;}
.article-body h3{font-family:'Newsreader',Georgia,serif;font-weight:600;font-size:1.18rem;margin:0 0 8px;line-height:1.3;}
.article-body h3 a:hover{color:var(--blue);}
.article-body p{margin:0 0 10px;color:var(--text-soft);font-size:.95rem;max-width:64ch;}
.tag{font-family:'IBM Plex Mono',monospace;font-size:.72rem;padding:2px 8px;border-radius:2px;display:inline-block;}
.tag.tech{background:rgba(49,89,240,.12);color:var(--blue);}
.tag.news{background:rgba(23,122,99,.14);color:var(--teal);}
.tag.culture{background:rgba(184,113,15,.14);color:var(--amber);}

/* ---------- Category strip / three column ---------- */
.three-col{padding:52px 0;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;}
.col h4{font-family:'IBM Plex Mono',monospace;font-size:.78rem;color:var(--text-soft);margin:0 0 16px;padding-bottom:10px;border-bottom:2px solid var(--line);text-transform:lowercase;}
.col .mini{padding:14px 0;border-bottom:1px solid var(--line);}
.col .mini:last-child{border-bottom:none;}
.col .mini a{font-weight:600;font-size:.98rem;}
.col .mini a:hover{color:var(--blue);}
.col .mini .date{display:block;margin-top:5px;font-size:.78rem;color:var(--text-soft);}

/* ---------- Newsletter ---------- */
.newsletter{background:var(--ink);color:var(--paper);padding:48px 0;}
.newsletter .wrap{display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap;}
.newsletter h3{font-family:'Newsreader',Georgia,serif;font-size:1.4rem;margin:0 0 6px;}
.newsletter p{margin:0;color:var(--line);font-size:.92rem;}
form.subscribe{display:flex;gap:10px;flex:0 0 auto;}
form.subscribe input{background:transparent;border:1px solid var(--line);color:var(--paper);padding:11px 14px;border-radius:var(--radius);font-size:.92rem;min-width:230px;}
form.subscribe input::placeholder{color:var(--text-soft);}
form.subscribe button{background:var(--blue);color:#fff;border:none;padding:11px 20px;border-radius:var(--radius);font-weight:600;cursor:pointer;font-size:.92rem;}

/* ---------- Single post ---------- */
.single-post{padding:48px 0 64px;}
.single-post .post-header{max-width:74ch;margin:0 auto 32px;}
.single-post .post-content{max-width:74ch;margin:0 auto;font-size:1.06rem;}
.single-post .post-content p{margin:0 0 20px;}
.single-post .post-content img{border-radius:var(--radius);margin:28px 0;}
.single-post .post-content h2{font-family:'Newsreader',Georgia,serif;font-size:1.6rem;margin:36px 0 16px;}
.single-post .post-content blockquote{border-left:3px solid var(--blue);margin:24px 0;padding:4px 0 4px 20px;color:var(--text-soft);font-style:italic;}
.single-post .post-content pre{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius);padding:16px;overflow-x:auto;font-family:'IBM Plex Mono',monospace;font-size:.88rem;}

/* ---------- Footer ---------- */
footer.site{padding:44px 0 60px;}
.footer-grid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:32px;padding-bottom:32px;border-bottom:1px solid var(--line);margin-bottom:22px;}
.footer-grid h5{font-size:.8rem;color:var(--text-soft);margin:0 0 14px;}
.footer-grid ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;font-size:.92rem;}
.footer-grid ul a:hover{color:var(--blue);}
.footer-bottom{display:flex;justify-content:space-between;font-size:.82rem;color:var(--text-soft);flex-wrap:wrap;gap:10px;}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;gap:28px;}
  .hero-media{order:-1;aspect-ratio:16/9;}
  .grid-3{grid-template-columns:1fr;gap:0;}
  .col{border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:18px;}
  .col:last-child{border-bottom:none;}
  .footer-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:720px){
  nav.primary{display:none;}
  .menu-btn{display:flex;}
  .article-row{grid-template-columns:28px 72px 1fr;gap:12px;}
  .thumb{width:72px;height:54px;}
  .newsletter .wrap{flex-direction:column;align-items:flex-start;}
  form.subscribe{width:100%;}
  form.subscribe input{min-width:0;flex:1;}
  .footer-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:520px){
  .wrap{padding:0 16px;}
  .footer-grid{grid-template-columns:1fr;gap:22px;}
  .hero{padding:36px 0 30px;}
  .latest,.three-col{padding:36px 0;}
}

/* mobile nav panel */
.mobile-panel{display:none;flex-direction:column;border-top:1px solid var(--line);padding:16px 0;}
.mobile-panel ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
.mobile-panel a{padding:12px 0;border-bottom:1px solid var(--line);font-weight:500;display:block;}
.mobile-panel.open{display:flex;}

:focus-visible{outline:2px solid var(--blue);outline-offset:2px;}
@media (prefers-reduced-motion: reduce){
  *{transition:none !important;}
}

/* WP core alignment helpers */
.alignwide{max-width:100%;}
.alignfull{width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;}
.wp-caption-text{font-size:.82rem;color:var(--text-soft);margin-top:6px;}
