/* Shared layout for tool pages built on sah_tool_page_head()/foot().
   Same look as the original tool templates (copied from their inline styles). */
 block below, so this one file is all you need to replace.
 *
 * Crawls the submitted site (homepage + internal links it finds, up to
 * a safe limit) and checks each page for common on-page SEO issues.
 * Every issue comes with a plain-English suggested fix.
 *
 * Built with only WordPress's own wp_remote_get() and PHP's built-in
 * DOMDocument, no external libraries, nothing extra to load.
 */
get_header();

$sah_slug    = 'seo-analyzer';
$sah_content = function_exists('sah_get_tool_data') ? sah_get_tool_data($sah_slug) : null;
if ($sah_content) {
    sah_tool_app_schema('SiteAuditHub SEO Analyzer', $sah_content['lead'], get_permalink(), $sah_content);
    sah_faq_schema($sah_content['faq']);
}
$sah_tools   = function_exists('sah_get_tools_list') ? sah_get_tools_list() : [];

// How many pages we're willing to check in one go.
require_once get_template_directory() . '/inc/tool-functions/seo-analyzer.php';

$sah_crawl = null;
if (isset($_POST['sah_url']) && !empty($_POST['sah_url'])) {
    $sah_submitted_url = sah_clean_submitted_url($_POST['sah_url']);
    if (!filter_var($sah_submitted_url, FILTER_VALIDATE_URL)) {
        $sah_crawl = ['error' => 'That does not look like a valid URL.', 'pages' => []];
    } elseif (!sah_is_safe_public_url($sah_submitted_url)) {
        $sah_crawl = ['error' => 'That URL points to a private or internal address, which this tool cannot scan.', 'pages' => []];
    } else {
        $sah_crawl = sah_run_seo_crawl($sah_submitted_url);
    }
}
?>

<style>
/* ===================================================================
   Everything this page's result cards need. Self-contained on purpose
   so this one PHP file is the only thing you ever need to replace.
   =================================================================== */

/* Result rows, show instantly, no fade/scroll animation */
.result-row{
  display:flex;align-items:center;gap:16px;background:var(--glass);border:1px solid var(--border);border-radius:12px;
  padding:16px 20px;margin-bottom:10px;
}
.result-row .score-badge{
  width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-size:.85rem;font-weight:700;flex-shrink:0;
}
.result-row.score-green .score-badge{background:rgba(95,219,142,0.15);color:var(--green);border:1px solid var(--green);}
.result-row.score-amber .score-badge{background:rgba(240,184,96,0.15);color:var(--amber);border:1px solid var(--amber);}
.result-row.score-red .score-badge{background:rgba(255,107,107,0.15);color:#FF6B6B;border:1px solid #FF6B6B;}
.result-row .result-info{flex:1;min-width:0;}
.result-row .result-url{font-family:var(--mono);font-size:.85rem;color:var(--text);word-break:break-all;}
.result-row .result-issues{font-size:.8rem;color:var(--text-faint);margin-top:4px;}

/* Issue + suggestion cards */
.issue-list{list-style:none !important;margin:14px 0 0 !important;padding:0 !important;display:flex;flex-direction:column;gap:10px;}
.issue-item{
  background:var(--bg-2);border:1px solid var(--border);border-left:3px solid var(--amber);
  border-radius:10px;padding:12px 16px;text-align:left;
}
.issue-item.is-critical{border-left-color:#FF6B6B;}
.issue-label{
  display:flex;align-items:center;gap:8px;font-size:.86rem;font-weight:600;color:var(--text);margin-bottom:6px;
}
.issue-label::before{content:'⚠';color:var(--amber);font-size:.8rem;flex-shrink:0;}
.issue-item.is-critical .issue-label::before{content:'✕';color:#FF6B6B;}
.issue-suggestion{
  font-size:.8rem;color:var(--text-dim);padding-left:22px;line-height:1.6;text-align:left;
}
.issue-suggestion .tag{
  font-family:var(--mono);font-size:.68rem;font-weight:700;color:var(--green);text-transform:uppercase;
  letter-spacing:.04em;margin-right:6px;
}
.no-issues-note{font-size:.85rem;color:var(--green);display:flex;align-items:center;gap:8px;}
.no-issues-note::before{content:'✓';font-weight:700;}



/* ===================================================================
   Compact hero, centered, icon on top, fits within one screen view.
   =================================================================== */
.tool-hero{padding:36px 0 20px !important;}
.tool-hero .tool-hero-icon{
  width:60px !important;height:60px !important;margin:0 auto 14px !important;position:relative;
  background:linear-gradient(135deg,rgba(91,155,240,0.22),rgba(95,219,142,0.22)) !important;
  box-shadow:0 8px 24px -10px rgba(95,219,142,0.35);
}
.tool-hero .tool-hero-icon svg{width:26px !important;height:26px !important;}
.tool-hero h1{font-size:clamp(1.6rem,4vw,2.2rem) !important;margin-bottom:8px !important;}
.tool-hero p.lead{font-size:.92rem !important;margin-bottom:0 !important;}
.scan-form{margin:22px auto 0 !important;}
.scan-form .scan-hint{margin-top:10px !important;}

/* Icon: continuous, infinite "live scan" animation, a soft pulsing
   glow ring plus a gentle breathing scale, so it never looks static. */
.tool-hero .tool-hero-icon::before{
  content:'';position:absolute;inset:-6px;border-radius:20px;
  border:1px solid var(--green);opacity:0;
  animation:sah-icon-ping 2.2s ease-out infinite;
}
@keyframes sah-icon-ping{
  0%{transform:scale(0.85);opacity:0;}
  40%{opacity:.7;}
  100%{transform:scale(1.35);opacity:0;}
}
.tool-hero .tool-hero-icon svg{
  animation:sah-icon-breathe 2.4s ease-in-out infinite;
  transform-origin:center;
}
@keyframes sah-icon-breathe{
  0%,100%{transform:scale(1) rotate(0deg);}
  50%{transform:scale(1.12) rotate(-6deg);}
}
@media(prefers-reduced-motion:reduce){
  .tool-hero .tool-hero-icon::before, .tool-hero .tool-hero-icon svg{animation:none;}
}

/* ===================================================================
   Full responsive pass, phone, large-phone, tablet, laptop, desktop.
   =================================================================== */
@media(max-width:640px){
  .scan-form-row{flex-direction:column;padding:12px;gap:10px;}
  .scan-form-row input{width:100%;text-align:center;padding:10px 12px;}
  .scan-form-row .btn{width:100%;justify-content:center;}
  .results-summary{padding:18px 20px;text-align:center;justify-content:center;}
  .results-summary > div{text-align:center;width:100%;}
  .results-summary div[style*="text-align:right"]{text-align:center !important;}
  .result-row{flex-direction:column;align-items:flex-start !important;gap:10px;padding:14px 16px;}
  .result-row .score-badge{align-self:flex-start;}
}

/* Small phones */
@media(max-width:400px){
  .tool-hero-icon{width:50px !important;height:50px !important;}
  .tool-hero-icon svg{width:22px !important;height:22px !important;}
  .tool-hero h1{font-size:1.35rem !important;}
  .issue-item{padding:10px 12px;}
  .issue-label{font-size:.8rem;}
  .issue-suggestion{font-size:.75rem;padding-left:18px;}
}
/* ===================================================================
   "Why this tool" feature icons, SVG only, each animating forever.
   =================================================================== */
.why-card-icon{
  width:44px;height:44px;border-radius:12px;margin-bottom:16px;position:relative;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,rgba(91,155,240,0.16),rgba(95,219,142,0.16));
}
.why-card-icon svg{width:20px;height:20px;color:var(--green);}
.why-card:nth-child(even) .why-card-icon svg{color:var(--blue);}
.why-card-icon svg{
  animation:sah-feature-spin 4s ease-in-out infinite;
  transform-origin:center;
}
@keyframes sah-feature-spin{
  0%,100%{transform:scale(1) rotate(0deg);}
  50%{transform:scale(1.15) rotate(8deg);}
}
.why-card-icon::after{
  content:'';position:absolute;inset:-4px;border-radius:14px;border:1px solid var(--green);opacity:0;
  animation:sah-feature-ring 3s ease-out infinite;
}
.why-card:nth-child(even) .why-card-icon::after{border-color:var(--blue);}
@keyframes sah-feature-ring{
  0%{transform:scale(0.9);opacity:0;}
  40%{opacity:.5;}
  100%{transform:scale(1.3);opacity:0;}
}
@media(prefers-reduced-motion:reduce){
  .why-card-icon svg, .why-card-icon::after{animation:none;}
}


/* Same scroll safety net the original tool templates use. */
html, body{ overflow-y: auto !important; height: auto !important; }
body.locked{ overflow: auto !important; }

/* ===================================================================
   Building blocks for the browser-based tools (generators, previews).
   Plain CSS, no frameworks, only loaded on the newer tool pages.
   =================================================================== */
.sah-app{max-width:1060px;margin:28px auto 0;text-align:left;background:var(--glass);border:1px solid var(--border);border-radius:20px;padding:26px;}
.sah-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start;}
.sah-grid-2 > *{min-width:0;}
.sah-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;}
.sah-field label{font-size:.85rem;font-weight:600;color:var(--text);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.sah-field label small{font-weight:400;color:var(--text-faint);}
.sah-field input,.sah-field textarea,.sah-field select{
  width:100%;background:var(--bg-2);border:1px solid var(--border);border-radius:10px;color:var(--text);
  padding:11px 13px;font:inherit;font-size:.9rem;
}
.sah-field textarea{resize:vertical;min-height:84px;}
.sah-field input:focus,.sah-field textarea:focus,.sah-field select:focus{outline:none;border-color:var(--blue);}
.sah-field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.sah-counter{font-family:var(--mono);font-size:.72rem;font-weight:500;color:var(--text-faint);}
.sah-meter{height:4px;border-radius:4px;background:var(--border);overflow:hidden;}
.sah-meter span{display:block;height:100%;width:0;background:var(--text-faint);transition:width .2s;}
.sah-meter span.is-ok{background:var(--green);}
.sah-meter span.is-short{background:var(--amber);}
.sah-meter span.is-long{background:#FF6B6B;}
.sah-checks{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:.85rem;color:var(--text-dim);}
.sah-checks label{display:flex;align-items:center;gap:7px;cursor:pointer;}
.sah-checks input{accent-color:var(--green);}
.sah-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;}
.sah-tab{background:var(--bg-2);border:1px solid var(--border);color:var(--text-dim);border-radius:999px;padding:7px 14px;font-size:.8rem;cursor:pointer;}
.sah-tab.active{border-color:var(--green);color:var(--text);}
.sah-note{font-size:.75rem;color:var(--text-faint);margin:8px 0 14px;}
.sah-tips{list-style:none !important;margin:0 0 18px !important;padding:0 !important;display:flex;flex-direction:column;gap:6px;}
.sah-tips li{font-size:.82rem;color:var(--text-dim);padding-left:22px;position:relative;line-height:1.5;}
.sah-tips li::before{position:absolute;left:0;top:0;font-weight:700;}
.sah-tips li.is-ok::before{content:'✓';color:var(--green);}
.sah-tips li.is-warn::before{content:'!';color:var(--amber);}
.sah-tips li.is-bad::before{content:'✕';color:#FF6B6B;}
.sah-code-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:.85rem;font-weight:600;color:var(--text);}
.sah-code-head .btn{padding:7px 14px;font-size:.78rem;}
.sah-code{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:14px;font-family:var(--mono);font-size:.76rem;line-height:1.6;color:var(--text-dim);white-space:pre-wrap;word-break:break-all;max-height:380px;overflow:auto;margin:0;}

/* Search result preview: a neutral light card, sized like a real result. */
.sah-serp{background:#fff;color:#202124;border-radius:12px;padding:16px 18px;font-family:Arial,sans-serif;max-width:640px;}
.sah-serp[data-mode="mobile"]{max-width:380px;}
.sah-serp-site{display:flex;align-items:center;gap:10px;font-size:12px;line-height:1.35;color:#4d5156;}
.sah-serp-site strong{color:#202124;font-weight:400;font-size:14px;}
.sah-serp-fav{width:26px;height:26px;border-radius:50%;background:#e8eaed;color:#3c4043;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;}
.sah-serp-title{color:#1a0dab;font-size:20px;line-height:1.3;margin:8px 0 4px;word-break:break-word;}
.sah-serp-desc{color:#4d5156;font-size:14px;line-height:1.58;word-break:break-word;}

/* Social share cards: neutral layouts, labelled by network. */
.sah-social-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;}
.sah-social-card{background:var(--bg-2);border:1px solid var(--border);border-radius:14px;overflow:hidden;}
.sah-social-card .net{font-family:var(--mono);font-size:.7rem;color:var(--green);padding:10px 14px;border-bottom:1px solid var(--border);letter-spacing:.05em;text-transform:uppercase;}
.sah-social-card .img{aspect-ratio:1.91/1;background:var(--bg) center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:.8rem;}
.sah-social-card .body{padding:12px 14px;}
.sah-social-card .dom{font-size:.72rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:.03em;}
.sah-social-card .ttl{font-weight:700;color:var(--text);font-size:.95rem;line-height:1.35;margin:4px 0;word-break:break-word;}
.sah-social-card .dsc{font-size:.82rem;color:var(--text-dim);line-height:1.45;word-break:break-word;}
.sah-social-card.is-compact{display:grid;grid-template-columns:110px 1fr;}
.sah-social-card.is-compact .net{grid-column:1 / -1;}
.sah-social-card.is-compact .img{aspect-ratio:1/1;}

/* Data tables inside tool results */
.sah-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;margin-top:12px;}
.sah-data{width:100%;border-collapse:collapse;font-size:.82rem;min-width:420px;}
.sah-data th,.sah-data td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top;word-break:break-word;}
.sah-data th{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text);background:rgba(91,155,240,0.10);}
.sah-data tr:last-child td{border-bottom:0;}
.sah-data td:first-child{color:var(--text);font-weight:600;}
.sah-data td code{font-family:var(--mono);font-size:.78rem;color:var(--text-dim);}
.sah-pill{display:inline-block;font-family:var(--mono);font-size:.68rem;font-weight:700;padding:3px 9px;border-radius:999px;}
.sah-pill.ok{background:rgba(95,219,142,0.15);color:var(--green);}
.sah-pill.warn{background:rgba(240,184,96,0.15);color:var(--amber);}
.sah-pill.bad{background:rgba(255,107,107,0.15);color:#FF6B6B;}
.sah-block-title{font-family:var(--display);font-size:1.05rem;color:var(--text);margin:20px 0 4px;}
.sah-mode-switch{display:flex;justify-content:center;gap:8px;margin:22px auto 0;flex-wrap:wrap;}
.scan-form textarea{width:100%;background:var(--bg-2);border:1px solid var(--border);border-radius:12px;color:var(--text);padding:12px 14px;font:inherit;font-size:.9rem;resize:vertical;}
.sah-inline-field{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:12px;font-size:.85rem;color:var(--text-dim);align-items:center;}
.sah-inline-field input,.sah-inline-field select{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:9px 12px;font:inherit;font-size:.85rem;}

@media(max-width:860px){
  .sah-grid-2,.sah-social-grid{grid-template-columns:1fr;}
  .sah-app{padding:18px;}
}
@media(max-width:480px){
  .sah-field-row{grid-template-columns:1fr;}
  .sah-social-card.is-compact{grid-template-columns:84px 1fr;}
}
.sah-social-card .img img{width:100%;height:100%;object-fit:cover;display:block;}
.sah-badge-options{display:flex;flex-direction:column;gap:10px;}
.sah-badge-opt{display:flex !important;flex-wrap:nowrap !important;align-items:center;gap:12px;justify-content:flex-start !important;cursor:pointer;padding:10px;border:1px solid var(--border);border-radius:12px;}
.sah-badge-opt input{accent-color:var(--green);}
.sah-badge-swatch{display:flex;align-items:center;justify-content:center;padding:8px;border-radius:8px;background:var(--bg);width:216px;max-width:60%;flex-shrink:1;}
.sah-badge-swatch.sah-badge-light{background:#eef2f8;}
.sah-badge-swatch img{display:block;max-width:100%;height:auto;}
.sah-badge-preview{display:flex;align-items:center;justify-content:center;min-height:110px;border:1px dashed var(--border-hi);border-radius:12px;background:repeating-conic-gradient(rgba(255,255,255,0.03) 0 25%,transparent 0 50%) 0 0/20px 20px;}
.sah-social-card{text-align:left;}
.sah-social-card.is-compact{grid-template-rows:auto auto;align-items:start;align-content:start;}
.sah-social-card.is-compact .img{aspect-ratio:auto;height:110px;}
.issue-item.is-ok{border-left-color:var(--green);}
.issue-item.is-ok .issue-label::before{content:'✓';color:var(--green);}
.results-panel .sah-table-wrap,.results-panel .sah-tips,.results-panel .sah-code{text-align:left;}
.sah-badge-opt input{width:auto !important;flex:0 0 auto;padding:0;}
