/* =============================================
   bundle.css — Core variables, resets, themes, components
   ============================================= */

/* === main.css === */
:root{
  --bg:#0a0f1a;--bg-alt:#111827;--card:#1a2236;--card-h:#1f2a42;
  --accent:#38bdf8;--accent-g:rgba(56,189,248,.15);--accent2:#818cf8;
  --txt:#f1f5f9;--txt2:#94a3b8;--muted:#8e99ad;
  --bdr:rgba(148,163,184,.1);
  --grad:linear-gradient(135deg,#38bdf8,#818cf8);
  --grad2:linear-gradient(135deg,#818cf8,#c084fc);
  --green:#34d399;--star:#fbbf24;
  --fn:'Outfit',sans-serif;--mono:'JetBrains Mono',monospace;
  --fn-ar:'Tajawal',sans-serif;
  --nav-bg:rgba(10,15,26,.88);--prog-bg:rgba(148,163,184,.1);
  --tag-bg:rgba(56,189,248,.08);--tag-c:var(--txt2);--tag-bdr:rgba(56,189,248,.1);
  --chip-bg:rgba(129,140,248,.1);--chip-c:var(--accent2);--chip-bdr:rgba(129,140,248,.15);
  --cta-bg:linear-gradient(135deg,rgba(56,189,248,.08),rgba(129,140,248,.08));
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--fn);background:var(--bg);color:var(--txt);line-height:1.6;overflow-x:hidden;opacity:0;transition:opacity .5s ease;padding-top:52px}
body.loaded{opacity:1}

/* grain */
body::before{content:'';position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.03'/%3E%3C/svg%3E");pointer-events:none;z-index:0}

/* scroll progress */
.scroll-progress{position:fixed;top:0;left:0;height:3px;background:var(--grad);z-index:999;width:0;transition:none}

/* orbs */
.orb{position:fixed;border-radius:50%;filter:blur(100px);opacity:.1;pointer-events:none;z-index:0;will-change:transform}
.orb-1{width:500px;height:500px;background:var(--accent);top:-150px;right:-100px}
.orb-2{width:400px;height:400px;background:var(--accent2);bottom:10%;left:-100px}
.orb-3{width:300px;height:300px;background:#c084fc;top:50%;right:20%}

/* container */
.wrap{max-width:1100px;margin:0 auto;padding:40px 24px;position:relative;z-index:1}

/* === themes.css === */
html[data-theme="light"]{
  --bg:#ffffff;--bg-alt:#f8fafc;--card:#ffffff;--card-h:#f8fafc;
  --accent:#2563eb;--accent-g:rgba(37,99,235,.08);--accent2:#7c3aed;
  --txt:#1e293b;--txt2:#475569;--muted:#5c6c7f;
  --green:#047857;
  --bdr:#e5e7eb;
  --grad:linear-gradient(135deg,#2563eb,#7c3aed);
  --grad2:linear-gradient(135deg,#7c3aed,#a855f7);
  --nav-bg:rgba(255,255,255,.92);--prog-bg:rgba(15,23,42,.06);
  --tag-bg:#eff6ff;--tag-c:#1e40af;--tag-bdr:#bfdbfe;
  --chip-bg:#f5f3ff;--chip-c:#5b21b6;--chip-bdr:#ddd6fe;
  --cta-bg:linear-gradient(135deg,rgba(37,99,235,.06),rgba(124,58,237,.06));
}

html[data-theme="light"] body::before{opacity:.3}
html[data-theme="light"] .orb{opacity:.06}
html[data-theme="light"] .lang-tog{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .t-btn{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .pr-btn{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .tl::before{background:linear-gradient(to bottom,#3b82f6,#7c3aed,transparent)}
html[data-theme="light"] .sum-w{box-shadow:0 2px 8px rgba(0,0,0,.06)}
html[data-theme="light"] .svc-c{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .sk-cat{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .tool-c{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .tl-it{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .edu-c{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .oss-st{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .test-c{box-shadow:0 1px 4px rgba(0,0,0,.06)}
html[data-theme="light"] .plat-c{box-shadow:0 1px 4px rgba(0,0,0,.06)}

html[data-theme="dark"] .ic-light{display:block}
html[data-theme="light"] .ic-dark{display:block}

/* === components.css === */

/* service cards */
.svc-c{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:24px;transition:transform .3s,opacity .3s;position:relative;overflow:hidden}
.svc-c:hover{border-color:rgba(56,189,248,.2);background:var(--card-h);transform:perspective(500px) rotateY(2deg);box-shadow:0 8px 30px var(--accent-g)}
.svc-c::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad);opacity:0;transition:opacity .3s}
.svc-c:hover::before{opacity:1}

/* value prop cards */
.val-c{background:transparent;border:1px solid var(--bdr);border-radius:14px;padding:24px;text-align:center;transition:transform .4s,opacity .4s;transform:scale(.95);opacity:0}
.val-c.anim{transform:scale(1);opacity:1}
.val-c:nth-child(1){border-top:3px solid #38bdf8}
.val-c:nth-child(2){border-top:3px solid #34d399}
.val-c:nth-child(3){border-top:3px solid #fbbf24}
.val-c:nth-child(4){border-top:3px solid #818cf8}
.val-c:hover{background:var(--card);transform:translateY(-3px);box-shadow:0 8px 24px var(--accent-g)}

/* testimonial cards */
.test-c{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:24px;transition:transform .3s,opacity .3s;position:relative;border-left:3px solid var(--accent);opacity:0;transform:translateY(20px)}
.test-c.anim{opacity:1;transform:translateY(0)}
.test-c:hover{transform:translateY(-3px);box-shadow:0 8px 24px var(--accent-g)}

/* education cards */
.edu-c{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:24px;display:flex;gap:16px;align-items:flex-start;margin-bottom:14px;transition:transform .3s,opacity .3s}
.edu-c:hover{border-color:rgba(56,189,248,.2);background:var(--card-h)}

/* tool cards */
.tool-c{background:var(--card);border:1px solid var(--bdr);border-radius:12px;padding:14px;text-align:center;transition:transform .3s,opacity .3s}
.tool-c:hover{border-color:rgba(56,189,248,.2);transform:translateY(-2px)}

/* platform cards */
.plat-c{background:var(--card);border:1px solid var(--bdr);border-radius:12px;padding:16px 20px;text-decoration:none;color:var(--txt);transition:transform .3s,opacity .3s;display:flex;align-items:center;gap:12px}
.plat-c:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 20px var(--accent-g)}

/* tags / chips */
.tc{font-size:11px;font-family:var(--mono);padding:2px 8px;border-radius:5px;background:var(--chip-bg);color:var(--chip-c);border:1px solid var(--chip-bdr)}

/* skill dots */
.sk-dot{width:8px;height:8px;border-radius:50%;background:var(--prog-bg);transition:opacity .4s}
.sk-dot.on{background:var(--accent)}

/* badges */
.badge{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px;margin-left:8px}
.badge-ok{background:rgba(52,211,153,.15);color:var(--green);border:1px solid rgba(52,211,153,.3)}
.badge-type{background:var(--accent-g);color:var(--accent);border:1px solid rgba(56,189,248,.2)}

/* buttons */
.btn-p{padding:12px 28px;border-radius:10px;background:var(--grad);color:#fff;font-family:var(--fn);font-size:14px;font-weight:600;border:none;cursor:pointer;text-decoration:none;transition:transform .3s,opacity .3s;animation:pulse 3s infinite}
.btn-p:hover{box-shadow:0 4px 20px var(--accent-g);transform:translateY(-1px)}
.btn-o{padding:12px 28px;border-radius:10px;background:transparent;color:var(--accent);font-family:var(--fn);font-size:14px;font-weight:600;border:2px solid var(--accent);cursor:pointer;text-decoration:none;transition:transform .3s,opacity .3s}
.btn-o:hover{background:var(--accent-g)}

.l-btn{padding:7px 16px;border:none;border-radius:7px;cursor:pointer;font-family:var(--fn);font-size:12px;font-weight:500;background:transparent;color:var(--muted);transition:opacity .3s}
.l-btn.on{background:var(--grad);color:#fff;box-shadow:0 2px 12px var(--accent-g)}

.t-btn{width:38px;height:38px;border:1px solid var(--bdr);border-radius:10px;background:var(--card);color:var(--txt2);cursor:pointer;backdrop-filter:blur(20px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .3s,opacity .3s}
.t-btn:hover{color:var(--accent);border-color:var(--accent)}
.t-btn svg{width:18px;height:18px;transition:transform .3s}
.t-btn:hover svg{transform:rotate(30deg)}
.ic-dark,.ic-light{display:none}

.pr-btn{position:fixed;top:58px;left:20px;z-index:100;padding:7px 16px;border:1px solid var(--bdr);border-radius:10px;background:var(--card);color:var(--txt2);font-family:var(--fn);font-size:12px;font-weight:500;cursor:pointer;backdrop-filter:blur(20px);display:flex;align-items:center;gap:6px;transition:transform .3s,opacity .3s}
.pr-btn:hover{color:var(--accent);border-color:var(--accent)}

/* toast */
.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(16px);z-index:200;background:var(--card);color:var(--txt);padding:10px 22px;border-radius:10px;font-size:13px;font-weight:500;opacity:0;transition:transform .3s,opacity .3s;pointer-events:none;box-shadow:0 8px 32px rgba(0,0,0,.3);border:1px solid var(--bdr)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* scroll to top */
.s-top{position:fixed;bottom:28px;right:28px;z-index:100;width:42px;height:42px;border-radius:10px;background:var(--grad);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(16px);transition:opacity .3s,transform .3s;pointer-events:none;box-shadow:0 4px 16px var(--accent-g)}
.s-top.vis{opacity:1;transform:translateY(0);pointer-events:auto}
.s-top svg{width:18px;height:18px}

/* PWA install button */
.pwa-install-btn{display:none;align-items:center;gap:6px;margin-top:10px;padding:8px 18px;border:1px solid var(--bdr);border-radius:8px;background:transparent;color:var(--txt2);font-family:var(--fn);font-size:12px;font-weight:500;cursor:pointer;transition:opacity .3s}
.pwa-install-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-g)}

/* PWA update toast */
.pwa-toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(16px);z-index:10000;background:var(--card);border:1px solid var(--bdr);border-radius:10px;padding:12px 18px;display:flex;align-items:center;gap:12px;font-size:13px;color:var(--txt);box-shadow:0 8px 32px rgba(0,0,0,.3);opacity:0;transition:transform .3s,opacity .3s}
.pwa-toast.vis{opacity:1;transform:translateX(-50%) translateY(0)}
.pwa-toast button{padding:6px 14px;border:1px solid var(--accent);border-radius:6px;background:transparent;color:var(--accent);font-family:var(--fn);font-size:12px;font-weight:600;cursor:pointer;transition:opacity .2s}
.pwa-toast button:hover{background:var(--accent);color:#fff}
.pwa-toast-close{border:none!important;padding:4px 8px!important;font-size:18px!important}

/* Offline banner */
.offline-banner{position:fixed;top:0;left:0;right:0;z-index:10001;background:rgba(245,158,11,.9);color:#fff;padding:8px 16px;display:none;align-items:center;justify-content:center;gap:12px;font-size:13px;font-weight:500}
.offline-banner button{background:none;border:none;color:#fff;font-size:18px;cursor:pointer;padding:0 4px}
