/*
Theme Name: SODIC East
Theme URI: https://sodic-eg.net/
Author: BoldPixel D.M L.L.C
Description: Production landing theme for SODIC East (AR/EN via ?lang=), lead form routed to the fleet lead API, WhatsApp broker routing, isolated tracking. All copy and operational settings are editable under the SODIC East admin menu.
Version: 1.0.0
Requires PHP: 8.1
Text Domain: sodic-east
*/

/* ---- design base (verbatim from the provided design; hero image via --se-hero) ---- */
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;color:#19383a;background:#fff;font:16px/1.8 Arial,Tahoma,sans-serif}button,input,select{font:inherit}button,a{cursor:pointer}a{color:inherit}.wrap{width:min(1200px,calc(100% - 40px));margin:auto}.hero{position:relative;background:#183c3d;color:white;isolation:isolate}.hero:before{content:'';position:absolute;inset:0;z-index:-2;background:var(--se-hero,none) center/cover}.hero:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#0c262949,#082c31cf)}.top{display:flex;justify-content:space-between;align-items:center;padding-top:20px}.logo{width:74px;height:84px;object-fit:cover}.lang{padding:6px 19px;border:1px solid #ffffff80;text-decoration:none;font-size:14px}.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:85px;padding:40px 0 65px;align-items:center}.eyebrow{font-size:13px;letter-spacing:2px;font-weight:bold;text-transform:uppercase}.hero h1{font-size:clamp(37px,4.5vw,62px);line-height:1.35;font-weight:600;margin:18px 0 25px}.hero-copy p{font-size:18px;max-width:620px;color:#f1f5f2}.hero-tags{display:flex;gap:9px;flex-wrap:wrap;margin-top:26px}.hero-tags span{padding:8px 15px;border:1px solid #ffffff65;font-size:14px}.form{background:#fff;color:#19383a;padding:28px;box-shadow:0 25px 60px #0003;border-top:4px solid #d6a17f}.form h2{font-size:26px;margin:0 0 8px;line-height:1.45}.form p{font-size:14px;line-height:1.8;color:#627071}.field{margin:16px 0}.field label{display:block;font-size:14px;font-weight:bold;margin-bottom:6px}.field input,.field select{width:100%;min-width:0;min-height:48px;border:1px solid #bfcac9;padding:10px;background:#fff;color:#243e40;font-size:16px}.phone{display:grid;grid-template-columns:108px 1fr;gap:7px;direction:ltr}.btn{border:0;padding:15px 22px;background:#e5b294;color:#203c3c;display:inline-flex;justify-content:center;align-items:center;text-decoration:none;font-weight:bold;min-height:52px}.form .btn{width:100%}.btn.dark{background:#25595d;color:#fff}.btn.line{border:1px solid #25595d;background:#fff;color:#25595d}.fine{font-size:12px!important;color:#697879}.status{display:none;margin-top:14px;padding:13px;background:#eaf1e9;color:#294832}.section{padding:85px 0}.section h2{font-size:clamp(30px,3.5vw,44px);font-weight:500;line-height:1.4;margin:14px 0 24px}.split{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.intro{background:#edf3f1}.intro p{color:#5e7273}.number{font-family:Georgia,serif;font-size:80px;line-height:1.2;color:#2a6064}.facts{display:grid;grid-template-columns:1fr 1fr;gap:25px}.fact{border-inline-start:2px solid #b4c7c2;padding-inline-start:22px}.fact strong{display:block;font-size:22px}.fact span{font-size:14px;color:#526e6e}.photo{width:100%;display:block;height:470px;object-fit:cover}.caption{font-size:12px;color:#556868;margin-top:8px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.card{padding:28px;border:1px solid #d4dfdc;display:flex;flex-direction:column;background:#fff}.card small{font-size:12px;letter-spacing:2px;color:#52787a}.card h3{font-size:23px;margin:20px 0 6px}.card .area{font:40px Georgia;direction:ltr;color:#25595d}.card p{color:#687b7c;font-size:15px}.card button{margin-top:auto;background:none;color:#214e50;border:0;border-top:1px solid #dbe4e0;padding:18px 0 0;text-align:start;font-weight:bold}.note{padding:18px 22px;background:#eef4f1;font-size:14px;color:#4f6f70;margin-top:25px}.smart{background:#25595d;color:#fff}.smart p{color:#d5e5df}.smart .eyebrow{color:#e6b99a}.bullets{padding:0;list-style:none}.bullets li{padding:12px 0;border-bottom:1px solid #ffffff35}.choices{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.choice{padding:23px;background:#f3f6f4;border:1px solid #dfe5e2}.choice h3{font:22px Georgia;margin:0 0 10px}.choice p{font-size:14px;color:#627576}.choice button{font-size:14px;background:none;border:0;text-decoration:underline;color:#25595d;padding:0}.closing{background:#e9d0bc}.closing .split{gap:90px}.closing .btn{background:#173e41;color:white}.closing p{color:#475f5e}details{padding:19px 0;border-bottom:1px solid #d5dfdc}summary{cursor:pointer;font-weight:bold}details p{color:#627576}.faq{max-width:880px;margin:auto}.footer{background:#122d30;color:#c0d0cb;padding:35px 0 105px;font-size:13px}.footer strong{color:white}.sticky{position:fixed;bottom:0;inset-inline:0;background:white;padding:10px;display:flex;gap:10px;justify-content:center;box-shadow:0 -5px 25px #0001;z-index:10}.sticky .btn{min-height:45px;font-size:14px}.sticky span{align-self:center;margin-inline-end:20px;font-size:14px;font-weight:bold}.form input:focus,.form select:focus{outline:2px solid #2b676c;outline-offset:1px}a:focus-visible,button:focus-visible{outline:3px solid #be865f;outline-offset:3px}.hero-foot{font-size:12px;padding-bottom:18px;color:#e3edea}.section-head{display:flex;align-items:end;justify-content:space-between;gap:35px}.section-head>p{max-width:430px;color:#647879}@media(max-width:960px){.hero-grid{gap:30px}.split{gap:30px}.cards{gap:12px}.choices{grid-template-columns:1fr 1fr}.card{padding:20px}.hero h1{font-size:44px}}@media(max-width:620px){.wrap{width:calc(100% - 30px)}.hero-grid{grid-template-columns:1fr;padding:25px 0 20px;gap:27px}.hero h1{font-size:36px;margin:12px 0}.hero-copy p{font-size:16px}.hero-tags{margin:16px 0}.hero-tags span{padding:5px 10px;font-size:13px}.hero:before{background-position:35% top;background-size:auto 650px;background-repeat:no-repeat}.hero:after{background:linear-gradient(0deg,#143a3d 25%,#0b2b3290)}.logo{width:58px;height:66px}.form{padding:22px}.form h2{font-size:25px}.split,.cards,.choices{grid-template-columns:1fr}.section{padding:55px 0}.photo{height:320px}.facts{gap:20px}.number{font-size:62px}.card .area{font-size:35px}.section-head{display:block}.closing .split{gap:20px}.sticky span{display:none}.sticky .btn{flex:1;padding:10px;font-size:13px}.hero-foot{font-size:11px}.form .fine{font-size:12px!important}}

/* ---- design palette override ---- */
body{color:#262626;background:#fff}.hero{background:#172b29}.hero:after{background:linear-gradient(90deg,#162c284d,#132523e6)}.hero h1{font-size:clamp(32px,3.5vw,49px);font-weight:500;line-height:1.4}.soft{font-weight:400;color:#edf2e8}.hero-grid{gap:65px}.form{border-top:3px solid #262626;color:#262626;box-shadow:0 25px 70px #0003}.form h2{font-size:26px}.btn{background:#232323;color:#fff;border-radius:0}.btn.dark{background:#232323;color:#fff}.btn.line{background:white;color:#222;border-color:#222}.eoi-hero{margin-top:25px;border-top:1px solid #ffffff50;padding-top:15px;max-width:470px}.eoi-hero span{font-size:13px}.eoi-hero strong{display:block;font-size:40px;font-weight:400;line-height:1.5}.eoi-hero strong small{font-size:18px}.eoi-hero p{margin:4px 0!important;font-size:15px!important}.eoi-hero>small{font-size:12px;color:#eee}.intro{background:#f4f5f2}.fact strong{font-size:23px;color:#333}.fact span{color:#666}.fact{border-color:#c3c6bd}.room-number{font:64px/1.2 Georgia;color:#aaa}.card{border-color:#d7d7d2}.card h3{color:#222}.card button{color:#222}.smart{background:#343d35}.smart .eyebrow{color:#e3e7dc}.closing{background:#eeefe9}.closing .btn{background:#222}.eoi-steps{padding-inline-start:24px}.eoi-steps li{padding:10px 0;border-bottom:1px solid #ddd}.footer{background:#1d211e}.note{background:#f4f4ef;color:#65685f}.section h2{font-weight:400}.section-head>p{color:#666}.hero-tags span{font-size:13px}.card p{color:#666}.fine{color:#666}.form p{color:#626262}@media(max-width:620px){.hero-grid{gap:25px}.hero h1{font-size:32px}.eoi-hero strong{font-size:34px}.hero:before{background-size:auto 850px}.hero:after{background:linear-gradient(0deg,#1d302d 20%,#10231dcc)}.hero-copy p{font-size:15px}.form h2{font-size:24px}}

/* ---- design navy override ---- */
.btn,.btn.dark,.closing .btn{background:#1e3d50;color:#fff}.btn.line{background:white;color:#1e3d50;border-color:#1e3d50}.smart{background:#1e3d50}.hero:after{background:linear-gradient(90deg,#172e3c55,#102b3de0)}.card button,.fact strong{color:#1e3d50}.room-number{color:#767676}.intro,.closing{background:#f5f6f6}.footer{background:#132a39}@media(max-width:620px){.hero:after{background:linear-gradient(0deg,#173042 20%,#102b3dd0)}}

/* ---- design interest nav + villas ---- */
.interest-nav{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}.interest-nav a{font-size:14px;padding:9px 14px;border:1px solid #ffffff70;text-decoration:none}.villas-section{background:#f2f4f4}.villas-section .card{background:white}

/* ---- production additions: statuses, validation, a11y ---- */
.smart .fine,.smart .caption{color:#e2eee8}
.phone{position:relative}
.phone .iti{display:block;grid-column:1/-1;width:100%;min-width:0} /* the country selector lives inside .iti: span both columns of .phone (was squeezed into the 108px one) */
.field-err{display:none;color:#8a2b1e;font-size:13px;margin-top:6px}
.field.invalid .field-err{display:block}
.field.invalid input{border-color:#b7462f}
.status.ok{display:block}
.status.err{display:block;background:#f6e9e6;color:#7a2e22}
.status a{display:inline-block;margin-top:8px;font-weight:bold;color:#1e3d50;text-decoration:underline}

.footer-links{margin-top:12px;font-size:13px}.footer-links a{color:#c0d0cb;text-decoration:underline}.footer-links a:hover{color:#fff}

/* ---- legal pages: privacy and terms ---- */
.legal-wrap{max-width:900px;margin:0 auto;padding:20px}.legal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 0;border-bottom:1px solid #ddd}.legal-header .logo{width:58px;height:66px}.legal-header .lang{padding:6px 16px;border:1px solid #1e3d50;text-decoration:none;font-size:14px;color:#1e3d50}.legal-content{padding:40px 0;line-height:1.8}.legal-content h1{font-size:clamp(32px,4vw,42px);margin:0 0 10px;font-weight:500}.legal-content .meta{color:#666;font-size:14px;margin-bottom:30px}.legal-content h2{font-size:clamp(22px,3vw,28px);margin:40px 0 16px;font-weight:500;color:#1e3d50}.legal-content p{margin:12px 0;color:#333}.legal-content ul{margin:12px 0;padding-inline-start:28px}.legal-content li{margin:8px 0;color:#444}.legal-content a{color:#1e3d50;text-decoration:underline}.legal-footer{border-top:1px solid #ddd;padding:30px 0;text-align:center;font-size:14px;color:#666}.legal-footer a{color:#1e3d50;text-decoration:none}@media(max-width:620px){.legal-wrap{padding:15px}.legal-content{padding:25px 0}.legal-content h1{font-size:28px}.legal-content h2{font-size:22px}}
.btn[disabled]{opacity:.65;cursor:wait}
.hp{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;opacity:0;pointer-events:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.card button:focus-visible{outline-offset:1px}


.cro-nudge{position:fixed;left:12px;right:12px;bottom:calc(168px + env(safe-area-inset-bottom,0px));z-index:55;display:none;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-radius:12px;background:#111827;color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.28);font-size:14px}
.cro-nudge.show{display:flex}
.cro-nudge a{background:#25D366;color:#052e16;font-weight:700;text-decoration:none;padding:10px 12px;border-radius:8px}
.cro-nudge .x{border:0;background:transparent;color:#fff;font-size:18px}
.cro-exit{position:fixed;inset:0;z-index:90;display:none;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.45)}
.cro-exit.show{display:flex}
.cro-exit .box{position:relative;background:#fff;max-width:400px;width:100%;padding:22px;border-radius:12px}
.cro-exit .box a{display:inline-block;margin-top:10px;background:#111827;color:#fff;text-decoration:none;padding:10px 14px;border-radius:8px;font-weight:700}
.cro-exit .x{position:absolute;top:8px;inset-inline-end:10px;border:0;background:transparent;font-size:22px}
.sticky{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}
@media(min-width:901px){.cro-nudge{left:auto;right:20px;width:min(400px,92vw);bottom:120px}}

/* Mobile lead-mode: keep H1 + price ATF and bring name/phone into first viewport.
   Does not change offer copy, tracking, or /go/wa numbers. */
html{scroll-padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
@media(max-width:620px){
  .top{padding-top:10px}
  .logo{width:46px;height:52px}
  .hero-grid{padding:10px 0 12px;gap:12px}
  .hero h1{font-size:24px;margin:6px 0 8px;line-height:1.3}
  .hero-copy p,.hero-tags,.interest-nav,.hero-foot{display:none}
  .eoi-hero{margin-top:8px;padding-top:8px;max-width:none}
  .eoi-hero strong{font-size:26px;line-height:1.25}
  .eoi-hero span{font-size:12px}
  .eoi-hero p,.eoi-hero>small{font-size:12px!important;margin:2px 0!important}
  .form{padding:14px 14px 12px}
  .form h2{font-size:18px;margin:0 0 4px}
  .form>p{display:none}
  .field{margin:8px 0}
  .field label{margin-bottom:4px}
  .field input,.field select{min-height:44px}
  .form .btn{min-height:48px}
  .form .fine{margin:6px 0 0}
}
/* audit-20261001 D-034: short viewports */
@media (max-height:479px){.cro-nudge,.cro-nudge.show{display:none !important}}
@media (max-height:600px){.bp-call-fab{min-height:48px !important;padding:4px 14px 4px 6px !important;gap:8px !important}.bp-call-ico{width:38px !important;height:38px !important}.bp-call-fab em{display:none !important}.bp-call-fab strong{font-size:14px !important}}

/* ---- public price gate: tracked WhatsApp price CTA (replaces money figures) ---- */
.card .choose-cta{margin-top:auto;display:block;background:none;color:#1e3d50;border-top:1px solid #dbe4e0;padding:18px 0 0;text-align:start;font-weight:bold;text-decoration:none;font-size:15px}
.card .choose-cta:hover{text-decoration:underline}
.fact .bp-price-cta{display:inline-block;margin-top:4px;font-size:14px;font-weight:bold;color:#1e3d50;text-decoration:underline}
.eoi-hero .btn.bp-price-cta{margin-top:8px;min-height:48px;padding:12px 20px}

/* ---- fleet audit 2026-10-20 ---- */
/* BP-R1: the CRO nudge steps aside while typing in a form (the bottom bar and the call button stay: mobile UX 2026-10-22) */
html.bp-typing .cro-nudge{opacity:0!important;pointer-events:none!important;transition:transform .2s,opacity .2s}
html.bp-typing .cro-nudge{transform:translateY(130%)!important}
/* BP-R2: no tap-to-call FAB on desktop pointers (fleet audit 2026-10-20) */
@media (min-width:1024px) and (hover:hover) and (pointer:fine){#bp-call-fab,.bp-call-fab{display:none!important}}
/* sticky bar: keep both buttons on one line on very narrow phones */
@media(max-width:360px){nav.sticky .btn{white-space:nowrap;font-size:14px}}
/* R11: hero h1 on mobile */
@media (max-width:640px){.hero h1{font-size:clamp(28px,7.5vw,40px);line-height:1.15}}
/* R9: footer legal / WhatsApp links tap size */
.footer-links a,.footer p a{display:inline-flex;align-items:center;min-height:44px;padding:10px 8px}
/* mobile UX 2026-10-22: the nudge wraps instead of pushing its close button out on narrow phones, and the close button is a 40px tap target */
.cro-nudge.show{box-sizing:border-box;flex-wrap:wrap;row-gap:8px}
.cro-nudge>div:first-child{flex:1 1 150px;min-width:0}
.cro-nudge>div:last-child{flex:0 1 auto;min-width:0;max-width:100%;margin-inline-start:auto}
.cro-nudge a{white-space:nowrap}
.cro-nudge .x{flex:0 0 40px;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;padding:0;border-radius:8px;font-size:22px;line-height:1;cursor:pointer;touch-action:manipulation}
/* mobile UX 2026-10-22: a wrapping form button splits its label into even lines instead of leaving the arrow alone on the last one */
.form .btn,.closing .btn{text-wrap:balance;text-align:center}
/* mobile UX 2026-10-22: Arabic unit cards. The area number (its own LTR run) and its unit sit on ONE row, number first, both on the start (right) edge; the unit never drops to a line of its own. The spec lines isolate their mixed Latin / digit / Arabic runs and align to the start edge */
html[dir=rtl] .card .spec{display:flex;align-items:baseline;gap:8px;flex-wrap:nowrap}
html[dir=rtl] .card .spec span{white-space:nowrap}
html[dir=rtl] .card p{unicode-bidi:plaintext;text-align:right}
/* visual QA 2026-10-22: the exit popup close is a 44px tap target in its corner */
.cro-exit .x{top:2px;inset-inline-end:2px;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:1;cursor:pointer;touch-action:manipulation}
/* ---- fleet audit 2026-10-24, D-UX-2 (lane V, 17 viewports x 3 engines) ---- */
/* WebKit draws a native <select> as a fixed-height (~23px) popup button and ignores min-height (select#unit measured 317x23);
   without the native appearance the field height (48px, 44px on phones) applies in every engine. The chevron is drawn in the
   field text colour on the end side (right in LTR, left in RTL); start-side padding, colours and typography are unchanged. */
.field select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23243e40' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:14px 9px;padding-inline-end:36px}
html[dir=rtl] .field select{background-position:left 12px center}
/* 24px tap-target floor (skill 31). The phone picker's country button is 100% of the field height (48px / 44px here); the floor
   only guards a shorter host field and changes nothing in this theme's layout. */
.phone .iti__selected-country{min-height:24px;min-width:24px}
