هذه برمجة الواجهة. خدمة الطلبات ولوحة الإدارة تعملان عبر خادم محمي، ولا تتضمن هذه الصفحة أسرار الإدارة.
تشغيل الصفحةتنزيل الكود<!doctype html><html lang="ar" dir="rtl"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Serv — خدمات تُصنع بإتقان</title><meta name="description" content="خدمات التصميم والمواقع والمحتوى في مكان واحد، بأسعار واضحة وتجربة سهلة."><style>
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#203b32;--green:#254c3b;--cream:#f7f7f2;--line:#dce1d8}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',Arial,sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer}header{max-width:1320px;margin:auto;height:95px;display:flex;align-items:center;justify-content:space-between;padding:0 44px;border-bottom:1px solid var(--line)}.logo{font:800 30px Manrope,Arial;letter-spacing:-1.8px}.logo span{color:#769368}nav{display:flex;gap:34px;align-items:center;font-size:14px}nav a:hover{color:#80915d}.btn{border:0;background:var(--green);color:white;border-radius:9px;padding:15px 23px;font-weight:600;display:inline-flex;gap:22px;align-items:center}.btn:hover{background:#39644d}.bag{background:transparent;border:1px solid var(--line);padding:11px 16px;border-radius:8px;color:var(--ink)}main{max-width:1320px;margin:auto;padding:0 44px}.hero{display:grid;grid-template-columns:1.03fr 1fr;gap:65px;align-items:center;padding:64px 0 62px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;display:flex;gap:8px;align-items:center}.dot{width:7px;height:7px;border-radius:50%;background:#7b955a}h1{font:500 clamp(44px,4.8vw,67px)/1.08 Manrope,Arial;letter-spacing:-3px;margin:23px 0}h1 em{font-family:Georgia,serif;font-weight:400;color:#6c8058}.hero p{color:#748078;max-width:395px;line-height:1.8;font-size:16px}.hero .btn{margin-top:16px}.smallnote{font-size:12px;color:#768078;display:flex;gap:21px;margin-top:24px}.visual{height:408px;border-radius:16px;background:#e4e9dd;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.visual:before{content:'';position:absolute;width:400px;height:400px;border-radius:50%;background:#d5dfcb;right:-170px;top:-80px}.poster{width:215px;height:285px;background:#f7eddb;box-shadow:10px 20px 30px #34443325;transform:rotate(-9deg);padding:24px;position:relative;margin-right:40px}.poster small{font-size:8px;letter-spacing:2px}.poster h2{font:36px/1.05 Georgia;margin:22px 0}.arches{height:110px;display:flex;align-items:flex-end;gap:7px}.arches i{display:block;width:45px;height:100px;background:#dc8e5e;border-radius:40px 40px 0 0}.arches i:nth-child(2){height:76px;background:#81916c}.arches i:nth-child(3){height:55px;background:#e4c87e}.mini{position:absolute;right:34px;top:68px;background:#224838;color:#f3eedf;width:175px;height:205px;transform:rotate(9deg);padding:22px;border-radius:3px;box-shadow:0 12px 25px #203b3220}.mini b{font:29px Georgia}.orb{width:90px;height:90px;border:1px solid #bdccaa;border-radius:50%;margin:20px auto;position:relative}.orb:before,.orb:after{content:'';position:absolute;inset:0 20px;border:1px solid #bdccaa;border-radius:50%}.orb:after{inset:20px 0}.badge{position:absolute;bottom:24px;right:26px;background:#fff;border-radius:10px;padding:15px 20px;box-shadow:0 6px 20px #233b3210;font-size:12px}.badge b{display:block;margin-bottom:5px}.strip{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;font-size:13px}.strip span{display:flex;gap:12px;align-items:center}.strip i{font-style:normal;color:#879d69;font-size:19px}.services{padding:58px 0}.sectiontop{display:flex;justify-content:space-between;align-items:end;gap:25px}h2{font:500 33px Manrope;letter-spacing:-1.3px;margin:10px 0}.muted{color:#7b847c;font-size:14px;line-height:1.7}.search{padding:13px 15px;border:1px solid var(--line);border-radius:8px;background:transparent;width:240px;color:var(--ink)}.filters{display:flex;gap:8px;margin:27px 0 25px;flex-wrap:wrap}.filter{border:1px solid var(--line);border-radius:30px;padding:10px 20px;background:transparent;color:#637267;font-size:13px}.filter.active{background:var(--green);color:white;border-color:var(--green)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:23px}.card{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:transform .2s}.card:hover{transform:translateY(-5px)}.art{height:210px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.art1{background:#eee8dd}.art2{background:#e3e9ed}.art3{background:#e8e9db}.art4{background:#efdfd8}.art5{background:#e4dded}.art6{background:#dce7e2}.tag{position:absolute;top:15px;left:15px;background:#ffffffd9;padding:6px 10px;border-radius:5px;font-size:10px;letter-spacing:.4px}.brandmock{background:#643d31;color:#f0ddc0;padding:22px 30px;transform:rotate(-9deg);box-shadow:12px 15px 0 #ceaf88;font:38px Georgia}.browsermock{width:230px;background:#f9f9f4;padding:10px;border-radius:6px;transform:rotate(-5deg);box-shadow:0 12px 20px #22332220}.browsermock small{display:block;font-size:7px;border-bottom:1px solid #ddd;padding:3px 0 9px}.browsermock b{font:23px Georgia;display:block;padding:13px 7px}.browsermock div{height:45px;background:#bfccd0;margin:3px 7px}.socialmock{display:flex;gap:9px;transform:rotate(-7deg)}.socialmock div{height:130px;width:90px;padding:15px;background:#647353;color:#fff;font:21px Georgia}.socialmock div+div{background:#f4f0dc;color:#647353;margin-top:18px}.wordmock{font:italic 50px Georgia;transform:rotate(-8deg);color:#a46c59}.slidesmock{background:#9b88af;color:white;padding:23px;width:210px;box-shadow:12px 12px 0 #f9f7fa;transform:rotate(-7deg);font:28px Georgia}.seomock{display:flex;align-items:end;gap:12px;height:105px}.seomock i{width:36px;background:#5b8374;border-radius:7px 7px 0 0}.cardbody{padding:22px}.category{font-size:10px;letter-spacing:1.5px;color:#859174;text-transform:uppercase}.card h3{font:700 19px Manrope;margin:9px 0}.card p{color:#7c837b;font-size:13px;line-height:1.65;min-height:43px}.cardfoot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #ebeee7;padding-top:17px;margin-top:17px}.price{font-size:21px;font-weight:700}.price small{font-size:11px;font-weight:400;color:#83897e;margin-right:5px}.add{background:#f1f4ed;border:0;border-radius:7px;padding:10px 13px;color:#2e4e3b;font-size:12px;font-weight:600}.add:hover{background:#dde6d5}.how{padding:30px 0 65px}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:30px}.stepnum{border:1px solid #ccd7c5;border-radius:50%;width:36px;height:36px;display:grid;place-items:center;font-size:12px;margin-bottom:19px}.steps h3{font-size:17px}.cta{background:#e6ecdd;border-radius:15px;padding:37px 43px;display:flex;align-items:center;justify-content:space-between;margin-bottom:55px}.cta h2{font-size:27px}.cta p{margin-bottom:0}footer{border-top:1px solid var(--line);padding:27px 0;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#7d857c}.overlay{position:fixed;inset:0;background:#14291b75;z-index:5;display:none;justify-content:flex-end}.overlay.open{display:flex}.drawer{background:var(--cream);width:470px;max-width:100%;height:100%;overflow:auto;padding:30px}.close{float:right;border:0;background:transparent;font-size:26px;color:var(--ink)}.orderitem{padding:18px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px}.remove{border:0;background:transparent;color:#8b6252;font-size:12px}.total{display:flex;justify-content:space-between;margin:24px 0;font-size:20px;font-weight:700}label{display:block;font-size:13px;margin:16px 0 7px}.drawer input,.drawer textarea{width:100%;padding:12px;border:1px solid var(--line);background:white;border-radius:6px}.drawer .btn{width:100%;justify-content:center;margin-top:20px}.notice{font-size:12px;line-height:1.7;color:#7b847c}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--green);color:white;padding:14px 23px;border-radius:10px;z-index:10;display:none;font-size:13px}.empty{padding:35px 0;color:#7b847c}.faq details{border-bottom:1px solid var(--line);padding:20px 0}.faq summary{cursor:pointer;font-size:15px}.faq p{color:#748078;line-height:1.7;font-size:14px}.faq{margin-bottom:60px}.noscroll{overflow:hidden}@media(max-width:850px){header,main{padding-left:24px;padding-right:24px}nav a{display:none}.hero{gap:25px}.visual{height:350px}.mini{right:10px;width:145px}.grid{grid-template-columns:repeat(2,1fr)}h1{font-size:46px}.strip{flex-wrap:wrap}.poster{margin-right:40px;width:180px}.sectiontop{align-items:start}.search{width:190px}}@media(max-width:600px){header{height:76px}.hero{grid-template-columns:1fr;padding-top:35px}.hero h1{font-size:48px}.visual{height:300px}.poster{height:245px}.mini{right:45px;top:35px;height:180px}.grid{grid-template-columns:1fr}.sectiontop{display:block}.search{width:100%;margin-top:17px}.strip span{width:44%;font-size:11px}.steps{grid-template-columns:1fr;gap:12px}.cta{padding:27px;display:block}.cta .btn{margin-top:23px}footer{gap:20px;align-items:start}.smallnote{font-size:11px}.filters{gap:6px}.filter{padding:9px 14px}h2{font-size:29px}.services{padding-top:40px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;600;700;800;900&display=swap');
:root{--cream:#f8f7f3;--ink:#183e32;--green:#214f3d;--line:#e1e5dc}
body,button,input,textarea,select{font-family:'Tajawal',Arial,sans-serif}header{height:100px}.logo{font-family:Manrope,Arial;direction:ltr;display:inline-block;font-size:34px}.hero{gap:55px;padding-top:62px;padding-bottom:64px;grid-template-columns:1fr 1.05fr}h1{font-family:'Tajawal',Arial;letter-spacing:-1.2px;font-size:70px;line-height:1.22;font-weight:800;margin:20px 0}h1 em{font-family:inherit;font-style:normal;font-weight:800;color:#81986b}h2{font-family:'Tajawal',Arial;font-size:36px;letter-spacing:0;font-weight:700}.hero p{font-size:18px;line-height:1.9;max-width:440px}.eyebrow{letter-spacing:0;font-size:13px}.visual{height:460px;border-radius:24px;box-shadow:0 18px 45px #1d3e3210}.visual:before{display:none}.visual>img{width:100%;height:100%;object-fit:cover}.photo-shade{position:absolute;inset:0;background:linear-gradient(0deg,#122d28bd,transparent 75%)}.visual-caption{position:absolute;right:32px;bottom:85px;color:white}.visual-caption span{font-size:13px}.visual-caption b{display:block;font-size:32px;line-height:1.5;margin-top:10px}.badge{right:auto;left:24px;bottom:22px;background:#ffffffed;font-size:12px;text-align:right}.art{height:235px}.art img{width:100%;height:100%;object-fit:cover;transition:transform .55s}.card:hover .art img{transform:scale(1.05)}.tag{left:auto;right:16px;top:16px;font-size:12px;backdrop-filter:blur(8px);border-radius:20px;padding:8px 13px}.card{border-radius:17px;box-shadow:0 4px 20px #1c392506}.cardbody{padding:25px}.card h3{font-family:'Tajawal',Arial;font-size:23px;font-weight:700}.card p{font-size:15px;min-height:48px}.category{letter-spacing:0;font-size:12px}.price{font-size:24px}.price small{margin-right:0;margin-left:7px;font-size:12px}.add{font-size:14px}.filter{font-size:14px}.filters{gap:10px}.search{font-size:15px;width:270px}.btn{font-size:16px;border-radius:12px}.strip{font-size:14px;padding:25px 0}.smallnote{font-size:13px}.muted{font-size:16px}.steps h3{font-size:21px}.stepnum{background:#edf1e7}.cta{padding:45px;border-radius:22px;background:linear-gradient(115deg,#e9eedf,#dce7d3)}.cta h2{font-size:32px}.faq summary{font-size:18px}.faq p{font-size:16px}.drawer{width:500px}.close{float:left}.drawer label{font-size:15px}.notice{font-size:13px}.overlay{justify-content:flex-start}.orderitem{font-size:16px}.remove{font-size:14px}footer{font-size:14px}.toast{font-size:15px}.bag{font-size:15px}.logo span{margin-left:3px}.photo-credit{font-size:11px;color:#899285}nav{font-size:16px}
@media(max-width:850px){h1{font-size:51px}.hero{gap:26px}.visual{height:390px}.visual-caption b{font-size:26px}.strip{font-size:12px}.search{width:200px}}
@media(max-width:600px){header{height:80px}.hero{grid-template-columns:1fr;padding-top:35px}.hero h1{font-size:53px}.hero p{font-size:17px}.visual{height:360px}.visual-caption{right:25px;bottom:100px}.visual-caption b{font-size:30px}.strip span{font-size:12px}.sectiontop .search{width:100%}h2{font-size:29px}.cta{padding:27px}.cta h2{font-size:28px}.art{height:245px}.smallnote{font-size:12px;gap:16px}}
.scope-note{background:#edf1e7;padding:15px 18px;border-radius:10px;margin:16px 0}.scope-note p{font-size:14px;line-height:1.8;margin:7px 0 0;color:#5d6f61}.drawer ul{padding-inline-start:22px!important;padding-inline-end:0}.cardfoot{gap:10px}.card .price{font-size:22px}@media(max-width:600px){.card .price{font-size:24px}}.drawer select{width:100%;padding:12px;border:1px solid var(--line);border-radius:6px;background:white;color:var(--ink)}.category{line-height:1.7}
header{position:sticky;top:0;z-index:3;background:#f8f7f3e8;backdrop-filter:blur(20px);transition:box-shadow .3s,height .3s}header.scrolled{box-shadow:0 7px 25px #203b3210;height:78px}section[id]{scroll-margin-top:110px}#scrollProgress{position:fixed;top:0;right:0;height:3px;background:linear-gradient(90deg,#b6cf70,#2c7456);width:0;z-index:20}.hero>div:first-child{animation:heroRise .9s both}.visual{animation:heroRise 1.1s .15s both;transition:transform .3s;isolation:isolate}.visual>img{animation:photoDrift 20s ease-in-out infinite alternate;transform:scale(1.05)}.visual-caption{animation:heroRise 1.2s .35s both}.badge{animation:floatBadge 5s ease-in-out infinite}.dot{box-shadow:0 0 0 0 #829a6340;animation:pulseDot 2.5s infinite}.btn{transition:transform .25s,box-shadow .25s,background .25s}.btn:hover{transform:translateY(-3px);box-shadow:0 8px 18px #22473722}.btn span{transition:transform .25s}.btn:hover span{transform:translate(-3px,-3px)}.card{transition:transform .3s,box-shadow .3s,border-color .3s;animation:cardIn .6s both;animation-delay:calc(var(--i,0)*65ms)}.card:hover{transform:translateY(-9px);box-shadow:0 16px 32px #234b3616;border-color:#b9cbb2}.add{transition:background .2s,transform .2s}.add:hover{transform:translateX(-3px)}.filter{transition:background .2s,transform .2s,color .2s}.filter:hover{transform:translateY(-2px)}.bag.bump{animation:bagBump .5s}.overlay.open .drawer{animation:drawerEnter .35s both}.toast{animation:heroRise .25s}.goal-picker{margin:0 0 55px;padding:32px;border:1px solid #dfe8d7;background:linear-gradient(130deg,#eff4e7,#f9faf5);border-radius:22px}.goal-picker h2{font-size:29px}.goal-picker .muted{margin:8px 0 25px}.goal-options{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.goal-options button{position:relative;text-align:right;background:#fff;border:1px solid #e2e9db;border-radius:14px;padding:21px 17px;color:var(--ink);transition:transform .25s,box-shadow .25s,border-color .25s}.goal-options button:hover{transform:translateY(-5px);box-shadow:0 10px 20px #29462b12;border-color:#8ea678}.goal-options span{display:grid;place-items:center;width:38px;height:38px;background:#edf3e4;border-radius:12px;font-size:24px;margin-bottom:15px}.goal-options b{display:block;font-size:17px}.goal-options small{display:block;color:#7b8676;font-size:12px;margin-top:9px;line-height:1.7}.goal-options i{position:absolute;left:15px;top:18px;font-style:normal;transition:transform .25s}.goal-options button:hover i{transform:translate(-3px,-3px)}.reveal{transition:opacity .7s,transform .7s}.motion-ready .reveal{opacity:0;transform:translateY(25px)}.motion-ready .reveal.visible{opacity:1;transform:none}.stepnum{transition:transform .3s,background .3s}.steps>div:hover .stepnum{transform:rotate(-12deg) scale(1.1);background:#dce9cb}.faq details[open] p{animation:heroRise .35s}.bag:focus-visible,.btn:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #8caa70;outline-offset:4px}
@keyframes heroRise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes photoDrift{from{transform:scale(1.05) translateX(-1%)}to{transform:scale(1.13) translateX(1%)}}@keyframes floatBadge{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes pulseDot{70%{box-shadow:0 0 0 8px #829a6300}100%{box-shadow:0 0 0 0 #829a6300}}@keyframes cardIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes bagBump{50%{transform:scale(1.12);background:#e0edcf}}@keyframes drawerEnter{from{transform:translateX(-100%);opacity:.5}to{transform:none;opacity:1}}
@media(max-width:850px){.goal-options{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.goal-picker{padding:22px;margin-bottom:35px}.goal-options{gap:10px}.goal-options button{padding:17px 12px}.goal-options b{font-size:15px}.goal-options small{font-size:11px}.goal-picker h2{font-size:26px}.goal-options i{left:10px}header.scrolled{height:70px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-ready .reveal{opacity:1;transform:none}.visual>img{transform:none}}
.bidiya-tourism{display:grid;grid-template-columns:1fr 250px;align-items:center;gap:40px;margin:0 0 60px;padding:35px 40px;background:linear-gradient(120deg,#f0eadf,#edf2e5);border:1px solid #e0decf;border-radius:22px}.bidiya-tourism .muted{max-width:600px;line-height:1.9}.bidiya-actions{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin:23px 0}.bidiya-secondary{font-size:15px;text-decoration:underline;text-underline-offset:5px}.qr-link{display:block;text-align:center;background:white;border-radius:16px;padding:10px 10px 17px;box-shadow:0 10px 25px #243b3210;transition:transform .25s}.qr-link:hover{transform:translateY(-5px)}.qr-link img{display:block;width:100%;height:auto;border-radius:8px}.qr-link span{font-size:13px;color:#627057}.bidiya-catalog-link{display:block;padding:16px 18px;margin:22px 0 0;border:1px solid #d7e3ca;background:#edf3e7;border-radius:10px;font-size:16px;font-weight:600}@media(max-width:600px){.bidiya-tourism{grid-template-columns:1fr;padding:25px;gap:23px}.qr-link{max-width:235px;justify-self:center}.bidiya-actions{gap:18px}.bidiya-tourism h2{font-size:30px}}
.bidiya-experiences{margin-bottom:60px}.bidiya-banner{border-radius:22px;padding:50px 38px;margin-bottom:35px;color:white;background:linear-gradient(90deg,#3c2917aa,#49351abf),url('assets/camp-aerial.jpg') center/cover}.bidiya-banner .eyebrow{color:#ffe6b5}.bidiya-banner h2{font-size:39px}.bidiya-banner p{max-width:650px;font-size:18px;line-height:1.9;margin:15px 0 25px}.bidiya-banner .btn,.bidiya-package .btn{background:#a76728}.bidiya-package-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:25px 0 35px}.bidiya-package{overflow:hidden;background:white;border:1px solid #e8decd;border-radius:17px;transition:transform .3s,box-shadow .3s}.bidiya-package:hover{transform:translateY(-7px);box-shadow:0 15px 28px #4b2c1717}.bidiya-package>img{width:100%;height:215px;object-fit:cover}.bidiya-package>div{padding:23px}.bidiya-rate{display:inline-block;color:#9a5a22;background:#fff0d9;padding:7px 12px;border-radius:30px;font-weight:700;font-size:14px}.bidiya-package h3{font-size:22px;margin:16px 0 10px}.bidiya-package p{font-size:15px;line-height:1.85;color:#7b776a;min-height:85px}.bidiya-package .btn{width:100%;justify-content:center;font-size:15px}.bidiya-booking{background:#fffaf1;padding:32px;border:1px solid #e9decb;border-radius:20px;scroll-margin-top:110px}#bidiya-form{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}#bidiya-form label{display:block;margin:4px 0 8px;font-size:15px;font-weight:600}#bidiya-form input,#bidiya-form select,#bidiya-form textarea{width:100%;background:white;border:1px solid #ded9ca;border-radius:10px;padding:13px;color:var(--ink)}.bidiya-wide{grid-column:1/-1}.bidiya-estimate{padding:15px;background:#f2ead9;border-radius:10px;font-weight:700}#bidiya-packages{scroll-margin-top:110px}@media(max-width:850px){.bidiya-package-grid{grid-template-columns:1fr 1fr}#bidiya-form{grid-template-columns:1fr 1fr}}@media(max-width:600px){.bidiya-package-grid,#bidiya-form{grid-template-columns:1fr}.bidiya-banner{padding:32px 24px}.bidiya-banner h2{font-size:31px}.bidiya-booking{padding:24px}.bidiya-package p{min-height:0}.bidiya-package>img{height:230px}}.serv-support{position:fixed;bottom:20px;left:22px;display:flex;gap:9px;z-index:8}.wa-floating,.chat-toggle,.wa-request{background:#23854b;color:white;border:0;border-radius:40px;padding:13px 18px;font-size:14px;font-weight:700;box-shadow:0 6px 20px #203b3220;cursor:pointer;transition:transform .2s}.chat-toggle{background:#244d3b}.serv-support>*:hover{transform:translateY(-3px)}.wa-request{margin:10px 15px;background:#23854b}.serv-chat{position:fixed;bottom:82px;left:22px;width:365px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 115px);z-index:8;background:#fff;border:1px solid #d9e2d2;border-radius:20px;box-shadow:0 18px 60px #172c3330;overflow:hidden;animation:heroRise .25s}.serv-chat:not([hidden]){display:flex;flex-direction:column}.chat-header{background:#244d3b;color:white;padding:18px;display:flex;justify-content:space-between;align-items:center}.chat-header b{font-size:19px}.chat-header small{display:block;font-size:12px;margin-top:6px;color:#d2e2c8}.chat-header button{border:0;background:transparent;color:white;font-size:27px}.chat-log{overflow:auto;max-height:290px;min-height:150px;padding:15px;display:flex;flex-direction:column;gap:11px}.chat-message{white-space:pre-line;line-height:1.8;font-size:14px;padding:11px 13px;border-radius:12px;max-width:95%}.chat-message.bot{background:#edf3e7;align-self:flex-start}.chat-message.user{background:#e8eef5;align-self:flex-end}.chat-message button{display:block;border:0;background:#244d3b;color:white;padding:8px 13px;border-radius:7px;margin-top:10px}.chat-quick{padding:8px 13px;display:flex;gap:6px;flex-wrap:wrap}.chat-quick button{border:1px solid #d9e3cf;background:#fff;padding:6px 10px;border-radius:20px;font-size:12px;color:var(--ink)}#chat-form{display:flex;border-top:1px solid #e4e8df;margin:4px 13px 0;padding-top:9px;gap:7px}#chat-input{min-width:0;flex:1;padding:12px;border:1px solid #dce3d5;border-radius:10px}#chat-form>button{background:#244d3b;color:white;border:0;border-radius:9px;padding:0 14px}.chat-note{font-size:10px;color:#7a8275;margin:9px 14px 12px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.overlay.open~.serv-support{visibility:hidden}@media(max-width:600px){.serv-support{bottom:12px;left:12px;gap:6px}.serv-support>*{font-size:12px;padding:12px 14px}.serv-chat{bottom:68px;left:12px}.wa-request{margin:12px 0 0;display:block}footer{padding-bottom:85px}.toast{bottom:75px;width:max-content;max-width:90vw}}
.payment-box{background:#f3f6ee;border:1px solid #dce5d3;border-radius:14px;padding:20px;margin:15px 0;text-align:right}.payment-box h3{font-size:21px;margin:14px 0 9px}.payment-box>p{font-size:14px;line-height:1.8;color:#65725e}.payment-demo{display:inline-block;border-radius:20px;padding:5px 11px;background:#fff0cf;color:#855d22;font-size:12px;font-weight:700}.bank-preview{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0;background:white;border-radius:10px;padding:16px;font-size:14px}.bank-preview span{color:#738069}.bank-preview b{justify-self:end}.payment-box select{width:100%;padding:12px;border:1px solid #dce3d5;background:white;border-radius:8px;color:var(--ink)}@media(max-width:600px){.payment-box{padding:16px}.bank-preview{font-size:13px}}
:root{--cream:#faf7f1;--ink:#283c32;--line:#e5dfd4;--green:#28513e}body{background:radial-gradient(ellipse at 90% 6%,#eedcc740,transparent 35%),var(--cream)}header{max-width:none;padding-inline:max(28px,calc((100vw - 1232px)/2));background:#faf7f1ed}nav{gap:24px;font-size:14px}.hero{padding-block:70px}.hero h1{font-size:76px}.hero .visual{border-radius:110px 24px 24px 24px;height:490px;box-shadow:0 25px 60px #70532718}.visual-caption{bottom:110px}.eyebrow{color:#957244}.strip{background:#f4eee3;border:1px solid #e9dfcf;border-radius:14px;padding:22px;margin-bottom:30px}.strip span{padding-inline:12px}.goal-picker{background:linear-gradient(135deg,#f5ead8,#f4f5e9);border-color:#e9dcc7}.cta{background:linear-gradient(120deg,#e6eddd,#efe2cc)}.bidiya-banner{min-height:360px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:linear-gradient(90deg,#34291280,#2b301fbf),url('assets/camp-aerial.jpg') center/cover}.bidiya-banner h2{font-size:43px;max-width:650px}.bidiya-banner .eyebrow{color:#ffe3b2}.bidiya-package{border-radius:22px}.bidiya-package>img{height:250px;transition:transform .7s}.bidiya-package:hover>img{transform:scale(1.04)}.bidiya-tourism{background:#f3eadc}.camp-gallery{margin:40px 0 65px}.gallery-source{border-bottom:1px solid #afa086;padding:7px 0;font-size:14px}.camp-mosaic{display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-template-rows:190px 190px;gap:16px;margin:27px 0 17px}.camp-mosaic button{position:relative;border:0;border-radius:20px;padding:0;overflow:hidden;cursor:zoom-in;background:#d6c6ad}.camp-mosaic button:first-child{grid-row:span 2}.camp-mosaic button:last-child{grid-column:span 2}.camp-mosaic img{height:100%;width:100%;object-fit:cover;transition:transform .7s,filter .7s}.camp-mosaic button:hover img{transform:scale(1.07);filter:brightness(1.05)}.camp-mosaic span{position:absolute;inset:auto 0 0;padding:40px 20px 17px;color:white;font-size:16px;text-align:right;background:linear-gradient(transparent,#152921bc)}.site-qr-section{display:grid;grid-template-columns:.8fr 1.2fr;gap:30px;align-items:center;background:#f0e9dc;border:1px solid #e5d9c6;border-radius:22px;padding:35px;margin-bottom:50px}.site-qr-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.site-qr-grid article{background:white;border-radius:16px;text-align:center;padding:19px}.site-qr-grid img{width:100%;max-width:210px;height:auto;transition:transform .3s}.site-qr-grid img:hover{transform:scale(1.04)}.site-qr-grid h3{font-size:19px;margin:12px 0}.site-qr-grid article>a{display:inline-block;font-size:13px;margin:7px;color:#5c7053}.btn,.add,.chat-toggle,.goal-options button{position:relative;overflow:hidden}.click-ripple{position:absolute;pointer-events:none;background:#ffffff55;width:16px;height:16px;border-radius:50%;animation:clickWave .65s ease-out forwards;transform:translate(-50%,-50%)}@keyframes clickWave{to{transform:translate(-50%,-50%) scale(22);opacity:0}}.btn:active,.add:active{transform:scale(.97)}#photo-dialog{border:0;border-radius:18px;padding:18px;background:#fff;max-width:min(950px,94vw);max-height:90dvh;color:var(--ink)}#photo-dialog::backdrop{background:#14241bdd;backdrop-filter:blur(7px)}#photo-full{display:block;max-width:100%;max-height:72dvh;object-fit:contain;border-radius:10px}#photo-close{position:absolute;left:24px;top:24px;border:0;border-radius:50%;background:#ffffffdf;width:38px;height:38px;font-size:26px;z-index:1}#photo-caption{text-align:center;font-size:15px;margin:15px 10px 4px}.chat-quick button:hover{background:#e9f1df}.chat-message.bot{animation:heroRise .3s}.chat-header{background:linear-gradient(120deg,#244d3b,#3b6350)}
@media(max-width:1050px){nav{gap:15px;font-size:13px}.hero h1{font-size:60px}.hero .visual{height:435px}}@media(max-width:850px){.site-qr-section{grid-template-columns:1fr}.camp-mosaic{grid-template-columns:1fr 1fr;grid-template-rows:230px 180px}.camp-mosaic button:first-child{grid-row:auto}.camp-mosaic button:last-child{grid-column:auto}.hero .visual{height:400px}.hero h1{font-size:52px}}@media(max-width:600px){.hero{padding-top:35px}.hero h1{font-size:57px}.hero .visual{height:360px;border-radius:65px 18px 18px 18px}.camp-mosaic{gap:10px;grid-template-rows:210px 160px}.camp-mosaic span{font-size:12px;padding:30px 12px 12px}.site-qr-section{padding:23px}.site-qr-grid{gap:11px}.site-qr-grid article{padding:10px}.site-qr-grid h3{font-size:15px}.site-qr-grid article>a{font-size:11px}.bidiya-banner h2{font-size:31px}.strip{padding:15px 0}.strip span{padding-inline:9px}}
.site-qr-section{grid-template-columns:1fr}.site-qr-grid{grid-template-columns:repeat(3,1fr)}@media(max-width:600px){.site-qr-grid{grid-template-columns:1fr}.site-qr-grid article{padding:18px}.site-qr-grid img{max-width:200px}}.hero-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.explore-bidiya{background:#99642e;color:white}.explore-bidiya:hover{background:#805021}@media(max-width:600px){.hero-actions{gap:10px}.hero-actions .btn{padding:14px 18px;font-size:15px}}</style></head><body><div id="scrollProgress" aria-hidden="true"></div><header><a class="logo" href="#">serv<span>✳</span></a><nav><a href="/admin" target="_top">إدارة الموقع</a><a href="#services">تصفح الخدمات</a><a href="#bidiya">السياحة في بدية</a><a href="#site-qr">QR والبرمجة</a><a href="#how">كيف نعمل؟</a><a href="#faq">الأسئلة الشائعة</a><button class="bag" id="cartBtn">السلة <span id="count">0</span> ↗</button></nav></header><main><section class="hero"><div><div class="eyebrow"><span class="dot"></span> خدمات لحياتك وخطوتك القادمة</div><h1>سافر براحة.<br>وطوّر <em>مهاراتك.</em></h1><p>من اختيار الفندق المناسب إلى تعلّم مهارة جديدة. اكتشف خدمات السفر والتدريب، واختر ما يناسب أهدافك ووقتك.</p><div class="hero-actions"><a class="btn" href="#services">اكتشف خدمتك <span>↗</span></a><a class="btn explore-bidiya" href="/bidiya">منصة بدية <span>↗</span></a></div><div class="smallnote"><span>✓ باقات تبدأ من ٥ ر.ع.</span><span>✓ خدمات تناسب أهدافك</span></div></div><div class="visual"><img src="assets/camp-aerial.jpg" alt="إطلالة جوية لمخيم Sand Camp Oman في بدية من موقعه الرسمي" fetchpriority="high"><div class="photo-shade"></div><div class="visual-caption"><span>تجارب جديدة تبدأ هنا</span><b>وجهات جديدة.<br>مهارات أقوى.</b></div><div class="badge"><b>✦ من فكرة إلى واقع</b>خطوة مفيدة كل يوم</div></div></section><div class="strip"><span><i>✳</i> تفاصيل تُصنع بإتقان</span><span><i>◇</i> باقات سهلة الاختيار</span><span><i>◷</i> مواعيد وخطط واضحة</span><span><i>↗</i> استثمر في نفسك</span></div><section class="goal-picker reveal" aria-labelledby="goalTitle"><div><div class="eyebrow">ابدأ بما يهمك</div><h2 id="goalTitle">ما هدفك اليوم؟</h2><p class="muted">اختر هدفًا لنوصلك إلى الخدمات المناسبة مباشرة.</p></div><div class="goal-options"><button data-goal="السفر والإقامة"><span>✈</span><b>أخطط لرحلة</b><small>فنادق وإقامة وبرامج سفر</small><i>↖</i></button><button data-goal="المهارات الرقمية"><span>⌘</span><b>أتعلّم مهارة رقمية</b><small>برمجة وExcel وتحليل بيانات</small><i>↖</i></button><button data-goal="اللغات والتواصل"><span>✦</span><b>أطوّر تواصلي</b><small>إنجليزية وإلقاء وعروض</small><i>↖</i></button><button data-goal="المسار المهني"><span>↗</span><b>أستعد لوظيفة</b><small>سيرة ذاتية ومقابلة تدريبية</small><i>↖</i></button></div></section><section class="services" id="services"><div class="sectiontop"><div><div class="eyebrow">خدمات مختارة بعناية</div><h2>إقامتك القادمة. مهارتك القادمة.</h2><div class="muted">٨ خدمات للسفر وتطوير المهارات، بأسعار تبدأ من ٥ ريالات عُمانية. الأسعار توضيحية ورسوم خدمات السفر لا تشمل تكلفة الإقامة.</div></div><input type="search" class="search" id="search" placeholder="⌕ ابحث عن خدمة" aria-label="البحث عن الخدمات"></div><div class="filters" role="group" aria-label="تصنيف الخدمات"><button class="filter active" data-filter="All">جميع الخدمات</button><button class="filter" data-filter="السفر والإقامة">السفر والإقامة</button><button class="filter" data-filter="اللغات والتواصل">اللغات والتواصل</button><button class="filter" data-filter="المهارات الرقمية">المهارات الرقمية</button><button class="filter" data-filter="المسار المهني">المسار المهني</button></div><div class="grid" id="grid"></div><p class="notice" style="margin-top:20px">خدمات السفر هنا لتجهيز الطلب والتخطيط. تكلفة الفنادق منفصلة، ولا يتم تأكيد حجز أو موعد تدريب في هذه النسخة التجريبية.</p><a class="bidiya-catalog-link" href="#bidiya">✦ ضمن خدمات السياحة: استكشف دليل السياحة في بدية ←</a><p id="noresults" class="empty" hidden>لم نجد خدمة مطابقة. جرّب كلمة أخرى أو تصنيفًا مختلفًا.</p></section><section class="bidiya-tourism reveal" id="bidiya" aria-labelledby="bidiyaTitle"><div><div class="eyebrow">السفر والإقامة · وجهة من عُمان</div><h2 id="bidiyaTitle">السياحة في بدية</h2><p class="muted">استكشف دليل السياحة في بدية عبر الرابط المرفق. افتحه مباشرة أو امسح رمز QR بهاتفك.</p><div class="bidiya-actions"><a class="btn" href="/bidiya" target="_blank" rel="noopener noreferrer">منصة بدية ↗</a><a class="bidiya-secondary" href="assets/bidiya-qr.png" download="bidiya-tourism-qr.png">تنزيل رمز QR ↓</a></div><p class="notice">تفتح صفحة بدية المحدثة داخل Serv. إرسال الطلب إلى الإدارة لا يؤكد الحجز تلقائيًا.</p></div><a class="qr-link" href="/bidiya" target="_blank" rel="noopener noreferrer" aria-label="فتح دليل السياحة في بدية"><img src="assets/bidiya-qr.png" alt="رمز QR لرابط السياحة في بدية" width="290" height="290" loading="lazy"><span>امسح لفتح الموقع المحدث</span></a></section><section class="camp-gallery reveal" id="camp-gallery"><div class="sectiontop"><div><div class="eyebrow">صور من المكان · منشورة بموقع المخيم</div><h2>بدية، كما تراها عن قرب.</h2><p class="muted">الإقامة والجلسات والأنشطة في صور منشورة بموقع Sand Camp Oman.</p></div><a class="gallery-source" href="https://sandcampoman.com/#gallery" target="_blank" rel="noopener noreferrer">مصدر الصور ↗</a></div><div class="camp-mosaic"><button data-photo="assets/camp-aerial.jpg" data-caption="إطلالة جوية لمخيم Sand Camp Oman في بدية"><img src="assets/camp-aerial.jpg" alt="إطلالة جوية للمخيم" loading="lazy"><span>إقامة وسط الرمال ↖</span></button><button data-photo="assets/camp-room.jpg" data-caption="غرفة في Sand Camp Oman — الصورة من الموقع الرسمي"><img src="assets/camp-room.jpg" alt="غرفة في مخيم Sand Camp Oman" loading="lazy"><span>راحة الإقامة ↖</span></button><button data-photo="assets/camp-majlis.jpg" data-caption="جلسة عربية في Sand Camp Oman"><img src="assets/camp-majlis.jpg" alt="جلسة عربية في المخيم" loading="lazy"><span>جلسات بطابع عُماني ↖</span></button><button data-photo="assets/camp-quads.jpg" data-caption="نشاط الدراجات الرملية في معرض Sand Camp Oman"><img src="assets/camp-quads.jpg" alt="دراجات على الرمال" loading="lazy"><span>تجارب على الرمال ↖</span></button></div><p class="notice">حقوق الصور لأصحابها؛ المصدر: Sand Camp Oman. تُعرض للتعريف بالمكان، ولا توجد شراكة أو حجوزات مرتبطة بالمخيم عبر Serv.</p></section><section class="bidiya-experiences reveal" aria-labelledby="bidiyaExpTitle"><div class="bidiya-banner"><div class="eyebrow">منصة بدية السياحية · رحلات وتجارب صحراوية</div><h2 id="bidiyaExpTitle">استمتع بأقوى مغامرات شتاء بدية</h2><p>رحلتك الصحراوية، وتأجير الدراجات والمخيمات في مكان واحد. استكشف الباقات وجهّز طلب التجربة التي تناسبك.</p><a href="#bidiya-packages" class="btn">استعرض الباقات والأسعار ↓</a></div><div class="sectiontop" id="bidiya-packages"><div><div class="eyebrow">تجارب صحراوية</div><h2>باقات وتأجير الخدمات السياحية</h2><p class="notice">الباقات والأسعار من المحتوى المرفق، ولم تُتحقق لدى مقدمي خدمات. الصور من معرض Sand Camp Oman للتعريف بالمكان، ولا تعني أن الباقات المعروضة تابعة له. يُرسل الطلب للإدارة لمراجعته؛ لا يتم تأكيد الحجز تلقائيًا.</p></div></div><div class="bidiya-package-grid"><article class="bidiya-package"><img src="assets/camp-quads.jpg" alt="دراجات رملية منشورة في معرض Sand Camp Oman" loading="lazy"><div><span class="bidiya-rate">٢٥ ر.ع / ساعة</span><h3>جولة دراجات رملية (Buggy)</h3><p>مغامرة قيادة الدراجات الجبلية والصحراوية على الكثبان الرملية العالية مع معدات السلامة.</p><button class="btn" data-bidiya-service="جولة دراجات رملية">جهّز طلب الدراجة ↖</button></div></article><article class="bidiya-package"><img src="assets/camp-aerial.jpg" alt="إطلالة جوية لمخيم Sand Camp Oman في بدية" loading="lazy"><div><span class="bidiya-rate">٤٥ ر.ع / ليلة</span><h3>حجز مخيم صحراوي VIP</h3><p>إقامة كاملة تتضمن خيمة مفروشة ومكيفة مع جلسة سمر وعشاء بدوي تقليدي تحت النجوم.</p><button class="btn" data-bidiya-service="حجز مخيم صحراوي">جهّز طلب المخيم ↖</button></div></article><article class="bidiya-package"><img src="assets/camp-majlis.jpg" alt="جلسة عربية في مخيم Sand Camp Oman" loading="lazy"><div><span class="bidiya-rate">٣٠ ر.ع / جولة</span><h3>رحلة سفاري وتطعيس (4x4)</h3><p>جولة سفاري مثيرة بسيارات الدفع الرباعي مع سائق محترف لاستكشاف عمق الصحراء ومشاهدة الغروب.</p><button class="btn" data-bidiya-service="رحلة سفاري وتطعيس">جهّز طلب الجولة ↖</button></div></article></div><div class="bidiya-booking" id="bidiya-booking"><div class="eyebrow">حدد تجربتك وموعدك</div><h2>نموذج طلب خدمة سياحية</h2><p class="notice">أكمل البيانات وأرسل طلبك إلى إدارة Serv عبر النموذج. لا يتم تأكيد الحجز أو تحصيل أي مبلغ تلقائيًا.</p><form id="bidiya-form"><div><label for="bidiya-name">الاسم الكامل</label><input id="bidiya-name" name="name" autocomplete="name" placeholder="أدخل اسمك" required></div><div><label for="bidiya-phone">رقم الهاتف (الواتساب)</label><input id="bidiya-phone" name="phone" type="tel" autocomplete="tel" placeholder="+968 …" dir="ltr" required></div><div><label for="bidiya-service">اختر الخدمة</label><select id="bidiya-service" required><option value="">اختر من القائمة</option><option>جولة دراجات رملية</option><option>حجز مخيم صحراوي</option><option>رحلة سفاري وتطعيس</option></select></div><div><label for="bidiya-date">تاريخ الزيارة</label><input id="bidiya-date" type="date" required></div><div><label for="bidiya-guests">عدد الأشخاص</label><input id="bidiya-guests" type="number" min="1" max="100" value="1" required></div><div><label for="bidiya-units">عدد الساعات / الليالي / الجولات</label><input id="bidiya-units" type="number" min="1" max="30" value="1" required></div><div class="bidiya-wide"><label for="bidiya-notes">طلبات إضافية</label><textarea id="bidiya-notes" rows="3" placeholder="التوقيت المفضل، نوع الإقامة، أو أي متطلبات أخرى"></textarea></div><div class="bidiya-wide bidiya-estimate" id="bidiya-estimate" role="status" aria-live="polite">اختر خدمة لعرض التكلفة التقديرية.</div><div class="bidiya-wide"><div class="payment-box"><span class="payment-demo">بيانات صاحب المتجر · غير متحقق منها</span><h3>طرق الدفع والتحويل</h3><p>اختر الطريقة المفضلة لتضمينها في الطلب. لا يعالج الموقع أي دفعة.</p><label for="bidiya-payment">طريقة الدفع المفضلة</label><select id="bidiya-payment"><option value="تحويل برقم الهاتف — بنك مسقط (غير متحقق)">تحويل برقم الهاتف — بنك مسقط (غير متحقق)</option><option value="الدفع عند تقديم الخدمة — حسب الاتفاق">الدفع عند تقديم الخدمة — حسب الاتفاق</option></select><div class="bank-preview"><span>البنك</span><b>بنك مسقط</b><span>رقم الهاتف المقدم للتحويل</span><b dir="ltr">+968 9579 8399</b></div><p class="notice">الرقم مقدم من صاحب المتجر، ولم يتم التحقق من ارتباطه بحساب بنك مسقط أو اسم المستفيد. تحقق من المستفيد قبل التحويل. لا يوجد ربط بنكي، ولا يُعد اختيار الطريقة إثبات دفع أو تأكيد حجز.</p></div></div><div class="bidiya-wide"><button type="submit" class="btn">تنزيل طلب الرحلة ↓</button><button type="button" class="wa-request" id="bidiya-whatsapp">مشاركة الطلب عبر واتساب ↗</button><p class="notice">عدد الأشخاص لا يضاعف السعر تلقائيًا؛ السعر المعروض للوحدة، وتُراجع سعة كل تجربة مع مقدم الخدمة.</p></div></form></div></section><section class="how reveal" id="how"><div class="eyebrow">خطوات أقل. إنجاز أكثر.</div><h2>من اختيار الخدمة إلى تجهيز طلبك.</h2><div class="steps"><div><div class="stepnum">01</div><h3>اختر ما يناسبك</h3><p class="muted">تصفح الباقات واختر الخدمات المناسبة لرحلتك أو مهاراتك، مع معرفة السعر والتفاصيل مسبقًا.</p></div><div><div class="stepnum">02</div><h3>حدد احتياجاتك</h3><p class="muted">اكتب وجهتك أو هدفك التعليمي وتفضيلاتك وموعدك المقترح في وصف مختصر وواضح.</p></div><div><div class="stepnum">03</div><h3>ابدأ خطوتك القادمة</h3><p class="muted">جهّز طلبك بكل التفاصيل لتناقش نطاق العمل وموعد التنفيذ مع مقدم الخدمة.</p></div></div></section><section class="cta reveal"><div><div class="eyebrow">خطوتك القادمة تبدأ هنا</div><h2>رحلة تستمتع بها. ومهارة تستفيد منها.</h2><p class="muted">خطوة صغيرة اليوم قد تكون بداية شيء كبير غدًا.</p></div><a href="#services" class="btn">استكشف الخدمات ↗</a></section><section class="faq reveal" id="faq"><div class="eyebrow">إجابات تهمك</div><h2>قبل أن تبدأ.</h2><details><summary>ماذا تشمل كل باقة؟</summary><p>تعرض كل باقة مخرجات العمل والمدة وعدد الجلسات وعدد التعديلات ومتطلبات البدء وما لا يشمله السعر. اضغط «تفاصيل الباقة» لمراجعة النطاق قبل إضافتها إلى السلة.</p></details><details><summary>هل يمكنني اختيار أكثر من خدمة؟</summary><p>نعم، يمكنك جمع عدة خدمات في السلة وتكوين باقة لمشروعك، وحذف أي خدمة قبل تجهيز الطلب.</p></details><details><summary>هل الأسعار ومدة التنفيذ نهائية؟</summary><p>الأسعار المعروضة توضيحية وتبدأ بالنطاق المحدد لكل باقة. تختلف التكلفة والمدة حسب المتطلبات والتكاملات وجاهزية المحتوى، وتُعتمد قبل بدء العمل.</p></details><details><summary>كيف يعمل الدفع والحجز؟</summary><p>هذه نسخة تجريبية من المتجر. يمكنك إرسال الطلب إلى إدارة Serv عبر النموذج. تراجع الإدارة الطلب وتتواصل معك. لا يتم تحصيل مبلغ أو تأكيد حجز تلقائيًا.</p></details></section><section class="site-qr-section reveal" id="site-qr"><div><div class="eyebrow">شارك الموقع أو استكشف برمجته</div><h2>٣ رموز. لكل غرض رابط.</h2><p class="muted">رمز لفتح المتجر، وآخر لبرمجة المتجر كاملة، وثالث لبرمجة السياحة في بدية بشكل منفصل.</p></div><div class="site-qr-grid"><article><a href="https://servoman.pages.dev"><img src="assets/serv-site-qr.png" alt="رمز QR لفتح متجر Serv" width="250" height="250" loading="lazy"></a><h3>فتح متجر Serv</h3><a href="assets/serv-site-qr.png" download="serv-site-qr.png">تنزيل الرمز ↓</a></article><article><a href="source.html"><img src="assets/serv-code-qr.png" alt="رمز QR لفتح برمجة الموقع" width="250" height="250" loading="lazy"></a><h3>برمجة الموقع</h3><a href="source.html">عرض البرمجة ↗</a><a href="assets/serv-code-qr.png" download="serv-code-qr.png">تنزيل الرمز ↓</a></article><article><a href="bidiya-source.html"><img src="assets/bidiya-code-qr.png" alt="رمز QR لبرمجة السياحة في بدية فقط" width="250" height="250" loading="lazy"></a><h3>برمجة السياحة في بدية</h3><a href="bidiya-source.html">عرض البرمجة ↗</a><a href="assets/bidiya-code-qr.png" download="bidiya-code-qr.png">تنزيل الرمز ↓</a></article></div></section><footer><a class="logo" href="#">serv<span>✳</span></a><span>خدمات بإتقان. فرص جديدة.<br><br>© ٢٠٢٦ Serv · متجر تجريبي<br><span class="photo-credit">صور السياحة: Sand Camp Oman · بقية الصور: Unsplash</span></span></footer></main><div class="overlay" id="overlay"><section class="drawer" role="dialog" aria-modal="true" aria-labelledby="drawerTitle"><button class="close" id="close" aria-label="إغلاق النافذة">×</button><div id="drawerContent"></div></section></div><div class="serv-support"><a id="wa-floating" class="wa-floating" href="https://wa.me/?text=%D8%A3%D8%B1%D8%BA%D8%A8%20%D9%81%D9%8A%20%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%81%D8%B3%D8%A7%D8%B1%20%D8%B9%D9%86%20%D8%B1%D8%AD%D9%84%D8%A9%20%D9%81%D9%8A%20%D8%A8%D8%AF%D9%8A%D8%A9" target="_blank" rel="noopener noreferrer" aria-label="مشاركة استفسار عبر واتساب">واتساب ↗</a><button id="chat-toggle" class="chat-toggle" aria-expanded="false" aria-controls="serv-chat">✦ مساعد الرحلات</button></div><section id="serv-chat" class="serv-chat" aria-labelledby="chat-heading" hidden><div class="chat-header"><div><b id="chat-heading">مساعد بدية</b><small>مساعد إرشادي للباقات والطلبات</small></div><button id="chat-close" aria-label="إغلاق المساعد">×</button></div><div class="chat-log" id="chat-log" role="log" aria-live="polite" aria-relevant="additions"><div class="chat-message bot">مرحبًا! أساعدك في اختيار الدراجة أو المخيم أو السفاري، ومعرفة السعر وتجهيز طلبك. لا أؤكد الحجوزات أو التوفر الفعلي.</div></div><div class="chat-quick"><button data-chat="الأسعار">الأسعار</button><button data-chat="كم سعر المخيم ليلتين؟">احسب ليلتين</button><button data-chat="المخيم">المخيم</button><button data-chat="الدراجات">الدراجات</button><button data-chat="السفاري">السفاري</button><button data-chat="طرق الدفع">طرق الدفع</button><button data-chat="تجهيز الطلب">تجهيز الطلب</button></div><form id="chat-form"><label for="chat-input" class="visually-hidden">اكتب سؤالك للمساعد</label><input id="chat-input" placeholder="اسأل عن السعر أو التجربة…" maxlength="500" required autocomplete="off"><button type="submit" aria-label="إرسال السؤال">←</button></form><p class="chat-note">إجابات من تفاصيل الباقات فقط. محادثتك تبقى في هذه الصفحة.</p></section><dialog id="photo-dialog"><button id="photo-close" aria-label="إغلاق الصورة">×</button><img id="photo-full" alt=""><p id="photo-caption"></p></dialog><div class="toast" id="toast" role="status"></div><script>
const services=[{"id": 201, "name": "اختيار وحجز الفندق", "cat": "السفر والإقامة", "price": 5, "desc": "جهّز طلب إقامة يناسب وجهتك وميزانيتك، مع متطلبات واضحة للمقارنة قبل الحجز.", "time": "٢–٣ أيام عمل", "items": ["مقارنة مقترحة بين ٣ خيارات إقامة", "تحديد نوع الغرفة وعدد الضيوف", "مراجعة الموقع والخدمات المطلوبة", "توضيح شروط الإلغاء عند توفر عرض الفندق", "تجهيز طلب الحجز النهائي للمراجعة"], "art": "<img src=\"assets/camp-aerial.jpg\" alt=\"صورة توضيحية لخدمة اختيار وحجز الفندق\" loading=\"lazy\">", "badge": "إقامة تناسبك", "fit": "للمسافرين الذين يريدون اختيار إقامة مناسبة دون البحث العشوائي.", "needs": "الوجهة وتواريخ الدخول والخروج وعدد الغرف والضيوف والميزانية.", "excludes": "السعر لخدمة التخطيط فقط؛ تكلفة الفندق غير مشمولة. لا توجد فنادق مرتبطة أو حجوزات فعلية في النسخة التجريبية."}, {"id": 202, "name": "برنامج رحلة مخصص", "cat": "السفر والإقامة", "price": 10, "desc": "خطة يومية تجمع الإقامة والأنشطة والتنقل بحسب اهتماماتك ومدة رحلتك.", "time": "٣–٥ أيام عمل", "items": ["برنامج حتى ٧ أيام لوجهة واحدة", "اقتراح مناطق الإقامة المناسبة", "جدول أنشطة بحسب اهتماماتك", "تقدير بنود ميزانية الرحلة", "قائمة متطلبات قبل السفر وتعديل واحد"], "art": "<img src=\"assets/learning.jpg\" alt=\"صورة توضيحية لخدمة برنامج رحلة مخصص\" loading=\"lazy\">", "badge": "رحلة أكثر تنظيمًا", "fit": "للعائلات والأصدقاء والمسافرين لأول مرة.", "needs": "الوجهة والمدة وعدد المسافرين والميزانية والاهتمامات.", "excludes": "تكلفة الفنادق والطيران والتأشيرات والتذاكر غير مشمولة. الخطة لا تؤكد توفر أي حجز."}, {"id": 203, "name": "تخطيط إقامة عائلية", "cat": "السفر والإقامة", "price": 7, "desc": "رتّب احتياجات العائلة من الغرف والمرافق والموقع قبل اختيار مكان الإقامة.", "time": "٢–٤ أيام عمل", "items": ["تحديد الغرف والأسرة المطلوبة", "قائمة مرافق مناسبة للأطفال", "مقارنة متطلبات الوصول والمواقف والموقع", "تحديد احتياجات الإفطار والأسرة الإضافية", "تجهيز طلب مفصل للإقامة"], "art": "<img src=\"assets/camp-aerial.jpg\" alt=\"صورة توضيحية لخدمة تخطيط إقامة عائلية\" loading=\"lazy\">", "badge": "راحة لجميع أفراد العائلة", "fit": "للعائلات والمجموعات التي تحتاج عدة غرف أو متطلبات خاصة.", "needs": "أعمار الأطفال وعدد البالغين والغرف والتواريخ والطلبات الخاصة.", "excludes": "رسوم الخدمة لا تشمل الإقامة أو النقل؛ الطلبات الخاصة تتوقف على موافقة الفندق."}, {"id": 204, "name": "تطوير المحادثة الإنجليزية", "cat": "اللغات والتواصل", "price": 15, "desc": "خطة تدريب مركزة تساعدك على التحدث في مواقف الدراسة والعمل والسفر.", "time": "٤ أسابيع · ٨ جلسات", "items": ["تقييم أولي لمستوى المحادثة", "٨ جلسات فردية مدة كل منها ٤٥ دقيقة", "تدريب على مواقف واقعية يختارها المتعلم", "تصحيح النطق وبناء المفردات", "تمارين بين الجلسات ومراجعة ختامية"], "art": "<img src=\"assets/learning.jpg\" alt=\"صورة توضيحية لخدمة تطوير المحادثة الإنجليزية\" loading=\"lazy\">", "badge": "تحدّث بثقة أكبر", "fit": "للمبتدئين والمتوسطين الذين يريدون ممارسة المحادثة.", "needs": "مستواك الحالي وهدفك وأوقاتك المناسبة واتصال إنترنت للجلسات عن بُعد.", "excludes": "لا تشمل اختبارًا رسميًا أو شهادة معتمدة، ولا تضمن الوصول إلى مستوى محدد."}, {"id": 205, "name": "Excel وتحليل البيانات", "cat": "المهارات الرقمية", "price": 20, "desc": "تعلّم تنظيم البيانات والصيغ والتقارير من خلال ملف تطبيقي تعمل عليه بنفسك.", "time": "٣ أسابيع · ٦ جلسات", "items": ["٦ جلسات تدريب مدة كل منها ساعة", "تنظيم الجداول وتنظيف البيانات", "صيغ أساسية ودوال شرطية وبحث", "جداول محورية ورسوم بيانية", "مشروع تقرير تطبيقي وملاحظات على الحل"], "art": "<img src=\"assets/marketing.jpg\" alt=\"صورة توضيحية لخدمة Excel وتحليل البيانات\" loading=\"lazy\">", "badge": "مهارة مفيدة للدراسة والعمل", "fit": "للطلاب والموظفين الذين يعرفون أساسيات استخدام الحاسوب.", "needs": "حاسوب ونسخة Excel أو أداة متوافقة ومستوى المعرفة الحالي.", "excludes": "ترخيص البرامج وشهادات الاعتماد غير مشمولين؛ التدريب لا يشمل تحليل بيانات مؤسسة كاملة."}, {"id": 206, "name": "البرمجة وبناء أول موقع", "cat": "المهارات الرقمية", "price": 29, "desc": "تعلّم HTML وCSS وJavaScript وأنجز موقعًا بسيطًا ضمن مشروع تدريبي واضح.", "time": "٤ أسابيع · ٨ جلسات", "items": ["٨ جلسات فردية مدة كل منها ساعة", "أساسيات HTML وCSS", "مقدمة JavaScript والتفاعل", "تصميم متوافق مع الهاتف", "مراجعة الشفرة ومشروع موقع من ٣ صفحات", "شرح خطوات رفع المشروع عند توفر استضافة"], "art": "<img src=\"assets/web.jpg\" alt=\"صورة توضيحية لخدمة البرمجة وبناء أول موقع\" loading=\"lazy\">", "badge": "تعلّم بالإنجاز", "fit": "للمبتدئين الذين يريدون اكتساب أساس عملي في تطوير الويب.", "needs": "حاسوب ووقت للتمارين وهدف واضح للموقع التدريبي.", "excludes": "الاستضافة والنطاق وأنظمة الدفع وقواعد البيانات غير مشمولة؛ ليست دورة احتراف كاملة."}, {"id": 207, "name": "السيرة الذاتية والمقابلة", "cat": "المسار المهني", "price": 10, "desc": "جهّز سيرة ذاتية واضحة وتدرّب على عرض خبرتك والإجابة عن أسئلة المقابلات.", "time": "أسبوع · جلستان", "items": ["مراجعة سيرة ذاتية حتى صفحتين", "تحسين صياغة المهارات والإنجازات", "تخصيص السيرة لوظيفة مستهدفة واحدة", "جلستان مدة كل منهما ٤٥ دقيقة", "مقابلة تجريبية وملاحظات عملية", "تعديل واحد على السيرة الذاتية"], "art": "<img src=\"assets/writing.jpg\" alt=\"صورة توضيحية لخدمة السيرة الذاتية والمقابلة\" loading=\"lazy\">", "badge": "استعد لفرصتك القادمة", "fit": "للطلاب والخريجين والباحثين عن عمل.", "needs": "السيرة الحالية أو بيانات الخبرة والتعليم ووصف الوظيفة المستهدفة.", "excludes": "لا تشمل التقديم للوظائف أو ضمان القبول أو إضافة خبرات غير حقيقية."}, {"id": 208, "name": "الإلقاء والعروض التقديمية", "cat": "اللغات والتواصل", "price": 12, "desc": "تدرّب على ترتيب أفكارك والإلقاء بثقة وتقديم عرض واضح أمام الجمهور.", "time": "أسبوعان · ٤ جلسات", "items": ["٤ جلسات تدريب مدة كل منها ٤٥ دقيقة", "بناء مقدمة وتسلسل وخاتمة للعرض", "تدريب الصوت والسرعة ولغة الجسد", "مراجعة عرض حتى ١٠ شرائح", "عرض تجريبي وملاحظات وخطة تحسين"], "art": "<img src=\"assets/learning.jpg\" alt=\"صورة توضيحية لخدمة الإلقاء والعروض التقديمية\" loading=\"lazy\">", "badge": "أفكارك تستحق أن تُسمع", "fit": "للطلاب والموظفين الذين يستعدون لعرض أو تقديم مشروع.", "needs": "موضوع العرض والوقت المتاح والشرائح إن وجدت ومستوى الخبرة.", "excludes": "لا تشمل تصميم عرض كامل أو شهادة اعتماد؛ التحسن يعتمد على الممارسة."}];
let bag;try{bag=JSON.parse(localStorage.getItem('servLifeBag')||'[]').filter(id=>services.some(s=>s.id===id));}catch{bag=[]}let filter='All';let previousFocus;const grid=document.querySelector('#grid'),overlay=document.querySelector('#overlay'),content=document.querySelector('#drawerContent');const money=n=>new Intl.NumberFormat('ar-OM',{maximumFractionDigits:0}).format(n)+' ر.ع.';function render(){let query=document.querySelector('#search').value.toLowerCase();let list=services.filter(s=>(filter==='All'||s.cat===filter)&&(s.name+' '+s.desc+' '+s.cat).toLowerCase().includes(query));grid.innerHTML=list.map((s,i)=>`<article class="card" style="--i:${i}"><div class="art art${s.id}"><span class="tag">${s.badge}</span>${s.art}</div><div class="cardbody"><div class="category">${s.cat} · ${s.time}</div><h3>${s.name}</h3><p>${s.desc}</p><div class="cardfoot"><div class="price"><small>ابتداءً من</small>${money(s.price)}</div><button class="add" data-view="${s.id}">تفاصيل الباقة ↖</button></div></div></article>`).join('');document.querySelector('#noresults').hidden=!!list.length}function update(){document.querySelector('#count').textContent=bag.length;const badge=document.querySelector('#cartBtn');badge.classList.remove('bump');void badge.offsetWidth;badge.classList.add('bump');try{localStorage.setItem('servLifeBag',JSON.stringify(bag))}catch{}}function open(){previousFocus=document.activeElement;overlay.classList.add('open');document.body.classList.add('noscroll');document.querySelector('#close').focus()}function close(){overlay.classList.remove('open');document.body.classList.remove('noscroll');previousFocus?.focus()}function view(id){let s=services.find(s=>s.id===id);content.innerHTML=`<div class="eyebrow">${s.cat}</div><h2 id="drawerTitle">${s.name}</h2><p class="muted">${s.desc}</p><div class="price">${money(s.price)}</div><p class="muted">المدة أو عدد الجلسات: ${s.time}</p><div class="scope-note"><b>لمن تناسب؟</b><p>${s.fit}</p></div><h3>ماذا تشمل الباقة؟</h3><ul style="padding-left:20px;line-height:2.2;font-size:14px">${s.items.map(x=>'<li>'+x+'</li>').join('')}</ul><div class="scope-note"><b>ما نحتاجه منك</b><p>${s.needs}</p></div><div class="scope-note"><b>خارج نطاق السعر</b><p>${s.excludes}</p></div><button class="btn" id="addPackage">${bag.includes(id)?'مضافة إلى السلة · عرض السلة':'أضف إلى السلة ←'}</button><p class="notice">باقة توضيحية للنسخة التجريبية. يُتفق على نطاق العمل النهائي ومدة التسليم مع مقدم الخدمة.</p>`;document.querySelector('#addPackage').onclick=()=>{if(!bag.includes(id)){bag.push(id);update();toast('تمت الإضافة إلى السلة')}cart()};open()}function cart(){content.innerHTML=`<div class="eyebrow">خطوتك القادمة</div><h2 id="drawerTitle">سلة خدماتك.</h2>${bag.length?bag.map(id=>{let s=services.find(s=>s.id===id);return `<div class="orderitem"><div><b>${s.name}</b><div class="muted">${money(s.price)}</div></div><button class="remove" data-remove="${id}" aria-label="حذف ${s.name}">حذف</button></div>`}).join('')+`<div class="total"><span>الإجمالي التقديري</span><span>${money(bag.reduce((a,id)=>a+services.find(s=>s.id===id).price,0))}</span></div><form id="brief"><label for="name">اسمك</label><input id="name" required autocomplete="name" placeholder="اسمك"><label for="email">البريد الإلكتروني</label><input id="email" type="email" required autocomplete="email" placeholder="you@example.com"><label for="date">موعد البدء أو تسجيل الدخول المقترح</label><input id="date" type="date" required><label for="delivery">طريقة تقديم الخدمة</label><select id="delivery" required><option value="">اختر الطريقة</option><option>تخطيط إقامة أو رحلة</option><option>تدريب عن بُعد</option><option>طلب تدريب حضوري حسب التوفر</option></select><label for="idea">حدثنا عن احتياجاتك</label><textarea id="idea" required rows="4" placeholder="للسفر: المدينة، الدخول والخروج، الضيوف والميزانية. للتدريب: مستواك الحالي والهدف وأوقاتك المناسبة…"></textarea><div class="payment-box"><span class="payment-demo">بيانات صاحب المتجر · غير متحقق منها</span><h3>طرق الدفع والتحويل</h3><p>اختر الطريقة المفضلة لتضمينها في الطلب. لا يعالج الموقع أي دفعة.</p><label for="bag-payment">طريقة الدفع المفضلة</label><select id="bag-payment"><option value="تحويل برقم الهاتف — بنك مسقط (غير متحقق)">تحويل برقم الهاتف — بنك مسقط (غير متحقق)</option><option value="الدفع عند تقديم الخدمة — حسب الاتفاق">الدفع عند تقديم الخدمة — حسب الاتفاق</option></select><div class="bank-preview"><span>البنك</span><b>بنك مسقط</b><span>رقم الهاتف المقدم للتحويل</span><b dir="ltr">+968 9579 8399</b></div><p class="notice">الرقم مقدم من صاحب المتجر، ولم يتم التحقق من ارتباطه بحساب بنك مسقط أو اسم المستفيد. تحقق من المستفيد قبل التحويل. لا يوجد ربط بنكي، ولا يُعد اختيار الطريقة إثبات دفع أو تأكيد حجز.</p></div><button class="btn" type="submit">تنزيل طلب الخدمة ↓</button><p class="notice">أرسل الطلب من النموذج. يصل إلى إدارة Serv للمراجعة، ولا تتم معالجة أي دفع تلقائيًا.</p></form>`:'<p class="empty">اختر خدمة لرحلتك أو مهارتك القادمة.</p><button class="btn" id="browse">تصفح الخدمات ↗</button>'}`;if(!bag.length)document.querySelector('#browse').onclick=()=>{close();location.hash='services'};document.querySelector('#brief')?.addEventListener('submit',e=>{e.preventDefault();let text='SERV — طلب خدمة\n\nالاسم: '+document.querySelector('#name').value+'\nالبريد الإلكتروني: '+document.querySelector('#email').value+'\n\nالخدمات:\n'+bag.map(id=>{let s=services.find(s=>s.id===id);return s.name+' — '+money(s.price)+'\nالمدة: '+s.time+'\nيشمل: '+s.items.join('؛ ')+'\nمتطلبات البدء: '+s.needs+'\nخارج النطاق: '+s.excludes+'\n'}).join('\n')+'\n\nالإجمالي التقديري: '+money(bag.reduce((a,id)=>a+services.find(s=>s.id===id).price,0))+'\n\nالموعد المقترح: '+document.querySelector('#date').value+'\nطريقة الخدمة: '+document.querySelector('#delivery').value+'\nطريقة الدفع المفضلة: '+document.querySelector('#bag-payment').value+'\nبيانات التحويل المقدمة: بنك مسقط / +968 9579 8399 — غير متحقق منها'+'\n\nوصف الاحتياجات:\n'+document.querySelector('#idea').value+'\n\nطلب تجريبي فقط. لم يتم إرسال حجز أو إجراء دفع.';let url=URL.createObjectURL(new Blob([text],{type:'text/plain'}));let a=document.createElement('a');a.href=url;a.download='serv-project-request.txt';a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);toast('تم تنزيل طلب الخدمة. لم يتم إرسال أي حجز.');});const dateInput=document.querySelector('#date');if(dateInput){const now=new Date();dateInput.min=now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0')}open()}function toast(t){let el=document.querySelector('#toast');el.textContent=t;el.style.display='block';clearTimeout(window.toastTimeout);window.toastTimeout=setTimeout(()=>el.style.display='none',3500)}document.querySelectorAll('[data-filter]').forEach(b=>b.onclick=()=>{filter=b.dataset.filter;document.querySelectorAll('.filter').forEach(x=>x.classList.toggle('active',x===b));render()});document.querySelector('#search').oninput=render;grid.onclick=e=>{let b=e.target.closest('[data-view]');if(b)view(+b.dataset.view)};content.onclick=e=>{let b=e.target.closest('[data-remove]');if(b){bag=bag.filter(id=>id!==+b.dataset.remove);update();cart()}};document.querySelector('#cartBtn').onclick=cart;document.querySelector('#close').onclick=close;overlay.onclick=e=>{if(e.target===overlay)close()};document.addEventListener('keydown',e=>{if(!overlay.classList.contains('open'))return;if(e.key==='Escape')close();if(e.key==='Tab'){const els=[...overlay.querySelectorAll('button,input,textarea,select,a[href]')];let first=els[0],last=els[els.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus()}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus()}}});render();update();
const reducedMotion=window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if('IntersectionObserver' in window&&!reducedMotion){document.body.classList.add('motion-ready');const observer=new IntersectionObserver(entries=>{entries.forEach(e=>{if(e.isIntersecting){e.target.classList.add('visible');observer.unobserve(e.target)}})},{threshold:.08});document.querySelectorAll('.reveal').forEach(el=>observer.observe(el));}
let scrollTick=false;function updateScroll(){const max=document.documentElement.scrollHeight-window.innerHeight;document.querySelector('#scrollProgress').style.width=(max>0?window.scrollY/max*100:0)+'%';document.querySelector('header').classList.toggle('scrolled',window.scrollY>30);scrollTick=false}window.addEventListener('scroll',()=>{if(!scrollTick){scrollTick=true;requestAnimationFrame(updateScroll)}},{passive:true});updateScroll();
document.querySelectorAll('[data-goal]').forEach(button=>button.addEventListener('click',()=>{filter=button.dataset.goal;document.querySelector('#search').value='';document.querySelectorAll('.filter').forEach(b=>b.classList.toggle('active',b.dataset.filter===filter));render();document.querySelector('#services').scrollIntoView({behavior:reducedMotion?'auto':'smooth',block:'start'});toast('هذه الخدمات تناسب هدفك: '+filter)}));
const bidiyaRates={'جولة دراجات رملية':{price:25,unit:'ساعة'},'حجز مخيم صحراوي':{price:45,unit:'ليلة'},'رحلة سفاري وتطعيس':{price:30,unit:'جولة'}};
const bidiyaDate=document.querySelector('#bidiya-date');const bidiyaToday=new Date();bidiyaDate.min=bidiyaToday.getFullYear()+'-'+String(bidiyaToday.getMonth()+1).padStart(2,'0')+'-'+String(bidiyaToday.getDate()).padStart(2,'0');
function bidiyaTotal(){const service=document.querySelector('#bidiya-service').value,rate=bidiyaRates[service],units=Number(document.querySelector('#bidiya-units').value);document.querySelector('#bidiya-estimate').textContent=rate&&Number.isInteger(units)&&units>=1&&units<=30?'التكلفة التقديرية: '+money(rate.price*units)+' · '+units+' '+rate.unit+' · تُراجع مع مقدم الخدمة':'اختر خدمة وعدد وحدات صالحًا لعرض التكلفة التقديرية.';}
document.querySelector('#bidiya-service').addEventListener('change',bidiyaTotal);document.querySelector('#bidiya-units').addEventListener('input',bidiyaTotal);
document.querySelectorAll('[data-bidiya-service]').forEach(b=>b.addEventListener('click',()=>{document.querySelector('#bidiya-service').value=b.dataset.bidiyaService;bidiyaTotal();document.querySelector('#bidiya-booking').scrollIntoView({behavior:reducedMotion?'auto':'smooth',block:'start'});document.querySelector('#bidiya-name').focus({preventScroll:true})}));
document.querySelector('#bidiya-form').addEventListener('submit',e=>{e.preventDefault();const service=document.querySelector('#bidiya-service').value,rate=bidiyaRates[service],units=Number(document.querySelector('#bidiya-units').value);if(!rate||!Number.isInteger(units)||units<1||units>30)return;const request=['SERV — طلب سياحة في بدية','الاسم: '+document.querySelector('#bidiya-name').value,'الهاتف: '+document.querySelector('#bidiya-phone').value,'الخدمة: '+service,'تاريخ الزيارة: '+bidiyaDate.value,'عدد الأشخاص: '+document.querySelector('#bidiya-guests').value,'عدد الوحدات: '+units+' '+rate.unit,'السعر التقديري: '+money(rate.price*units),'طريقة الدفع المفضلة: '+document.querySelector('#bidiya-payment').value,'بيانات التحويل المقدمة: بنك مسقط / +968 9579 8399 — ارتباط الرقم بالحساب غير متحقق','الطلبات الإضافية: '+document.querySelector('#bidiya-notes').value,'','طلب محلي فقط. لم يتم إرسال حجز أو إجراء دفع. الأسعار والتوفر يتطلبان مراجعة مقدم الخدمة.'].join('\n');const url=URL.createObjectURL(new Blob([request],{type:'text/plain;charset=utf-8'}));const link=document.createElement('a');link.href=url;link.download='bidiya-trip-request.txt';link.click();setTimeout(()=>URL.revokeObjectURL(url),1000);toast('تم تنزيل الطلب فقط؛ لم يتم إرسال أو تأكيد حجز.');});
function bidiyaRequestText(){const service=document.querySelector('#bidiya-service').value;const rate=bidiyaRates[service];const units=Number(document.querySelector('#bidiya-units').value);return ['استفسار عن خدمات السياحة في بدية','الاسم: '+document.querySelector('#bidiya-name').value,'الخدمة: '+(service||'لم تحدد بعد'),'التاريخ: '+(bidiyaDate.value||'لم يحدد بعد'),'عدد الأشخاص: '+document.querySelector('#bidiya-guests').value,rate?'السعر التقديري: '+money(rate.price*units):'يرجى توضيح السعر والتوفر','ملاحظات: '+document.querySelector('#bidiya-notes').value,'طريقة الدفع المفضلة: '+document.querySelector('#bidiya-payment').value,'بيانات التحويل المقدمة: بنك مسقط / +968 9579 8399 — ارتباط الرقم بالحساب غير متحقق','رابط المتجر: '+location.href,'هذا استفسار فقط وليس تأكيد حجز.'].join('\n');}
document.querySelector('#bidiya-whatsapp').addEventListener('click',()=>{const f=document.querySelector('#bidiya-form');if(!f.reportValidity())return;window.open('https://wa.me/?text='+encodeURIComponent(bidiyaRequestText()),'_blank','noopener,noreferrer');toast('اختر جهة التواصل داخل واتساب؛ لا يوجد رقم مقدم خدمة مرتبط بعد.');});
const chatPanel=document.querySelector('#serv-chat'),chatToggle=document.querySelector('#chat-toggle');function setChat(open){chatPanel.hidden=!open;chatToggle.setAttribute('aria-expanded',String(open));if(open)document.querySelector('#chat-input').focus();else chatToggle.focus()}chatToggle.onclick=()=>setChat(chatPanel.hidden);document.querySelector('#chat-close').onclick=()=>setChat(false);
function message(text,type='bot',service){const node=document.createElement('div');node.className='chat-message '+type;node.textContent=text;if(service){const btn=document.createElement('button');btn.type='button';btn.textContent='اختيار هذه التجربة';btn.onclick=()=>{document.querySelector('#bidiya-service').value=service;bidiyaTotal();setChat(false);document.querySelector('#bidiya-booking').scrollIntoView({behavior:reducedMotion?'auto':'smooth'});document.querySelector('#bidiya-name').focus({preventScroll:true})};node.appendChild(btn)}const log=document.querySelector('#chat-log');log.appendChild(node);log.scrollTop=log.scrollHeight;}
function chatAnswer(raw){message(raw,'user');const q=raw.replace(/[أإآ]/g,'ا').replace(/ى/g,'ي').toLowerCase();if(/سعر|اسعار|تكلف|كم|prices|cost/.test(q)){const nums=q.match(/[0-9٠-٩]+/);const n=nums?Number(nums[0].replace(/[٠-٩]/g,d=>'٠١٢٣٤٥٦٧٨٩'.indexOf(d))):/ليلتين|ساعتين|جولتين/.test(q)?2:null;const rate=/مخيم|خيم|ليله|ليل/.test(q)?45:/دراج|ساع/.test(q)?25:/سفاري|جول/.test(q)?30:null;if(n&&n>0&&n<=30&&rate){message('التكلفة التقديرية: '+money(n*rate)+' لعدد '+n+' وحدات. هذا حساب من أسعار الباقات المرفقة، وليس عرضًا مؤكدًا من مقدم الخدمة. عدد الأشخاص والسعة يُراجعان قبل الحجز.');return}message('أسعار الباقات المرفقة:\n• الدراجة الرملية: ٢٥ ر.ع لكل ساعة.\n• المخيم VIP: ٤٥ ر.ع لكل ليلة.\n• السفاري 4x4: ٣٠ ر.ع لكل جولة.\nالسعر النهائي والسعة والتوفر تُراجع مع مقدم الخدمة. اختر الباقة وعدد الوحدات لعرض تقدير الطلب.');return}if(/مخيم|خيم|اقام|نوم|camp/.test(q)){message('باقة المخيم: ٤٥ ر.ع لليلة. الوصف المرفق يشمل خيمة مفروشة ومكيفة، جلسة سمر وعشاء بدوي. لا توجد جهة مرتبطة لتأكيد السعة أو التوفر؛ يمكنك تجهيز طلب بتاريخ الزيارة وعدد الأشخاص.','bot','حجز مخيم صحراوي');return}if(/دراج|buggy|بقي/.test(q)){message('الدراجات الرملية: ٢٥ ر.ع للساعة، ووصف الباقة يشمل معدات السلامة. عمر السائق المسموح والتعليمات والتأمين يتطلب التحقق من مقدم الخدمة.','bot','جولة دراجات رملية');return}if(/سفاري|تطعيس|4x4|جول/.test(q)){message('السفاري: ٣٠ ر.ع للجولة، بسيارة دفع رباعي مع سائق محترف بحسب الوصف المرفق. مدة الجولة وعدد الركاب ونقطة الانطلاق تحتاج إلى تأكيد مقدم الخدمة.','bot','رحلة سفاري وتطعيس');return}if(/حجز|طلب|استاجر|booking|book/.test(q)){message('لتجهيز طلبك: اختر التجربة، ثم أدخل الاسم والهاتف والتاريخ وعدد الأشخاص والوحدات. يمكنك إرسال الطلب إلى إدارة Serv عبر النموذج، أو مشاركته عبر واتساب. الإدارة تراجعه قبل تأكيد التفاصيل.');const node=document.querySelector('#chat-log').lastElementChild;const b=document.createElement('button');b.textContent='انتقل إلى نموذج الطلب';b.type='button';b.onclick=()=>{setChat(false);document.querySelector('#bidiya-booking').scrollIntoView({behavior:reducedMotion?'auto':'smooth'})};node.appendChild(b);return}if(/صور|معرض|غرف|غرفه|مجلس/.test(q)){message('أضفنا معرض صور من موقع Sand Camp Oman، يشمل الإقامة والغرف والجلسات والدراجات. يمكنك تكبير الصور بالضغط عليها؛ الصور لا تعني شراكة أو توفر الباقات.');const b=document.createElement('button');b.textContent='شاهد صور المخيم';b.onclick=()=>{setChat(false);document.querySelector('#camp-gallery').scrollIntoView({behavior:reducedMotion?'auto':'smooth'})};document.querySelector('#chat-log').lastElementChild.appendChild(b);return}if(/واتس|تواصل|whatsapp/.test(q)){message('زر واتساب يفتح رسالة لتشاركها مع جهة تختارها داخل التطبيق. لم يتم توفير رقم فعلي لمقدم الخدمة بعد، لذلك لا يفتح محادثة مباشرة مع فريق الحجز.');return}if(/دفع|تحويل|بنك|مسقط/.test(q)){message('توجد خيارات تفضيل الدفع: التحويل برقم الهاتف باسم بنك مسقط (غير متحقق)، أو الدفع عند تقديم الخدمة حسب الاتفاق. الرقم المقدم من صاحب المتجر هو +968 9579 8399. لم يُتحقق من ارتباطه بحساب البنك أو اسم المستفيد؛ تحقق من المستفيد قبل التحويل. لا يوجد ربط بنكي ولا تتم معالجة أي دفعة أو إثبات دفع.');return}if(/الغاء|استرد|تامن|تأمين|متاح|توفر|تاريخ/.test(q)){message('لا يمكنني تأكيد التوفر أو سياسة الإلغاء أو التأمين. لا يُحصّل الموقع أي دفع. راجع مقدم الخدمة قبل الالتزام، وأضف موعدك ومتطلباتك إلى الطلب.');return}if(/عائل|اطفال|طفل|انسب|اقترح/.test(q)){message('للإقامة يمكنك استكشاف باقة المخيم. ولجولة مع سائق يمكنك مراجعة السفاري. أعمار الأطفال وسعة المركبة وملاءمة النشاط تُراجع مع مقدم الخدمة. هل تفضّل إقامة أم جولة؟');return}message('أستطيع شرح أسعار الدراجات والمخيم والسفاري ومساعدتك في إرسال الطلب إلى إدارة Serv. جرّب: «كم سعر المخيم؟» أو «كيف أجهز الطلب؟». لا أملك معلومات مباشرة عن التوفر أو المشغّلين.');}
document.querySelector('#chat-form').addEventListener('submit',e=>{e.preventDefault();const input=document.querySelector('#chat-input'),text=input.value.trim();if(!text)return;input.value='';chatAnswer(text)});document.querySelectorAll('[data-chat]').forEach(b=>b.onclick=()=>chatAnswer(b.dataset.chat));document.addEventListener('keydown',e=>{if(e.key==='Escape'&&!chatPanel.hidden)setChat(false)});
document.addEventListener('click',e=>{const button=e.target.closest('.btn,.add,.chat-toggle,.goal-options button');if(!button||reducedMotion)return;const rect=button.getBoundingClientRect(),r=document.createElement('span');r.className='click-ripple';r.style.left=(e.clientX-rect.left)+'px';r.style.top=(e.clientY-rect.top)+'px';button.appendChild(r);setTimeout(()=>r.remove(),700)});
const photoDialog=document.querySelector('#photo-dialog');document.querySelectorAll('[data-photo]').forEach(b=>b.addEventListener('click',()=>{document.querySelector('#photo-full').src=b.dataset.photo;document.querySelector('#photo-full').alt=b.dataset.caption;document.querySelector('#photo-caption').textContent=b.dataset.caption;photoDialog.showModal()}));document.querySelector('#photo-close').onclick=()=>photoDialog.close();photoDialog.addEventListener('click',e=>{if(e.target===photoDialog){const r=photoDialog.getBoundingClientRect();if(e.clientX<r.left||e.clientX>r.right||e.clientY<r.top||e.clientY>r.bottom)photoDialog.close()}});
</script><script src="/orders-client.js?v=cloudflare-1"></script></body></html>