Compare commits

..

1 Commits

Author SHA1 Message Date
ff314b3c85 Sync: update devices from WordPress 2026-02-20 22:07:34 -05:00
9 changed files with 93 additions and 229 deletions

View File

@@ -1,21 +1,20 @@
<?php
/**
* Title: Player Devices
* Slug: ots-signs/page-devices
* Categories: oribi-pages
* Keywords: devices, hardware, player, screens, HDMI, commercial display
* Post Types: page
* Page: Devices
* Slug: devices
* Pushed by Oribi Tech Sync on 2026-02-20 22:07:33.
*/
?>
<!-- wp:oribi/page-hero-animated {"label":"Hardware","title":"Player Devices Built for Reliability","description":"Our digital signage players are engineered for performance, security, and simplicity. Plug in, connect, and start displaying. It\u0027s that easy."} /-->
return <<<'ORIBI_SYNC_CONTENT'
<!-- wp:oribi/page-hero-animated {"label":"Hardware","title":"Player Devices Built for Reliability","description":"Our digital signage players are engineered for performance, security, and simplicity. Plug in, connect, and start displaying. Itu0027s that easy."} /-->
<!-- wp:oribi/platform-section {"label":"Our Devices","heading":"Hardware That Just Works","lead":"Purpose-built player devices designed for 24/7 commercial use with zero maintenance."} -->
<!-- wp:oribi/platform-row {"heading":"Use Existing Screens","description":"Our digital signage players work on any screen with HDMI, so you can easily integrate them into your current setup. No need to replace your existing displays. Just plug in our player and start broadcasting. If you need a complete solution, we also offer bundled packages that include both the player and a high-quality commercial-grade display.","btnText":"Get a Quote","btnUrl":"/contact"} /-->
<!-- wp:oribi/platform-row {"heading":"Intelligent Offline Playback","description":"Our player devices are engineered to keep your message on screen, even when the internet isn\u0027t available. Content is cached locally so your displays continue running seamlessly. When connectivity returns, new content syncs automatically, no manual intervention needed.","btnText":"See Features","btnUrl":"/features","reversed":true} /-->
<!-- wp:oribi/platform-row {"heading":"Intelligent Offline Playback","description":"Our player devices are engineered to keep your message on screen, even when the internet isnu0027t available. Content is cached locally so your displays continue running seamlessly. When connectivity returns, new content syncs automatically, no manual intervention needed.","btnText":"See Features","btnUrl":"/features","reversed":true} /-->
<!-- wp:oribi/platform-row {"heading":"Enterprise-Grade Security","description":"Every device is hardened with enterprise-grade security protocols. Encrypted communications, secure boot, and remote management capabilities ensure your signage network stays protected. Automatic firmware updates keep your devices current without any downtime.","btnText":"Learn More","btnUrl":"/about"} /-->
<!-- /wp:oribi/platform-section -->
<!-- wp:oribi/feature-section {"variant":"alt","label":"Device Specifications","heading":"What\u0027s Inside Every Player","lead":"Commercial-grade components designed for continuous operation in any environment.","columns":3} -->
<!-- wp:oribi/feature-section {"variant":"alt","label":"Device Specifications","heading":"Whatu0027s Inside Every Player","lead":"Commercial-grade components designed for continuous operation in any environment.","columns":3} -->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-display","title":"4K Output","description":"Crystal-clear 4K resolution output via HDMI for stunning visual quality on any display."} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-wifi","title":"Dual Connectivity","description":"Built-in Wi-Fi and Ethernet for flexible network connectivity options in any installation."} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-hard-drive","title":"Local Storage","description":"On-device storage caches your content for seamless offline playback and instant startup."} /-->
@@ -24,6 +23,7 @@
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-temperature-low","title":"Silent Operation","description":"Fanless design means zero noise, making our players perfect for quiet environments like lobbies and restaurants."} /-->
<!-- /wp:oribi/feature-section -->
<!-- wp:oribi/intro-section {"variant":"normal","label":"Bundles Available","heading":"Complete Display Solutions","description":"Need screens too? We offer bundled packages that include our player device paired with a commercial-grade display, rated for 24/7 operation with enhanced brightness and durability. Available in a range of sizes from 32\" to 75\". Contact us for custom configurations and volume pricing.","visual":""} /-->
<!-- wp:oribi/intro-section {"variant":"normal","label":"Bundles Available","heading":"Complete Display Solutions","description":"Need screens too? We offer bundled packages that include our player device paired with a commercial-grade display, rated for 24/7 operation with enhanced brightness and durability. Available in a range of sizes from 32" to 75". Contact us for custom configurations and volume pricing.","visual":""} /-->
<!-- wp:oribi/cta-banner {"heading":"Need Help Choosing?","text":"Our team can recommend the right device and display combination for your specific environment and use case.","btnText":"Request a Quote","btnUrl":"/contact"} /-->
ORIBI_SYNC_CONTENT;

View File

@@ -1,25 +1,32 @@
<?php
/*
* Title: Home
* Slug: home
* Post Type: page
/**
* Title: Home Page
* Slug: ots-signs/page-home
* Categories: oribi-pages
* Keywords: home, digital signage, landing, hero
* Post Types: page
*/
return <<<'ORIBI_SYNC_CONTENT'
?>
<!-- wp:oribi/hero-animated {"label":"● Digital Signage Solutions","title":"Turn any screen into a dynamic communication tool.","highlightWord":"dynamic","description":"Digital signage is the modern way to connect with your audience. From eye-catching retail displays to dynamic informational screens, we craft tailored solutions that capture attention and deliver your message.","primaryBtnText":"Get Started","primaryBtnUrl":"/contact","secondaryBtnText":"Request Demo","secondaryBtnUrl":"/demo","stat1Value":"6+","stat1Label":"Industries Served","stat2Value":"500+","stat2Label":"Screens Supported","stat3Value":"99.9%","stat3Label":"Uptime"} /-->
<!-- wp:oribi/platform-section {"label":"The Complete Package","heading":"Everything You Need for Engaging Digital Signage","lead":"High-quality visuals, real-time data, and reliable playback all managed from one powerful platform."} -->
<!-- wp:oribi/platform-row {"heading":"Professional Content Creation","description":"Our in-house photography and video production services showcase your products, services, and environment with polished, engaging visuals. From digital menu boards to branded promotions, we create content that captures attention.","btnText":"See Features","btnUrl":"/features"} /-->
<!-- wp:oribi/platform-row {"heading":"Live Data &amp; Web Dashboards","description":"Integrate your existing web dashboards, social feeds, and real-time data sources directly to your displays. Bring your most important information to life on screen, automatically and effortlessly.","btnText":"Learn More","btnUrl":"/features","reversed":true} /-->
<!-- wp:oribi/platform-row {"heading":"Reliable on Any Screen","description":"Our intelligent player devices work on any screen with HDMI, and keep your message running even when the internet goes down. Enterprise-grade hardware designed for uninterrupted, always-on signage.","btnText":"View Devices","btnUrl":"/devices"} /-->
<!-- /wp:oribi/platform-section -->
<!-- wp:oribi/feature-section {"variant":"alt","label":"Who It's For","heading":"Solutions for Every Industry","lead":"Modern businesses need real-time communication. Digital signage helps you connect, inform, and engage.","columns":4} -->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-hotel","title":"Hospitality","description":"Showcase menus, promotions, and special events while guiding guests through lobbies, restaurants, and bars.","url":"/solutions"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-store","title":"Retail","description":"Drive product upsells, announce flash-sales, and offer in-store navigation with fresh, eye-catching displays.","url":"/solutions"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-building","title":"Corporate","description":"Enhance meeting experiences with Teams integration. Communicate schedules, company news, and employee alerts.","url":"/solutions"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-graduation-cap","title":"Education","description":"Broadcast class schedules, announcements, and interactive learning content in campuses and auditoriums.","url":"/solutions"} /-->
<!-- wp:oribi/feature-section {"variant":"normal","label":"The Complete Package","heading":"Everything You Need for Engaging Digital Signage","lead":"High-quality visuals, real-time data, and reliable playback, all managed from one powerful platform.","columns":4} -->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-camera","title":"Showcase Your Products","description":"Professional photography and video production services to showcase your products, services, or environment with polished, engaging content.","url":"/features"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-chart-line","title":"Live Data Integrations","description":"Integrate your existing web dashboards and real-time data with our platform to bring your most important information to life on digital signage.","url":"/features"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-utensils","title":"Digital Menu Boards","description":"Make your menu as appealing as your product. We incorporate your branding and include high-quality photography to showcase your offerings.","url":"/solutions"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-wifi","title":"Offline Playback Support","description":"Our intelligent player devices keep your message on screen even when the internet isn\u0027t available, ensuring reliability in any location.","url":"/devices"} /-->
<!-- /wp:oribi/feature-section -->
<!-- wp:oribi/cta-banner {"heading":"Ready to Transform Your Screens?","text":"See our plans, explore player devices, or request a live demo. No pressure, no jargon — just a conversation about how we can help.","btnText":"Get Started","btnUrl":"/contact"} /-->
ORIBI_SYNC_CONTENT;
<!-- wp:oribi/image-section {"variant":"alt","label":"Who It's For","heading":"Solutions for Every Industry","lead":"Modern businesses need real-time communication. Digital signage helps you connect, inform, and engage.","columns":4} -->
<!-- wp:oribi/image-card {"iconType":"fontawesome","faIcon":"fas fa-hotel","title":"Hospitality","description":"Showcase menus, promotions, and special events while guiding guests through lobbies, restaurants, and bars.","url":"/solutions"} /-->
<!-- wp:oribi/image-card {"iconType":"fontawesome","faIcon":"fas fa-store","title":"Retail","description":"Drive product upsells, announce flash-sales, and offer in-store navigation with fresh, eye-catching displays.","url":"/solutions"} /-->
<!-- wp:oribi/image-card {"iconType":"fontawesome","faIcon":"fas fa-building","title":"Corporate","description":"Enhance meeting experiences with Teams integration. Communicate schedules, company news, and employee alerts.","url":"/solutions"} /-->
<!-- wp:oribi/image-card {"iconType":"fontawesome","faIcon":"fas fa-graduation-cap","title":"Education","description":"Broadcast class schedules, announcements, and interactive learning content in campuses and auditoriums.","url":"/solutions"} /-->
<!-- /wp:oribi/image-section -->
<!-- wp:oribi/link-section {"label":"Explore","heading":"Take the Next Step","lead":"See our plans, explore devices, or request a demo.","columns":3} -->
<!-- wp:oribi/link-card {"iconType":"fontawesome","faIcon":"fas fa-tags","title":"Pricing Plans","description":"Affordable, scalable options for businesses of all sizes. See what\u0027s included at every level.","linkText":"View Pricing","linkUrl":"/pricing"} /-->
<!-- wp:oribi/link-card {"iconType":"fontawesome","faIcon":"fas fa-microchip","title":"Player Devices","description":"Enterprise-grade hardware designed for reliability, with offline playback and HDMI compatibility.","linkText":"See Devices","linkUrl":"/devices"} /-->
<!-- wp:oribi/link-card {"iconType":"fontawesome","faIcon":"fas fa-play-circle","title":"Request a Demo","description":"See our platform in action. Request access to our live demo instance.","linkText":"Try It Out","linkUrl":"/demo"} /-->
<!-- /wp:oribi/link-section -->
<!-- wp:oribi/cta-banner {"heading":"Ready to Transform Your Screens?","text":"Get in touch to discuss your digital signage needs. No pressure, no jargon. Just a conversation about how we can help.","btnText":"Get Started Today","btnUrl":"/contact"} /-->

View File

@@ -9,12 +9,12 @@
?>
<!-- wp:oribi/page-hero-animated {"label":"Pricing","title":"Affordable Solutions, Scalable Options","description":"Simple, transparent pricing designed to grow with your business. Every plan includes our core platform features, no hidden fees, no surprises."} /-->
<!-- wp:oribi/value-section {"variant":"normal","label":"All Plans Include","heading":"Core Features on Every Plan","lead":"No matter which plan you choose, you get the full power of our digital signage platform.","columns":4} -->
<!-- wp:oribi/value-card {"iconType":"fontawesome","faIcon":"fas fa-clock","title":"Content Scheduling","description":"Day-parting, time-based triggers, and automated content rotation included on every plan."} /-->
<!-- wp:oribi/value-card {"iconType":"fontawesome","faIcon":"fas fa-chart-line","title":"Live Data Integration","description":"Connect your web dashboards and real-time data sources directly to your digital signage."} /-->
<!-- wp:oribi/value-card {"iconType":"fontawesome","faIcon":"fas fa-users","title":"Unlimited User Seats","description":"Add your entire team, no per-user charges or access limitations."} /-->
<!-- wp:oribi/value-card {"iconType":"fontawesome","faIcon":"fas fa-rocket","title":"Publish in Minutes","description":"Upload content and push it to your screens instantly across your entire network."} /-->
<!-- /wp:oribi/value-section -->
<!-- wp:oribi/feature-section {"variant":"normal","label":"All Plans Include","heading":"Core Features on Every Plan","lead":"No matter which plan you choose, you get the full power of our digital signage platform.","columns":4} -->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-clock","title":"Content Scheduling","description":"Day-parting, time-based triggers, and automated content rotation included on every plan."} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-chart-line","title":"Live Data Integration","description":"Connect your web dashboards and real-time data sources directly to your digital signage."} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-users","title":"Unlimited User Seats","description":"Add your entire team, no per-user charges or access limitations."} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-rocket","title":"Publish in Minutes","description":"Upload content and push it to your screens instantly across your entire network."} /-->
<!-- /wp:oribi/feature-section -->
<!-- wp:oribi/pricing-section {"variant":"alt","label":"Choose Your Plan","heading":"Plans That Fit Your Business","lead":"Start small and scale as you grow. All plans come with our full-featured cloud CMS."} -->
<!-- wp:oribi/pricing-card {"name":"Essentials","tagline":"$7/Screen Monthly · $70/Screen Annually","features":["Up to 20 screens","Custom subdomain","Shared CMS server","Content scheduling & day-parting","Integration with live data sources","Unlimited user seats","Publish content in minutes","Offline playback support","Email support"],"btnText":"Get Started","btnUrl":"/contact"} /-->

View File

@@ -21,10 +21,10 @@
<!-- wp:oribi/link-card {"iconType":"fontawesome","faIcon":"fas fa-question-circle","title":"FAQ","description":"Find answers to the most common questions about our platform, pricing, setup, and support options.","linkText":"Browse FAQ","linkUrl":"/faq"} /-->
<!-- /wp:oribi/link-section -->
<!-- wp:oribi/link-section {"variant":"normal","label":"Content Tools","heading":"Create Better Content","lead":"Tools and templates to help you create engaging digital signage content.","columns":3} -->
<!-- wp:oribi/link-card {"iconType":"fontawesome","faIcon":"fas fa-palette","title":"Template Library","description":"Browse our collection of professionally designed templates for menus, promotions, wayfinding, and informational displays.","linkText":"Browse Templates","linkUrl":"/contact"} /-->
<!-- wp:oribi/link-card {"iconType":"fontawesome","faIcon":"fas fa-image","title":"Media Best Practices","description":"Guidelines for image resolution, video formats, file sizes, and aspect ratios optimised for digital signage.","linkText":"View Guidelines","linkUrl":"/contact"} /-->
<!-- wp:oribi/link-card {"iconType":"fontawesome","faIcon":"fas fa-lightbulb","title":"Content Strategy Tips","description":"Learn how to structure your content rotation, day-parting schedules, and messaging for maximum audience impact.","linkText":"Read Tips","linkUrl":"/contact"} /-->
<!-- /wp:oribi/link-section -->
<!-- wp:oribi/feature-section {"variant":"normal","label":"Content Tools","heading":"Create Better Content","lead":"Tools and templates to help you create engaging digital signage content.","columns":3} -->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-palette","title":"Template Library","description":"Browse our collection of professionally designed templates for menus, promotions, wayfinding, and informational displays.","url":"/contact"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-image","title":"Media Best Practices","description":"Guidelines for image resolution, video formats, file sizes, and aspect ratios optimised for digital signage.","url":"/contact"} /-->
<!-- wp:oribi/feature-card {"iconType":"fontawesome","faIcon":"fas fa-lightbulb","title":"Content Strategy Tips","description":"Learn how to structure your content rotation, day-parting schedules, and messaging for maximum audience impact.","url":"/contact"} /-->
<!-- /wp:oribi/feature-section -->
<!-- wp:oribi/cta-banner {"heading":"Need Personalised Help?","text":"Our team is available to walk you through any aspect of the platform or help with content creation.","btnText":"Contact Support","btnUrl":"/contact"} /-->

View File

@@ -2011,55 +2011,12 @@ p:last-child { margin-bottom: 0; }
100% { transform: translateY(var(--p-ty, -100vh)) translateX(var(--p-tx, 40px)) scale(var(--p-scale-end, 0.3)); opacity: 0; }
}
/* Horizontal sway layered onto particle float */
@keyframes particle-sway {
0%, 100% { margin-left: 0; }
25% { margin-left: var(--p-sway, 20px); }
75% { margin-left: calc(var(--p-sway, 20px) * -1); }
}
@keyframes glow-drift {
0% { transform: translate(-50%, -50%) scale(1); opacity: 0.3; }
50% { transform: translate(-40%, -60%) scale(1.2); opacity: 0.5; }
100% { transform: translate(-50%, -50%) scale(1); opacity: 0.3; }
}
/* Orbit / wander keyframes for decorative circles */
@keyframes circle-orbit-1 {
0% { transform: translate(0, 0) scale(1); }
25% { transform: translate(80px, -60px) scale(1.1); }
50% { transform: translate(-40px, -120px) scale(0.95); }
75% { transform: translate(-100px, -30px) scale(1.05); }
100% { transform: translate(0, 0) scale(1); }
}
@keyframes circle-orbit-2 {
0% { transform: translate(0, 0) scale(1); }
25% { transform: translate(-70px, 50px) scale(1.08); }
50% { transform: translate(60px, 90px) scale(0.9); }
75% { transform: translate(100px, -40px) scale(1.12); }
100% { transform: translate(0, 0) scale(1); }
}
@keyframes circle-orbit-3 {
0% { transform: translate(0, 0) scale(1); }
33% { transform: translate(120px, 30px) scale(1.15); }
66% { transform: translate(-60px, -80px) scale(0.85); }
100% { transform: translate(0, 0) scale(1); }
}
@keyframes circle-orbit-4 {
0% { transform: translate(0, 0) scale(1); }
20% { transform: translate(-50px, -90px) scale(1.1); }
40% { transform: translate(90px, -50px) scale(0.92); }
60% { transform: translate(40px, 70px) scale(1.08); }
80% { transform: translate(-80px, 40px) scale(0.95); }
100% { transform: translate(0, 0) scale(1); }
}
@keyframes circle-orbit-5 {
0% { transform: translate(0, 0) scale(1); }
30% { transform: translate(60px, 80px) scale(1.05); }
60% { transform: translate(-90px, 20px) scale(1.1); }
100% { transform: translate(0, 0) scale(1); }
}
/* Particle container */
.hero-particles {
position: absolute;
@@ -2074,71 +2031,23 @@ p:last-child { margin-bottom: 0; }
position: absolute;
border-radius: 50%;
background: rgba(255, 255, 255, 0.12);
animation:
particle-float var(--p-dur, 18s) var(--p-delay, 0s) linear infinite,
particle-sway var(--p-sway-dur, 6s) var(--p-delay, 0s) ease-in-out infinite;
animation: particle-float var(--p-dur, 18s) var(--p-delay, 0s) linear infinite;
will-change: transform, opacity;
}
/* 12 particles with unique positions, sizes, speeds, and trajectories */
.hero-particle--1 { --p-dur: 22s; --p-delay: 0s; --p-tx: 60px; --p-ty: -110vh; --p-opacity: 0.35; --p-scale-end: 0.2; --p-sway: 15px; --p-sway-dur: 5s; width: 8px; height: 8px; bottom: -10px; left: 8%; }
.hero-particle--2 { --p-dur: 28s; --p-delay: 3s; --p-tx: -40px; --p-ty: -105vh; --p-opacity: 0.25; --p-scale-end: 0.4; --p-sway: 25px; --p-sway-dur: 7s; width: 14px; height: 14px; bottom: -20px; left: 20%; }
.hero-particle--3 { --p-dur: 20s; --p-delay: 1s; --p-tx: 80px; --p-ty: -115vh; --p-opacity: 0.3; --p-scale-end: 0.3; --p-sway: 12px; --p-sway-dur: 4s; width: 6px; height: 6px; bottom: -8px; left: 35%; }
.hero-particle--4 { --p-dur: 26s; --p-delay: 5s; --p-tx: -60px; --p-ty: -100vh; --p-opacity: 0.4; --p-scale-end: 0.2; --p-sway: 30px; --p-sway-dur: 8s; width: 10px; height: 10px; bottom: -12px; left: 50%; }
.hero-particle--5 { --p-dur: 24s; --p-delay: 2s; --p-tx: 30px; --p-ty: -108vh; --p-opacity: 0.2; --p-scale-end: 0.5; --p-sway: 20px; --p-sway-dur: 6s; width: 20px; height: 20px; bottom: -25px; left: 65%; background: rgba(var(--color-primary-rgb),0.12); }
.hero-particle--6 { --p-dur: 30s; --p-delay: 7s; --p-tx: -20px; --p-ty: -112vh; --p-opacity: 0.35; --p-scale-end: 0.3; --p-sway: 18px; --p-sway-dur: 5.5s; width: 12px; height: 12px; bottom: -15px; left: 78%; }
.hero-particle--7 { --p-dur: 19s; --p-delay: 4s; --p-tx: 50px; --p-ty: -106vh; --p-opacity: 0.2; --p-scale-end: 0.4; --p-sway: 22px; --p-sway-dur: 7.5s; width: 16px; height: 16px; bottom: -20px; left: 90%; background: rgba(var(--color-primary-rgb),0.08); }
.hero-particle--8 { --p-dur: 25s; --p-delay: 6s; --p-tx: -70px; --p-ty: -102vh; --p-opacity: 0.3; --p-scale-end: 0.2; --p-sway: 10px; --p-sway-dur: 4.5s; width: 7px; height: 7px; bottom: -10px; left: 15%; }
.hero-particle--9 { --p-dur: 32s; --p-delay: 8s; --p-tx: 45px; --p-ty: -110vh; --p-opacity: 0.15; --p-scale-end: 0.6; --p-sway: 35px; --p-sway-dur: 9s; width: 24px; height: 24px; bottom: -30px; left: 42%; background: rgba(var(--color-primary-rgb),0.08); }
.hero-particle--10 { --p-dur: 21s; --p-delay: 10s; --p-tx: -35px; --p-ty: -108vh; --p-opacity: 0.3; --p-scale-end: 0.3; --p-sway: 16px; --p-sway-dur: 6.5s; width: 9px; height: 9px; bottom: -12px; left: 58%; }
.hero-particle--11 { --p-dur: 27s; --p-delay: 12s; --p-tx: 25px; --p-ty: -104vh; --p-opacity: 0.2; --p-scale-end: 0.4; --p-sway: 28px; --p-sway-dur: 8.5s; width: 18px; height: 18px; bottom: -22px; left: 72%; background: rgba(var(--color-primary-rgb),0.06); }
.hero-particle--12 { --p-dur: 23s; --p-delay: 9s; --p-tx: -55px; --p-ty: -106vh; --p-opacity: 0.25; --p-scale-end: 0.3; --p-sway: 14px; --p-sway-dur: 5s; width: 11px; height: 11px; bottom: -14px; left: 5%; }
/* Orbit circle container */
.hero-orbit-circles {
position: absolute;
inset: 0;
overflow: hidden;
z-index: 0;
pointer-events: none;
}
/* Individual orbit circles */
.hero-orbit-circle {
position: absolute;
border-radius: 50%;
background: rgba(var(--color-primary-rgb), 0.05);
will-change: transform;
}
.hero-orbit-circle--1 {
width: 300px; height: 300px;
top: -5%; left: -5%;
animation: circle-orbit-1 25s ease-in-out infinite;
}
.hero-orbit-circle--2 {
width: 200px; height: 200px;
top: 60%; right: -3%;
background: rgba(var(--color-accent-rgb), 0.04);
animation: circle-orbit-2 30s ease-in-out infinite;
}
.hero-orbit-circle--3 {
width: 160px; height: 160px;
top: 20%; left: 55%;
animation: circle-orbit-3 22s ease-in-out infinite;
}
.hero-orbit-circle--4 {
width: 240px; height: 240px;
bottom: -8%; left: 30%;
background: rgba(var(--color-primary-rgb), 0.035);
animation: circle-orbit-4 28s ease-in-out infinite;
}
.hero-orbit-circle--5 {
width: 120px; height: 120px;
top: 10%; right: 20%;
background: rgba(var(--color-accent-rgb), 0.04);
animation: circle-orbit-5 20s ease-in-out infinite;
}
.hero-particle--1 { --p-dur: 22s; --p-delay: 0s; --p-tx: 60px; --p-ty: -110vh; --p-opacity: 0.35; --p-scale-end: 0.2; width: 8px; height: 8px; bottom: -10px; left: 8%; }
.hero-particle--2 { --p-dur: 28s; --p-delay: 3s; --p-tx: -40px; --p-ty: -105vh; --p-opacity: 0.25; --p-scale-end: 0.4; width: 14px; height: 14px; bottom: -20px; left: 20%; }
.hero-particle--3 { --p-dur: 20s; --p-delay: 1s; --p-tx: 80px; --p-ty: -115vh; --p-opacity: 0.3; --p-scale-end: 0.3; width: 6px; height: 6px; bottom: -8px; left: 35%; }
.hero-particle--4 { --p-dur: 26s; --p-delay: 5s; --p-tx: -60px; --p-ty: -100vh; --p-opacity: 0.4; --p-scale-end: 0.2; width: 10px; height: 10px; bottom: -12px; left: 50%; }
.hero-particle--5 { --p-dur: 24s; --p-delay: 2s; --p-tx: 30px; --p-ty: -108vh; --p-opacity: 0.2; --p-scale-end: 0.5; width: 20px; height: 20px; bottom: -25px; left: 65%; background: rgba(var(--color-primary-rgb),0.12); }
.hero-particle--6 { --p-dur: 30s; --p-delay: 7s; --p-tx: -20px; --p-ty: -112vh; --p-opacity: 0.35; --p-scale-end: 0.3; width: 12px; height: 12px; bottom: -15px; left: 78%; }
.hero-particle--7 { --p-dur: 19s; --p-delay: 4s; --p-tx: 50px; --p-ty: -106vh; --p-opacity: 0.2; --p-scale-end: 0.4; width: 16px; height: 16px; bottom: -20px; left: 90%; background: rgba(var(--color-primary-rgb),0.08); }
.hero-particle--8 { --p-dur: 25s; --p-delay: 6s; --p-tx: -70px; --p-ty: -102vh; --p-opacity: 0.3; --p-scale-end: 0.2; width: 7px; height: 7px; bottom: -10px; left: 15%; }
.hero-particle--9 { --p-dur: 32s; --p-delay: 8s; --p-tx: 45px; --p-ty: -110vh; --p-opacity: 0.15; --p-scale-end: 0.6; width: 24px; height: 24px; bottom: -30px; left: 42%; background: rgba(var(--color-primary-rgb),0.08); }
.hero-particle--10 { --p-dur: 21s; --p-delay: 10s; --p-tx: -35px; --p-ty: -108vh; --p-opacity: 0.3; --p-scale-end: 0.3; width: 9px; height: 9px; bottom: -12px; left: 58%; }
.hero-particle--11 { --p-dur: 27s; --p-delay: 12s; --p-tx: 25px; --p-ty: -104vh; --p-opacity: 0.2; --p-scale-end: 0.4; width: 18px; height: 18px; bottom: -22px; left: 72%; background: rgba(var(--color-primary-rgb),0.06); }
.hero-particle--12 { --p-dur: 23s; --p-delay: 9s; --p-tx: -55px; --p-ty: -106vh; --p-opacity: 0.25; --p-scale-end: 0.3; width: 11px; height: 11px; bottom: -14px; left: 5%; }
/* Ambient glow effect behind content */
.hero-animated__glow {
@@ -2151,7 +2060,6 @@ p:last-child { margin-bottom: 0; }
background: rgba(var(--color-primary-rgb), 0.06);
z-index: 1;
pointer-events: none;
animation: glow-drift 12s ease-in-out infinite;
}
/* Animated hero layout - centered single-column content */
@@ -2198,7 +2106,6 @@ p:last-child { margin-bottom: 0; }
position: relative;
}
.page-hero-animated .hero-particles { z-index: 0; }
.page-hero-animated .hero-orbit-circles { z-index: 0; }
.page-hero-animated .hero-animated__glow { z-index: 0; }
.page-hero-animated .hero-overlay { z-index: 1; }
.page-hero-animated .container { position: relative; z-index: 2; }
@@ -2206,8 +2113,7 @@ p:last-child { margin-bottom: 0; }
/* Reduce motion for accessibility */
@media (prefers-reduced-motion: reduce) {
.hero-particle,
.hero-animated__glow,
.hero-orbit-circle {
.hero-animated__glow {
animation: none;
opacity: var(--p-opacity, 0.2);
}
@@ -2670,13 +2576,6 @@ p:last-child { margin-bottom: 0; }
[data-theme="dark"] .hero-animated__glow {
background: rgba(var(--color-primary-rgb), 0.08);
}
[data-theme="dark"] .hero-orbit-circle {
background: rgba(var(--color-primary-rgb), 0.06);
}
[data-theme="dark"] .hero-orbit-circle--2,
[data-theme="dark"] .hero-orbit-circle--5 {
background: rgba(var(--color-accent-rgb), 0.05);
}
[data-theme="dark"] .site-footer { background: #0D0D0D; }

View File

@@ -698,10 +698,9 @@ function oribi_render_site_header() {
/** Fallback menu when no WP menu is assigned. */
function oribi_fallback_menu() {
echo '<ul class="nav-menu">';
echo '<li><a href="' . esc_url( home_url( '/solutions' ) ) . '">Solutions</a></li>';
echo '<li><a href="' . esc_url( home_url( '/features' ) ) . '">Features</a></li>';
echo '<li><a href="' . esc_url( home_url( '/pricing' ) ) . '">Pricing</a></li>';
echo '<li><a href="' . esc_url( home_url( '/managed-it' ) ) . '">Services</a></li>';
echo '<li><a href="' . esc_url( home_url( '/about' ) ) . '">About</a></li>';
echo '<li><a href="' . esc_url( home_url( '/faq' ) ) . '">FAQ</a></li>';
echo '<li><a href="' . esc_url( home_url( '/contact' ) ) . '">Contact</a></li>';
echo '</ul>';
}
@@ -719,25 +718,25 @@ function oribi_render_site_footer() {
<?php else : ?>
<div class="logo-text"><strong>Oribi</strong> Tech</div>
<?php endif; ?>
<p class="footer-tagline">Digital signage solutions that communicate, engage, and grow your business.</p>
<p class="footer-location">An Oribi Technology Services Company</p>
<p class="footer-tagline">IT solutions tailored for your business.</p>
<p class="footer-location">Saratoga Springs, Upstate New York</p>
</div>
<div class="footer-links">
<div class="footer-col">
<h4>Platform</h4>
<h4>Services</h4>
<ul>
<li><a href="<?php echo esc_url( home_url( '/features' ) ); ?>">Features</a></li>
<li><a href="<?php echo esc_url( home_url( '/pricing' ) ); ?>">Pricing</a></li>
<li><a href="<?php echo esc_url( home_url( '/devices' ) ); ?>">Devices</a></li>
<li><a href="<?php echo esc_url( home_url( '/demo' ) ); ?>">Demo</a></li>
<li><a href="<?php echo esc_url( home_url( '/365care' ) ); ?>">365Care</a></li>
<li><a href="<?php echo esc_url( home_url( '/endpointcare' ) ); ?>">EndpointCare</a></li>
<li><a href="<?php echo esc_url( home_url( '/netcare' ) ); ?>">NetCare</a></li>
<li><a href="<?php echo esc_url( home_url( '/servercare' ) ); ?>">ServerCare</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Company</h4>
<ul>
<li><a href="<?php echo esc_url( home_url( '/about' ) ); ?>">About</a></li>
<li><a href="<?php echo esc_url( home_url( '/solutions' ) ); ?>">Solutions</a></li>
<li><a href="<?php echo esc_url( home_url( '/resources' ) ); ?>">Resources</a></li>
<li><a href="<?php echo esc_url( home_url( '/managed-it' ) ); ?>">Managed IT</a></li>
<li><a href="<?php echo esc_url( home_url( '/services-comparison' ) ); ?>">Compare</a></li>
<li><a href="<?php echo esc_url( home_url( '/faq' ) ); ?>">FAQ</a></li>
</ul>
</div>
@@ -745,14 +744,14 @@ function oribi_render_site_footer() {
<h4>Connect</h4>
<ul>
<li><a href="<?php echo esc_url( home_url( '/contact' ) ); ?>">Contact</a></li>
<li><a href="https://ots-signs.com/portal" target="_blank" rel="noopener">Client Portal</a></li>
<li><a href="mailto:hello@ots-signs.com">Email Us</a></li>
<li><a href="https://portal.oribi-tech.com/" target="_blank" rel="noopener">Client Portal</a></li>
<li><a href="mailto:solutions@oribi-tech.com">Email Us</a></li>
</ul>
</div>
</div>
</div>
<div class="footer-bottom">
<p>&copy; <?php echo esc_html( $year ); ?> Oribi Technology Services. All rights reserved.</p>
<p>&copy; <?php echo esc_html( $year ); ?> OTS Themenology Services. All rights reserved.</p>
</div>
</div>
</footer>
@@ -951,13 +950,12 @@ function oribi_render_contact_section( $a ) {
<div class="form-group">
<label for="cf-interest">Interested In</label>
<select id="cf-interest" name="interest">
<option value="">Select a topic&hellip;</option>
<option value="Digital Signage">Digital Signage Solutions</option>
<option value="Content Creation">Content Creation</option>
<option value="Hardware">Player Devices &amp; Hardware</option>
<option value="Pricing">Pricing &amp; Plans</option>
<option value="Demo">Request a Demo</option>
<option value="Support">Technical Support</option>
<option value="">Select a service&hellip;</option>
<option value="365Care">365Care</option>
<option value="EndpointCare">EndpointCare</option>
<option value="NetCare">NetCare</option>
<option value="ServerCare">ServerCare</option>
<option value="Full Managed IT">Full Managed IT</option>
<option value="Other">Other / Not sure</option>
</select>
</div>
@@ -1492,28 +1490,12 @@ function oribi_render_particles( $count = 12 ) {
return $html;
}
/**
* Render decorative orbit circles that drift around the hero.
*
* @param int $count Number of circles (default 5).
* @return string Rendered HTML.
*/
function oribi_render_orbit_circles( $count = 5 ) {
$html = '<div class="hero-orbit-circles" aria-hidden="true">';
for ( $i = 1; $i <= $count; $i++ ) {
$html .= '<div class="hero-orbit-circle hero-orbit-circle--' . $i . '"></div>';
}
$html .= '</div>';
return $html;
}
/* ── Animated Hero (homepage) ──────────────────────────────────────────────── */
function oribi_render_hero_animated( $a ) {
ob_start();
?>
<section class="hero hero-animated">
<?php echo oribi_render_particles( 12 ); ?>
<?php echo oribi_render_orbit_circles( 5 ); ?>
<div class="hero-animated__glow"></div>
<div class="container hero-animated__inner">
<div class="hero-animated__content">
@@ -1554,7 +1536,6 @@ function oribi_render_page_hero_animated( $a ) {
ob_start(); ?>
<section class="page-hero page-hero-animated">
<?php echo oribi_render_particles( 8 ); ?>
<?php echo oribi_render_orbit_circles( 4 ); ?>
<div class="hero-animated__glow"></div>
<div class="hero-overlay"></div>
<div class="container">

View File

@@ -94,21 +94,18 @@ function oribi_get_setting( $key ) {
*/
function oribi_maybe_seed_defaults() {
$defaults = oribi_get_theme_defaults();
$hash = md5( wp_json_encode( $defaults ) );
$stored = get_theme_mod( 'oribi_defaults_hash', '' );
if ( $stored === $hash ) {
if ( get_theme_mod( 'oribi_defaults_seeded' ) ) {
return;
}
$defaults = oribi_get_theme_defaults();
foreach ( $defaults as $key => $value ) {
set_theme_mod( 'oribi_' . $key, $value );
// Only set if the user hasn't already saved a value.
if ( false === get_theme_mod( 'oribi_' . $key, false ) ) {
set_theme_mod( 'oribi_' . $key, $value );
}
}
set_theme_mod( 'oribi_defaults_hash', $hash );
set_theme_mod( 'oribi_defaults_seeded', true );
// Force CSS regeneration on next check.
set_theme_mod( 'oribi_css_theme_version', '' );
}

View File

@@ -227,11 +227,11 @@ function oribi_build_css() {
--color-bg-alt: {$dk_bg_alt};
--color-bg-dark: {$dk_bg_dark};
--color-heading: {$dk_heading};
--header-scrolled-bg: rgba(26,26,26,.97);
--header-scrolled-bg: rgba(15,23,36,.97);
--header-scrolled-text: {$dk_text};
--card-bg: {$dk_card_bg};
--form-bg: {$dk_card_bg};
--form-bg-focus: {$dk_card_bg};
--form-bg-focus: #1A2538;
}
/* ── Typography application ────────────────────────────────────── */
@@ -295,32 +295,12 @@ function oribi_write_generated_css() {
}
/**
* Regenerate the CSS file when it is missing or the theme version has changed.
* Regenerate the CSS file if it doesn't exist yet (e.g. first page load).
*
* Hooked early so the file is ready before wp_enqueue_scripts fires.
* Also re-seeds defaults if the palette has changed, so the generated
* CSS always reflects the current default values.
*/
add_action( 'init', function () {
// Re-seed defaults if the defaults array has changed (e.g. new palette).
if ( function_exists( 'oribi_maybe_seed_defaults' ) ) {
oribi_maybe_seed_defaults();
}
$needs_regen = ! file_exists( oribi_generated_css_path() );
if ( ! $needs_regen && defined( 'ORIBI_VERSION' ) ) {
$stored = get_theme_mod( 'oribi_css_theme_version', '' );
if ( $stored !== ORIBI_VERSION ) {
$needs_regen = true;
}
}
if ( $needs_regen ) {
if ( ! file_exists( oribi_generated_css_path() ) ) {
oribi_write_generated_css();
if ( defined( 'ORIBI_VERSION' ) ) {
set_theme_mod( 'oribi_css_theme_version', ORIBI_VERSION );
}
}
} );

View File

@@ -4,7 +4,7 @@ Theme URI: https://oribi-tech.com
Author: Oribi Technology Services
Author URI: https://oribi-tech.com
Description: Custom marketing theme for Oribi Technology Services - Managed IT, 365Care, EndpointCare, NetCare, ServerCare.
Version: 1.1.0
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 7.4