/*
Theme Name: AIED Flagship
Theme URI: https://theaiexpertdirectory.com
Author: The GEO Agency
Description: Expert-tested AI software reviews. Bold editorial theme with tool reviews, best-of money pages, and the Recommendation Leaderboard. Clean URLs, no file extensions, mobile burger menu, affiliate compliance built in.
Version: 2.8.0
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: Proprietary
Text Domain: aied
*/

:root{
  --ink:#0B0B0C;
  --paper:#FAF7F0;
  --acid:#CCFF00;
  --hot:#FF3B2F;
  --body-cream:#FFFDF9;
  --body-ink:#26262B;
  --line-dark:#2A2A2E;
  --line-light:#DED9CC;
  --muted-on-cream:#6B6B76;
  --head:"Arial Black","Helvetica Neue",Helvetica,Arial,sans-serif;
  --sans:"Helvetica Neue",Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{overflow-x:clip}
body{background:var(--paper);color:var(--body-ink);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
.narrow{max-width:760px}
/* prose constrained for reading, but sharing the left edge with the card grid */
.proseblock{max-width:760px;margin-left:0}

/* HARD RULE: on dark surfaces body copy is white or cream, never grey.
   Hierarchy comes from size, weight and acid labels. */
.on-ink{background:var(--ink);color:var(--body-cream)}
.on-ink p,.on-ink li,.on-ink td,.on-ink dd{color:var(--body-cream)}
.on-acid{background:var(--acid);color:var(--ink)}
.on-acid p,.on-acid li{color:var(--ink)}

.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;z-index:999;background:var(--acid);color:var(--ink);padding:10px 16px;font-family:var(--head)}

/* ---------- disclosure ---------- */
.disclose{background:var(--ink);color:var(--body-cream);font-size:13px;line-height:1.45;padding:9px 0;border-bottom:1px solid var(--line-dark)}
.disclose .wrap{display:flex;gap:10px;align-items:flex-start}
.disclose b{color:var(--acid);text-transform:uppercase;letter-spacing:.1em;font-size:11px;font-family:var(--head);white-space:nowrap;padding-top:1px}
.disclose a{color:var(--body-cream);text-underline-offset:3px}

/* ---------- header ---------- */
header.site{position:sticky;top:0;z-index:60;background:var(--ink);border-bottom:3px solid var(--acid)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;height:70px;gap:16px}
.brand{font-family:var(--head);font-size:19px;letter-spacing:-.02em;color:#fff;text-decoration:none;line-height:1;display:flex;align-items:center;gap:9px}
.brand .mark{flex:0 0 auto;width:30px;height:30px;background:var(--acid);color:var(--ink);display:grid;place-items:center;font-size:15px;font-family:var(--head)}
.brand .t2{color:var(--acid)}
nav.main{display:flex;gap:26px;align-items:center}
nav.main a{font-family:var(--head);font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--body-cream);text-decoration:none;padding:6px 0;border-bottom:3px solid transparent}
nav.main a:hover,nav.main li.current-menu-item>a{border-bottom-color:var(--acid);color:#fff}
nav.main ul{list-style:none;display:flex;gap:26px;align-items:center}
.burger{display:none;width:46px;height:46px;background:transparent;border:2px solid var(--acid);cursor:pointer;align-items:center;justify-content:center;flex:0 0 auto}
.burger span{display:block;width:20px;height:2px;background:var(--acid);position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:20px;height:2px;background:var(--acid)}
.burger span::before{top:-6px}.burger span::after{top:6px}

.scrim{position:fixed;inset:0;background:rgba(11,11,12,.7);z-index:70;display:none}
.scrim.open{display:block}
/* NOTE: kept a direct child of body. A fixed panel inside an ancestor with
   backdrop-filter positions against that ancestor, which silently breaks slide-ins. */
.mobmenu{position:fixed;top:0;right:0;bottom:0;width:min(84vw,340px);background:var(--ink);z-index:80;transform:translateX(100%);transition:transform .22s ease;border-left:3px solid var(--acid);padding:22px 24px;display:flex;flex-direction:column;gap:4px;overflow-y:auto}
.mobmenu.open{transform:translateX(0)}
.mobmenu ul{list-style:none}
.mobmenu a{display:block;font-family:var(--head);font-size:20px;text-transform:uppercase;color:var(--body-cream);text-decoration:none;padding:13px 0;border-bottom:1px solid var(--line-dark)}
.mobclose{align-self:flex-end;background:transparent;border:2px solid var(--acid);color:var(--acid);font-family:var(--head);font-size:14px;padding:8px 12px;margin-bottom:14px;cursor:pointer}

/* ---------- buttons ---------- */
.btn{display:inline-block;font-family:var(--head);text-transform:uppercase;font-size:14px;letter-spacing:.05em;padding:16px 26px;text-decoration:none;border:3px solid var(--acid);cursor:pointer}
.btn-acid{background:var(--acid);color:var(--ink)}
.btn-acid:hover{background:#fff;border-color:#fff}
.btn-ghost{background:transparent;color:var(--acid)}
.btn-ghost:hover{background:var(--acid);color:var(--ink)}
.btn-ink{background:var(--ink);color:var(--acid);border-color:var(--ink)}

/* ---------- hero ---------- */
.hero{background:var(--ink);padding:70px 0 0;position:relative;overflow:hidden}
.hero .wrap{position:relative;z-index:2}

/* Live bars behind the headline. Echoes the leaderboard, and fills the dead space
   to the right of a short headline. Animates transform only, so it costs nothing.
   Masked so it fades away from the text, and off entirely on mobile where the
   headline uses the full width. */
.hero .viz{position:absolute;top:0;right:0;bottom:0;width:44%;z-index:1;pointer-events:none;
  display:flex;align-items:flex-end;gap:1.6%;padding:14% 4% 74px 0;opacity:.26;
  -webkit-mask-image:linear-gradient(to left,#000 35%,transparent 100%);
  mask-image:linear-gradient(to left,#000 35%,transparent 100%)}
.hero .viz i{display:block;flex:1 1 0;height:100%;background:var(--acid);transform-origin:bottom center;
  transform:scaleY(var(--a,.4));animation:aiedbar var(--d,7s) ease-in-out var(--delay,0s) infinite alternate}
@keyframes aiedbar{from{transform:scaleY(var(--a,.4))}to{transform:scaleY(var(--b,.9))}}
@media(prefers-reduced-motion:reduce){.hero .viz i{animation:none}}
@media(max-width:860px){.hero .viz{display:none}}
.hero h1{font-family:var(--head);color:#fff;letter-spacing:-.035em;line-height:.88;font-size:clamp(46px,9.2vw,124px);text-transform:uppercase;margin-bottom:26px}
.hero h1 .hl{color:var(--acid)}
.hero .sub{font-size:clamp(17px,2vw,21px);max-width:52ch;color:var(--body-cream);margin-bottom:32px}
.hero .ctas{display:flex;flex-wrap:wrap;gap:12px;padding-bottom:56px}

.ticker{background:var(--acid);color:var(--ink);font-family:var(--head);text-transform:uppercase;font-size:14px;letter-spacing:.06em;padding:12px 0;border-top:3px solid var(--ink);white-space:nowrap;overflow:hidden}
.ticker .row{display:inline-block;animation:aiedslide 34s linear infinite}
.ticker span{padding:0 22px}
@keyframes aiedslide{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.ticker .row{animation:none}}

/* ---------- sections ---------- */
section{padding:74px 0}
.sechead{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;border-bottom:4px solid currentColor;padding-bottom:14px;margin-bottom:34px;flex-wrap:wrap}
.sechead h2{font-family:var(--head);text-transform:uppercase;letter-spacing:-.02em;line-height:.95;font-size:clamp(30px,5vw,54px)}
.sechead .note{font-family:var(--head);font-size:12px;letter-spacing:.12em;text-transform:uppercase;padding-bottom:5px}
.on-ink .sechead h2{color:#fff}
.on-ink .sechead .note{color:var(--acid)}
.on-cream .sechead{color:var(--ink)}
.on-cream .sechead .note{color:var(--muted-on-cream)}

/* ---------- leaderboard ---------- */
.lb{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:2px;background:var(--line-dark)}
.lbcard{background:var(--ink);padding:24px 22px}
.lbcard .cat{font-family:var(--head);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--acid);margin-bottom:16px}
.lbrow{display:flex;align-items:center;gap:12px;padding:9px 0}
.lbrow .pos{font-family:var(--head);font-size:15px;width:22px;color:var(--body-cream)}
.lbrow .nm{flex:1;font-size:15px;color:var(--body-cream)}
.lbrow .pct{font-family:var(--head);font-size:17px;color:var(--acid)}
.lbrow.up .nm::after{content:" \25B2";color:var(--acid);font-size:11px}
.lbrow.down .nm::after{content:" \25BC";color:var(--hot);font-size:11px}
.bar{height:5px;background:var(--line-dark)}
.bar i{display:block;height:100%;background:var(--acid)}
.receipt{font-size:12px;color:var(--body-cream);text-decoration:underline;text-underline-offset:3px}

/* ---------- verdict cards ---------- */
.verdicts{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:22px}
.vcard{border:3px solid var(--ink);background:#fff;display:flex;flex-direction:column;text-decoration:none}
.vcard .top{display:flex;align-items:stretch;border-bottom:3px solid var(--ink)}
.vcard .score{font-family:var(--head);font-size:40px;line-height:1;padding:16px 18px;background:var(--acid);color:var(--ink);display:grid;place-items:center;min-width:92px}
.vcard .score.mid{background:#FFD54A}
.vcard .score.bad{background:var(--hot);color:#fff}
.vcard .who{padding:14px 16px;flex:1}
.vcard .who .nm{font-family:var(--head);text-transform:uppercase;font-size:19px;line-height:1.1;color:var(--ink)}
.vcard .who .cat{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-on-cream);margin-top:4px}
.vcard .body{padding:18px 16px;flex:1}
.vcard .body p{font-size:15.5px}
.vcard .foot{padding:12px 16px;border-top:1px solid var(--line-light);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-family:var(--head);color:var(--muted-on-cream)}

/* ---------- category grid ---------- */
.cats{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--ink)}
.cat-a{background:var(--paper);padding:28px 22px;text-decoration:none;display:block;transition:background .15s}
.cat-a:hover{background:var(--acid)}
.cat-a.dark{background:var(--ink)}
.cat-a.dark h3{color:#fff}
.cat-a.dark p{color:var(--body-cream)}
.cat-a.dark .n{color:var(--acid)}
.cat-a.dark:hover{background:var(--line-dark)}
.cat-a .n{font-family:var(--head);font-size:12px;color:var(--muted-on-cream);letter-spacing:.1em}
.cat-a:hover .n{color:var(--ink)}
.cat-a h3{font-family:var(--head);text-transform:uppercase;font-size:23px;line-height:1.05;margin:8px 0;color:var(--ink);letter-spacing:-.01em}
.cat-a p{font-size:14.5px;color:var(--body-ink)}

/* ---------- band ---------- */
.band{background:var(--acid);color:var(--ink);padding:64px 0}
.band .inner{display:grid;grid-template-columns:1.35fr 1fr;gap:44px;align-items:center}
.band h2{font-family:var(--head);text-transform:uppercase;font-size:clamp(30px,4.6vw,50px);line-height:.95;letter-spacing:-.02em;margin-bottom:16px}
.band p{font-size:17.5px;margin-bottom:14px;max-width:56ch}
.band .own{border:3px solid var(--ink);padding:18px 20px}
.band .own .k{font-family:var(--head);font-size:11px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px;display:block}
.band .own p{font-size:15px;margin:0 0 10px}
.band .own p:last-child{margin:0}

/* ---------- method ---------- */
.method{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--line-dark)}
.mcell{background:var(--ink);padding:26px 22px}
.mcell .num{font-family:var(--head);font-size:38px;color:var(--acid);line-height:1;margin-bottom:10px}
.mcell h3{font-family:var(--head);text-transform:uppercase;font-size:16px;color:#fff;margin-bottom:8px;letter-spacing:.02em}
.mcell p{font-size:15px;color:var(--body-cream)}

/* ---------- single review ---------- */
.rhead{background:var(--ink);padding:52px 0 44px}
.rhead .meta{font-family:var(--head);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--acid);margin-bottom:14px}
.rhead h1{font-family:var(--head);text-transform:uppercase;color:#fff;font-size:clamp(36px,6.5vw,76px);line-height:.92;letter-spacing:-.03em;margin-bottom:20px}
.rhead .standfirst{font-size:19px;color:var(--body-cream);max-width:58ch}
.scorebox{display:flex;align-items:center;gap:20px;margin-top:28px;flex-wrap:wrap}
.scorebox .big{font-family:var(--head);font-size:64px;line-height:1;background:var(--acid);color:var(--ink);padding:14px 22px}
.scorebox .big.mid{background:#FFD54A}
.scorebox .big.bad{background:var(--hot);color:#fff}
.scorebox .lbl{font-family:var(--head);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--acid)}
.scorebox .dt{font-size:14px;color:var(--body-cream)}

.proscons{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--ink);margin:34px 0}
.pc{padding:24px 22px;background:var(--paper)}
.pc h3{font-family:var(--head);text-transform:uppercase;font-size:15px;letter-spacing:.08em;margin-bottom:12px;color:var(--ink)}
.pc ul{list-style:none}
.pc li{padding:7px 0 7px 22px;position:relative;font-size:15.5px;border-bottom:1px solid var(--line-light)}
.pc li:last-child{border-bottom:0}
.pc.good li::before{content:"+";position:absolute;left:0;font-family:var(--head);color:#0F7D57}
.pc.bad li::before{content:"\2212";position:absolute;left:0;font-family:var(--head);color:var(--hot)}

.entry{font-size:18px;line-height:1.7}
.entry h2{font-family:var(--head);text-transform:uppercase;font-size:clamp(24px,3.4vw,34px);line-height:1.05;margin:44px 0 14px;color:var(--ink)}
.entry h3{font-family:var(--head);text-transform:uppercase;font-size:20px;margin:30px 0 10px;color:var(--ink)}
.entry p{margin:0 0 18px}
.entry ul,.entry ol{margin:0 0 20px 22px}
.entry li{margin:0 0 8px}
.entry a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}
.entry blockquote{border-left:5px solid var(--acid);padding:6px 0 6px 20px;margin:26px 0;font-size:20px}
.entry img{margin:26px 0}
.entry table{width:100%;border-collapse:collapse;margin:24px 0}
.entry th{background:var(--ink);color:#fff;font-family:var(--head);font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:11px 13px;text-align:left}
.entry td{padding:11px 13px;border-top:1px solid var(--line-light)}
.tablewrap{overflow-x:auto}

/* affiliate CTA */
.affbox{border:3px solid var(--ink);background:#fff;padding:22px;margin:32px 0;display:flex;gap:20px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.affbox .t{font-family:var(--head);text-transform:uppercase;font-size:19px;color:var(--ink);line-height:1.15}
.affbox .n{font-size:13px;color:var(--muted-on-cream);margin-top:6px}

/* ---------- best-of / taxonomy ----------
   Ranked tools are a grid, not a thin list. Prose above and below stays at
   reading width; the cards break out to the full container. */
.rankgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:20px;margin:0 0 10px}
.rank{border:3px solid var(--ink);background:#fff;display:flex;flex-direction:column;height:100%}
.rank .rtop{display:flex;align-items:stretch;border-bottom:3px solid var(--ink)}
.rank .pos{font-family:var(--head);font-size:26px;background:var(--ink);color:var(--acid);
  padding:14px 0;display:grid;place-items:center;width:64px;flex:0 0 64px}
.rank .nm{padding:13px 15px;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
.rank .nm h2{font-family:var(--head);text-transform:uppercase;font-size:19px;line-height:1.05;color:var(--ink);word-break:break-word}
.rank .nm .award{display:inline-block;align-self:flex-start;background:var(--acid);color:var(--ink);
  font-family:var(--head);font-size:10px;letter-spacing:.09em;text-transform:uppercase;padding:4px 8px;margin-top:7px}
.rank .sc{font-family:var(--head);font-size:26px;background:var(--acid);color:var(--ink);
  padding:14px 0;display:grid;place-items:center;width:70px;flex:0 0 70px}
.rank .sc.mid{background:#FFD54A}.rank .sc.bad{background:var(--hot);color:#fff}
.rank .rbody{padding:16px 15px;flex:1}
.rank .rbody p{font-size:15px}
.rank .rfoot{padding:13px 15px;border-top:1px solid var(--line-light);display:flex;gap:10px;
  align-items:center;justify-content:space-between;flex-wrap:wrap;font-size:12px;color:var(--muted-on-cream)}
.rank .rfoot .btn{padding:11px 16px;font-size:12px}
@media(max-width:560px){.rankgrid{grid-template-columns:1fr}}

.setnote{border:3px solid var(--ink);background:var(--acid);padding:20px 22px;margin:0 0 34px}
.setnote .k{font-family:var(--head);font-size:11px;letter-spacing:.14em;text-transform:uppercase;display:block;margin-bottom:8px}
.setnote p{font-size:15.5px;color:var(--ink)}

/* ---------- footer ---------- */
footer.site{background:var(--ink);color:var(--body-cream);padding:56px 0 34px;border-top:3px solid var(--acid)}
footer.site .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:34px;margin-bottom:36px}
footer.site h4{font-family:var(--head);font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--acid);margin-bottom:13px}
footer.site ul{list-style:none}
footer.site a{display:block;color:var(--body-cream);text-decoration:none;padding:5px 0;font-size:15px}
footer.site a:hover{color:var(--acid)}
footer.site .legal{border-top:1px solid var(--line-dark);padding-top:22px;font-size:13.5px;color:var(--body-cream)}

.pagination{display:flex;gap:8px;flex-wrap:wrap;margin-top:34px}
.pagination .page-numbers{font-family:var(--head);padding:11px 15px;border:2px solid var(--ink);text-decoration:none;color:var(--ink)}
.pagination .current{background:var(--ink);color:var(--acid)}

@media(max-width:900px){
  .cats{grid-template-columns:repeat(2,1fr)}
  .method{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:860px){
  nav.main{display:none}
  .burger{display:flex;width:42px;height:42px}
  header.site .wrap{gap:10px;height:64px}
  .brand{font-size:15px;gap:7px;min-width:0;flex:1 1 auto}
  .brand .mark{width:26px;height:26px;font-size:13px}
  .band .inner{grid-template-columns:1fr;gap:26px}
  section{padding:54px 0}
  .hero{padding-top:48px}
}
@media(max-width:640px){
  .proscons{grid-template-columns:1fr}
}
@media(max-width:560px){
  .cats{grid-template-columns:1fr}
  .method{grid-template-columns:1fr}
  body{font-size:16px}
  .entry{font-size:17px}
}

/* ---------- forms and listing pages ---------- */
.aied-form .f{margin:0 0 18px}
.aied-form label{display:block;font-family:var(--head);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin-bottom:7px}
.aied-form input,.aied-form textarea{width:100%;border:3px solid var(--ink);background:#fff;padding:13px 14px;font-family:var(--sans);font-size:16px;color:var(--body-ink)}
.aied-form input:focus,.aied-form textarea:focus{outline:3px solid var(--acid);outline-offset:1px}
.aied-form .hint{display:block;font-size:13.5px;color:var(--muted-on-cream);margin-top:6px;text-transform:none;letter-spacing:0;font-family:var(--sans)}
.aied-form button{margin-top:6px}

.twobox{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--ink);margin:0 0 8px}
.twobox .bx{background:var(--acid);padding:22px 20px}
.twobox .bx.neg{background:var(--ink)}
.twobox .bx .k{display:block;font-family:var(--head);font-size:11px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:12px;color:var(--ink)}
.twobox .bx.neg .k{color:var(--acid)}
.twobox .bx ul{list-style:none}
.twobox .bx li{font-size:15px;padding:7px 0 7px 18px;position:relative;color:var(--ink)}
.twobox .bx li::before{content:"\2022";position:absolute;left:0;font-family:var(--head)}
/* dark half: white body copy, never grey */
.twobox .bx.neg li{color:var(--body-cream)}
@media(max-width:640px){.twobox{grid-template-columns:1fr}}

/* ---------- editorial furniture for long-form pages ---------- */
.entry .lead{font-size:clamp(20px,2.6vw,26px);line-height:1.4;font-weight:600;color:var(--ink);margin:0 0 26px}
.entry .shout{font-family:var(--head);text-transform:uppercase;font-size:clamp(24px,4vw,40px);
  line-height:1;letter-spacing:-.02em;color:var(--ink);background:var(--acid);
  padding:26px 24px;margin:38px 0;border:3px solid var(--ink)}
.entry .flat{border-left:6px solid var(--ink);padding:4px 0 4px 22px;margin:30px 0;
  font-size:clamp(18px,2.2vw,22px);line-height:1.45;font-weight:600;color:var(--ink)}
.entry .dark{background:var(--ink);color:var(--body-cream);padding:26px 24px;margin:34px 0}
.entry .dark p{color:var(--body-cream)}
.entry .dark p:last-child{margin:0}
.entry .dark strong{color:var(--acid)}
.entry .dark h3{color:#fff;font-family:var(--head);text-transform:uppercase;font-size:17px;margin:0 0 12px;letter-spacing:.04em}
.entry hr{border:0;border-top:3px solid var(--ink);margin:44px 0}


/* ---------- entry copy on dark surfaces ----------
   HARD RULE: never dark text on a dark background. .entry defaults to ink
   headings for cream pages, so every one of them is overridden here. */
.on-ink .entry,.on-ink .entry p,.on-ink .entry li,.on-ink .entry td{color:var(--body-cream)}
.on-ink .entry h2,.on-ink .entry h3,.on-ink .entry h4,.on-ink .entry strong{color:#fff}
.on-ink .entry a{color:var(--acid);text-decoration-color:var(--acid)}
.on-ink .entry blockquote{border-left-color:var(--acid);color:#fff}
.on-ink .entry th{background:var(--acid);color:var(--ink)}
.on-ink .entry td{border-top-color:var(--line-dark)}
.on-ink .entry .lead{color:#fff}
.on-ink .entry .flat{border-left-color:var(--acid);color:#fff}
