/*
Theme Name: DataForge Toolkit
Theme URI: https://example.com/dataforge
Author: DataForge
Author URI: https://example.com
Description: A fast, SEO-optimized, accessible WordPress theme for test-data generator tools (address, identity, contact, test cards, sample itinerary with PDF). Dark mode, 26-language switcher (RTL ready), ad-code slots, automatic sitemap/robots/IndexNow, schema markup, hardened security defaults. Fully responsive.
Version: 2.0.0
Requires at least: 6.0
Tested up to: 6.6
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: dataforge
Tags: tools, seo, dark-mode, translation-ready, rtl-language-support, custom-colors
*/

:root{
  --df-bg:#f4f6f8;
  --df-surface:#ffffff;
  --df-surface-2:#eef1f4;
  --df-border:#dde2e8;
  --df-text:#15202b;
  --df-text-soft:#5b6672;
  --df-accent:#1f7a8c;
  --df-accent-strong:#155e6c;
  --df-accent-2:#c2693a;
  --df-on-accent:#ffffff;
  --df-radius:12px;
  --df-shadow:0 1px 2px rgba(21,32,43,.05),0 8px 30px rgba(21,32,43,.06);
  --df-maxw:1140px;
  --df-font:"IBM Plex Sans","Segoe UI",system-ui,-apple-system,Tahoma,sans-serif;
  --df-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
}
html[data-theme="dark"]{
  --df-bg:#10161c;--df-surface:#172029;--df-surface-2:#1f2a35;--df-border:#2c3a47;
  --df-text:#e9edf1;--df-text-soft:#9aa7b3;--df-accent:#3aa7bb;--df-accent-strong:#2bb6c2;
  --df-accent-2:#e0915f;--df-shadow:0 1px 2px rgba(0,0,0,.4),0 8px 30px rgba(0,0,0,.4);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--df-bg);color:var(--df-text);font-family:var(--df-font);
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  transition:background .2s,color .2s}
body.df-rtl{direction:rtl}
img{max-width:100%;height:auto}
a{color:var(--df-accent);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:3px solid var(--df-accent);outline-offset:2px;border-radius:4px}
h1,h2,h3{line-height:1.2;letter-spacing:-.01em}

.df-container{width:100%;max-width:var(--df-maxw);margin:0 auto;padding:0 18px}
.df-skip-link{position:absolute;left:-9999px;top:0;z-index:999;background:var(--df-accent);color:#fff;padding:10px 16px}
.df-skip-link:focus{left:0}

/* Header */
.df-header{position:sticky;top:0;z-index:50;background:var(--df-surface);border-bottom:1px solid var(--df-border)}
.df-header-inner{display:flex;align-items:center;gap:14px;min-height:62px}
.df-brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.1rem;color:var(--df-text);flex:0 0 auto}
.df-brand .df-logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--df-accent),var(--df-accent-2));
  display:grid;place-items:center;color:#fff;font-weight:800;font-size:.85rem}
.df-nav{display:flex;gap:4px;align-items:center;margin-inline-start:auto}
.df-nav>a,.df-dropdown>button{color:var(--df-text-soft);padding:9px 12px;border-radius:8px;font-size:.94rem;
  font-weight:500;background:none;border:0;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.df-nav>a:hover,.df-dropdown>button:hover{background:var(--df-surface-2);color:var(--df-text);text-decoration:none}

.df-dropdown{position:relative}
.df-dropdown>button::after{content:"\25BE";font-size:.7rem;opacity:.7}
.df-menu{position:absolute;inset-inline-start:0;top:calc(100% + 6px);min-width:240px;background:var(--df-surface);
  border:1px solid var(--df-border);border-radius:12px;box-shadow:var(--df-shadow);padding:6px;display:none;flex-direction:column}
.df-menu.open{display:flex}
.df-menu a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:var(--df-text);font-size:.92rem}
.df-menu a:hover{background:var(--df-surface-2);text-decoration:none}
.df-menu a .df-mi{width:26px;height:26px;border-radius:7px;background:var(--df-surface-2);display:grid;place-items:center;font-size:.9rem}

.df-icon-btn{display:inline-grid;place-items:center;height:38px;min-width:38px;padding:0 8px;gap:6px;
  border:1px solid var(--df-border);border-radius:9px;background:var(--df-surface);color:var(--df-text);cursor:pointer}
.df-icon-btn:hover{background:var(--df-surface-2)}
.df-icon-btn.df-lang-toggle{display:inline-flex;align-items:center;font-size:.85rem;font-weight:600}

.df-lang{position:relative}
.df-lang-menu{position:absolute;inset-inline-end:0;top:calc(100% + 6px);background:var(--df-surface);border:1px solid var(--df-border);
  border-radius:12px;box-shadow:var(--df-shadow);padding:8px;width:280px;max-height:340px;overflow:auto;display:none;
  grid-template-columns:1fr 1fr;gap:3px}
.df-lang-menu.open{display:grid}
.df-lang-menu button{text-align:start;background:none;border:0;color:var(--df-text);padding:8px 9px;border-radius:7px;cursor:pointer;font-size:.85rem}
.df-lang-menu button:hover,.df-lang-menu button[aria-current="true"]{background:var(--df-surface-2)}

.df-burger{display:none}

/* Hero */
.df-hero{padding:54px 0 22px;text-align:center}
.df-hero h1{font-size:clamp(1.7rem,4.5vw,2.7rem);margin:0 0 12px}
.df-hero p{font-size:1.05rem;color:var(--df-text-soft);max-width:620px;margin:0 auto}

/* Generator */
.df-section{padding:26px 0}
.df-tool{background:var(--df-surface);border:1px solid var(--df-border);border-radius:var(--df-radius);box-shadow:var(--df-shadow);overflow:hidden}
.df-tool-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;padding:18px 20px;border-bottom:1px solid var(--df-border);background:var(--df-surface-2)}
.df-tool-title{font-size:1.15rem;font-weight:700;margin:0;flex:1 1 100%}
.df-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.df-field label{font-size:.78rem;font-weight:600;color:var(--df-text-soft);text-transform:uppercase;letter-spacing:.03em}
.df-field select,.df-field input{font:inherit;padding:10px 12px;border-radius:9px;border:1px solid var(--df-border);
  background:var(--df-surface);color:var(--df-text);min-width:150px;max-width:100%}
.df-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font:inherit;font-weight:600;
  padding:11px 22px;border-radius:9px;border:1px solid transparent;transition:transform .08s,background .15s;white-space:nowrap}
.df-btn:active{transform:translateY(1px)}
.df-btn-primary{background:var(--df-accent);color:var(--df-on-accent)}
.df-btn-primary:hover{background:var(--df-accent-strong);text-decoration:none;color:#fff}
.df-btn-ghost{background:var(--df-surface);border-color:var(--df-border);color:var(--df-text)}
.df-btn-ghost:hover{background:var(--df-surface-2);text-decoration:none}

.df-tool-body{padding:18px 20px}
.df-output{display:grid;gap:9px}
.df-output:empty::before{content:attr(data-empty);color:var(--df-text-soft);font-size:.92rem}
.df-row{display:flex;align-items:center;gap:12px;justify-content:space-between;background:var(--df-bg);
  border:1px solid var(--df-border);border-radius:9px;padding:9px 13px}
.df-row .df-key{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--df-text-soft);min-width:96px;flex:0 0 auto}
.df-row .df-val{font-family:var(--df-mono);font-size:.92rem;word-break:break-word;flex:1}
.df-copy{background:none;border:1px solid var(--df-border);border-radius:6px;padding:4px 10px;cursor:pointer;color:var(--df-text-soft);font-size:.78rem;flex:0 0 auto}
.df-copy:hover{background:var(--df-surface-2);color:var(--df-text)}
.df-rec{border:1px dashed var(--df-border);border-radius:10px;padding:12px;display:grid;gap:8px}
.df-rec+.df-rec{margin-top:4px}

/* Boarding-pass sample */
.df-pass{position:relative;overflow:hidden;border-radius:12px;border:1px solid var(--df-border);background:var(--df-surface)}
.df-pass-top{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:var(--df-accent);color:#fff}
.df-pass-top .df-air{font-weight:700;letter-spacing:.05em}
.df-pass-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;padding:20px 18px}
.df-pass-grid .df-iata{font-size:1.9rem;font-weight:800;font-family:var(--df-mono)}
.df-pass-grid .df-cityname{font-size:.78rem;color:var(--df-text-soft)}
.df-pass-arrow{color:var(--df-accent);font-size:1.3rem}
.df-pass-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:0 18px 18px}
.df-pass-meta div span{display:block;font-size:.68rem;text-transform:uppercase;color:var(--df-text-soft)}
.df-pass-meta div b{font-family:var(--df-mono);font-size:.95rem;font-weight:600}
.df-pass::after{content:"SAMPLE \00B7 NOT VALID FOR TRAVEL";position:absolute;inset:0;display:grid;place-items:center;
  transform:rotate(-16deg);font-weight:800;font-size:1.3rem;letter-spacing:.08em;
  color:color-mix(in srgb,var(--df-accent-2) 30%,transparent);pointer-events:none;text-align:center}

.df-ad{margin:20px auto;text-align:center}
.df-ad:empty{display:none}

.df-content{max-width:760px;margin:0 auto}
.df-content h2{margin-top:1.8em}
.df-content code{font-family:var(--df-mono);background:var(--df-surface-2);padding:2px 6px;border-radius:5px}
.df-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.df-card{background:var(--df-surface);border:1px solid var(--df-border);border-radius:var(--df-radius);padding:20px;box-shadow:var(--df-shadow)}
.df-breadcrumbs{font-size:.84rem;color:var(--df-text-soft);padding:14px 0}
.df-breadcrumbs a{color:var(--df-text-soft)}

.df-footer{border-top:1px solid var(--df-border);margin-top:50px;background:var(--df-surface)}
.df-footer-inner{display:grid;gap:26px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));padding:40px 0}
.df-footer h4{font-size:.92rem;margin:0 0 10px}
.df-footer a{display:block;color:var(--df-text-soft);padding:3px 0;font-size:.9rem}
.df-footer .df-legal{border-top:1px solid var(--df-border);padding:16px 0;color:var(--df-text-soft);font-size:.82rem;text-align:center}

.df-toast{position:fixed;inset-block-end:22px;inset-inline-start:50%;transform:translateX(-50%) translateY(18px);
  background:var(--df-text);color:var(--df-bg);padding:9px 18px;border-radius:999px;opacity:0;
  transition:opacity .2s,transform .2s;z-index:99;font-size:.88rem}
.df-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media (max-width:860px){
  .df-burger{display:inline-grid}
  .df-nav{position:fixed;inset:62px 0 auto 0;flex-direction:column;align-items:stretch;gap:2px;
    background:var(--df-surface);border-bottom:1px solid var(--df-border);padding:10px 14px;
    margin:0;transform:translateY(-130%);transition:transform .25s;box-shadow:var(--df-shadow);max-height:80vh;overflow:auto}
  .df-nav.open{transform:translateY(0)}
  .df-nav>a,.df-dropdown>button{padding:12px 10px;width:100%;justify-content:space-between}
  .df-dropdown{width:100%}
  .df-menu{position:static;box-shadow:none;border:0;background:var(--df-surface-2);margin:2px 0 6px}
  .df-lang-menu{inset-inline:0;width:auto}
}
@media (max-width:560px){
  .df-tool-head{flex-direction:column;align-items:stretch}
  .df-field select,.df-field input{min-width:0;width:100%}
  .df-btn{width:100%}
  .df-pass-meta{grid-template-columns:repeat(2,1fr)}
  .df-row{flex-wrap:wrap}
  .df-row .df-key{min-width:auto;flex:1 1 100%}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
