:root{--black:#000;--dark:#0d0d0d;--gray-900:#1a1a1a;--gray-800:#2a2a2a;--gray-700:#3a3a3a;--gray-600:#555;--gray-500:#777;--gray-400:#999;--gray-300:#bbb;--gray-200:#e0e0e0;--gray-100:#f2f2f2;--gray-50:#f8f8f8;--white:#fff;--accent:#0066FF;--accent-hover:#0052CC;--accent-light:#e8f0fe;--font:'Plus Jakarta Sans',-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;--ease:cubic-bezier(.16,1,.3,1);--content-max:1420px;--content-pad:80px}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{font-family:var(--font);font-size:16px;line-height:1.6;color:var(--gray-900);background:var(--white);overflow-x:hidden}
a{text-decoration:none;color:inherit}a.btn--filled,a.btn--filled:link,a.btn--filled:visited,a.btn--filled:hover,a.btn--filled:active,a.btn--filled:focus{color:#fff}a.btn--ghost,a.btn--ghost:link,a.btn--ghost:visited,a.btn--ghost:hover,a.btn--ghost:active,a.btn--ghost:focus{color:#fff}img{max-width:100%;display:block}button{font-family:inherit;cursor:pointer;border:none;background:none}
.btn{font-size:14px;font-weight:600;padding:13px 32px;border-radius:24px;transition:all .35s var(--ease);display:inline-flex;align-items:center;gap:8px;letter-spacing:.2px;white-space:nowrap;text-decoration:none;border:none;cursor:pointer;font-family:var(--font)}
.btn--filled{background:var(--accent);color:#fff}.btn--filled:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 8px 28px rgba(0,102,255,.22)}
.btn--filled:active,.btn--filled:focus,.btn--filled:visited{color:#fff}
.btn--ghost{background:rgba(255,255,255,.12);color:#fff;backdrop-filter:blur(10px)}.btn--ghost:hover{background:rgba(255,255,255,.22)}
.btn--ghost:active,.btn--ghost:focus,.btn--ghost:visited{color:#fff}
.w{max-width:calc(var(--content-max) + var(--content-pad)*2);margin:0 auto;padding-left:var(--content-pad);padding-right:var(--content-pad)}
.reveal{opacity:0;transform:translateY(44px);transition:opacity .9s var(--ease),transform .9s var(--ease)}.reveal--visible{opacity:1;transform:translateY(0)}
.reveal-d1{transition-delay:.1s}.reveal-d2{transition-delay:.2s}.reveal-d3{transition-delay:.3s}
@media(max-width:1024px){:root{--content-pad:40px}}
@media(max-width:768px){:root{--content-pad:32px}}
@media(max-width:640px){:root{--content-pad:20px}.btn{font-size:13px;padding:11px 24px}}
@media(max-width:400px){:root{--content-pad:16px}.btn{padding:10px 20px;font-size:12px}}
/* WordPress Admin Bar: only fixed-position elements need offset */
body.admin-bar .nav,
body.admin-bar .search-overlay,
body.admin-bar .drawer{top:32px}
@media screen and (max-width:782px){body.admin-bar .nav,body.admin-bar .search-overlay,body.admin-bar .drawer{top:46px}}
/* P13: Form feedback messages */
.form-msg{padding:12px 16px;border-radius:8px;font-size:13px;font-weight:500;margin-top:12px;display:none}
.form-msg--success{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}
.form-msg--error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.fg--error input,.fg--error select,.fg--error textarea,.ff--error input,.ff--error select,.ff--error textarea{border-color:#ef4444!important;box-shadow:0 0 0 2px rgba(239,68,68,.15)}

/* Elementor integration — prevent gap above hero */
.elementor-page .page-hero,
.elementor-default .page-hero{margin-top:0 !important}
body.elementor-page > .elementor,
body.elementor-default > .elementor{margin-top:0;padding-top:0}
.elementor-location-header + .page-hero{margin-top:0}
