/*
Theme Name: Zona Intelektual Grid
Theme URI: https://zonaintelektual.com
Author: Zona Intelektual
Author URI: https://zonaintelektual.com
Description: Tema berita grid custom, ringan, tanpa font/JS pihak ketiga, dioptimalkan untuk skor performa 100 di mobile & desktop (Core Web Vitals friendly).
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Tested up to: 6.6
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: zona-intelektual
*/

/* ================= DESIGN TOKENS ================= */
:root{
  --ink:#071A3D;
  --paper:#F3F8FE;
  --card:#FFFFFF;
  --crimson:#0090FF;
  --gold:#22D3EE;
  --teal:#00308C;
  --grey:#5A6B8C;
  --line:#DCE9F7;
  --radius:2px;
  --maxw:1240px;
  --font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-display: Georgia, "Times New Roman", "Noto Serif", serif;
  --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
}
@media (prefers-color-scheme: dark){
  :root{
    --paper:#060F24; --card:#0D1D3D; --ink:#EAF4FF;
    --line:#1B3660; --grey:#8FA7CC;
  }
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important}
}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--font-body); line-height:1.5; -webkit-font-smoothing:antialiased;
}
img,svg{display:block; max-width:100%; height:auto}
a{color:inherit; text-decoration:none}
ul{margin:0; padding:0; list-style:none}
h1,h2,h3,h4{margin:0; font-family:var(--font-display)}
.wrap{max-width:var(--maxw); margin-inline:auto; padding-inline:16px}
:focus-visible{outline:3px solid var(--gold); outline-offset:2px}

.skip-link{position:absolute; left:-999px; top:0; background:var(--gold); color:var(--ink); padding:10px 16px; z-index:100}
.skip-link:focus{left:16px; top:16px}

/* ================= HEADER ================= */
header.site{border-bottom:2px solid var(--ink); background:var(--paper); position:sticky; top:0; z-index:20}
.topbar{display:flex; align-items:center; justify-content:space-between; padding-block:14px; gap:16px}
.logo{font-family:var(--font-display); font-weight:700; font-size:26px; letter-spacing:-.5px; white-space:nowrap; display:flex; align-items:center; flex:none}
.logo span{color:var(--crimson)}
.logo img{height:clamp(30px, 6vw, 44px); width:auto; max-width:170px; display:block}
.foot-logo img{height:clamp(26px, 4vw, 36px); width:auto; max-width:150px; display:block; margin-bottom:14px}
nav.primary{display:none}
nav.primary ul{display:flex; gap:22px; font-size:14px; font-weight:600; text-transform:uppercase; letter-spacing:.04em}
nav.primary li{position:relative}
nav.primary a{display:inline-block; padding-block:6px; border-bottom:2px solid transparent}
nav.primary a:hover, nav.primary a:focus-visible{border-color:var(--crimson)}
.actions{display:flex; align-items:center; gap:10px}
.icon-btn{border:1px solid var(--line); background:var(--card); width:38px; height:38px; border-radius:var(--radius); display:flex; align-items:center; justify-content:center; cursor:pointer}
.icon-btn svg{width:18px; height:18px; stroke:var(--ink); fill:none; stroke-width:2}

#menu-toggle{display:none}
.drawer{
  position:fixed; inset:0 0 0 auto; width:min(84vw,320px); background:var(--card);
  transform:translateX(100%); transition:transform .25s ease; z-index:40; padding:20px;
  border-left:2px solid var(--ink);
}
#menu-toggle:checked ~ .drawer{transform:translateX(0)}
.drawer ul{display:flex; flex-direction:column; gap:2px; margin-top:20px}
.drawer a{display:block; padding:12px 4px; font-weight:700; border-bottom:1px solid var(--line)}
.scrim{position:fixed; inset:0; background:rgba(20,23,26,.5); opacity:0; pointer-events:none; transition:opacity .25s ease; z-index:30}
#menu-toggle:checked ~ .scrim{opacity:1; pointer-events:auto}
.drawer-close{display:flex; justify-content:flex-end}

/* ================= LIVE TICKER ================= */
.ticker{background:var(--ink); color:var(--paper); overflow:hidden; border-bottom:1px solid var(--gold)}
.ticker-inner{display:flex; align-items:center; gap:14px; padding-block:8px}
.ticker-tag{flex:none; background:var(--crimson); color:#fff; font:700 11px/1 var(--font-mono); padding:5px 8px; border-radius:2px; letter-spacing:.06em}
.ticker-track-wrap{overflow:hidden; flex:1}
.ticker-track{display:flex; gap:36px; width:max-content; font:600 13px/1 var(--font-mono); white-space:nowrap; animation:scroll-left 28s linear infinite}
.ticker:hover .ticker-track, .ticker:focus-within .ticker-track{animation-play-state:paused}
@keyframes scroll-left{from{transform:translateX(0)} to{transform:translateX(-50%)}}
.ticker-track em{color:var(--gold); font-style:normal}

/* ================= CATEGORY PILLS ================= */
.pills{display:flex; gap:8px; overflow-x:auto; padding-block:14px; scrollbar-width:none}
.pills::-webkit-scrollbar{display:none}
.pill{flex:none; font:700 12px/1 var(--font-body); text-transform:uppercase; letter-spacing:.05em; padding:8px 14px; border:1px solid var(--ink); border-radius:20px; background:transparent; cursor:pointer; color:var(--ink)}
.pill.is-active, .pill[aria-current="page"]{background:var(--ink); color:var(--paper)}

/* ================= HERO BENTO GRID ================= */
.hero-grid{display:grid; grid-template-columns:1fr; gap:16px; padding-block:8px 24px}
.hero-feat .thumb{aspect-ratio:16/9}
.hero-side{display:grid; gap:16px}
.hero-side .thumb{aspect-ratio:16/10}
.card{background:var(--card); border:1px solid var(--line)}
.thumb{position:relative; width:100%; background:linear-gradient(135deg,var(--teal),var(--ink)); overflow:hidden}
.thumb img{width:100%; height:100%; object-fit:cover}
.thumb .cat-tag{position:absolute; left:10px; top:10px; background:var(--crimson); color:#fff; font:700 11px/1 var(--font-body); text-transform:uppercase; letter-spacing:.05em; padding:6px 10px; border-radius:2px; z-index:2}
.art-body{padding:14px 16px 18px}
.hero-feat h1{font-size:clamp(22px,4vw,34px); line-height:1.15; margin-bottom:8px}
.hero-side h2{font-size:18px; line-height:1.25; margin-bottom:6px}
.excerpt{color:var(--grey); font-size:14px; margin-bottom:10px}
.meta{display:flex; gap:10px; align-items:center; font:600 12px/1 var(--font-mono); color:var(--grey); flex-wrap:wrap}
.meta .dot{width:3px; height:3px; background:var(--grey); border-radius:50%}

/* ================= SECTION HEADER ================= */
.sec-head{display:flex; align-items:baseline; justify-content:space-between; border-bottom:3px solid var(--ink); padding-bottom:8px; margin-bottom:16px; margin-top:8px}
.sec-head h2{font-size:20px; text-transform:uppercase; letter-spacing:.03em}
.sec-head a{font:700 12px/1 var(--font-mono); color:var(--crimson); text-transform:uppercase}

/* ================= MAIN LAYOUT ================= */
.layout{display:grid; grid-template-columns:1fr; gap:32px; padding-bottom:40px}
.grid-news{display:grid; grid-template-columns:1fr; gap:18px}
.news-card{content-visibility:auto; contain-intrinsic-size:1px 420px}
.news-card .thumb{aspect-ratio:16/9}
.news-card h3{font-size:17px; line-height:1.3; margin-bottom:6px}

aside{display:flex; flex-direction:column; gap:28px}
.widget{background:var(--card); border:1px solid var(--line); padding:18px}
.widget h4,.widget .widgettitle{font-size:14px; text-transform:uppercase; letter-spacing:.06em; border-bottom:2px solid var(--ink); padding-bottom:10px; margin-bottom:14px}
.trending-item{display:flex; gap:12px; padding-block:10px; border-bottom:1px solid var(--line)}
.trending-item:last-child{border-bottom:none}
.trending-num{font:700 20px/1 var(--font-mono); color:var(--gold); width:28px; flex:none}
.trending-item h5{font-size:14px; line-height:1.35; font-family:var(--font-body); font-weight:700; margin:0}
.newsletter p{color:var(--grey); font-size:13px; margin:0 0 12px}
.newsletter form{display:flex; gap:8px}
.newsletter input[type=email]{flex:1; min-width:0; padding:10px; border:1px solid var(--line); font-size:14px; border-radius:2px; background:var(--paper); color:var(--ink)}
.btn{background:var(--crimson); color:#fff; border:none; padding:10px 14px; font-weight:700; font-size:13px; cursor:pointer; border-radius:2px}
.tag-cloud{display:flex; flex-wrap:wrap; gap:8px}
.tag-cloud a{font-size:12px; font-weight:600; padding:6px 10px; border:1px solid var(--line); border-radius:20px; display:inline-block}

/* Single post */
.single-article{padding-block:28px 60px}
.single-article .thumb{aspect-ratio:16/9; margin-bottom:20px}
.single-article h1{font-size:clamp(24px,4vw,38px); line-height:1.2; margin-bottom:12px}
.single-content{font-size:17px; line-height:1.75; max-width:70ch}
.single-content p{margin:0 0 1.2em}
.single-content img{border:1px solid var(--line); margin-block:1em}
.single-tags{display:flex; flex-wrap:wrap; gap:8px; margin-top:28px}

/* ================= FOOTER ================= */
footer.site{background:var(--paper); color:var(--ink); margin-top:20px; border-top:2px solid var(--ink)}
.foot-grid{display:grid; grid-template-columns:1fr; gap:28px; padding-block:40px}
footer.site h4{font-size:13px; text-transform:uppercase; letter-spacing:.06em; color:var(--crimson); margin-bottom:14px}
footer.site a{display:block; font-size:14px; color:var(--ink); padding-block:5px}
.foot-social{display:flex; gap:10px}
.foot-social a{width:36px; height:36px; border:1px solid var(--line); display:flex; align-items:center; justify-content:center; border-radius:50%; padding:0}
.foot-social svg{width:16px; height:16px; stroke:var(--ink); fill:none; stroke-width:2}
.foot-bottom{border-top:1px solid var(--line); text-align:center; font-size:12px; color:var(--grey); padding-block:16px}

/* ================= DESKTOP ≥ 860px ================= */
@media (min-width:860px){
  nav.primary{display:block}
  .menu-btn{display:none}
  .hero-grid{grid-template-columns:2fr 1fr}
  .layout{grid-template-columns:2.2fr 1fr}
  .grid-news{grid-template-columns:repeat(2,1fr)}
}
@media (min-width:1120px){
  .grid-news{grid-template-columns:repeat(3,1fr)}
  .foot-grid{grid-template-columns:2fr 1fr 1fr 1fr}
}

.screen-reader-text{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(1px,1px,1px,1px)}
