diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..ae1c3c2 Binary files /dev/null and b/.DS_Store differ diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..a1dafd3 --- /dev/null +++ b/.htaccess @@ -0,0 +1,53 @@ +# Zettai Systems — Apache / cPanel +# +# Clean URLs: /about serves about.html; /about.html 301 → /about +# /services must NOT become /services/ (folder clash with services.html — breaks relative CSS) + +ErrorDocument 404 /404.html + +Options -Indexes + +# Critical: without this, Apache turns /services into /services/ (real folder), +# then relative css/style.css resolves to /services/css/style.css and the page is unstyled. + + DirectorySlash Off + + + + RewriteEngine On + RewriteBase / + + + Options -MultiViews + + + # Old Odoo service URL → ERP (clean) + RewriteRule ^services/odoo\.html$ /services/erp [R=301,L] + RewriteRule ^services/odoo/?$ /services/erp [R=301,L] + + # /index.html → / + RewriteCond %{THE_REQUEST} \s/+index\.html[\s?] [NC] + RewriteRule ^index\.html$ / [R=301,L] + + # /path/page.html → /path/page (browser request only) + RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC] + RewriteRule ^ /%1 [R=301,L] + + # /services/ → /services (fixes broken relative CSS under trailing slash) + RewriteRule ^services/$ /services [R=301,L] + + # /services → services.html (page, not the services/ directory) + RewriteRule ^services$ services.html [L] + + # Extensionless URLs → .html + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME}.html -f + RewriteRule ^(.+?)/?$ $1.html [L] + + +# Safe security headers (do not block static assets) + + Header set X-Content-Type-Options "nosniff" + Header set Referrer-Policy "strict-origin-when-cross-origin" + diff --git a/404.html b/404.html new file mode 100644 index 0000000..65d8949 --- /dev/null +++ b/404.html @@ -0,0 +1,59 @@ + + + + + + + Page Not Found | Zettai Systems + + + + + + + + + + + + + + + + + + + + +
+
+
+ +

Page Not Found

+

The page you’re looking for doesn’t exist or may have moved. Let’s get you back on track.

+ +
+
+
+ + + + + + + + + diff --git a/__pycache__/serve.cpython-314.pyc b/__pycache__/serve.cpython-314.pyc new file mode 100644 index 0000000..e06b229 Binary files /dev/null and b/__pycache__/serve.cpython-314.pyc differ diff --git a/about.html b/about.html new file mode 100644 index 0000000..a51d7fe --- /dev/null +++ b/about.html @@ -0,0 +1,550 @@ + + + + + + + About Us | Zettai Systems + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
About Zettai Systems
+

Technology Partners Focused on Real Business Outcomes

+

We design, build, and support software that fits your workflows—so teams move faster with clarity, security, and room to grow.

+
+
+ 2016 + Founded in Chennai +
+
+ 4 + Core technology stacks +
+
+ End-to-end + Discovery to support +
+
+ Partner + Not one-off delivery +
+
+
+
+ + +
+
+
+
+
Who We Are
+

Technology Is Only as Good as the Business Outcomes It Drives

+

At Zettai Systems, we don’t just write code—we analyze your core operational workflows before architecting a single feature. Our focus is converting complex engineering challenges into secure, reliable digital assets that protect operational margins and maximize resource utilization.

+

As a Chennai-based engineering partner, we help mid-market and growing enterprises future-proof their infrastructure, reduce technical debt, and deliver predictable performance gains through web, mobile, cloud, and enterprise platforms.

+
    +
  • + +
    One accountable engineering team — web, mobile, cloud, and enterprise delivery under one roof.
    +
  • +
  • + +
    Workflow-first architecture — we map how your business works before we write a line of code.
    +
  • +
  • + +
    Built to last together — long-term partnership with support, QA, and continuous improvement.
    +
  • +
+
+ + +
+
+
+ + +
+
+
+
Our Story
+

Built in Chennai. Focused on Delivery.

+

From our founding year to how we work today—an engineering house shaped around clarity, quality, and long-term partnerships.

+
+
+
+
2016
+
+

Founded in Chennai

+

Zettai Systems’ journey began in Chennai with a clear idea: software should solve operational problems—not create new ones. We started by building practical platforms for businesses that needed dependable engineering.

+
+
+
+
Growth
+
+

Four core stacks, one team

+

We deepened delivery across CodeIgniter 4 / PHP, Flutter mobile, Node.js services, and dedicated QA—so clients could trust one partner for backend, mobile, APIs, and quality.

+
+
+
+
Today
+
+

Full-spectrum digital partner

+

We now support web and mobile products, cloud integration, data analytics, cybersecurity consulting, ERP, and e-commerce—always with transparent process and post-launch support.

+
+
+
+
+
+ + +
+
+
+
What Guides Us
+

Our Working Principles

+

These principles show up in architecture reviews, sprint planning, QA cycles, and how we communicate with your team.

+
+
+
+
+
01
+

Outcomes over features

+

We measure success by workflow improvement, reliability, and maintainability—not by how many screens we ship.

+
+
+
+
+
02
+

Clarity before code

+

Requirements, constraints, and architecture decisions are discussed openly so delivery stays predictable.

+
+
+
+
+
03
+

Security by design

+

Security considerations are part of planning and build—not a late-stage patch after launch.

+
+
+
+
+
04
+

Quality is non-negotiable

+

Manual and automated testing protect releases. We catch issues before your users do.

+
+
+
+
+
05
+

Transparent collaboration

+

Structured sprints, visible progress, and clear communication—so you always know where things stand.

+
+
+
+
+
06
+

Partnership mindset

+

We stay after go-live for monitoring, enhancements, and continuous improvement.

+
+
+
+
+
+ + + +
+
+
+
+
Connected Delivery
+

One Hub. Many Capabilities.

+

Our delivery model keeps web, mobile, cloud, data, security, and QA moving around a single accountable engineering core—so systems stay integrated instead of fragmented.

+
    +
  • Modular by design — capabilities plug into a shared architecture.
  • +
  • Always in motion — continuous improvement after launch, not a one-time handoff.
  • +
  • Custom-built fit — shaped around your workflows, not a generic template.
  • +
+ Explore Capabilities +
+ +
+
+
+ + +
+
+
+
Purpose
+

Mission, Vision & Approach

+
+
+
+ +

Mission

+

Empower businesses through innovative, scalable, and reliable technology solutions that streamline operations and unlock growth.

+
+
+ +

Vision

+

Become a trusted technology partner delivering secure, intelligent, and future-ready digital solutions.

+
+
+ +

Approach

+

Long-term partnerships, not one-off projects. We’re invested in your success at every stage—from discovery through ongoing support.

+
+
+
+
+ + +
+
+
+
What We Do
+

Capabilities Across the Product Lifecycle

+

From architecture to ongoing support—we handle the layers of your digital product with structured care.

+
+
+
+
+
+

Web Architecture & Platforms

+

Custom full-stack applications engineered for performance, maintainability, and enterprise data security.

+
CI4PHPNode.jsREST
+
+
+
+
+
+

Cross-Platform Mobile

+

High-performance iOS and Android applications on Flutter—native-quality UX from a single codebase.

+
FlutteriOSAndroidDart
+
+
+
+
+
+

Cloud Integration

+

Cloud architecture connecting systems for scalability, accessibility, and operational resilience.

+
AWSGCPAzureDevOps
+
+
+
+
+
+

QA & Quality Engineering

+

Regression and automated pipelines—including API testing—to protect stability before every release.

+
AutomatedManualAPI Testing
+
+
+
+
+
+

Data Analytics

+

Dashboards, reporting pipelines, and analytics tools that turn raw data into decisions.

+
DashboardsReportingBI
+
+
+
+
+
+

Cybersecurity & Consulting

+

Security-aware architecture, assessments, and IT consulting to strengthen digital infrastructure.

+
AuditArchitectureConsulting
+
+
+
+ +
+
+ + +
+
+
+
+
How We Help
+

Clarity Before Code

+

Software succeeds when it removes bottlenecks. We start with how your business actually works—then design systems your team can own.

+ Start a Conversation +
+
+
+
+

Understand the problem

Map workflows, constraints, and success criteria before recommending tools.

+
+
+

Design for ownership

Maintainable code, clear architecture, and platforms you can operate long-term.

+
+
+

Build with discipline

Security-conscious development, structured sprints, and quality checks throughout.

+
+
+

Support after launch

Enhancements, monitoring, and continuous improvement—not a handoff and goodbye.

+
+
+
+
+
+
+ + +
+
+
+
Delivery Process
+

How We Work With You

+

Transparent and structured—from first conversation to post-launch support, you always know where your project stands.

+
+
+
01

Discovery

Deep dive into operational roadblocks, constraints, and commercial goals.

+
02

Architecture

Design the system, choose the right stack, and plan the sprints.

+
03

Development

Agile delivery with clear tracking and estimate alignment before coding begins.

+
04

QA & Testing

Dedicated quality cycles before any deployment.

+
05

Deployment

Careful releases with rollback-minded practices.

+
06

Support

Post-launch monitoring, fixes, and ongoing feature development.

+
+
+
+ + +
+
+
+
Technology
+

Battle-Tested Stacks We Deliver With

+

Our team operates across core stacks—enabling end-to-end delivery from robust backends to polished mobile experiences and quality assurance.

+
+
+
+
+

CodeIgniter 4

+

Scalable MVC web backends—from REST APIs to full-stack PHP platforms.

+
PHPMVCREST APIs
+
+
+
+
+

Flutter

+

Cross-platform mobile apps with smooth UI and native-quality performance.

+
iOSAndroidDart
+
+
+
+
+

Node.js

+

Event-driven APIs, real-time systems, and services built to handle growth.

+
ExpressAPIsReal-time
+
+
+
+
+

QA & Testing

+

Manual and automated quality across every sprint and release.

+
AutomatedManualCI/CD
+
+
+
+
+
+

AI & Agentic

+

Python · FastAPI · LangChain

+
+ RAG + Agents + pgvector +
+
+
+
+
+
+ + +
+
+
+
+
Why Zettai Systems
+

Why Businesses Partner With Us

+
+

Business-focused solutions

We start with workflows and outcomes—not features for their own sake.

+

Experienced technical team

Engineers and architects who communicate clearly and deliver with structure.

+

Scalable architecture

Systems planned for growth, maintainability, and long-term ownership.

+

Flexible engagement

Customized solutions shaped around your roadmap and operating model.

+
+
+
+ +
+
+
+
+ + +
+
+
+
FAQ
+

Common Questions About Zettai Systems

+
+
+
+
+
+

+
Zettai Systems is a Chennai-based technology partner focused on custom software, web and mobile products, cloud integration, data analytics, cybersecurity consulting, and enterprise platforms and ERP systems.
+
+
+

+
Yes. We develop custom web platforms and cross-platform mobile applications—commonly using stacks such as CodeIgniter 4 / PHP, Node.js, and Flutter—based on your requirements.
+
+
+

+
Yes. API integration, cloud connectivity, and business automation are part of how we help teams connect platforms and reduce manual bottlenecks.
+
+
+

+
Yes. Our approach emphasizes long-term partnership—monitoring, bug fixes, enhancements, and continuous improvement after go-live.
+
+
+
+
+
+
+ + +
+
+
+
+

Let’s build what’s next—together

+

Tell us about your product, platform, or transformation goals. We’ll respond with a clear, practical next step.

+
+ +
+
+
+
+ + + + + + + + + diff --git a/api/.htaccess b/api/.htaccess new file mode 100644 index 0000000..c11a301 --- /dev/null +++ b/api/.htaccess @@ -0,0 +1,4 @@ +# Protect helper files — only contact.php / careers.php should be called + + Require all denied + diff --git a/api/careers.php b/api/careers.php new file mode 100644 index 0000000..98fe2e7 --- /dev/null +++ b/api/careers.php @@ -0,0 +1,61 @@ + true, 'message' => 'Thank you. Your application has been received.']); +} + +$name = zs_field('name', 120); +$email = zs_field('email', 160); +$phone = zs_field('phone', 40); +$position = zs_field('position', 120); +$experience = zs_field('experience', 40); +$message = zs_field('message', 5000); + +if ($name === '' || $email === '' || $phone === '' || $position === '' || $experience === '') { + zs_json_response(400, ['ok' => false, 'error' => 'Please fill in all required fields.']); +} +if (!zs_valid_email($email)) { + zs_json_response(400, ['ok' => false, 'error' => 'Please enter a valid email address.']); +} + +$attachment = zs_resume_attachment(); +if ($attachment === null) { + zs_json_response(400, ['ok' => false, 'error' => 'Please attach your resume (PDF or Word).']); +} + +$mailSubject = '[Career] ' . $position . ' – ' . $name; +$body = "New career application from the Zettai Systems website\n"; +$body .= str_repeat('-', 48) . "\n\n"; +$body .= "Name: {$name}\n"; +$body .= "Email: {$email}\n"; +$body .= "Phone: {$phone}\n"; +$body .= "Position: {$position}\n"; +$body .= "Experience: {$experience}\n\n"; +$body .= "Message:\n" . ($message !== '' ? $message : '—') . "\n\n"; +$body .= "Resume attached: {$attachment['name']}\n\n"; +$body .= str_repeat('-', 48) . "\n"; +$body .= 'Submitted: ' . gmdate('Y-m-d H:i:s') . " UTC\n"; +$body .= 'IP: ' . ($_SERVER['REMOTE_ADDR'] ?? 'unknown') . "\n"; + +$sent = zs_send_mail(ZS_CAREERS_TO, $mailSubject, $body, $email, $attachment); + +if (!$sent) { + zs_json_response(500, [ + 'ok' => false, + 'error' => 'We could not send your application right now. Please email careers@zettaisystems.com or try again later.', + ]); +} + +zs_json_response(200, [ + 'ok' => true, + 'message' => 'Thank you. Your application has been sent. Our team will review it and follow up if there is a fit.', +]); diff --git a/api/contact.php b/api/contact.php new file mode 100644 index 0000000..892fc7d --- /dev/null +++ b/api/contact.php @@ -0,0 +1,61 @@ + true, 'message' => 'Thank you. We have received your message.']); +} + +$name = zs_field('name', 120); +$email = zs_field('email', 160); +$phone = zs_field('phone', 40); +$company = zs_field('company', 160); +$service = zs_field('service', 120); +$subject = zs_field('subject', 200); +$message = zs_field('message', 5000); + +if ($subject === '') { + $subject = 'Website enquiry'; +} + +if ($name === '' || $email === '' || $message === '') { + zs_json_response(400, ['ok' => false, 'error' => 'Please fill in all required fields.']); +} +if (!zs_valid_email($email)) { + zs_json_response(400, ['ok' => false, 'error' => 'Please enter a valid email address.']); +} + +$mailSubject = '[Contact] ' . $subject; +$body = "New contact enquiry from the Zettai Systems website\n"; +$body .= str_repeat('-', 48) . "\n\n"; +$body .= "Name: {$name}\n"; +$body .= "Email: {$email}\n"; +$body .= "Phone: " . ($phone !== '' ? $phone : '—') . "\n"; +$body .= "Company: " . ($company !== '' ? $company : '—') . "\n"; +$body .= "Service interest: " . ($service !== '' ? $service : '—') . "\n"; +$body .= "Subject: {$subject}\n\n"; +$body .= "Message:\n{$message}\n\n"; +$body .= str_repeat('-', 48) . "\n"; +$body .= 'Submitted: ' . gmdate('Y-m-d H:i:s') . " UTC\n"; +$body .= 'IP: ' . ($_SERVER['REMOTE_ADDR'] ?? 'unknown') . "\n"; + +$sent = zs_send_mail(ZS_CONTACT_TO, $mailSubject, $body, $email); + +if (!$sent) { + zs_json_response(500, [ + 'ok' => false, + 'error' => 'We could not send your message right now. Please email solutions@zettaisystems.com or try again later.', + ]); +} + +zs_json_response(200, [ + 'ok' => true, + 'message' => 'Thank you. Your message has been sent. We will get back to you soon.', +]); diff --git a/api/helpers.php b/api/helpers.php new file mode 100644 index 0000000..0bc5825 --- /dev/null +++ b/api/helpers.php @@ -0,0 +1,152 @@ + false, 'error' => 'Method not allowed.']); + } +} + +function zs_field(string $key, int $max = 2000): string +{ + $value = $_POST[$key] ?? ''; + if (!is_string($value)) { + return ''; + } + $value = trim(strip_tags($value)); + if (mb_strlen($value) > $max) { + $value = mb_substr($value, 0, $max); + } + return $value; +} + +function zs_is_honeypot_filled(): bool +{ + $hp = $_POST['website'] ?? $_POST['company_url'] ?? ''; + return is_string($hp) && trim($hp) !== ''; +} + +function zs_valid_email(string $email): bool +{ + return (bool) filter_var($email, FILTER_VALIDATE_EMAIL); +} + +function zs_send_mail(string $to, string $subject, string $textBody, string $replyTo = '', ?array $attachment = null): bool +{ + $boundary = 'zs_' . bin2hex(random_bytes(12)); + $fromHeader = sprintf('%s <%s>', ZS_FROM_NAME, ZS_FROM_EMAIL); + + $headers = [ + 'MIME-Version: 1.0', + 'From: ' . $fromHeader, + 'Date: ' . gmdate('D, d M Y H:i:s') . ' +0000', + 'X-Mailer: ZettaiSystemsForms/1.0', + 'X-Priority: 3', + ]; + + if ($replyTo !== '' && zs_valid_email($replyTo)) { + $headers[] = 'Reply-To: ' . $replyTo; + } + + if ($attachment === null) { + $headers[] = 'Content-Type: text/plain; charset=UTF-8'; + $body = $textBody; + } else { + $headers[] = 'Content-Type: multipart/mixed; boundary="' . $boundary . '"'; + $body = "--{$boundary}\r\n"; + $body .= "Content-Type: text/plain; charset=UTF-8\r\n"; + $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; + $body .= $textBody . "\r\n\r\n"; + $body .= "--{$boundary}\r\n"; + $body .= 'Content-Type: ' . $attachment['mime'] . '; name="' . $attachment['name'] . "\"\r\n"; + $body .= "Content-Transfer-Encoding: base64\r\n"; + $body .= 'Content-Disposition: attachment; filename="' . $attachment['name'] . "\"\r\n\r\n"; + $body .= chunk_split(base64_encode($attachment['data'])) . "\r\n"; + $body .= "--{$boundary}--"; + } + + $encodedSubject = '=?UTF-8?B?' . base64_encode($subject) . '?='; + $headerString = implode("\r\n", $headers); + $envelope = '-f' . ZS_FROM_EMAIL; + return @mail($to, $encodedSubject, $body, $headerString, $envelope); +} + +function zs_resume_attachment(): ?array +{ + if (!isset($_FILES['resume']) || !is_array($_FILES['resume'])) { + return null; + } + + $file = $_FILES['resume']; + if (($file['error'] ?? UPLOAD_ERR_NO_FILE) === UPLOAD_ERR_NO_FILE) { + return null; + } + if (($file['error'] ?? UPLOAD_ERR_OK) !== UPLOAD_ERR_OK) { + zs_json_response(400, ['ok' => false, 'error' => 'Resume upload failed. Please try again.']); + } + if (($file['size'] ?? 0) <= 0 || $file['size'] > ZS_MAX_RESUME_BYTES) { + zs_json_response(400, ['ok' => false, 'error' => 'Resume must be a PDF or Word file under 5 MB.']); + } + + $original = (string) ($file['name'] ?? 'resume'); + $ext = strtolower(pathinfo($original, PATHINFO_EXTENSION)); + $allowed = [ + 'pdf' => 'application/pdf', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + ]; + if (!isset($allowed[$ext])) { + zs_json_response(400, ['ok' => false, 'error' => 'Resume must be a PDF or Word document (.pdf, .doc, .docx).']); + } + + $tmp = (string) ($file['tmp_name'] ?? ''); + if ($tmp === '' || !is_uploaded_file($tmp)) { + zs_json_response(400, ['ok' => false, 'error' => 'Invalid resume upload.']); + } + + if (class_exists('finfo')) { + $detected = (new finfo(FILEINFO_MIME_TYPE))->file($tmp) ?: ''; + $okMime = [ + 'application/pdf', + 'application/msword', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'application/zip', // some hosts report .docx as zip + ]; + if ($detected !== '' && !in_array($detected, $okMime, true)) { + zs_json_response(400, ['ok' => false, 'error' => 'Resume must be a PDF or Word document (.pdf, .doc, .docx).']); + } + } + + $data = file_get_contents($tmp); + if ($data === false) { + zs_json_response(500, ['ok' => false, 'error' => 'Could not read the uploaded resume.']); + } + + $safeName = preg_replace('/[^A-Za-z0-9._-]/', '_', $original) ?: ('resume.' . $ext); + + return [ + 'name' => $safeName, + 'mime' => $allowed[$ext], + 'data' => $data, + ]; +} diff --git a/assets/images/bg-icon-light.png b/assets/images/bg-icon-light.png new file mode 100644 index 0000000..cf88f2a Binary files /dev/null and b/assets/images/bg-icon-light.png differ diff --git a/assets/images/bg-icon-square.png b/assets/images/bg-icon-square.png new file mode 100644 index 0000000..4e5a09b Binary files /dev/null and b/assets/images/bg-icon-square.png differ diff --git a/assets/images/bg-logo-light.png b/assets/images/bg-logo-light.png new file mode 100644 index 0000000..d76a038 Binary files /dev/null and b/assets/images/bg-logo-light.png differ diff --git a/assets/logos/favicon-dark.png b/assets/logos/favicon-dark.png new file mode 100644 index 0000000..9ce8c8a Binary files /dev/null and b/assets/logos/favicon-dark.png differ diff --git a/assets/logos/favicon.png b/assets/logos/favicon.png new file mode 100644 index 0000000..abb4778 Binary files /dev/null and b/assets/logos/favicon.png differ diff --git a/assets/logos/favicon.svg b/assets/logos/favicon.svg new file mode 100644 index 0000000..6ca88b9 --- /dev/null +++ b/assets/logos/favicon.svg @@ -0,0 +1,6 @@ + + + Zettai Systems + + + diff --git a/assets/logos/icon-dark.png b/assets/logos/icon-dark.png new file mode 100644 index 0000000..f522b1b Binary files /dev/null and b/assets/logos/icon-dark.png differ diff --git a/assets/logos/icon-square.png b/assets/logos/icon-square.png new file mode 100644 index 0000000..f38edbc Binary files /dev/null and b/assets/logos/icon-square.png differ diff --git a/assets/logos/icon.png b/assets/logos/icon.png new file mode 100644 index 0000000..1bed88a Binary files /dev/null and b/assets/logos/icon.png differ diff --git a/assets/logos/logo-dark-transparent.png b/assets/logos/logo-dark-transparent.png new file mode 100644 index 0000000..b9d225e Binary files /dev/null and b/assets/logos/logo-dark-transparent.png differ diff --git a/assets/logos/logo-light-transparent.png b/assets/logos/logo-light-transparent.png new file mode 100644 index 0000000..10bbd7b Binary files /dev/null and b/assets/logos/logo-light-transparent.png differ diff --git a/careers.html b/careers.html new file mode 100644 index 0000000..6c239e7 --- /dev/null +++ b/careers.html @@ -0,0 +1,251 @@ + + + + + + + Careers | Zettai Systems + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
Careers
+

Build Meaningful Software With Us

+

We’re looking for people who care about craft, communication, and outcomes—not just tickets closed.

+
+
+ +
+
+
+
Why Join
+

Work That Matters to Real Teams

+

At Zettai Systems you’ll collaborate on products and platforms that solve operational problems for growing businesses.

+
+
+
+

Interesting problems

Custom systems across web, mobile, cloud, and enterprise—not cookie-cutter templates.

+
+
+

Collaborative culture

Clear communication, respectful feedback, and shared ownership of delivery quality.

+
+
+

Room to grow

Learn across stacks and domains while contributing to architecture and client outcomes.

+
+
+

Impact you can see

Ship work that teams rely on daily—and help improve it after launch.

+
+
+
+
+ +
+
+
+
Open Positions
+

Current Openings

+

We’re hiring across engineering, AI, and growth. Apply through the form and we’ll match strong candidates to the right opening.

+
+
+
+
+

Full-Stack Developer

+
+ Engineering + Chennai + Full-time +
+

Build and maintain web applications using modern frontend and backend stacks.

+ Apply Now +
+
+
+
+

Flutter Mobile Developer

+
+ Mobile + Chennai + Full-time +
+

Deliver Android and iOS experiences with Flutter—native-quality UX from a single codebase.

+ Apply Now +
+
+
+
+

ERP Consultant / Developer

+
+ ERP + Chennai + Full-time +
+

Implement and customize ERP modules for finance, inventory, and operations automation.

+ Apply Now +
+
+
+
+

QA Engineer

+
+ Quality + Chennai + Full-time +
+

Own test planning, functional validation, and quality gates across projects.

+ Apply Now +
+
+
+
+

AI / Agentic Workflow Engineer

+
+ AI + Chennai + Full-time +
+

Build multi-agent task orchestrations, RAG pipelines, and deterministic API guardrails with Python, FastAPI, and enterprise LM providers.

+ Apply Now +
+
+
+
+

Business Development

+
+ Growth + Chennai + Full-time +
+

Build pipeline, run discovery conversations, and help convert qualified opportunities into engineering engagements.

+ Apply Now +
+
+
+
+
+ +
+
+
+
+
Apply
+

Send Your Application

+

Share your details and résumé. We’ll review submissions and follow up when there’s a relevant fit.

+

Prefer a conversation first? Email solutions@zettaisystems.com, use the contact form, or call +91 807 299 8024.

+
+
+
+
+ +
+ + +
Please enter your name.
+
+
+ + +
Please enter a valid email address.
+
+
+ + +
Please enter your phone number.
+
+
+ + +
Please select a position.
+
+
+ + +
Please select your experience level.
+
+
+ + +
Please attach your resume (PDF or Word).
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+ + + + + + + + + diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..b705358 --- /dev/null +++ b/contact.html @@ -0,0 +1,167 @@ + + + + + + + Contact Us | Zettai Systems + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
Contact
+

Let’s Build Something Great Together

+

Share your requirements and we’ll start with a practical conversation about scope, approach, and next steps.

+
+
+ +
+
+
+
+
Reach Us
+

We’re Ready to Listen

+

Whether you need a new product, a platform rebuild, or enterprise automation—tell us what success looks like.

+
+
+ +
+ Phone + +91 807 299 8024 +
+
+
+ +
+ Office + No.10/21, 27th Street, Thillai Ganga Nagar, Nanganallur, Chennai – 600061, Tamil Nadu, India +
+
+
+ + +
+
+ +
+
+
+
+ +
+ + +
Please enter your name.
+
+
+ + +
Please enter a valid email address.
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
Please enter a subject.
+
+
+ + +
Please enter your message.
+
+
+ +
+
+
+
+
+
+
+
+
+ + + + + + + + + diff --git a/css/animations.css b/css/animations.css new file mode 100644 index 0000000..42b89f8 --- /dev/null +++ b/css/animations.css @@ -0,0 +1,396 @@ +/* Zettai Systems — animated visuals (orbit + mesh band) */ + +.orbit-section { + overflow: hidden; +} + +.orbit-layout { + display: grid; + gap: 2.5rem; + align-items: center; +} + +@media (min-width: 992px) { + .orbit-layout { + grid-template-columns: 1fr 1fr; + gap: 3rem; + } +} + +.orbit-stage { + position: relative; + width: min(100%, 420px); + aspect-ratio: 1; + margin-inline: auto; + border-radius: 28px; + background: + radial-gradient(circle at 50% 50%, rgba(0, 84, 152, 0.2), transparent 55%), + linear-gradient(160deg, #0c1628 0%, #15243a 55%, #101b2e 100%); + border: 1px solid rgba(255, 255, 255, 0.08); + box-shadow: var(--shadow-lg); + overflow: hidden; +} + +.orbit-ring { + position: absolute; + inset: 18%; + border-radius: 50%; + border: 1.5px dashed rgba(192, 208, 220, 0.35); + animation: zsOrbitSpin 48s linear infinite; +} + +.orbit-ring::before { + content: ""; + position: absolute; + inset: 14%; + border-radius: 50%; + border: 1px solid rgba(0, 84, 152, 0.25); +} + +.orbit-hub { + position: absolute; + top: 50%; + left: 50%; + z-index: 3; + width: 88px; + height: 88px; + margin: -44px 0 0 -44px; + border-radius: 50%; + display: grid; + place-items: center; + background: linear-gradient(145deg, #14283c, #0a1520); + box-shadow: 0 0 0 10px rgba(8, 32, 72, 0.45), 0 12px 30px rgba(0, 0, 0, 0.4); + animation: zsHubPulse 3.6s ease-in-out infinite; +} + +.orbit-hub img { + width: 42px; + height: auto; +} + +.orbit-nodes { + position: absolute; + inset: 0; +} + +.orbit-node { + position: absolute; + top: 50%; + left: 50%; + width: 54px; + height: 54px; + margin: -27px 0 0 -27px; + border-radius: 50%; + display: grid; + place-items: center; + background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.14); + color: #fff; + backdrop-filter: blur(6px); + z-index: 2; +} + +.orbit-node i { + font-size: 1.15rem; +} + +.orbit-node span { + position: absolute; + top: calc(100% + 6px); + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + font-size: 0.68rem; + font-family: var(--font-display); + font-weight: 700; + color: rgba(255, 255, 255, 0.8); +} + +.orbit-nodes .orbit-node:nth-child(1) { animation: zsNode1 48s linear infinite; } +.orbit-nodes .orbit-node:nth-child(2) { animation: zsNode2 48s linear infinite; } +.orbit-nodes .orbit-node:nth-child(3) { animation: zsNode3 48s linear infinite; } +.orbit-nodes .orbit-node:nth-child(4) { animation: zsNode4 48s linear infinite; } +.orbit-nodes .orbit-node:nth-child(5) { animation: zsNode5 48s linear infinite; } +.orbit-nodes .orbit-node:nth-child(6) { animation: zsNode6 48s linear infinite; } + +@keyframes zsNode1 { + from { transform: rotate(0deg) translateY(-132px) rotate(0deg); } + to { transform: rotate(360deg) translateY(-132px) rotate(-360deg); } +} +@keyframes zsNode2 { + from { transform: rotate(60deg) translateY(-132px) rotate(-60deg); } + to { transform: rotate(420deg) translateY(-132px) rotate(-420deg); } +} +@keyframes zsNode3 { + from { transform: rotate(120deg) translateY(-132px) rotate(-120deg); } + to { transform: rotate(480deg) translateY(-132px) rotate(-480deg); } +} +@keyframes zsNode4 { + from { transform: rotate(180deg) translateY(-132px) rotate(-180deg); } + to { transform: rotate(540deg) translateY(-132px) rotate(-540deg); } +} +@keyframes zsNode5 { + from { transform: rotate(240deg) translateY(-132px) rotate(-240deg); } + to { transform: rotate(600deg) translateY(-132px) rotate(-600deg); } +} +@keyframes zsNode6 { + from { transform: rotate(300deg) translateY(-132px) rotate(-300deg); } + to { transform: rotate(660deg) translateY(-132px) rotate(-660deg); } +} + +.orbit-chip { + position: absolute; + z-index: 4; + display: flex; + align-items: center; + gap: 0.55rem; + padding: 0.65rem 0.9rem; + border-radius: 14px; + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-md); + font-family: var(--font-display); + font-size: 0.82rem; + font-weight: 700; + color: var(--text-color); + animation: floatPanel 5.5s ease-in-out infinite; +} + +.orbit-chip i { + color: var(--primary-color); + font-size: 1.1rem; +} + +.orbit-chip.chip-a { + top: 12%; + right: 6%; +} + +.orbit-chip.chip-b { + bottom: 12%; + left: 6%; + animation-delay: -2.5s; +} + +.orbit-chip.chip-b i { + color: var(--secondary-color); +} + +.orbit-chip small { + display: block; + font-weight: 500; + font-size: 0.72rem; + color: var(--muted-text-color); +} + +@keyframes zsOrbitSpin { + to { transform: rotate(360deg); } +} + +@keyframes zsHubPulse { + 0%, 100% { box-shadow: 0 0 0 10px rgba(0, 84, 152, 0.18), 0 12px 30px rgba(0, 0, 0, 0.35); } + 50% { box-shadow: 0 0 0 16px rgba(192, 208, 220, 0.16), 0 12px 30px rgba(0, 0, 0, 0.35); } +} + +/* Mesh band */ +.mesh-band { + position: relative; + overflow: hidden; + padding: clamp(3.5rem, 7vw, 5.5rem) 0; + color: #fff; + background: linear-gradient(120deg, #071526 0%, #0c2a4d 45%, #12305a 100%); + box-shadow: inset 0 1px 0 rgba(126, 182, 255, 0.16); +} + +[data-theme="dark"] .mesh-band { + background: linear-gradient(120deg, #06111f 0%, #123a66 48%, #0d2848 100%); + box-shadow: inset 0 1px 0 rgba(126, 182, 255, 0.22); +} + +.mesh-band-canvas { + position: absolute; + inset: 0; + pointer-events: none; + opacity: 0.55; +} + +.mesh-band-canvas svg { + width: 100%; + height: 100%; + display: block; +} + +.mesh-wave { + fill: none; + stroke: rgba(0, 84, 152, 0.45); + stroke-width: 1.5; + animation: zsMeshDrift 14s ease-in-out infinite alternate; +} + +.mesh-wave.w2 { + stroke: rgba(192, 208, 220, 0.4); + animation-duration: 18s; + animation-delay: -4s; +} + +.mesh-wave.w3 { + stroke: rgba(255, 255, 255, 0.12); + animation-duration: 22s; + animation-delay: -7s; +} + +@keyframes zsMeshDrift { + from { transform: translateX(0) translateY(0); } + to { transform: translateX(-3%) translateY(2%); } +} + +.mesh-band .container-zs { + position: relative; + z-index: 1; +} + +.mesh-layout { + display: grid; + gap: 2rem; + align-items: center; +} + +@media (min-width: 992px) { + .mesh-layout { + grid-template-columns: 0.95fr 1.05fr; + gap: 3rem; + } +} + +.radar-frame { + position: relative; + border-radius: 20px; + padding: 1.25rem; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.14); + backdrop-filter: blur(8px); +} + +.radar-legend { + display: flex; + flex-wrap: wrap; + gap: 0.85rem; + margin-bottom: 0.85rem; + font-size: 0.78rem; + font-family: var(--font-display); + color: rgba(255, 255, 255, 0.75); +} + +.radar-legend span { + display: inline-flex; + align-items: center; + gap: 0.4rem; +} + +.radar-legend i { + width: 10px; + height: 10px; + border-radius: 3px; + display: inline-block; +} + +.radar-legend .l1 { background: rgba(0, 84, 152, 0.85); } +.radar-legend .l2 { background: rgba(192, 208, 220, 0.85); } +.radar-legend .l3 { background: rgba(255, 255, 255, 0.35); } + +.radar-svg { + width: 100%; + height: auto; + display: block; +} + +.radar-poly { + animation: zsRadarBreathe 5s ease-in-out infinite; +} + +.radar-poly.p2 { + animation-delay: -1.5s; +} + +@keyframes zsRadarBreathe { + 0%, 100% { opacity: 0.5; } + 50% { opacity: 0.9; } +} + +.mesh-copy .eyebrow { + color: #7eb6ff; +} + +.mesh-copy .eyebrow::before { + background: linear-gradient(90deg, #005498, #c0d0dc); +} + +.mesh-copy h2 { + color: #fff; + font-size: clamp(1.8rem, 3.5vw, 2.6rem); + margin: 0 0 1rem; +} + +.mesh-copy h2 em { + font-style: normal; + background: linear-gradient(90deg, #4ba3dc, #c0d0dc); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.mesh-copy p { + color: rgba(255, 255, 255, 0.8); + max-width: 34rem; + margin: 0 0 1.5rem; +} + +@media (prefers-reduced-motion: reduce) { + .orbit-ring, + .orbit-nodes .orbit-node, + .orbit-hub, + .orbit-chip, + .mesh-wave, + .radar-poly { + animation: none !important; + } +} + +@media (max-width: 575.98px) { + .orbit-nodes .orbit-node:nth-child(1) { animation-name: zsNode1m; } + .orbit-nodes .orbit-node:nth-child(2) { animation-name: zsNode2m; } + .orbit-nodes .orbit-node:nth-child(3) { animation-name: zsNode3m; } + .orbit-nodes .orbit-node:nth-child(4) { animation-name: zsNode4m; } + .orbit-nodes .orbit-node:nth-child(5) { animation-name: zsNode5m; } + .orbit-nodes .orbit-node:nth-child(6) { animation-name: zsNode6m; } + + @keyframes zsNode1m { + from { transform: rotate(0deg) translateY(-108px) rotate(0deg); } + to { transform: rotate(360deg) translateY(-108px) rotate(-360deg); } + } + @keyframes zsNode2m { + from { transform: rotate(60deg) translateY(-108px) rotate(-60deg); } + to { transform: rotate(420deg) translateY(-108px) rotate(-420deg); } + } + @keyframes zsNode3m { + from { transform: rotate(120deg) translateY(-108px) rotate(-120deg); } + to { transform: rotate(480deg) translateY(-108px) rotate(-480deg); } + } + @keyframes zsNode4m { + from { transform: rotate(180deg) translateY(-108px) rotate(-180deg); } + to { transform: rotate(540deg) translateY(-108px) rotate(-540deg); } + } + @keyframes zsNode5m { + from { transform: rotate(240deg) translateY(-108px) rotate(-240deg); } + to { transform: rotate(600deg) translateY(-108px) rotate(-600deg); } + } + @keyframes zsNode6m { + from { transform: rotate(300deg) translateY(-108px) rotate(-300deg); } + to { transform: rotate(660deg) translateY(-108px) rotate(-660deg); } + } + + .orbit-chip { + font-size: 0.72rem; + padding: 0.5rem 0.7rem; + } +} diff --git a/css/aos.css b/css/aos.css new file mode 100644 index 0000000..66923fe --- /dev/null +++ b/css/aos.css @@ -0,0 +1 @@ +[data-aos][data-aos][data-aos-duration="50"],body[data-aos-duration="50"] [data-aos]{transition-duration:50ms}[data-aos][data-aos][data-aos-delay="50"],body[data-aos-delay="50"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="50"].aos-animate,body[data-aos-delay="50"] [data-aos].aos-animate{transition-delay:50ms}[data-aos][data-aos][data-aos-duration="100"],body[data-aos-duration="100"] [data-aos]{transition-duration:.1s}[data-aos][data-aos][data-aos-delay="100"],body[data-aos-delay="100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="100"].aos-animate,body[data-aos-delay="100"] [data-aos].aos-animate{transition-delay:.1s}[data-aos][data-aos][data-aos-duration="150"],body[data-aos-duration="150"] [data-aos]{transition-duration:.15s}[data-aos][data-aos][data-aos-delay="150"],body[data-aos-delay="150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="150"].aos-animate,body[data-aos-delay="150"] [data-aos].aos-animate{transition-delay:.15s}[data-aos][data-aos][data-aos-duration="200"],body[data-aos-duration="200"] [data-aos]{transition-duration:.2s}[data-aos][data-aos][data-aos-delay="200"],body[data-aos-delay="200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="200"].aos-animate,body[data-aos-delay="200"] [data-aos].aos-animate{transition-delay:.2s}[data-aos][data-aos][data-aos-duration="250"],body[data-aos-duration="250"] [data-aos]{transition-duration:.25s}[data-aos][data-aos][data-aos-delay="250"],body[data-aos-delay="250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="250"].aos-animate,body[data-aos-delay="250"] [data-aos].aos-animate{transition-delay:.25s}[data-aos][data-aos][data-aos-duration="300"],body[data-aos-duration="300"] [data-aos]{transition-duration:.3s}[data-aos][data-aos][data-aos-delay="300"],body[data-aos-delay="300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="300"].aos-animate,body[data-aos-delay="300"] [data-aos].aos-animate{transition-delay:.3s}[data-aos][data-aos][data-aos-duration="350"],body[data-aos-duration="350"] [data-aos]{transition-duration:.35s}[data-aos][data-aos][data-aos-delay="350"],body[data-aos-delay="350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="350"].aos-animate,body[data-aos-delay="350"] [data-aos].aos-animate{transition-delay:.35s}[data-aos][data-aos][data-aos-duration="400"],body[data-aos-duration="400"] [data-aos]{transition-duration:.4s}[data-aos][data-aos][data-aos-delay="400"],body[data-aos-delay="400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="400"].aos-animate,body[data-aos-delay="400"] [data-aos].aos-animate{transition-delay:.4s}[data-aos][data-aos][data-aos-duration="450"],body[data-aos-duration="450"] [data-aos]{transition-duration:.45s}[data-aos][data-aos][data-aos-delay="450"],body[data-aos-delay="450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="450"].aos-animate,body[data-aos-delay="450"] [data-aos].aos-animate{transition-delay:.45s}[data-aos][data-aos][data-aos-duration="500"],body[data-aos-duration="500"] [data-aos]{transition-duration:.5s}[data-aos][data-aos][data-aos-delay="500"],body[data-aos-delay="500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="500"].aos-animate,body[data-aos-delay="500"] [data-aos].aos-animate{transition-delay:.5s}[data-aos][data-aos][data-aos-duration="550"],body[data-aos-duration="550"] [data-aos]{transition-duration:.55s}[data-aos][data-aos][data-aos-delay="550"],body[data-aos-delay="550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="550"].aos-animate,body[data-aos-delay="550"] [data-aos].aos-animate{transition-delay:.55s}[data-aos][data-aos][data-aos-duration="600"],body[data-aos-duration="600"] [data-aos]{transition-duration:.6s}[data-aos][data-aos][data-aos-delay="600"],body[data-aos-delay="600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="600"].aos-animate,body[data-aos-delay="600"] [data-aos].aos-animate{transition-delay:.6s}[data-aos][data-aos][data-aos-duration="650"],body[data-aos-duration="650"] [data-aos]{transition-duration:.65s}[data-aos][data-aos][data-aos-delay="650"],body[data-aos-delay="650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="650"].aos-animate,body[data-aos-delay="650"] [data-aos].aos-animate{transition-delay:.65s}[data-aos][data-aos][data-aos-duration="700"],body[data-aos-duration="700"] [data-aos]{transition-duration:.7s}[data-aos][data-aos][data-aos-delay="700"],body[data-aos-delay="700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="700"].aos-animate,body[data-aos-delay="700"] [data-aos].aos-animate{transition-delay:.7s}[data-aos][data-aos][data-aos-duration="750"],body[data-aos-duration="750"] [data-aos]{transition-duration:.75s}[data-aos][data-aos][data-aos-delay="750"],body[data-aos-delay="750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="750"].aos-animate,body[data-aos-delay="750"] [data-aos].aos-animate{transition-delay:.75s}[data-aos][data-aos][data-aos-duration="800"],body[data-aos-duration="800"] [data-aos]{transition-duration:.8s}[data-aos][data-aos][data-aos-delay="800"],body[data-aos-delay="800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="800"].aos-animate,body[data-aos-delay="800"] [data-aos].aos-animate{transition-delay:.8s}[data-aos][data-aos][data-aos-duration="850"],body[data-aos-duration="850"] [data-aos]{transition-duration:.85s}[data-aos][data-aos][data-aos-delay="850"],body[data-aos-delay="850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="850"].aos-animate,body[data-aos-delay="850"] [data-aos].aos-animate{transition-delay:.85s}[data-aos][data-aos][data-aos-duration="900"],body[data-aos-duration="900"] [data-aos]{transition-duration:.9s}[data-aos][data-aos][data-aos-delay="900"],body[data-aos-delay="900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="900"].aos-animate,body[data-aos-delay="900"] [data-aos].aos-animate{transition-delay:.9s}[data-aos][data-aos][data-aos-duration="950"],body[data-aos-duration="950"] [data-aos]{transition-duration:.95s}[data-aos][data-aos][data-aos-delay="950"],body[data-aos-delay="950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="950"].aos-animate,body[data-aos-delay="950"] [data-aos].aos-animate{transition-delay:.95s}[data-aos][data-aos][data-aos-duration="1000"],body[data-aos-duration="1000"] [data-aos]{transition-duration:1s}[data-aos][data-aos][data-aos-delay="1000"],body[data-aos-delay="1000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1000"].aos-animate,body[data-aos-delay="1000"] [data-aos].aos-animate{transition-delay:1s}[data-aos][data-aos][data-aos-duration="1050"],body[data-aos-duration="1050"] [data-aos]{transition-duration:1.05s}[data-aos][data-aos][data-aos-delay="1050"],body[data-aos-delay="1050"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1050"].aos-animate,body[data-aos-delay="1050"] [data-aos].aos-animate{transition-delay:1.05s}[data-aos][data-aos][data-aos-duration="1100"],body[data-aos-duration="1100"] [data-aos]{transition-duration:1.1s}[data-aos][data-aos][data-aos-delay="1100"],body[data-aos-delay="1100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1100"].aos-animate,body[data-aos-delay="1100"] [data-aos].aos-animate{transition-delay:1.1s}[data-aos][data-aos][data-aos-duration="1150"],body[data-aos-duration="1150"] [data-aos]{transition-duration:1.15s}[data-aos][data-aos][data-aos-delay="1150"],body[data-aos-delay="1150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1150"].aos-animate,body[data-aos-delay="1150"] [data-aos].aos-animate{transition-delay:1.15s}[data-aos][data-aos][data-aos-duration="1200"],body[data-aos-duration="1200"] [data-aos]{transition-duration:1.2s}[data-aos][data-aos][data-aos-delay="1200"],body[data-aos-delay="1200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1200"].aos-animate,body[data-aos-delay="1200"] [data-aos].aos-animate{transition-delay:1.2s}[data-aos][data-aos][data-aos-duration="1250"],body[data-aos-duration="1250"] [data-aos]{transition-duration:1.25s}[data-aos][data-aos][data-aos-delay="1250"],body[data-aos-delay="1250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1250"].aos-animate,body[data-aos-delay="1250"] [data-aos].aos-animate{transition-delay:1.25s}[data-aos][data-aos][data-aos-duration="1300"],body[data-aos-duration="1300"] [data-aos]{transition-duration:1.3s}[data-aos][data-aos][data-aos-delay="1300"],body[data-aos-delay="1300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1300"].aos-animate,body[data-aos-delay="1300"] [data-aos].aos-animate{transition-delay:1.3s}[data-aos][data-aos][data-aos-duration="1350"],body[data-aos-duration="1350"] [data-aos]{transition-duration:1.35s}[data-aos][data-aos][data-aos-delay="1350"],body[data-aos-delay="1350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1350"].aos-animate,body[data-aos-delay="1350"] [data-aos].aos-animate{transition-delay:1.35s}[data-aos][data-aos][data-aos-duration="1400"],body[data-aos-duration="1400"] [data-aos]{transition-duration:1.4s}[data-aos][data-aos][data-aos-delay="1400"],body[data-aos-delay="1400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1400"].aos-animate,body[data-aos-delay="1400"] [data-aos].aos-animate{transition-delay:1.4s}[data-aos][data-aos][data-aos-duration="1450"],body[data-aos-duration="1450"] [data-aos]{transition-duration:1.45s}[data-aos][data-aos][data-aos-delay="1450"],body[data-aos-delay="1450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1450"].aos-animate,body[data-aos-delay="1450"] [data-aos].aos-animate{transition-delay:1.45s}[data-aos][data-aos][data-aos-duration="1500"],body[data-aos-duration="1500"] [data-aos]{transition-duration:1.5s}[data-aos][data-aos][data-aos-delay="1500"],body[data-aos-delay="1500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1500"].aos-animate,body[data-aos-delay="1500"] [data-aos].aos-animate{transition-delay:1.5s}[data-aos][data-aos][data-aos-duration="1550"],body[data-aos-duration="1550"] [data-aos]{transition-duration:1.55s}[data-aos][data-aos][data-aos-delay="1550"],body[data-aos-delay="1550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1550"].aos-animate,body[data-aos-delay="1550"] [data-aos].aos-animate{transition-delay:1.55s}[data-aos][data-aos][data-aos-duration="1600"],body[data-aos-duration="1600"] [data-aos]{transition-duration:1.6s}[data-aos][data-aos][data-aos-delay="1600"],body[data-aos-delay="1600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1600"].aos-animate,body[data-aos-delay="1600"] [data-aos].aos-animate{transition-delay:1.6s}[data-aos][data-aos][data-aos-duration="1650"],body[data-aos-duration="1650"] [data-aos]{transition-duration:1.65s}[data-aos][data-aos][data-aos-delay="1650"],body[data-aos-delay="1650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1650"].aos-animate,body[data-aos-delay="1650"] [data-aos].aos-animate{transition-delay:1.65s}[data-aos][data-aos][data-aos-duration="1700"],body[data-aos-duration="1700"] [data-aos]{transition-duration:1.7s}[data-aos][data-aos][data-aos-delay="1700"],body[data-aos-delay="1700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1700"].aos-animate,body[data-aos-delay="1700"] [data-aos].aos-animate{transition-delay:1.7s}[data-aos][data-aos][data-aos-duration="1750"],body[data-aos-duration="1750"] [data-aos]{transition-duration:1.75s}[data-aos][data-aos][data-aos-delay="1750"],body[data-aos-delay="1750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1750"].aos-animate,body[data-aos-delay="1750"] [data-aos].aos-animate{transition-delay:1.75s}[data-aos][data-aos][data-aos-duration="1800"],body[data-aos-duration="1800"] [data-aos]{transition-duration:1.8s}[data-aos][data-aos][data-aos-delay="1800"],body[data-aos-delay="1800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1800"].aos-animate,body[data-aos-delay="1800"] [data-aos].aos-animate{transition-delay:1.8s}[data-aos][data-aos][data-aos-duration="1850"],body[data-aos-duration="1850"] [data-aos]{transition-duration:1.85s}[data-aos][data-aos][data-aos-delay="1850"],body[data-aos-delay="1850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1850"].aos-animate,body[data-aos-delay="1850"] [data-aos].aos-animate{transition-delay:1.85s}[data-aos][data-aos][data-aos-duration="1900"],body[data-aos-duration="1900"] [data-aos]{transition-duration:1.9s}[data-aos][data-aos][data-aos-delay="1900"],body[data-aos-delay="1900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1900"].aos-animate,body[data-aos-delay="1900"] [data-aos].aos-animate{transition-delay:1.9s}[data-aos][data-aos][data-aos-duration="1950"],body[data-aos-duration="1950"] [data-aos]{transition-duration:1.95s}[data-aos][data-aos][data-aos-delay="1950"],body[data-aos-delay="1950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="1950"].aos-animate,body[data-aos-delay="1950"] [data-aos].aos-animate{transition-delay:1.95s}[data-aos][data-aos][data-aos-duration="2000"],body[data-aos-duration="2000"] [data-aos]{transition-duration:2s}[data-aos][data-aos][data-aos-delay="2000"],body[data-aos-delay="2000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2000"].aos-animate,body[data-aos-delay="2000"] [data-aos].aos-animate{transition-delay:2s}[data-aos][data-aos][data-aos-duration="2050"],body[data-aos-duration="2050"] [data-aos]{transition-duration:2.05s}[data-aos][data-aos][data-aos-delay="2050"],body[data-aos-delay="2050"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2050"].aos-animate,body[data-aos-delay="2050"] [data-aos].aos-animate{transition-delay:2.05s}[data-aos][data-aos][data-aos-duration="2100"],body[data-aos-duration="2100"] [data-aos]{transition-duration:2.1s}[data-aos][data-aos][data-aos-delay="2100"],body[data-aos-delay="2100"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2100"].aos-animate,body[data-aos-delay="2100"] [data-aos].aos-animate{transition-delay:2.1s}[data-aos][data-aos][data-aos-duration="2150"],body[data-aos-duration="2150"] [data-aos]{transition-duration:2.15s}[data-aos][data-aos][data-aos-delay="2150"],body[data-aos-delay="2150"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2150"].aos-animate,body[data-aos-delay="2150"] [data-aos].aos-animate{transition-delay:2.15s}[data-aos][data-aos][data-aos-duration="2200"],body[data-aos-duration="2200"] [data-aos]{transition-duration:2.2s}[data-aos][data-aos][data-aos-delay="2200"],body[data-aos-delay="2200"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2200"].aos-animate,body[data-aos-delay="2200"] [data-aos].aos-animate{transition-delay:2.2s}[data-aos][data-aos][data-aos-duration="2250"],body[data-aos-duration="2250"] [data-aos]{transition-duration:2.25s}[data-aos][data-aos][data-aos-delay="2250"],body[data-aos-delay="2250"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2250"].aos-animate,body[data-aos-delay="2250"] [data-aos].aos-animate{transition-delay:2.25s}[data-aos][data-aos][data-aos-duration="2300"],body[data-aos-duration="2300"] [data-aos]{transition-duration:2.3s}[data-aos][data-aos][data-aos-delay="2300"],body[data-aos-delay="2300"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2300"].aos-animate,body[data-aos-delay="2300"] [data-aos].aos-animate{transition-delay:2.3s}[data-aos][data-aos][data-aos-duration="2350"],body[data-aos-duration="2350"] [data-aos]{transition-duration:2.35s}[data-aos][data-aos][data-aos-delay="2350"],body[data-aos-delay="2350"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2350"].aos-animate,body[data-aos-delay="2350"] [data-aos].aos-animate{transition-delay:2.35s}[data-aos][data-aos][data-aos-duration="2400"],body[data-aos-duration="2400"] [data-aos]{transition-duration:2.4s}[data-aos][data-aos][data-aos-delay="2400"],body[data-aos-delay="2400"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2400"].aos-animate,body[data-aos-delay="2400"] [data-aos].aos-animate{transition-delay:2.4s}[data-aos][data-aos][data-aos-duration="2450"],body[data-aos-duration="2450"] [data-aos]{transition-duration:2.45s}[data-aos][data-aos][data-aos-delay="2450"],body[data-aos-delay="2450"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2450"].aos-animate,body[data-aos-delay="2450"] [data-aos].aos-animate{transition-delay:2.45s}[data-aos][data-aos][data-aos-duration="2500"],body[data-aos-duration="2500"] [data-aos]{transition-duration:2.5s}[data-aos][data-aos][data-aos-delay="2500"],body[data-aos-delay="2500"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2500"].aos-animate,body[data-aos-delay="2500"] [data-aos].aos-animate{transition-delay:2.5s}[data-aos][data-aos][data-aos-duration="2550"],body[data-aos-duration="2550"] [data-aos]{transition-duration:2.55s}[data-aos][data-aos][data-aos-delay="2550"],body[data-aos-delay="2550"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2550"].aos-animate,body[data-aos-delay="2550"] [data-aos].aos-animate{transition-delay:2.55s}[data-aos][data-aos][data-aos-duration="2600"],body[data-aos-duration="2600"] [data-aos]{transition-duration:2.6s}[data-aos][data-aos][data-aos-delay="2600"],body[data-aos-delay="2600"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2600"].aos-animate,body[data-aos-delay="2600"] [data-aos].aos-animate{transition-delay:2.6s}[data-aos][data-aos][data-aos-duration="2650"],body[data-aos-duration="2650"] [data-aos]{transition-duration:2.65s}[data-aos][data-aos][data-aos-delay="2650"],body[data-aos-delay="2650"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2650"].aos-animate,body[data-aos-delay="2650"] [data-aos].aos-animate{transition-delay:2.65s}[data-aos][data-aos][data-aos-duration="2700"],body[data-aos-duration="2700"] [data-aos]{transition-duration:2.7s}[data-aos][data-aos][data-aos-delay="2700"],body[data-aos-delay="2700"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2700"].aos-animate,body[data-aos-delay="2700"] [data-aos].aos-animate{transition-delay:2.7s}[data-aos][data-aos][data-aos-duration="2750"],body[data-aos-duration="2750"] [data-aos]{transition-duration:2.75s}[data-aos][data-aos][data-aos-delay="2750"],body[data-aos-delay="2750"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2750"].aos-animate,body[data-aos-delay="2750"] [data-aos].aos-animate{transition-delay:2.75s}[data-aos][data-aos][data-aos-duration="2800"],body[data-aos-duration="2800"] [data-aos]{transition-duration:2.8s}[data-aos][data-aos][data-aos-delay="2800"],body[data-aos-delay="2800"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2800"].aos-animate,body[data-aos-delay="2800"] [data-aos].aos-animate{transition-delay:2.8s}[data-aos][data-aos][data-aos-duration="2850"],body[data-aos-duration="2850"] [data-aos]{transition-duration:2.85s}[data-aos][data-aos][data-aos-delay="2850"],body[data-aos-delay="2850"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2850"].aos-animate,body[data-aos-delay="2850"] [data-aos].aos-animate{transition-delay:2.85s}[data-aos][data-aos][data-aos-duration="2900"],body[data-aos-duration="2900"] [data-aos]{transition-duration:2.9s}[data-aos][data-aos][data-aos-delay="2900"],body[data-aos-delay="2900"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2900"].aos-animate,body[data-aos-delay="2900"] [data-aos].aos-animate{transition-delay:2.9s}[data-aos][data-aos][data-aos-duration="2950"],body[data-aos-duration="2950"] [data-aos]{transition-duration:2.95s}[data-aos][data-aos][data-aos-delay="2950"],body[data-aos-delay="2950"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="2950"].aos-animate,body[data-aos-delay="2950"] [data-aos].aos-animate{transition-delay:2.95s}[data-aos][data-aos][data-aos-duration="3000"],body[data-aos-duration="3000"] [data-aos]{transition-duration:3s}[data-aos][data-aos][data-aos-delay="3000"],body[data-aos-delay="3000"] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay="3000"].aos-animate,body[data-aos-delay="3000"] [data-aos].aos-animate{transition-delay:3s}[data-aos][data-aos][data-aos-easing=linear],body[data-aos-easing=linear] [data-aos]{transition-timing-function:cubic-bezier(.25,.25,.75,.75)}[data-aos][data-aos][data-aos-easing=ease],body[data-aos-easing=ease] [data-aos]{transition-timing-function:ease}[data-aos][data-aos][data-aos-easing=ease-in],body[data-aos-easing=ease-in] [data-aos]{transition-timing-function:ease-in}[data-aos][data-aos][data-aos-easing=ease-out],body[data-aos-easing=ease-out] [data-aos]{transition-timing-function:ease-out}[data-aos][data-aos][data-aos-easing=ease-in-out],body[data-aos-easing=ease-in-out] [data-aos]{transition-timing-function:ease-in-out}[data-aos][data-aos][data-aos-easing=ease-in-back],body[data-aos-easing=ease-in-back] [data-aos]{transition-timing-function:cubic-bezier(.6,-.28,.735,.045)}[data-aos][data-aos][data-aos-easing=ease-out-back],body[data-aos-easing=ease-out-back] [data-aos]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}[data-aos][data-aos][data-aos-easing=ease-in-out-back],body[data-aos-easing=ease-in-out-back] [data-aos]{transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}[data-aos][data-aos][data-aos-easing=ease-in-sine],body[data-aos-easing=ease-in-sine] [data-aos]{transition-timing-function:cubic-bezier(.47,0,.745,.715)}[data-aos][data-aos][data-aos-easing=ease-out-sine],body[data-aos-easing=ease-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.39,.575,.565,1)}[data-aos][data-aos][data-aos-easing=ease-in-out-sine],body[data-aos-easing=ease-in-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.445,.05,.55,.95)}[data-aos][data-aos][data-aos-easing=ease-in-quad],body[data-aos-easing=ease-in-quad] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quad],body[data-aos-easing=ease-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quad],body[data-aos-easing=ease-in-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-cubic],body[data-aos-easing=ease-in-cubic] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-cubic],body[data-aos-easing=ease-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-cubic],body[data-aos-easing=ease-in-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-quart],body[data-aos-easing=ease-in-quart] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quart],body[data-aos-easing=ease-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quart],body[data-aos-easing=ease-in-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos^=fade][data-aos^=fade]{opacity:0;transition-property:opacity,transform}[data-aos^=fade][data-aos^=fade].aos-animate{opacity:1;transform:translateZ(0)}[data-aos=fade-up]{transform:translate3d(0,100px,0)}[data-aos=fade-down]{transform:translate3d(0,-100px,0)}[data-aos=fade-right]{transform:translate3d(-100px,0,0)}[data-aos=fade-left]{transform:translate3d(100px,0,0)}[data-aos=fade-up-right]{transform:translate3d(-100px,100px,0)}[data-aos=fade-up-left]{transform:translate3d(100px,100px,0)}[data-aos=fade-down-right]{transform:translate3d(-100px,-100px,0)}[data-aos=fade-down-left]{transform:translate3d(100px,-100px,0)}[data-aos^=zoom][data-aos^=zoom]{opacity:0;transition-property:opacity,transform}[data-aos^=zoom][data-aos^=zoom].aos-animate{opacity:1;transform:translateZ(0) scale(1)}[data-aos=zoom-in]{transform:scale(.6)}[data-aos=zoom-in-up]{transform:translate3d(0,100px,0) scale(.6)}[data-aos=zoom-in-down]{transform:translate3d(0,-100px,0) scale(.6)}[data-aos=zoom-in-right]{transform:translate3d(-100px,0,0) scale(.6)}[data-aos=zoom-in-left]{transform:translate3d(100px,0,0) scale(.6)}[data-aos=zoom-out]{transform:scale(1.2)}[data-aos=zoom-out-up]{transform:translate3d(0,100px,0) scale(1.2)}[data-aos=zoom-out-down]{transform:translate3d(0,-100px,0) scale(1.2)}[data-aos=zoom-out-right]{transform:translate3d(-100px,0,0) scale(1.2)}[data-aos=zoom-out-left]{transform:translate3d(100px,0,0) scale(1.2)}[data-aos^=slide][data-aos^=slide]{transition-property:transform}[data-aos^=slide][data-aos^=slide].aos-animate{transform:translateZ(0)}[data-aos=slide-up]{transform:translate3d(0,100%,0)}[data-aos=slide-down]{transform:translate3d(0,-100%,0)}[data-aos=slide-right]{transform:translate3d(-100%,0,0)}[data-aos=slide-left]{transform:translate3d(100%,0,0)}[data-aos^=flip][data-aos^=flip]{backface-visibility:hidden;transition-property:transform}[data-aos=flip-left]{transform:perspective(2500px) rotateY(-100deg)}[data-aos=flip-left].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-right]{transform:perspective(2500px) rotateY(100deg)}[data-aos=flip-right].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-up]{transform:perspective(2500px) rotateX(-100deg)}[data-aos=flip-up].aos-animate{transform:perspective(2500px) rotateX(0)}[data-aos=flip-down]{transform:perspective(2500px) rotateX(100deg)}[data-aos=flip-down].aos-animate{transform:perspective(2500px) rotateX(0)} \ No newline at end of file diff --git a/css/bootstrap.min.css b/css/bootstrap.min.css new file mode 100644 index 0000000..be3b337 --- /dev/null +++ b/css/bootstrap.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-solutions:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-solutions-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-solutions-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-solutions-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-solutions-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-solutions-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-solutions-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-solutions-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-solutions{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-solutions{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-solutions{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-solutions{--bs-alert-color:var(--bs-solutions-text-emphasis);--bs-alert-bg:var(--bs-solutions-bg-subtle);--bs-alert-border-color:var(--bs-solutions-border-subtle);--bs-alert-link-color:var(--bs-solutions-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-solutions{--bs-list-group-color:var(--bs-solutions-text-emphasis);--bs-list-group-bg:var(--bs-solutions-bg-subtle);--bs-list-group-border-color:var(--bs-solutions-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-solutions-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-solutions-border-subtle);--bs-list-group-active-color:var(--bs-solutions-bg-subtle);--bs-list-group-active-bg:var(--bs-solutions-text-emphasis);--bs-list-group-active-border-color:var(--bs-solutions-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-solutions{color:#000!important;background-color:RGBA(var(--bs-solutions-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-solutions{color:RGBA(var(--bs-solutions-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-solutions-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-solutions-rgb),var(--bs-link-underline-opacity,1))!important}.link-solutions:focus,.link-solutions:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-solutions{--bs-focus-ring-color:rgba(var(--bs-solutions-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-solutions{--bs-border-opacity:1;border-color:rgba(var(--bs-solutions-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-solutions-subtle{border-color:var(--bs-solutions-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-solutions{--bs-text-opacity:1;color:rgba(var(--bs-solutions-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-solutions-emphasis{color:var(--bs-solutions-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-solutions{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-solutions-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-solutions-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-solutions{--bs-bg-opacity:1;background-color:rgba(var(--bs-solutions-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-solutions-subtle{background-color:var(--bs-solutions-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..138a71b --- /dev/null +++ b/css/style.css @@ -0,0 +1,3247 @@ +/* ========================================================= + Zettai Systems — Design System + ========================================================= */ + +@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=Source+Sans+3:wght@400;500;600;700&display=swap"); + +:root { + --primary-color: #005498; + --secondary-color: #1c70ac; + --accent-color: #2b8bc4; + --navy: #14283c; + --background-color: #f4f7fb; + --surface-color: #ffffff; + --surface-elevated: #ffffff; + --text-color: #0c1b33; + --muted-text-color: #5a6b82; + --border-color: rgba(20, 40, 60, 0.1); + --shadow-sm: 0 4px 16px rgba(20, 40, 60, 0.06); + --shadow-md: 0 12px 40px rgba(20, 40, 60, 0.1); + --shadow-lg: 0 24px 60px rgba(20, 40, 60, 0.14); + --gradient-brand: linear-gradient(135deg, #005498 0%, #003d6e 48%, #1c70ac 100%); + --gradient-soft: linear-gradient(160deg, #e8f1f8 0%, #f4f7fb 55%, #eef3f7 100%); + --gradient-hero: radial-gradient(ellipse 70% 55% at 12% 18%, rgba(0, 84, 152, 0.18), transparent 58%), + radial-gradient(ellipse 55% 45% at 88% 12%, rgba(28, 112, 172, 0.14), transparent 52%), + radial-gradient(ellipse 50% 40% at 78% 88%, rgba(192, 208, 220, 0.55), transparent 55%), + linear-gradient(165deg, #f5f9fc 0%, #e8f0f7 42%, #f0f4f8 100%); + --navbar-bg: rgba(244, 247, 251, 0.78); + --navbar-border: rgba(20, 40, 60, 0.08); + --footer-bg: #0a1520; + --footer-text: #d7e2f0; + --footer-muted: #8fa3bc; + --card-hover-border: rgba(0, 84, 152, 0.35); + --focus-ring: 0 0 0 3px rgba(0, 84, 152, 0.35); + --success: #1a9f6a; + --error: #d64545; + --radius-sm: 10px; + --radius-md: 16px; + --radius-lg: 24px; + --container: 1180px; + --header-h: 76px; + --transition: 0.28s cubic-bezier(0.22, 1, 0.36, 1); + --font-display: "Outfit", system-ui, sans-serif; + --font-body: "Source Sans 3", system-ui, sans-serif; +} + +[data-theme="dark"] { + --primary-color: #4ba3dc; + --secondary-color: #c0d0dc; + --accent-color: #7eb6ff; + --navy: #e8eef4; + --background-color: #0b1220; + --surface-color: #121a2b; + --surface-elevated: #182235; + --text-color: #e9eef7; + --muted-text-color: #9aabc2; + --border-color: rgba(233, 238, 247, 0.16); + --shadow-sm: 0 4px 16px rgba(0, 0, 0, 0.25); + --shadow-md: 0 12px 40px rgba(0, 0, 0, 0.35); + --shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.45); + --gradient-soft: linear-gradient(160deg, #121a2b 0%, #1a2236 55%, #0b1220 100%); + --gradient-hero: radial-gradient(ellipse 70% 55% at 15% 10%, rgba(75, 163, 220, 0.28), transparent 55%), + radial-gradient(ellipse 50% 40% at 90% 20%, rgba(0, 84, 152, 0.35), transparent 50%), + radial-gradient(ellipse 45% 35% at 70% 90%, rgba(192, 208, 220, 0.1), transparent 55%), + linear-gradient(165deg, #0a121c 0%, #0e1a2a 48%, #0b1220 100%); + --navbar-bg: rgba(11, 18, 32, 0.82); + --navbar-border: rgba(233, 238, 247, 0.08); + --footer-bg: #060b16; + --footer-text: #d5deec; + --footer-muted: #8494ab; + --card-hover-border: rgba(75, 163, 220, 0.4); + --focus-ring: 0 0 0 3px rgba(75, 163, 220, 0.4); +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; + scroll-padding-top: calc(var(--header-h) + 12px); + overflow-x: hidden; + overflow-x: clip; + max-width: 100%; +} + +body { + margin: 0; + font-family: var(--font-body); + font-size: 1.0625rem; + line-height: 1.65; + color: var(--text-color); + background: var(--background-color); + -webkit-font-smoothing: antialiased; + overflow-x: hidden; + overflow-x: clip; + max-width: 100%; + width: 100%; + position: relative; +} + +img { + max-width: 100%; + height: auto; + display: block; +} + +#site-header { + max-width: 100%; + height: var(--header-h); + position: relative; + z-index: 1030; +} + +#main, +#site-footer { + max-width: 100%; + overflow-x: hidden; + overflow-x: clip; +} + +.container-zs > .row, +.container-zs .row { + --bs-gutter-x: 1.5rem; +} + +a { + color: var(--primary-color); + text-decoration: none; + transition: color var(--transition); +} + +a:hover { + color: var(--secondary-color); +} + +:focus-visible { + outline: none; + box-shadow: var(--focus-ring); +} + +.container-zs { + width: 100%; + max-width: var(--container); + margin-inline: auto; + padding-inline: 1rem; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.display-font { + font-family: var(--font-display); + font-weight: 700; + line-height: 1.15; + letter-spacing: -0.02em; + color: var(--text-color); +} + +.section { + padding: clamp(4rem, 8vw, 7rem) 0; + position: relative; +} + +.section-sm { + padding: clamp(3rem, 6vw, 5rem) 0; +} + +.section-header { + max-width: 680px; + margin-bottom: clamp(2rem, 4vw, 3.25rem); +} + +.section-header.centered { + margin-inline: auto; + text-align: center; +} + +.eyebrow { + display: inline-flex; + align-items: center; + gap: 0.5rem; + font-family: var(--font-display); + font-size: 0.8125rem; + font-weight: 600; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--primary-color); + margin-bottom: 0.85rem; +} + +.eyebrow::before { + content: ""; + width: 1.5rem; + height: 2px; + border-radius: 2px; + background: var(--gradient-brand); +} + +.section-title { + font-size: clamp(1.85rem, 3.4vw, 2.75rem); + margin: 0 0 1rem; +} + +.section-lead { + color: var(--muted-text-color); + font-size: 1.1rem; + margin: 0; +} + +/* ---------- Buttons ---------- */ +.btn-zs { + --btn-bg: var(--primary-color); + --btn-color: #fff; + --btn-border: transparent; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.55rem; + min-height: 48px; + padding: 0.75rem 1.4rem; + border-radius: 999px; + border: 1.5px solid var(--btn-border); + background: var(--btn-bg); + color: var(--btn-color); + font-family: var(--font-display); + font-size: 0.95rem; + font-weight: 600; + letter-spacing: 0.01em; + line-height: 1; + cursor: pointer; + transition: transform var(--transition), box-shadow var(--transition), background var(--transition), + color var(--transition), border-color var(--transition); + text-decoration: none; + white-space: nowrap; +} + +.btn-zs .arrow { + display: inline-block; + transition: transform var(--transition); +} + +.btn-zs:hover { + color: var(--btn-color); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} + +.btn-zs:hover .arrow { + transform: translateX(4px); +} + +.btn-zs:active { + transform: translateY(0); +} + +.btn-zs-primary { + --btn-bg: var(--gradient-brand); + background-image: var(--gradient-brand); + background-size: 160% 160%; + box-shadow: 0 10px 28px rgba(0, 84, 152, 0.28); +} + +.btn-zs-primary:hover { + background-position: 100% 50%; +} + +.btn-zs-secondary { + --btn-bg: transparent; + --btn-color: var(--text-color); + --btn-border: var(--border-color); + background: var(--surface-color); +} + +.btn-zs-secondary:hover { + --btn-border: var(--primary-color); + --btn-color: var(--primary-color); +} + +.btn-zs-outline { + --btn-bg: transparent; + --btn-color: var(--primary-color); + --btn-border: var(--primary-color); +} + +.btn-zs-outline:hover { + --btn-bg: var(--primary-color); + --btn-color: #fff; +} + +.btn-zs-light { + --btn-bg: #fff; + --btn-color: #0c1b33; + --btn-border: transparent; +} + +.btn-zs-light:hover { + --btn-bg: #f3f7fb; + --btn-color: #005498; +} + +.btn-zs-sm { + min-height: 40px; + padding: 0.55rem 1.1rem; + font-size: 0.875rem; +} + +.btn-zs:disabled, +.btn-zs.is-loading { + opacity: 0.7; + pointer-events: none; +} + +.link-arrow { + display: inline-flex; + align-items: center; + gap: 0.4rem; + font-family: var(--font-display); + font-weight: 600; + font-size: 0.95rem; + color: var(--primary-color); +} + +.link-arrow .arrow { + transition: transform var(--transition); +} + +.link-arrow:hover .arrow { + transform: translateX(4px); +} + +/* ---------- Navbar ---------- */ +.site-header { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1030; + height: var(--header-h); + width: 100%; + max-width: 100%; + transition: background var(--transition), box-shadow var(--transition), border-color var(--transition), + backdrop-filter var(--transition); + border-bottom: 1px solid transparent; + background: var(--navbar-bg); + backdrop-filter: blur(12px) saturate(1.15); + -webkit-backdrop-filter: blur(12px) saturate(1.15); +} + +.site-header.is-scrolled { + background: var(--navbar-bg); + backdrop-filter: blur(16px) saturate(1.2); + -webkit-backdrop-filter: blur(16px) saturate(1.2); + border-bottom-color: var(--navbar-border); + box-shadow: var(--shadow-sm); +} + +.navbar-zs { + height: var(--header-h); + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; +} + +.brand-logo { + display: inline-flex; + align-items: center; + height: 48px; + flex-shrink: 0; +} + +.brand-logo img { + height: 44px; + width: auto; + max-width: 190px; + object-fit: contain; + display: block; +} + +.brand-logo .logo-dark { + display: none; +} + +[data-theme="dark"] .brand-logo .logo-light { + display: none; +} + +[data-theme="dark"] .brand-logo .logo-dark { + display: block; +} + +.nav-links { + display: none; + align-items: center; + gap: 0.15rem; + list-style: none; + margin: 0; + padding: 0; +} + +.nav-links a { + display: inline-flex; + align-items: center; + min-height: 40px; + padding: 0.4rem 0.75rem; + border-radius: 999px; + color: var(--text-color); + font-family: var(--font-display); + font-size: 0.9rem; + font-weight: 500; + opacity: 0.86; +} + +.nav-links a:hover, +.nav-links a.active { + opacity: 1; + color: var(--primary-color); + background: color-mix(in srgb, var(--primary-color) 10%, transparent); +} + +.nav-actions { + display: flex; + align-items: center; + gap: 0.55rem; +} + +.theme-toggle { + width: 44px; + height: 44px; + border-radius: 50%; + border: 1.5px solid var(--border-color); + background: var(--surface-color); + color: var(--text-color); + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: var(--transition); +} + +.theme-toggle:hover { + border-color: var(--primary-color); + color: var(--primary-color); +} + +.theme-toggle .icon-sun { + display: none; +} + +.theme-toggle .icon-moon { + display: block; +} + +[data-theme="dark"] .theme-toggle .icon-sun { + display: block; +} + +[data-theme="dark"] .theme-toggle .icon-moon { + display: none; +} + +.nav-cta { + display: none; +} + +.nav-cta-compact { + display: none; +} + +.menu-toggle { + width: 44px; + height: 44px; + border-radius: 12px; + border: 1.5px solid var(--border-color); + background: var(--surface-color); + color: var(--text-color); + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; +} + +@media (min-width: 768px) { + .nav-cta-compact { + display: inline-flex; + } +} + +@media (min-width: 992px) { + .nav-links { + display: flex; + } + .nav-cta, + .nav-cta-full { + display: inline-flex; + } + .nav-cta-compact { + display: none; + } + .menu-toggle { + display: none; + } +} + +.mobile-drawer { + position: fixed; + top: var(--header-h); + left: 0; + width: 100%; + max-width: 100%; + height: calc(100dvh - var(--header-h)); + background: var(--background-color); + z-index: 1025; + padding: 1.5rem; + overflow-x: hidden; + overflow-y: auto; + visibility: hidden; + pointer-events: none; + opacity: 0; + transform: translate3d(1.25rem, 0, 0); + transition: opacity 0.28s ease, transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), visibility 0.35s; +} + +.mobile-drawer.is-open { + visibility: visible; + pointer-events: auto; + opacity: 1; + transform: translate3d(0, 0, 0); +} + +.mobile-drawer[hidden] { + display: block !important; + visibility: hidden; + pointer-events: none; + opacity: 0; +} + +.mobile-drawer .mobile-links { + list-style: none; + margin: 0 0 1.5rem; + padding: 0; + display: grid; + gap: 0.35rem; +} + +.mobile-drawer .mobile-links a { + display: flex; + align-items: center; + min-height: 48px; + padding: 0.75rem 1rem; + border-radius: var(--radius-sm); + color: var(--text-color); + font-family: var(--font-display); + font-weight: 600; + font-size: 1.1rem; + background: var(--surface-color); + border: 1px solid var(--border-color); +} + +.mobile-drawer .mobile-links a.active { + color: var(--primary-color); + border-color: color-mix(in srgb, var(--primary-color) 40%, transparent); +} + +body.nav-open { + overflow: hidden; +} + +/* ---------- Hero ---------- */ +.hero { + position: relative; + padding: clamp(3.5rem, 8vw, 6.5rem) 0 clamp(4rem, 9vw, 7rem); + background: var(--gradient-hero); + background-size: 200% 200%; + animation: heroGradientFlow 18s ease-in-out infinite; + overflow: hidden; + isolation: isolate; +} + +@keyframes heroGradientFlow { + 0%, + 100% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } +} + +.hero-bg { + position: absolute; + inset: 0; + z-index: 0; + pointer-events: none; + overflow: hidden; +} + +.hero-bg-glow { + position: absolute; + border-radius: 50%; + filter: blur(56px); + opacity: 0.75; + animation: heroGlowDrift 12s ease-in-out infinite; +} + +.hero-bg-glow.g1 { + width: min(52vw, 520px); + height: min(52vw, 520px); + top: -12%; + left: -8%; + background: radial-gradient(circle, rgba(0, 84, 152, 0.35) 0%, transparent 70%); +} + +.hero-bg-glow.g2 { + width: min(42vw, 420px); + height: min(42vw, 420px); + top: 8%; + right: -6%; + background: radial-gradient(circle, rgba(28, 112, 172, 0.28) 0%, transparent 70%); + animation: heroGlowDrift 16s ease-in-out infinite reverse; + animation-delay: -4s; +} + +.hero-bg-glow.g3 { + width: min(48vw, 480px); + height: min(48vw, 480px); + bottom: -18%; + left: 28%; + background: radial-gradient(circle, rgba(192, 208, 220, 0.55) 0%, transparent 68%); + animation-duration: 20s; + animation-delay: -7s; +} + +.hero-watermark { + position: absolute; + right: clamp(1rem, 7vw, 5rem); + bottom: clamp(-1.2rem, -1.4vw, -0.5rem); + width: clamp(220px, 30vw, 430px); + opacity: 0.08; + transform: rotate(-10deg); + transform-origin: center; + filter: saturate(0.95) contrast(1.05); + animation: heroWatermarkFloat 18s ease-in-out infinite; +} + +.hero-watermark img { + width: 100%; + height: auto; + display: block; +} + +.hero-watermark .wm-dark { + display: none; +} + +[data-theme="dark"] .hero-watermark { + opacity: 0.12; +} + +[data-theme="dark"] .hero-watermark .wm-light { + display: none; +} + +[data-theme="dark"] .hero-watermark .wm-dark { + display: block; +} + +@keyframes heroWatermarkFloat { + 0%, + 100% { + transform: rotate(-10deg) translateY(0); + } + 50% { + transform: rotate(-8deg) translateY(-10px); + } +} + +[data-theme="dark"] .hero-bg-glow.g1 { + background: radial-gradient(circle, rgba(75, 163, 220, 0.28) 0%, transparent 70%); +} + +[data-theme="dark"] .hero-bg-glow.g2 { + background: radial-gradient(circle, rgba(0, 84, 152, 0.4) 0%, transparent 70%); +} + +[data-theme="dark"] .hero-bg-glow.g3 { + background: radial-gradient(circle, rgba(192, 208, 220, 0.12) 0%, transparent 68%); +} + +@keyframes heroGlowDrift { + 0%, + 100% { + transform: translate3d(0, 0, 0) scale(1); + } + 33% { + transform: translate3d(4%, -5%, 0) scale(1.08); + } + 66% { + transform: translate3d(-3%, 4%, 0) scale(0.96); + } +} + +.hero-bg-shimmer { + position: absolute; + inset: -40% -20%; + background: linear-gradient( + 115deg, + transparent 42%, + rgba(255, 255, 255, 0.06) 48%, + rgba(255, 255, 255, 0.14) 50%, + rgba(255, 255, 255, 0.06) 52%, + transparent 58% + ); + transform: translateX(-60%) rotate(0deg); + animation: heroShimmer 9s ease-in-out infinite; +} + +[data-theme="dark"] .hero-bg-shimmer { + background: linear-gradient( + 115deg, + transparent 42%, + rgba(75, 163, 220, 0.04) 48%, + rgba(192, 208, 220, 0.1) 50%, + rgba(75, 163, 220, 0.04) 52%, + transparent 58% + ); +} + +@keyframes heroShimmer { + 0%, + 100% { + transform: translateX(-55%) skewX(-8deg); + opacity: 0.4; + } + 50% { + transform: translateX(55%) skewX(-8deg); + opacity: 1; + } +} + +.hero-bg-particles { + position: absolute; + inset: 0; + pointer-events: none; + clip-path: inset(0 0 0 48%); +} + +.hero-bg-particles span { + position: absolute; + border-radius: 50%; + background: var(--primary-color); + opacity: 0.35; + animation: heroParticleFloat 14s ease-in-out infinite; +} + +.hero-bg-particles .p1 { width: 6px; height: 6px; top: 18%; left: 12%; animation-delay: 0s; } +.hero-bg-particles .p2 { width: 4px; height: 4px; top: 62%; left: 8%; animation-delay: -2s; background: var(--secondary-color); } +.hero-bg-particles .p3 { width: 5px; height: 5px; top: 28%; left: 38%; animation-delay: -4s; } +.hero-bg-particles .p4 { width: 3px; height: 3px; top: 72%; left: 52%; animation-delay: -1s; background: #c0d0dc; opacity: 0.5; } +.hero-bg-particles .p5 { width: 7px; height: 7px; top: 14%; left: 68%; animation-delay: -6s; } +.hero-bg-particles .p6 { width: 4px; height: 4px; top: 48%; left: 82%; animation-delay: -3s; background: var(--secondary-color); } +.hero-bg-particles .p7 { width: 5px; height: 5px; top: 78%; left: 24%; animation-delay: -5s; } +.hero-bg-particles .p8 { width: 3px; height: 3px; top: 36%; left: 92%; animation-delay: -7s; background: #c0d0dc; opacity: 0.45; } + +@keyframes heroParticleFloat { + 0%, + 100% { + transform: translate3d(0, 0, 0) scale(1); + opacity: 0.25; + } + 50% { + transform: translate3d(12px, -18px, 0) scale(1.35); + opacity: 0.65; + } +} + +.hero-bg-grid { + position: absolute; + inset: -10%; + width: 120%; + height: 120%; + color: rgba(0, 84, 152, 0.14); + mask-image: radial-gradient(ellipse 75% 70% at 50% 40%, #000 20%, transparent 78%); + -webkit-mask-image: radial-gradient(ellipse 75% 70% at 50% 40%, #000 20%, transparent 78%); + animation: heroGridPan 32s linear infinite; +} + +@keyframes heroGridPan { + from { + transform: translate3d(0, 0, 0); + } + to { + transform: translate3d(-48px, -48px, 0); + } +} + +[data-theme="dark"] .hero-bg-grid { + color: rgba(192, 208, 220, 0.12); +} + +.hero-bg-arc { + stroke-dasharray: 6 14; + animation: heroArcFlow 22s linear infinite, heroArcPulse 10s ease-in-out infinite; +} + +.hero-bg-arc.a2 { + stroke-dasharray: 4 16; + animation-delay: -3.5s, -5s; + opacity: 0.75; +} + +@keyframes heroArcFlow { + to { + stroke-dashoffset: -240; + } +} + +.hero-bg-node { + opacity: 0.45; + animation: heroNodePulse 4s ease-in-out infinite; +} + +.hero-bg-node.n1 { animation-delay: 0s; } +.hero-bg-node.n2 { animation-delay: -1s; } +.hero-bg-node.n3 { animation-delay: -2s; } +.hero-bg-node.n4 { animation-delay: -3s; fill: #c0d0dc; } + +@keyframes heroNodePulse { + 0%, + 100% { + opacity: 0.25; + } + 50% { + opacity: 0.9; + } +} + +@keyframes heroArcPulse { + 0%, + 100% { + opacity: 0.45; + } + 50% { + opacity: 0.95; + } +} + +.hero > .container-zs { + position: relative; + z-index: 1; +} + +.hero-grid { + display: grid; + gap: 2.5rem; + align-items: center; +} + +@media (min-width: 992px) { + .hero-grid { + grid-template-columns: 1.05fr 0.95fr; + gap: 3rem; + } +} + +.hero-brand { + font-family: var(--font-display); + font-size: clamp(0.95rem, 1.5vw, 1.1rem); + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + background: var(--gradient-brand); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + margin-bottom: 1rem; +} + +.hero h1 { + font-size: clamp(2.15rem, 4.8vw, 3.6rem); + margin: 0 0 1.25rem; + max-width: 18ch; +} + +.hero-copy { + font-size: clamp(1.05rem, 1.5vw, 1.2rem); + color: var(--muted-text-color); + max-width: 36rem; + margin: 0 0 2rem; +} + +.hero-actions { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.85rem 1.15rem; +} + +.hero-cta-link { + font-family: var(--font-display); + font-weight: 600; + font-size: 0.95rem; + color: var(--primary-color); + text-decoration: none; + display: inline-flex; + align-items: center; + gap: 0.35rem; +} + +.hero-cta-link:hover { + text-decoration: underline; + text-underline-offset: 3px; +} + +.hero-visual { + position: relative; + min-height: 320px; + display: grid; + place-items: center; + width: 100%; + max-width: 100%; + overflow: hidden; +} + +.hero-orb { + position: absolute; + border-radius: 50%; + filter: blur(40px); + opacity: 0.55; + animation: floatOrb 8s ease-in-out infinite; +} + +.hero-orb.o1 { + width: 220px; + height: 220px; + background: color-mix(in srgb, var(--primary-color) 55%, transparent); + top: 10%; + right: 15%; +} + +.hero-orb.o2 { + width: 180px; + height: 180px; + background: color-mix(in srgb, var(--secondary-color) 50%, transparent); + bottom: 8%; + left: 12%; + animation-delay: -3s; +} + +@keyframes floatOrb { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-18px); + } +} + +.hero-panel { + position: relative; + z-index: 1; + width: min(100%, 460px); + aspect-ratio: 1 / 1.05; + border-radius: var(--radius-lg); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-lg); + overflow: hidden; + animation: floatPanel 7s ease-in-out infinite; +} + +@keyframes floatPanel { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-10px); + } +} + +.hero-panel svg { + width: 100%; + height: 100%; +} + +.hero-logo-dark { + display: none; +} + +[data-theme="dark"] .hero-logo-light { + display: none; +} + +[data-theme="dark"] .hero-logo-dark { + display: inline; +} + +.hero-radar { + transform-origin: 230px 220px; + transform-box: view-box; + animation: spinRadar 42s linear infinite; +} + +@keyframes spinRadar { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.hero-float-card { + position: absolute; + z-index: 2; + max-width: calc(100% - 1.5rem); + background: var(--surface-elevated); + border: 1px solid var(--border-color); + border-radius: 14px; + padding: 0.85rem 1rem; + box-shadow: var(--shadow-md); + display: flex; + align-items: center; + gap: 0.75rem; + font-family: var(--font-display); + font-size: 0.85rem; + font-weight: 600; + animation: floatPanel 6s ease-in-out infinite; +} + +.hero-float-card .dot { + width: 10px; + height: 10px; + border-radius: 50%; + background: var(--secondary-color); + box-shadow: 0 0 0 4px color-mix(in srgb, var(--secondary-color) 25%, transparent); +} + +.hero-float-card.c1 { + top: 12%; + left: 0; + animation-delay: -1.5s; +} + +.hero-float-card.c2 { + bottom: 14%; + right: 0; + animation-delay: -3.5s; +} + +.hero-float-card.c2 .dot { + background: var(--primary-color); + box-shadow: 0 0 0 4px color-mix(in srgb, var(--primary-color) 25%, transparent); +} + +/* ---------- Cards ---------- */ +.card-zs { + width: 100%; + height: 100%; + background: var(--surface-color); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + padding: 1.6rem; + box-shadow: var(--shadow-sm); + transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition); +} + +.card-zs:hover { + transform: translateY(-6px); + box-shadow: var(--shadow-md); + border-color: var(--card-hover-border); +} + +.icon-badge { + width: 52px; + height: 52px; + border-radius: 14px; + display: grid; + place-items: center; + margin-bottom: 1.15rem; + background: linear-gradient(145deg, color-mix(in srgb, var(--primary-color) 16%, transparent), color-mix(in srgb, var(--secondary-color) 12%, transparent)); + color: var(--primary-color); + font-size: 1.35rem; + transition: transform var(--transition); +} + +.card-zs:hover .icon-badge { + transform: scale(1.06) rotate(-3deg); +} + +.card-zs h3 { + font-size: 1.2rem; + margin: 0 0 0.65rem; +} + +.card-zs p { + color: var(--muted-text-color); + margin: 0 0 1.1rem; + font-size: 0.98rem; +} + +.capability-grid .card-zs { + text-align: left; +} + +.service-track { + width: 100%; + margin-bottom: 2.75rem; +} + +.service-track-header { + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 0.65rem 1rem; + margin-bottom: 1.35rem; +} + +.service-track-header .eyebrow { + margin-bottom: 0; +} + +.service-track-header h3 { + font-size: 1.15rem; + margin: 0; +} + +.stat-label { + font-family: var(--font-display); + font-weight: 700; + font-size: 1.15rem; + margin-bottom: 0.35rem; +} + +/* ---------- About / Mission ---------- */ +.split-section { + display: grid; + gap: 2rem; +} + +@media (min-width: 992px) { + .split-section { + grid-template-columns: 1.05fr 0.95fr; + gap: 3.5rem; + align-items: center; + } +} + +.about-visual { + border-radius: var(--radius-lg); + overflow: hidden; + border: 1px solid var(--border-color); + background: var(--gradient-soft); + min-height: 360px; + position: relative; + display: grid; + place-items: center; + padding: 2rem; +} + +.about-visual img { + width: min(220px, 55%); + height: auto; +} + +.who-points { + list-style: none; + margin: 0 0 1.5rem; + padding: 0; + display: grid; + gap: 0.85rem; +} + +.who-points li { + display: flex; + gap: 0.75rem; + align-items: flex-start; + color: var(--muted-text-color); + font-size: 0.98rem; +} + +.who-points i { + color: var(--secondary-color); + font-size: 1.15rem; + margin-top: 0.15rem; + flex-shrink: 0; +} + +.who-points strong { + color: var(--text-color); + font-family: var(--font-display); + font-weight: 700; +} + +.who-panel { + display: flex; + flex-direction: column; + border-radius: var(--radius-lg); + padding: clamp(1.5rem, 3vw, 2.25rem); + background: linear-gradient(160deg, #0a1a33 0%, #122744 55%, #0d2038 100%); + color: #e8eef8; + border: 1px solid rgba(255, 255, 255, 0.08); + box-shadow: var(--shadow-lg); + min-height: 100%; +} + +.who-panel-brand { + display: flex; + align-items: center; + gap: 0.75rem; + margin-bottom: 1.25rem; +} + +.who-panel-brand img { + width: 40px; + height: auto; +} + +.who-panel-kicker { + margin: 0; + font-family: var(--font-display); + font-size: 0.8rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: rgba(232, 238, 248, 0.7); +} + +.who-panel-title { + margin: 0 0 0.75rem; + font-size: clamp(1.75rem, 3vw, 2.35rem); + font-weight: 800; + line-height: 1.1; + color: #fff; +} + +.who-panel-title span { + background: var(--gradient-brand); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.who-panel-lead { + margin: 0 0 1.5rem; + color: rgba(232, 238, 248, 0.78); + font-size: 0.98rem; +} + +.who-panel-cols { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1.25rem; +} + +.who-panel-cols h4 { + margin: 0 0 0.75rem; + font-size: 0.75rem; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--secondary-color); +} + +.who-panel-cols h4:first-child { + color: rgba(61, 143, 255, 0.95); +} + +.who-panel-cols ul { + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 0.55rem; +} + +.who-panel-cols li { + position: relative; + padding-left: 0.9rem; + font-size: 0.92rem; + color: rgba(232, 238, 248, 0.88); +} + +.who-panel-cols li::before { + content: ""; + position: absolute; + left: 0; + top: 0.55em; + width: 5px; + height: 5px; + border-radius: 50%; + background: var(--secondary-color); +} + +.who-panel-cols > div:first-child li::before { + background: var(--accent-color); +} + +.who-panel-footer { + margin-top: auto; + padding-top: 1.5rem; + border-top: 1px solid rgba(255, 255, 255, 0.1); +} + +.who-panel-stack-label { + margin: 0 0 0.65rem; + font-family: var(--font-display); + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; + color: rgba(232, 238, 248, 0.55); +} + +.who-panel-stack { + display: flex; + flex-wrap: wrap; + gap: 0.45rem; + margin-bottom: 1.15rem; +} + +.who-panel-stack span { + display: inline-flex; + align-items: center; + padding: 0.35rem 0.7rem; + border-radius: 999px; + font-family: var(--font-display); + font-size: 0.78rem; + font-weight: 600; + color: #fff; + background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.12); +} + +.who-panel-stats { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.75rem; + margin-bottom: 1.15rem; +} + +.who-panel-stats div { + padding: 0.75rem 0.85rem; + border-radius: 12px; + background: rgba(0, 84, 152, 0.15); + border: 1px solid rgba(75, 163, 220, 0.2); +} + +.who-panel-stats strong { + display: block; + font-family: var(--font-display); + font-size: 0.88rem; + color: #fff; + margin-bottom: 0.2rem; +} + +.who-panel-stats span { + font-size: 0.8rem; + color: rgba(232, 238, 248, 0.65); +} + +.who-panel-cta { + display: inline-flex; + align-items: center; + gap: 0.45rem; + min-height: 44px; + padding: 0.65rem 1.15rem; + border-radius: 999px; + background: var(--gradient-brand); + color: #fff !important; + font-family: var(--font-display); + font-weight: 700; + font-size: 0.9rem; + transition: transform var(--transition), box-shadow var(--transition); +} + +.who-panel-cta:hover { + transform: translateY(-2px); + box-shadow: 0 10px 24px rgba(0, 84, 152, 0.35); + color: #fff !important; +} + +@media (max-width: 480px) { + .who-panel-cols, + .who-panel-stats { + grid-template-columns: 1fr; + } +} + +.who-meta { + display: flex; + flex-wrap: wrap; + gap: 1rem; +} + +.who-meta-item { + display: inline-flex; + align-items: center; + gap: 0.85rem; + padding: 0.85rem 1.15rem; + border-radius: 14px; + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); +} + +.who-meta-year { + font-family: var(--font-display); + font-weight: 800; + font-size: 1.35rem; + line-height: 1; + background: var(--gradient-brand); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.who-meta-label { + font-family: var(--font-display); + font-weight: 600; + font-size: 0.95rem; + color: var(--text-color); +} + +.mission-grid { + display: grid; + gap: 1.25rem; +} + +@media (min-width: 768px) { + .mission-grid { + grid-template-columns: repeat(3, 1fr); + } +} + +.mission-card { + padding: 1.75rem; + border-radius: var(--radius-md); + border: 1px solid var(--border-color); + background: var(--surface-color); + box-shadow: var(--shadow-sm); + height: 100%; +} + +.mission-card .icon-badge { + margin-bottom: 1rem; +} + +.mission-card h3 { + margin: 0 0 0.75rem; + font-size: 1.35rem; +} + +.mission-card p { + margin: 0; + color: var(--muted-text-color); +} + +.mission-card.vision { + background: linear-gradient(160deg, color-mix(in srgb, var(--primary-color) 12%, var(--surface-color)), var(--surface-color)); +} + +.mission-card.mission { + background: linear-gradient(160deg, color-mix(in srgb, var(--secondary-color) 12%, var(--surface-color)), var(--surface-color)); +} + +.mission-card.approach { + background: linear-gradient(160deg, color-mix(in srgb, var(--primary-color) 6%, var(--surface-color)), color-mix(in srgb, var(--secondary-color) 8%, var(--surface-color))); +} + +@media (max-width: 767.98px) { + .row.g-3, + .row.g-4, + .row.g-lg-5 { + flex-direction: column; + } + + .row > [class*="col-"] { + flex: 0 0 auto !important; + width: 100% !important; + max-width: 100% !important; + } + + .card-zs, + .svc-card, + .testimonial-card, + .tech-group, + .mission-card { + width: 100%; + max-width: none; + } +} + +/* ---------- Zettai Framework ---------- */ +.framework-quote { + max-width: 820px; + margin: 0 auto 2.25rem; + padding: 1.75rem 1.85rem; + border-radius: var(--radius-lg); + border: 1px solid color-mix(in srgb, var(--primary-color) 22%, var(--border-color)); + background: + linear-gradient(135deg, color-mix(in srgb, var(--primary-color) 8%, var(--surface-color)), var(--surface-color)); + box-shadow: var(--shadow-sm); + position: relative; +} + +.framework-quote::before { + content: "“"; + position: absolute; + top: 0.55rem; + left: 1rem; + font-family: var(--font-display); + font-size: 3rem; + line-height: 1; + color: var(--primary-color); + opacity: 0.35; +} + +.framework-quote p { + margin: 0; + font-size: clamp(1.05rem, 2.2vw, 1.2rem); + line-height: 1.65; + color: var(--text-color); + font-weight: 500; +} + +.framework-steps { + display: grid; + gap: 1rem; + align-items: stretch; +} + +@media (min-width: 768px) { + .framework-steps { + grid-template-columns: 1fr 1fr; + } +} + +@media (min-width: 1100px) { + .framework-steps { + grid-template-columns: repeat(4, 1fr); + gap: 1rem; + } +} + +.framework-step { + background: var(--surface-color); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + padding: 1.35rem 1.4rem; + box-shadow: var(--shadow-sm); + height: 100%; +} + +.framework-step-num { + width: 36px; + height: 36px; + border-radius: 50%; + display: grid; + place-items: center; + font-family: var(--font-display); + font-weight: 700; + font-size: 0.85rem; + color: #fff; + background: var(--gradient-brand); + margin-bottom: 0.85rem; +} + +.framework-step h3 { + font-size: 1.05rem; + margin: 0 0 0.45rem; +} + +.framework-step p { + margin: 0; + color: var(--muted-text-color); + font-size: 0.95rem; +} + +.framework-connector { + display: none; +} + +@media (min-width: 900px) { + .framework-connector { + display: block; + width: 36px; + height: 2px; + border-radius: 2px; + background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); + opacity: 0.55; + } +} + +/* ---------- Process timeline ---------- */ +.process-track { + display: grid; + gap: 1rem; + position: relative; +} + +@media (min-width: 992px) { + .process-track { + grid-template-columns: repeat(7, 1fr); + gap: 0.75rem; + } + + .process-track::before { + content: ""; + position: absolute; + top: 28px; + left: 4%; + right: 4%; + height: 2px; + background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); + opacity: 0.35; + z-index: 0; + } +} + +.process-step { + position: relative; + z-index: 1; + background: var(--surface-color); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + padding: 1.25rem; + box-shadow: var(--shadow-sm); +} + +.process-num { + width: 36px; + height: 36px; + border-radius: 50%; + display: grid; + place-items: center; + font-family: var(--font-display); + font-weight: 700; + font-size: 0.85rem; + color: #fff; + background: var(--gradient-brand); + margin-bottom: 0.85rem; +} + +.process-step h3 { + font-size: 1rem; + margin: 0 0 0.4rem; +} + +.process-step p { + margin: 0; + font-size: 0.88rem; + color: var(--muted-text-color); +} + +/* ---------- Tech pills ---------- */ +.tech-group { + background: var(--surface-color); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + padding: 1.5rem; + height: 100%; +} + +.tech-group h3 { + font-size: 1.05rem; + margin: 0 0 1rem; +} + +.tech-pills { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.tech-pill { + display: inline-flex; + align-items: center; + padding: 0.45rem 0.85rem; + border-radius: 999px; + background: color-mix(in srgb, var(--primary-color) 8%, var(--background-color)); + border: 1px solid var(--border-color); + font-family: var(--font-display); + font-size: 0.85rem; + font-weight: 500; + color: var(--text-color); +} + +/* ---------- Case / placeholder ---------- */ +.placeholder-note { + display: inline-flex; + align-items: center; + gap: 0.4rem; + font-size: 0.8rem; + font-weight: 600; + color: var(--muted-text-color); + background: color-mix(in srgb, var(--muted-text-color) 10%, transparent); + border-radius: 999px; + padding: 0.25rem 0.7rem; + margin-bottom: 0.75rem; +} + +.case-card .case-media { + height: 160px; + border-radius: 12px; + margin-bottom: 1rem; + background: var(--gradient-soft); + border: 1px solid var(--border-color); + display: grid; + place-items: center; + color: var(--muted-text-color); + font-family: var(--font-display); + font-size: 0.85rem; + font-weight: 600; +} + +/* ---------- CTA band ---------- */ +.cta-band { + position: relative; + overflow: hidden; + border-radius: var(--radius-lg); + padding: clamp(2.5rem, 5vw, 3.75rem); + background: linear-gradient(135deg, #0a1520 0%, #005498 48%, #1c70ac 120%); + color: #fff; + box-shadow: var(--shadow-lg); +} + +.cta-band h2, +.cta-band p { + color: #fff; +} + +.cta-band p { + opacity: 0.92; + max-width: 36rem; +} + +.cta-band .btn-zs-light { + --btn-bg: #fff; + --btn-color: #0c1b33; +} + +.cta-band .btn-zs-light:hover { + transform: translateY(-2px); + --btn-bg: #f3f7fb; + --btn-color: #005498; +} + +.cta-band-actions { + min-width: 0; +} + +/* ---------- Page hero (inner) ---------- */ +.page-hero { + position: relative; + overflow: hidden; + isolation: isolate; + padding: clamp(3rem, 6vw, 4.5rem) 0; + background: + radial-gradient(ellipse 70% 60% at 15% 20%, rgba(28, 112, 172, 0.35), transparent 55%), + radial-gradient(ellipse 55% 50% at 85% 75%, rgba(0, 84, 152, 0.28), transparent 50%), + linear-gradient(165deg, #071422 0%, #0b1c30 45%, #0a1830 100%); + border-bottom: 1px solid rgba(120, 170, 210, 0.12); + color: #e8eef4; +} + +.page-net { + position: absolute; + inset: 0; + z-index: 0; + pointer-events: none; +} + +.page-net-grid { + position: absolute; + inset: 0; + background-image: + linear-gradient(rgba(120, 170, 210, 0.07) 1px, transparent 1px), + linear-gradient(90deg, rgba(120, 170, 210, 0.07) 1px, transparent 1px); + background-size: 48px 48px; + mask-image: radial-gradient(ellipse 85% 75% at 50% 45%, #000 20%, transparent 78%); + -webkit-mask-image: radial-gradient(ellipse 85% 75% at 50% 45%, #000 20%, transparent 78%); + animation: pageNetGridDrift 28s linear infinite; +} + +@keyframes pageNetGridDrift { + 0% { background-position: 0 0, 0 0; } + 100% { background-position: 48px 48px, 48px 48px; } +} + +.page-net-canvas { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + display: block; +} + +.page-net-glow { + position: absolute; + inset: 0; + background: + radial-gradient(circle at 70% 30%, rgba(248, 136, 32, 0.08), transparent 28%), + radial-gradient(circle at 25% 70%, rgba(75, 163, 220, 0.12), transparent 32%); + animation: pageNetGlowPulse 7s ease-in-out infinite alternate; +} + +@keyframes pageNetGlowPulse { + from { opacity: 0.55; } + to { opacity: 1; } +} + +.page-hero-content { + position: relative; + z-index: 1; +} + +.page-hero .eyebrow { + color: #7eb6ff; +} + +.page-hero .eyebrow::before { + background: #7eb6ff; +} + +.page-hero h1 { + font-size: clamp(2rem, 4vw, 3.1rem); + margin: 0 0 1rem; + color: #f3f7fb; +} + +.page-hero p { + color: rgba(216, 228, 240, 0.82); + max-width: 40rem; + margin: 0; + font-size: 1.1rem; +} + +.page-hero .breadcrumb-zs { + background: rgba(120, 170, 210, 0.1); + border-color: rgba(120, 170, 210, 0.22); + color: rgba(200, 216, 232, 0.85); +} + +.page-hero .breadcrumb-zs a { + color: rgba(200, 216, 232, 0.85); +} + +.page-hero .breadcrumb-zs a:hover { + color: #9fd0f5; +} + +.page-hero .breadcrumb-zs a::after { + background: #4ba3dc; +} + +.page-hero .breadcrumb-zs .sep { + color: #4ba3dc; + background: transparent; +} + +.page-hero .breadcrumb-zs li[aria-current="page"] { + color: #f3f7fb; +} + +.breadcrumb-zs { + position: relative; + display: inline-flex; + flex-wrap: wrap; + gap: 0.45rem; + align-items: center; + list-style: none; + margin: 0 0 1rem; + padding: 0.35rem 0.85rem 0.35rem 0.75rem; + font-size: 0.9rem; + color: var(--muted-text-color); + border-radius: 999px; + background: color-mix(in srgb, var(--primary-color) 8%, transparent); + border: 1px solid color-mix(in srgb, var(--primary-color) 18%, transparent); + overflow: hidden; +} + +.breadcrumb-zs::before { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient( + 105deg, + transparent 0%, + transparent 40%, + color-mix(in srgb, var(--primary-color) 35%, transparent) 50%, + transparent 60%, + transparent 100% + ); + background-size: 220% 100%; + animation: bcShimmer 3.2s ease-in-out infinite; + pointer-events: none; + z-index: 0; +} + +@keyframes bcShimmer { + 0% { background-position: 120% 0; } + 100% { background-position: -120% 0; } +} + +.breadcrumb-zs > li { + position: relative; + z-index: 1; +} + +.breadcrumb-zs a { + position: relative; + color: var(--muted-text-color); + transition: color 0.25s ease; +} + +.breadcrumb-zs a::after { + content: ""; + position: absolute; + bottom: -1px; + left: 0; + width: 0; + height: 1.5px; + border-radius: 2px; + background: var(--primary-color); + transition: width 0.3s cubic-bezier(0.22, 1, 0.36, 1); +} + +.breadcrumb-zs a:hover { + color: var(--primary-color); +} + +.breadcrumb-zs a:hover::after { + width: 100%; +} + +.breadcrumb-zs .sep { + display: inline-flex; + align-items: center; + justify-content: center; + width: 0.85rem; + color: var(--primary-color); + font-weight: 400; + font-size: 0.8rem; + opacity: 0.75; + animation: bcSepPulse 1.6s ease-in-out infinite; +} + +.breadcrumb-zs .sep:nth-child(4) { + animation-delay: 0.35s; +} + +@keyframes bcSepPulse { + 0%, + 100% { + opacity: 0.45; + transform: translateX(0); + } + 50% { + opacity: 1; + transform: translateX(3px); + } +} + +.breadcrumb-zs li[aria-current="page"] { + font-weight: 600; + color: var(--text-color); + position: relative; +} + +.breadcrumb-zs li[aria-current="page"]::after { + content: ""; + position: absolute; + bottom: -3px; + left: 0; + width: 100%; + height: 2px; + border-radius: 2px; + background: linear-gradient( + 90deg, + var(--primary-color), + var(--secondary-color), + var(--primary-color) + ); + background-size: 200% 100%; + animation: bcCurrentGlow 2.4s linear infinite; +} + +@keyframes bcCurrentGlow { + 0% { background-position: 0% 0; } + 100% { background-position: 200% 0; } +} + +[data-theme="dark"] .breadcrumb-zs { + background: color-mix(in srgb, var(--primary-color) 14%, transparent); + border-color: color-mix(in srgb, var(--primary-color) 28%, transparent); +} + +/* ---------- Forms ---------- */ +.form-zs { + background: var(--surface-color); + border: 1px solid var(--border-color); + border-radius: var(--radius-lg); + padding: clamp(1.5rem, 3vw, 2.25rem); + box-shadow: var(--shadow-sm); +} + +.form-label-zs { + display: block; + font-family: var(--font-display); + font-weight: 600; + font-size: 0.9rem; + margin-bottom: 0.4rem; +} + +.required-star { + color: var(--secondary-color); +} + +.form-control-zs, +.form-select-zs { + width: 100%; + min-height: 48px; + padding: 0.7rem 0.95rem; + border-radius: 12px; + border: 1.5px solid var(--border-color); + background: var(--background-color); + color: var(--text-color); + font: inherit; + transition: border-color var(--transition), box-shadow var(--transition); +} + +textarea.form-control-zs { + min-height: 140px; + resize: vertical; +} + +.form-control-zs:focus, +.form-select-zs:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: var(--focus-ring); +} + +.form-error { + display: none; + color: var(--error); + font-size: 0.85rem; + margin-top: 0.35rem; +} + +.field-invalid .form-control-zs, +.field-invalid .form-select-zs { + border-color: var(--error); +} + +.field-invalid .form-error { + display: block; +} + +.form-status { + display: none; + margin-top: 1rem; + padding: 0.85rem 1rem; + border-radius: 12px; + font-weight: 600; +} + +.form-status.is-success { + display: block; + background: color-mix(in srgb, var(--success) 15%, transparent); + color: var(--success); +} + +.form-status.is-error { + display: block; + background: color-mix(in srgb, var(--error) 15%, transparent); + color: var(--error); +} + +.hp-field { + position: absolute; + left: -10000px; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; +} + +.contact-meta { + display: grid; + gap: 1rem; +} + +.contact-meta-item { + display: flex; + gap: 0.9rem; + align-items: flex-start; + padding: 1.1rem; + border-radius: var(--radius-md); + background: var(--surface-color); + border: 1px solid var(--border-color); +} + +.contact-meta-item i { + color: var(--primary-color); + font-size: 1.25rem; + margin-top: 0.15rem; +} + +.contact-meta-item strong { + display: block; + font-family: var(--font-display); + margin-bottom: 0.2rem; +} + +.contact-meta-item span, +.contact-meta-item a { + color: var(--muted-text-color); + font-size: 0.95rem; +} + +/* ---------- Accordion FAQ ---------- */ +.accordion-zs .accordion-item { + background: var(--surface-color); + border: 1px solid var(--border-color) !important; + border-radius: 14px !important; + margin-bottom: 0.75rem; + overflow: hidden; +} + +.accordion-zs .accordion-button { + background: var(--surface-color); + color: var(--text-color); + font-family: var(--font-display); + font-weight: 600; + box-shadow: none !important; +} + +.accordion-zs .accordion-button:not(.collapsed) { + color: var(--primary-color); + background: color-mix(in srgb, var(--primary-color) 8%, var(--surface-color)); +} + +.accordion-zs .accordion-body { + color: var(--muted-text-color); +} + +/* ---------- Footer ---------- */ +.site-footer { + background: var(--footer-bg); + color: var(--footer-text); + padding-top: 4rem; +} + +.site-footer a { + color: var(--footer-muted); +} + +.site-footer a:hover { + color: #fff; +} + +.footer-brand img { + height: 44px; + width: auto; + margin-bottom: 0.45rem; +} + +.footer-brand .footer-formerly { + margin: 0 0 0.85rem; + font-size: 0.82rem; + color: var(--footer-muted); + opacity: 0.9; +} + +.footer-brand p { + color: var(--footer-muted); + max-width: 28rem; +} + +.footer-col h4 { + color: #fff; + font-size: 0.95rem; + margin: 0 0 1rem; + letter-spacing: 0.04em; + text-transform: uppercase; +} + +.footer-col ul { + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 0.55rem; +} + +.footer-contact li { + display: flex; + gap: 0.7rem; + align-items: flex-start; + color: var(--footer-muted); + font-size: 0.92rem; + line-height: 1.45; +} + +.footer-contact i { + flex: 0 0 1.15rem; + width: 1.15rem; + height: 1.45em; + margin: 0; + padding: 0; + display: inline-flex; + align-items: center; + justify-content: center; + line-height: 1; + font-size: 0.95rem; + color: var(--primary-color); +} + +.footer-contact a, +.footer-contact span { + flex: 1; + min-width: 0; + margin: 0; + padding: 0; + line-height: 1.45; +} + +.footer-contact a { + color: var(--footer-text); +} + +.footer-contact a:hover { + color: #fff; +} + +.footer-bottom { + margin-top: 3rem; + padding: 1.25rem 0; + border-top: 1px solid rgba(255, 255, 255, 0.08); + display: flex; + flex-wrap: wrap; + gap: 1rem; + justify-content: space-between; + align-items: center; + color: var(--footer-muted); + font-size: 0.9rem; +} + +.footer-legal { + display: flex; + gap: 1.25rem; +} + +/* ---------- Utilities ---------- */ +.surface { + background: var(--surface-color); +} + +.bg-soft { + background: var(--gradient-soft); +} + +.text-muted-zs { + color: var(--muted-text-color) !important; +} + +.job-card .meta { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin: 0.75rem 0 1rem; +} + +.chip { + display: inline-flex; + align-items: center; + padding: 0.3rem 0.7rem; + border-radius: 999px; + font-size: 0.78rem; + font-weight: 600; + font-family: var(--font-display); + background: color-mix(in srgb, var(--primary-color) 10%, transparent); + color: var(--primary-color); +} + +.floating-cta { + position: fixed; + right: 1.25rem; + bottom: 1.25rem; + z-index: 1040; + display: inline-flex; + align-items: center; + gap: 0.45rem; + min-height: 48px; + padding: 0.7rem 1.15rem; + border-radius: 999px; + background: var(--gradient-brand); + color: #fff !important; + font-family: var(--font-display); + font-weight: 600; + box-shadow: var(--shadow-md); + transition: transform var(--transition); +} + +.floating-cta:hover { + transform: translateY(-3px); + color: #fff !important; +} + +body.nav-open .floating-cta, +body.nav-open .back-to-top { + opacity: 0; + pointer-events: none; + visibility: hidden; +} + +body[data-page="contact"] .floating-cta { + display: none !important; +} + +body[data-page="contact"] .back-to-top { + bottom: 1.25rem !important; +} + +@media (max-width: 991.98px) { + .floating-cta { + left: auto !important; + right: 1.25rem !important; + bottom: 1.25rem !important; + } + + .back-to-top { + bottom: 4.8rem !important; + } +} + +.back-to-top { + position: fixed; + right: 1.25rem; + bottom: 5rem; + z-index: 1040; + width: 44px; + height: 44px; + border-radius: 50%; + border: 1.5px solid var(--border-color); + background: var(--surface-color); + color: var(--text-color); + display: grid; + place-items: center; + opacity: 0; + pointer-events: none; + transform: translateY(8px); + transition: var(--transition); + cursor: pointer; +} + +.back-to-top.is-visible { + opacity: 1; + pointer-events: auto; + transform: translateY(0); +} + +.error-page { + min-height: calc(100vh - var(--header-h)); + display: grid; + place-items: center; + text-align: center; + padding: 3rem 1rem; +} + +.error-code { + font-family: var(--font-display); + font-size: clamp(5rem, 16vw, 9rem); + font-weight: 800; + line-height: 1; + background: var(--gradient-brand); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + margin-bottom: 0.5rem; +} + +.skip-link { + position: absolute; + left: -999px; + top: 0; + background: var(--primary-color); + color: #fff; + padding: 0.75rem 1rem; + z-index: 2000; +} + +.skip-link:focus { + left: 1rem; + top: 1rem; +} + +/* Service detail extras */ +.benefit-list { + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 0.75rem; +} + +.benefit-list li { + display: flex; + gap: 0.75rem; + align-items: flex-start; + padding: 0.9rem 1rem; + border-radius: 12px; + background: var(--surface-color); + border: 1px solid var(--border-color); +} + +.benefit-list i { + color: var(--secondary-color); + margin-top: 0.2rem; +} + +/* ---------- Reduced motion ---------- */ +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } + + .hero-panel, + .hero-orb, + .hero-float-card, + .hero-radar, + .hero-bg-glow, + .hero-bg-arc, + .hero-bg-grid, + .hero-bg-shimmer, + .hero-bg-particles span, + .hero-bg-node, + .hero-watermark, + .hero, + .breadcrumb-zs::before, + .breadcrumb-zs .sep, + .breadcrumb-zs li[aria-current="page"]::after, + .page-net-grid, + .page-net-glow { + animation: none !important; + } + + .breadcrumb-zs .sep { + opacity: 0.55; + transform: none; + } +} + +@media (max-width: 575.98px) { + .hero-watermark { + right: -0.4rem; + bottom: -1rem; + width: clamp(160px, 42vw, 230px); + opacity: 0.07; + } + + .floating-cta span.label-full { + display: none; + } + + .hero h1 { + max-width: none; + } + + .hero-actions { + flex-direction: column; + align-items: stretch; + } + + .hero-actions .btn-zs { + width: 100%; + white-space: normal; + } + + .hero-actions .hero-cta-link { + width: auto; + max-width: 100%; + align-self: flex-start; + white-space: normal; + } + + .cta-band { + padding: 1.75rem 1.25rem; + } + + .cta-band-actions { + width: 100%; + flex-direction: column; + align-items: stretch; + } + + .cta-band .btn-zs { + width: 100%; + max-width: 100%; + white-space: normal; + text-align: center; + line-height: 1.35; + height: auto; + padding: 0.85rem 1rem; + } + + .hero-bg-particles { + display: none; + } + + .hero-float-card { + font-size: 0.75rem; + padding: 0.55rem 0.7rem; + } + + .hero-float-card.c1 { + left: 0.5rem; + right: auto; + } + + .hero-float-card.c2 { + right: 0.5rem; + left: auto; + } + + .brand-logo img { + height: 36px; + } +} + +/* Prevent AOS off-screen transforms from expanding page width */ +[data-aos^="fade-left"], +[data-aos^="fade-right"], +[data-aos="slide-left"], +[data-aos="slide-right"] { + max-width: 100%; +} + +/* ---------- About page ---------- */ +.about-hero .about-facts { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0.85rem; + margin-top: 2rem; + max-width: 720px; +} + +@media (min-width: 768px) { + .about-hero .about-facts { + grid-template-columns: repeat(4, 1fr); + } +} + +.about-fact { + padding: 1rem 1.1rem; + border-radius: 14px; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(160, 200, 230, 0.18); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); +} + +.about-fact strong { + display: block; + font-family: var(--font-display); + font-size: 1.15rem; + font-weight: 800; + margin-bottom: 0.2rem; + background: linear-gradient(135deg, #7eb6ff 0%, #4ba3dc 50%, #f0a35a 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.about-fact span { + font-size: 0.85rem; + color: rgba(200, 216, 232, 0.78); +} + +.story-timeline { + display: grid; + gap: 1.25rem; + max-width: 900px; + margin-inline: auto; +} + +.story-item { + display: grid; + gap: 0.85rem; +} + +@media (min-width: 768px) { + .story-item { + grid-template-columns: 110px 1fr; + gap: 1.5rem; + align-items: start; + } +} + +.story-year { + font-family: var(--font-display); + font-weight: 800; + font-size: 1.1rem; + color: var(--primary-color); + padding-top: 1.35rem; +} + +.story-card { + background: var(--surface-color); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + padding: 1.5rem 1.6rem; + box-shadow: var(--shadow-sm); + position: relative; +} + +.story-card::before { + content: ""; + position: absolute; + left: 0; + top: 1.4rem; + bottom: 1.4rem; + width: 3px; + border-radius: 3px; + background: var(--gradient-brand); +} + +.story-card h3 { + margin: 0 0 0.55rem; + font-size: 1.2rem; + padding-left: 0.75rem; +} + +.story-card p { + margin: 0; + padding-left: 0.75rem; + color: var(--muted-text-color); +} + +.value-card { + height: 100%; + padding: 1.6rem; + border-radius: var(--radius-md); + border: 1px solid var(--border-color); + background: var(--surface-color); + box-shadow: var(--shadow-sm); + transition: transform var(--transition), box-shadow var(--transition); +} + +.value-card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-md); +} + +.value-num { + font-family: var(--font-display); + font-weight: 800; + font-size: 0.9rem; + letter-spacing: 0.08em; + color: var(--secondary-color); + margin-bottom: 0.75rem; +} + +.value-card h3 { + margin: 0 0 0.55rem; + font-size: 1.1rem; +} + +.value-card p { + margin: 0; + color: var(--muted-text-color); + font-size: 0.95rem; +} + +.about-capability .tech-pills { + margin-top: 0.25rem; +} + +.help-step { + display: flex; + gap: 0.9rem; + align-items: flex-start; + height: 100%; + padding: 1.15rem; + border-radius: var(--radius-md); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); +} + +.help-step-icon { + width: 44px; + height: 44px; + border-radius: 12px; + display: grid; + place-items: center; + flex-shrink: 0; + background: linear-gradient(145deg, color-mix(in srgb, var(--primary-color) 16%, transparent), color-mix(in srgb, var(--secondary-color) 12%, transparent)); + color: var(--primary-color); + font-size: 1.15rem; +} + +.help-step h3 { + margin: 0 0 0.35rem; + font-size: 1rem; +} + +.help-step p { + margin: 0; + font-size: 0.9rem; + color: var(--muted-text-color); +} + +.about-process { + grid-template-columns: 1fr; +} + +@media (min-width: 992px) { + .about-process { + grid-template-columns: repeat(6, 1fr); + } +} + +.location-card { + height: 100%; + padding: clamp(1.5rem, 3vw, 2rem); + border-radius: var(--radius-lg); + background: linear-gradient(145deg, #0a1520 0%, #005498 52%, #1c70ac 140%); + color: #fff; + box-shadow: var(--shadow-lg); +} + +.location-card h3 { + color: #fff; + font-size: 1.75rem; + margin: 0 0 0.85rem; +} + +.location-card > p { + color: rgba(255, 255, 255, 0.9); + margin-bottom: 1.25rem; +} + +.location-list { + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 0.85rem; +} + +.location-list li { + display: flex; + gap: 0.75rem; + align-items: flex-start; + font-size: 0.95rem; + color: rgba(255, 255, 255, 0.92); +} + +.location-list i { + margin-top: 0.15rem; + flex-shrink: 0; +} + +.location-list a { + color: #fff; + text-decoration: underline; + text-underline-offset: 3px; +} + +/* ---------- Testimonials ---------- */ +.testimonials-section { + background: + radial-gradient(ellipse 70% 50% at 10% 0%, color-mix(in srgb, var(--primary-color) 12%, transparent), transparent 60%), + radial-gradient(ellipse 60% 40% at 90% 100%, color-mix(in srgb, var(--secondary-color) 10%, transparent), transparent 55%), + var(--background-color); +} + +.testimonial-card { + position: relative; + height: 100%; + display: flex; + flex-direction: column; + padding: 1.75rem 1.6rem 1.5rem; + border-radius: var(--radius-lg); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); + overflow: hidden; + transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition); +} + +.testimonial-card:hover { + transform: translateY(-6px); + box-shadow: var(--shadow-md); + border-color: var(--card-hover-border); +} + +.testimonial-card-accent { + background: linear-gradient(165deg, color-mix(in srgb, var(--primary-color) 10%, var(--surface-color)), var(--surface-color) 55%); + border-color: color-mix(in srgb, var(--primary-color) 25%, var(--border-color)); +} + +.testimonial-quote-mark { + position: absolute; + top: 0.35rem; + right: 1rem; + font-family: var(--font-display); + font-size: 5rem; + line-height: 1; + font-weight: 800; + background: var(--gradient-brand); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + opacity: 0.35; + pointer-events: none; +} + +.testimonial-stars { + display: flex; + gap: 0.2rem; + margin-bottom: 1rem; + color: var(--secondary-color); + font-size: 0.95rem; +} + +.testimonial-card blockquote { + margin: 0 0 1.35rem; + padding: 0; + flex: 1; +} + +.testimonial-card blockquote p { + margin: 0; + color: var(--text-color); + font-size: 1.02rem; + line-height: 1.65; + font-weight: 500; +} + +.testimonial-author { + display: flex; + align-items: center; + gap: 0.85rem; + padding-top: 1.1rem; + border-top: 1px solid var(--border-color); +} + +.testimonial-avatar { + width: 48px; + height: 48px; + border-radius: 50%; + display: grid; + place-items: center; + flex-shrink: 0; + font-family: var(--font-display); + font-weight: 800; + font-size: 0.85rem; + color: #fff; + background: var(--gradient-brand); + box-shadow: 0 6px 16px rgba(0, 84, 152, 0.28); +} + +.testimonial-author strong { + display: block; + font-family: var(--font-display); + font-size: 0.98rem; + color: var(--text-color); +} + +.testimonial-author span { + display: block; + font-size: 0.85rem; + color: var(--muted-text-color); +} + +/* ---------- Services / Industries page extras ---------- */ +.svc-pillars { + display: grid; + gap: 1rem; +} + +@media (min-width: 768px) { + .svc-pillars { + grid-template-columns: repeat(4, 1fr); + } +} + +.svc-pillar { + position: relative; + padding: 1.5rem 1.35rem; + border-radius: var(--radius-md); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); + overflow: hidden; +} + +.svc-pillar::after { + content: ""; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 3px; + background: var(--gradient-brand); +} + +.svc-pillar-num { + display: block; + font-family: var(--font-display); + font-weight: 800; + font-size: 0.85rem; + letter-spacing: 0.08em; + color: var(--secondary-color); + margin-bottom: 0.65rem; +} + +.svc-pillar h3 { + margin: 0 0 0.5rem; + font-size: 1.15rem; +} + +.svc-pillar p { + margin: 0; + font-size: 0.92rem; + color: var(--muted-text-color); +} + +.svc-card { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + padding: 1.5rem; + border-radius: var(--radius-md); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); + transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition); +} + +.svc-card:hover { + transform: translateY(-6px); + box-shadow: var(--shadow-md); + border-color: var(--card-hover-border); +} + +.svc-card-top { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 0.75rem; + margin-bottom: 0.35rem; +} + +.svc-card-top .icon-badge { + margin-bottom: 0.85rem; +} + +.svc-tag { + display: inline-flex; + align-items: center; + padding: 0.25rem 0.65rem; + border-radius: 999px; + font-family: var(--font-display); + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; + color: var(--primary-color); + background: color-mix(in srgb, var(--primary-color) 12%, transparent); +} + +.svc-card h3 { + margin: 0 0 0.55rem; + font-size: 1.15rem; +} + +.svc-card > p { + color: var(--muted-text-color); + font-size: 0.95rem; + margin: 0 0 0.85rem; +} + +.svc-bullets { + list-style: none; + margin: 0 0 1.1rem; + padding: 0; + display: grid; + gap: 0.35rem; + flex: 1; +} + +.svc-bullets li { + position: relative; + padding-left: 0.9rem; + font-size: 0.88rem; + color: var(--muted-text-color); +} + +.svc-bullets li::before { + content: ""; + position: absolute; + left: 0; + top: 0.55em; + width: 5px; + height: 5px; + border-radius: 50%; + background: var(--secondary-color); +} + +.svc-flow { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0.85rem; +} + +@media (min-width: 768px) { + .svc-flow { + grid-template-columns: repeat(3, 1fr); + } +} + +.svc-flow-item { + padding: 1.1rem 1rem; + border-radius: 14px; + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); +} + +.svc-flow-item strong { + display: block; + font-family: var(--font-display); + font-size: 0.95rem; + margin-bottom: 0.25rem; + color: var(--text-color); +} + +.svc-flow-item span { + font-size: 0.85rem; + color: var(--muted-text-color); +} + +.tech-pills.justify-content-center { + justify-content: center; +} + +.ind-intro { + display: grid; + gap: 1.75rem; + padding: clamp(1.5rem, 3vw, 2.25rem); + border-radius: var(--radius-lg); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); +} + +@media (min-width: 992px) { + .ind-intro { + grid-template-columns: 1.4fr 1fr; + align-items: center; + } +} + +.ind-intro-stats { + display: grid; + gap: 0.75rem; +} + +.ind-intro-stats div { + padding: 0.9rem 1rem; + border-radius: 12px; + background: color-mix(in srgb, var(--primary-color) 8%, var(--background-color)); + border: 1px solid var(--border-color); +} + +.ind-intro-stats strong { + display: block; + font-family: var(--font-display); + margin-bottom: 0.15rem; +} + +.ind-intro-stats span { + font-size: 0.85rem; + color: var(--muted-text-color); +} + +.ind-card { + height: 100%; + display: flex; + flex-direction: column; + padding: 1.6rem; + border-radius: var(--radius-lg); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); + transition: transform var(--transition), box-shadow var(--transition); +} + +.ind-card:hover { + transform: translateY(-5px); + box-shadow: var(--shadow-md); +} + +.ind-card-head { + display: flex; + align-items: center; + gap: 0.85rem; + margin-bottom: 0.85rem; +} + +.ind-card-head .icon-badge { + margin-bottom: 0; +} + +.ind-card-head h3 { + margin: 0; + font-size: 1.25rem; +} + +.ind-card > p { + color: var(--muted-text-color); + margin: 0 0 1rem; + flex: 1; +} + +.ind-focus { + display: flex; + flex-wrap: wrap; + gap: 0.4rem; + margin-bottom: 1.1rem; +} + +.ind-focus span { + display: inline-flex; + padding: 0.3rem 0.65rem; + border-radius: 999px; + font-size: 0.75rem; + font-family: var(--font-display); + font-weight: 600; + color: var(--text-color); + background: color-mix(in srgb, var(--secondary-color) 12%, transparent); + border: 1px solid color-mix(in srgb, var(--secondary-color) 22%, transparent); +} + +.challenge-card { + height: 100%; + padding: 1.5rem; + border-radius: var(--radius-md); + background: var(--surface-color); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); +} + +.challenge-label { + display: inline-block; + margin-bottom: 0.65rem; + font-family: var(--font-display); + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--secondary-color); +} + +.challenge-card h3 { + margin: 0 0 0.55rem; + font-size: 1.15rem; +} + +.challenge-card > p { + margin: 0 0 1rem; + color: var(--muted-text-color); + font-size: 0.95rem; +} + +.challenge-solution { + padding: 0.9rem 1rem; + border-radius: 12px; + background: color-mix(in srgb, var(--primary-color) 8%, var(--background-color)); + border-left: 3px solid var(--primary-color); +} + +.challenge-solution strong { + display: block; + font-family: var(--font-display); + font-size: 0.85rem; + margin-bottom: 0.25rem; + color: var(--primary-color); +} + +.challenge-solution span { + font-size: 0.9rem; + color: var(--muted-text-color); +} + +.ind-map { + display: grid; + gap: 1rem; +} + +@media (min-width: 768px) { + .ind-map { + grid-template-columns: repeat(4, 1fr); + } +} + +.ind-map > div { + padding: 1.35rem 1.25rem; + border-radius: var(--radius-md); + background: linear-gradient(160deg, color-mix(in srgb, var(--primary-color) 10%, var(--surface-color)), var(--surface-color)); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-sm); +} + +.ind-map h4 { + margin: 0 0 0.45rem; + font-size: 1rem; + color: var(--primary-color); +} + +.ind-map p { + margin: 0; + font-size: 0.9rem; + color: var(--muted-text-color); +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..f2bc1f7 --- /dev/null +++ b/index.html @@ -0,0 +1,667 @@ + + + + + + + Zettai Systems | Intelligent Products, Enterprise Governance + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
Zettai Systems
+

Engineering Intelligent Products. Governed for the Enterprise.

+

+ We design, build, and support high-performance software platforms—web, mobile, cloud, and AI systems—engineered around your workflows, security needs, and growth plans. +

+ +
+ + +
+
+
+ + +
+
+
+
Capabilities
+

Technology Built Around Your Business

+

Practical engineering focused on outcomes—clear communication, dependable delivery, and systems that stay maintainable as you grow.

+
+
+
+
Innovation

Modern architectures and product thinking that solve real operational problems.

+
+
+
Reliability

Structured delivery, quality focus, and systems designed for predictable performance.

+
+
+
Security

Security-conscious development practices across applications, APIs, and infrastructure.

+
+
+
Scalability

Platforms planned to scale with demand, teams, and evolving business processes.

+
+
+
Performance

Efficient backends, thoughtful UX, and delivery pipelines that keep releases smooth.

+
+
+
Long-Term Support

Partnership beyond launch—monitoring, enhancements, and continuous improvement.

+
+
+
+
+ + +
+
+
+
+
Who We Are
+

Technology Is Only as Good as the Business Outcomes It Drives

+

At Zettai Systems, we don’t just write code—we analyze your core operational workflows before architecting a single feature. Our focus is converting complex engineering challenges into secure, reliable digital assets that protect operational margins and maximize resource utilization.

+

As a Chennai-based engineering partner, we help mid-market and growing enterprises future-proof their infrastructure, reduce technical debt, and deliver predictable performance gains through web, mobile, cloud, and enterprise platforms.

+
    +
  • + +
    One accountable engineering team — web, mobile, cloud, and enterprise delivery under one roof.
    +
  • +
  • + +
    Workflow-first architecture — we map how your business works before we write a line of code.
    +
  • +
  • + +
    Built to last together — long-term partnership with support, QA, and continuous improvement.
    +
  • +
+
+
+ 2016 + Founded in Chennai +
+
+ Learn More About Us +
+ + +
+ +
+
+ +

Mission

+

Empower businesses through innovative, scalable, and reliable technology solutions that streamline operations and unlock growth.

+
+
+ +

Vision

+

Become a trusted technology partner delivering secure, intelligent, and future-ready digital solutions.

+
+
+ +

Approach

+

Long-term partnerships, not one-off projects. We’re invested in your success at every stage—from discovery through ongoing support.

+
+
+
+
+ + +
+
+
+
Services
+

AI Products and Foundational Engineering

+

Track A ships intelligent systems. Track B is the Flutter, web, cloud, and QA layer those systems run on.

+
+ +
+
+
Track A
+

AI Products & Systems

+
+
+
+

Generative AI & Agentic Workflows

Multi-agent orchestration, human-in-the-loop task routing, and custom tool calling.

Learn More
+
+
+

Domain RAG & Enterprise Search

Hybrid semantic and lexical search over documentation, PDFs, and relational stores.

Learn More
+
+
+

Custom AI Microservices & APIs

Low-latency FastAPI and Node.js inference endpoints, model routing, and fallback cascades.

Learn More
+
+
+

Intelligent Process Automation

AI-assisted ERP workflows, document intelligence, and smart approval triage.

Learn More
+
+
+
+ +
+
+
Track B
+

Foundational Engineering

+
+
+
+

High-Performance Mobile (Flutter)

Cross-platform native-quality iOS and Android apps connected to AI services, with offline caching.

Learn More
+
+
+

Modern Full-Stack Web Platforms

High-throughput web applications, enterprise dashboards, and customer self-service portals.

Learn More
+
+
+

Cloud, MLOps & QA Engineering

AWS Bedrock, Azure OpenAI, and Vertex integrations, Docker/Kubernetes, and automated regression testing.

Learn More
+
+
+
+ +
+
+
Also offered
+

Governance, data, and enterprise delivery

+
+
+
+

AI Governance

Guardrails, evaluation, and audit trails so AI features stay inspectable.

Learn More
+
+
+

Custom Software Development

Business-specific software solutions designed for scalability and performance.

Learn More
+
+
+

Data Analytics

Turn business data into meaningful insights and better decisions.

Learn More
+
+
+

IT Consulting

Technology consulting, architecture planning, and digital transformation.

Learn More
+
+
+

Cybersecurity

Security-focused solutions to protect applications, infrastructure, and data.

Learn More
+
+
+

ERP Solutions

ERP implementation, customization, integration, and business automation.

Learn More
+
+
+

E-Commerce Solutions

Scalable e-commerce platforms and digital commerce solutions.

Learn More
+
+
+

Legacy Modernization

Replace or wrap aging systems with maintainable platforms your team can keep evolving.

Learn More
+
+
+
+ +
+
+ + +
+
+
+
Industries
+

Industries We Serve

+

We adapt delivery to the operational realities of each sector—without overstating industry claims.

+
+
+

Insurance

Digital workflows and secure platforms for policy and operations teams.

Explore
+

Banking & Finance

Reliable systems with strong controls for financial operations.

Explore
+

Healthcare

Careful software design for sensitive data and clinical workflows.

Explore
+

Manufacturing

Process visibility, automation, and connected operations tools.

Explore
+
+ +
+
+ + + +
+ +
+
+
+
+ Current + Target + Baseline +
+ + + + + + + + + + + + Performance + Security + Scale + Delivery + Quality + Cloud + +
+
+
Platform readiness
+

How strong is your digital foundation?

+

Whether you need a new platform, a modernization path, or tighter integration across systems—Zettai Systems helps you map gaps and build what matters next.

+ Consult with a Solutions Architect +
+
+
+
+ + +
+
+
+
Stack
+

Technology Expertise

+

The delivery matrix we use for AI products and the platforms underneath them.

+
+
+

AI & Machine Learning

PythonPyTorchLangChainLlamaIndexLiteLLMvLLMHugging Face
+

Vector & Semantic Data

pgvectorPineconeQdrantChromaDBRedis
+

Enterprise Cloud AI

Azure OpenAI ServiceAWS BedrockGoogle Vertex AIAnthropic Claude API
+

Backend & Microservices

Node.jsFastAPICodeIgniter 4ExpressREST/GraphQL
+

Frontend & Mobile

FlutterDartReactAngularJavaScript
+

Cloud, MLOps & QA

DockerKubernetesCI/CDQA AutomationAWSAzureGCP
+

Data & Delivery

PostgreSQLMySQLERPAgile SprintsArchitecture Review
+
+
+
+ + +
+
+
+
AI Governance & CMMI Engine
+

The Zettai Framework

+

Four pillars that keep intelligent products inspectable: commercial lock, quality SOPs aligned with CMMI Level 2 practices, AI safety, and telemetry.

+
+ +
+

Pillar 1 starts with structured transparency. Through our secure client portals, no sprint begins and no line of code is written until the estimated technical scope and billable hours are mutually reviewed, signed off, and locked.

+
+ +
+
+
01
+

Scope & Commercial Lock

+

Scope, effort, and billable hours are reviewed in the portal and locked before delivery starts—so work never begins on unsigned estimates.

+
+
+
02
+

CMMI L2 Quality SOPs

+

Delivery follows Level 2-style practices: planned work, tracked issues, and review checkpoints. This describes our operating model, not a certification claim.

+
+
+
03
+

AI Safety & Guardrails

+

Prompt, tool, and data-access controls, with human approval on high-impact actions before agents change production systems.

+
+
+
04
+

Telemetry & Compliance

+

Logging, evaluation, and audit trails so AI and engineering work stay reviewable for internal policy and regulatory conversations.

+
+
+
+
+ + +
+
+
+
Process
+

Our Delivery Process

+

Transparent and structured—from first conversation to post-launch support.

+
+
+
01

Discover

Understand the business, users, and requirements.

+
02

Plan

Define architecture and implementation strategy.

+
03

Design

Create intuitive and scalable experiences.

+
04

Develop

Build secure, high-quality software.

+
05

Test

Perform functional and quality testing.

+
06

Deploy

Launch and integrate the solution.

+
07

Support

Provide continuous support and optimization.

+
+
+
+ + +
+
+
+
Why Us
+

Why Choose Zettai Systems?

+
+
+

Business-focused solutions

We start with workflows and outcomes—not features for their own sake.

+

Experienced technical team

Engineers and architects who communicate clearly and deliver with structure.

+

Scalable architecture

Systems planned for growth, maintainability, and long-term ownership.

+

Security-first approach

Thoughtful controls across application layers and delivery practices.

+

Transparent communication

Sprint clarity, visible progress, and decisions you can track.

+

Long-term support

Partnership after launch for enhancements, stability, and optimization.

+
+
+
+ + +
+
+
+
+

Ready to build what’s next?

+

Tell us about your product, platform, or transformation goals—we’ll respond with a clear next step.

+
+ +
+
+
+ + +
+
+
+
Client Stories
+

What Our Clients Say

+

Feedback from teams we’ve partnered with on web, mobile, API, and quality delivery.

+
+
+
+
+ +
+ +
+
+

Zettai Systems delivered our Flutter app on time and within budget. Cross-platform performance exceeded expectations and user feedback has been overwhelmingly positive.

+
+
+ +
+ Rajesh Kumar + CEO, RetailFirst Pvt Ltd +
+
+
+
+
+
+ +
+ +
+
+

Their Node.js API work scaled beautifully under load. The team was communicative, structured, and delivered every sprint on schedule. Highly recommended.

+
+
+ +
+ Suresh Patel + CTO, LogiTrade Solutions +
+
+
+
+
+
+ +
+ +
+
+

The QA team caught critical issues we’d completely missed. Their structured testing approach gave us confidence to launch to 50,000 users without a hitch.

+
+
+ +
+ Ananya Mehta + Product Head, EduNest Technologies +
+
+
+
+
+
+
+ + +
+
+
+
+
Contact
+

Let’s Build Something Great Together

+

Share your requirements and we’ll start with a practical conversation about scope, approach, and next steps.

+
+ + +
OfficeNo.10/21, 27th Street, Thillai Ganga Nagar, Nanganallur, Chennai – 600061, Tamil Nadu, India
+
+
+
+
+
+ + +
+ + +
Please enter your name.
+
+
+ + +
Please enter a valid email address.
+
+
+ + +
Please enter a short message.
+
+
+ +
+
+
+
+
+
+
+
+
+ + + + + + + + + diff --git a/industries.html b/industries.html new file mode 100644 index 0000000..a161fc1 --- /dev/null +++ b/industries.html @@ -0,0 +1,276 @@ + + + + + + + Industries | Zettai Systems + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
Industries
+

Industry Context, Practical Delivery

+

We adapt architecture and workflows to how your sector actually operates—compliance needs, handoffs, and growth plans included—without overstating credentials.

+
+
+ + +
+
+
+
+

Software That Fits the Way Your Industry Works

+

From Chennai, Zettai Systems partners with organizations across insurance, finance, healthcare, manufacturing, retail, logistics, education, and professional services. We listen first—then engineer platforms that reduce bottlenecks and stay maintainable.

+
+
+
Domain-firstTerminology & workflows
+
Security-awareSensitive environments
+
Integration-readyAPIs & systems
+
+
+
+
+ + +
+
+
+
Sectors We Serve
+

Where We Apply Our Delivery Model

+

Each industry card highlights typical focus areas—not claims of exclusive specialization.

+
+
+
+
+

Insurance

+

Digital workflows for policy operations, claims coordination, and secure customer portals—with audit-friendly process design and careful data handling.

+
Policy workflowsClaims supportSecure portalsReporting
+ Discuss your needs +
+
+
+
+

Banking & Finance

+

Reliable platforms with strong controls for operational finance workflows, reporting support, and integrations that respect compliance-minded architectures.

+
Ops platformsControlsIntegrationsReporting
+ Discuss your needs +
+
+
+
+

Healthcare

+

Software for sensitive information and clinical or administrative workflows—with attention to access control, clarity, and operational reliability.

+
Admin workflowsAccess controlPortalsData care
+ Discuss your needs +
+
+
+
+

Manufacturing

+

Process visibility, production support tools, inventory alignment, and automation that connect shop-floor realities with planning systems.

+
VisibilityInventoryAutomationPlanning sync
+ Discuss your needs +
+
+
+
+

Retail & E-Commerce

+

Storefronts, inventory sync, order management, and customer experiences that keep merchandising and fulfillment teams aligned.

+
StorefrontsOrdersInventoryCustomer UX
+ E-Commerce services +
+
+
+
+

Logistics

+

Tracking-friendly workflows, partner integrations, and operational dashboards that improve handoffs across dispatch, warehouse, and delivery.

+
DispatchTrackingPartnersDashboards
+ Discuss your needs +
+
+
+
+

Education

+

Learning and administration platforms, enrollment flows, and portals that simplify communication between institutions, staff, and learners.

+
EnrollmentPortalsAdmin toolsCommunication
+ Discuss your needs +
+
+
+
+

Professional Services

+

Project portals, client collaboration tools, and internal systems that streamline delivery, billing support, and knowledge workflows.

+
Client portalsProjectsCollaborationInternal ops
+ Discuss your needs +
+
+
+
+
+ + +
+
+
+
Common Challenges
+

Problems We Help Industry Teams Solve

+

Patterns we see often—addressed with practical engineering, not buzzwords.

+
+
+
+
+ Challenge +

Manual bottlenecks

+

Teams lose time to spreadsheets, email chains, and duplicate data entry across departments.

+
How we helpWorkflow-first platforms and automation that remove repetitive handoffs.
+
+
+
+
+ Challenge +

Fragmented systems

+

Critical tools don’t talk to each other—creating blind spots and reconciliation work.

+
How we helpAPI integration, cloud connectivity, and ERP alignment where it fits.
+
+
+
+
+ Challenge +

Fragile releases

+

Launches feel risky because testing is ad hoc and ownership after go-live is unclear.

+
How we helpStructured QA, clear delivery process, and long-term support partnership.
+
+
+
+
+
+ + +
+
+
+
+
Approach
+

What Stays Consistent Across Industries

+

Industries differ. Our engineering discipline does not. Domain listening, security mindset, and scalable foundations guide every engagement.

+ Explore Services +
+
+
+

Domain listening

We learn your terminology, constraints, and success measures before proposing tooling.

+

Security mindset

Access control and delivery practices appropriate to sensitive environments.

+

Scalable foundations

Systems planned for more users, more volume, and evolving process needs.

+

Partner delivery

Transparent sprints and support after launch—not a one-off handoff.

+
+
+
+
+
+ + +
+
+
+
Capabilities Map
+

Technology We Apply Across Sectors

+
+
+

Build

Web platforms · Flutter mobile · Custom software

+

Connect

Cloud · REST APIs · System integration

+

Operate

ERP · Analytics · E-commerce

+

Assure

QA · Cybersecurity · Ongoing support

+
+
+
+ + +
+
+
+
FAQ
+

Industry Engagement Questions

+
+
+
+
+
+

+
We partner with mid-market and growing organizations as well as established teams. Fit depends on scope, clarity of goals, and willingness to collaborate—not company size alone.
+
+
+

+
We take security and data handling seriously and design with access control and careful process in mind. Specific compliance requirements should be discussed during discovery.
+
+
+

+
The sectors above are common contexts—not a closed list. If your domain has clear workflows and integration needs, start a conversation and we’ll assess fit.
+
+
+
+
+
+
+ +
+
+
+
+

Working in a specialized domain?

+

Tell us about your industry context and we’ll outline a sensible delivery approach.

+
+ Get in Touch +
+
+
+
+ + + + + + + + + diff --git a/js/analytics.js b/js/analytics.js new file mode 100644 index 0000000..9c00613 --- /dev/null +++ b/js/analytics.js @@ -0,0 +1,23 @@ +/* Google Analytics 4 — G-1JR9P2WP0B */ +(function () { + "use strict"; + + var MEASUREMENT_ID = "G-1JR9P2WP0B"; + var host = location.hostname; + var isLocal = host === "localhost" || host === "127.0.0.1"; + + window.dataLayer = window.dataLayer || []; + window.gtag = function gtag() { + window.dataLayer.push(arguments); + }; + + if (isLocal) return; + + window.gtag("js", new Date()); + window.gtag("config", MEASUREMENT_ID); + + var script = document.createElement("script"); + script.async = true; + script.src = "https://www.googletagmanager.com/gtag/js?id=" + encodeURIComponent(MEASUREMENT_ID); + document.head.appendChild(script); +})(); diff --git a/js/aos.js b/js/aos.js new file mode 100644 index 0000000..5d49ae2 --- /dev/null +++ b/js/aos.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="dist/",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay")})},S=function(e){return e===!0||"mobile"===e&&p.default.mobile()||"phone"===e&&p.default.phone()||"tablet"===e&&p.default.tablet()||"function"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.solutions('\n aos: MutationObserver is not supported on this browser,\n code mutations observing has been disabled.\n You may have to call "refreshHard()" by yourself.\n '),x.disableMutationObserver=!0),document.querySelector("body").setAttribute("data-aos-easing",x.easing),document.querySelector("body").setAttribute("data-aos-duration",x.duration),document.querySelector("body").setAttribute("data-aos-delay",x.delay),"DOMContentLoaded"===x.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1?j(!0):"load"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener("resize",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("orientationchange",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("scroll",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready("[data-aos]",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){"use strict";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S="maxWait"in n,y=S?x(u(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(s);return i(o)&&(r="leading"in o?!!o.leading:r,a="trailing"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("object"==t||"function"==t)}function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(e))}function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||r(e)&&k.call(e)==d}function u(e){if("number"==typeof e)return e;if(a(e))return f;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(l,"");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s="Expected a function",f=NaN,d="[object Symbol]",l=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,g="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,h=y||g||Function("return this")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){"use strict";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S="maxWait"in n,y=S?k(a(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(e))}function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||i(e)&&w.call(e)==f}function a(e){if("number"==typeof e)return e;if(r(e))return s;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c="Expected a function",s=NaN,f="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v="object"==("undefined"==typeof t?"undefined":u(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":u(self))&&self&&self.Object===Object&&self,g=v||y||Function("return this")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){"use strict";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&e.node.classList.remove("aos-animate")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add("aos-init"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case"top-bottom":break;case"center-bottom":n+=e.offsetHeight/2;break;case"bottom-bottom":n+=e.offsetHeight;break;case"top-center":n+=i/2;break;case"bottom-center":n+=i/2+e.offsetHeight;break;case"center-center":n+=i/2+e.offsetHeight/2;break;case"top-top":n+=i;break;case"bottom-top":n+=e.offsetHeight+i;break;case"center-top":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){return e=e||document.querySelectorAll("[data-aos]"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])}); \ No newline at end of file diff --git a/js/bootstrap.bundle.min.js b/js/bootstrap.bundle.min.js new file mode 100644 index 0000000..04e9185 --- /dev/null +++ b/js/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function j(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function M(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${M(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${M(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=j(t.dataset[n])}return e},getDataAttribute:(t,e)=>j(t.getAttribute(`data-bs-${M(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>n(t))).join(","):null},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",jt="collapsing",Mt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(jt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(jt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(Mt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function je(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const Me={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:je(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:je(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},j=p?3:1;j>0&&"break"!==P(j);j--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],j=f?-T[$]/2:0,M=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-j-q-z-O.mainAxis:M-q-z-O.mainAxis,K=v?-E[$]/2+j+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,jn=`hide${xn}`,Mn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,jn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,Mn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,Mn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",js="Home",Ms="End",Fs="active",Hs="fade",Ws="show",Bs=".dropdown-toggle",zs=`:not(${Bs})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,js,Ms].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([js,Ms].includes(t.key))i=e[t.key===js?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..853e911 --- /dev/null +++ b/js/main.js @@ -0,0 +1,585 @@ +/* Zettai Systems — main site scripts */ +(function () { + "use strict"; + + const ROOT = typeof window.SITE_ROOT === "string" ? window.SITE_ROOT : ""; + const PAGE_RAW = document.body?.dataset?.page || ""; + const PAGE = PAGE_RAW === "service" ? "services" : PAGE_RAW; + + const NAV_ITEMS = [ + { href: "", label: "Home", id: "home" }, + { href: "about", label: "About Us", id: "about" }, + { href: "services", label: "Services", id: "services" }, + { href: "solutions", label: "Solutions", id: "solutions" }, + { href: "industries", label: "Industries", id: "industries" }, + { href: "careers", label: "Careers", id: "careers" }, + { href: "contact", label: "Contact", id: "contact" }, + ]; + + function asset(path) { + const clean = String(path || "").replace(/^\//, ""); + if (!ROOT) return "/" + clean; + return ROOT + clean; + } + + function pageHref(path) { + if (!path) return "/"; + const clean = String(path).replace(/^\//, ""); + if (!ROOT) return "/" + clean; + return ROOT + clean; + } + + function navLink(item) { + const active = PAGE === item.id ? " active" : ""; + return `
  • ${item.label}
  • `; + } + + function renderHeader() { + const mount = document.getElementById("site-header"); + if (!mount) return; + + mount.innerHTML = ` + + + + `; + } + + function renderFooter() { + const mount = document.getElementById("site-footer"); + if (!mount) return; + + mount.innerHTML = ` + + `; + } + + function renderChromeExtras() { + if (document.getElementById("floatingCta")) return; + const frag = document.createElement("div"); + frag.innerHTML = ` + + + Let's Talk + Talk + + + + `; + document.body.append(...frag.children); + } + + /* Theme */ + function getPreferredTheme() { + const saved = localStorage.getItem("zs-theme"); + if (saved === "light" || saved === "dark") return saved; + return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; + } + + function applyFavicon(theme) { + const link = document.querySelector('link[rel="icon"]'); + if (!link) return; + const file = theme === "dark" ? "favicon-dark.png" : "favicon.png"; + link.setAttribute("type", "image/png"); + link.setAttribute("href", asset("assets/logos/" + file)); + } + + function applyTheme(theme) { + document.documentElement.setAttribute("data-theme", theme); + localStorage.setItem("zs-theme", theme); + applyFavicon(theme); + const toggle = document.getElementById("themeToggle"); + if (toggle) { + toggle.setAttribute("aria-label", theme === "dark" ? "Switch to light theme" : "Switch to dark theme"); + } + } + + function initTheme() { + applyTheme(getPreferredTheme()); + document.getElementById("themeToggle")?.addEventListener("click", () => { + const next = document.documentElement.getAttribute("data-theme") === "dark" ? "light" : "dark"; + applyTheme(next); + }); + } + + /* Mobile nav */ + function initMobileNav() { + const toggle = document.getElementById("menuToggle"); + const drawer = document.getElementById("mobileDrawer"); + if (!toggle || !drawer) return; + + const close = () => { + drawer.classList.remove("is-open"); + drawer.hidden = true; + toggle.setAttribute("aria-expanded", "false"); + toggle.setAttribute("aria-label", "Open menu"); + document.body.classList.remove("nav-open"); + const icon = toggle.querySelector("i"); + if (icon) icon.className = "bi bi-list"; + icon && (icon.style.fontSize = "1.4rem"); + }; + + const open = () => { + drawer.hidden = false; + requestAnimationFrame(() => drawer.classList.add("is-open")); + toggle.setAttribute("aria-expanded", "true"); + toggle.setAttribute("aria-label", "Close menu"); + document.body.classList.add("nav-open"); + const icon = toggle.querySelector("i"); + if (icon) icon.className = "bi bi-x-lg"; + icon && (icon.style.fontSize = "1.25rem"); + }; + + toggle.addEventListener("click", () => { + if (drawer.classList.contains("is-open")) close(); + else open(); + }); + + drawer.querySelectorAll("a").forEach((a) => a.addEventListener("click", close)); + window.addEventListener("resize", () => { + if (window.innerWidth >= 992) close(); + }); + } + + /* Scroll effects */ + function initScrollUI() { + const header = document.getElementById("headerBar"); + const back = document.getElementById("backToTop"); + + const onScroll = () => { + const y = window.scrollY || 0; + header?.classList.toggle("is-scrolled", y > 12); + back?.classList.toggle("is-visible", y > 480); + }; + + onScroll(); + window.addEventListener("scroll", onScroll, { passive: true }); + back?.addEventListener("click", () => window.scrollTo({ top: 0, behavior: "smooth" })); + } + + /* Forms */ + function validateEmail(value) { + return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); + } + + function validatePhone(value) { + const digits = value.replace(/\D/g, ""); + return digits.length >= 10; + } + + function formEndpoint(kind) { + if (kind === "careers") return "/api/careers.php"; + return "/api/contact.php"; + } + + function successMessage(kind) { + if (kind === "careers") { + return "Thank you. Your application has been sent. Our team will review it and follow up if there is a fit."; + } + return "Thank you. Your message has been sent. We will get back to you soon."; + } + + function resetSubmitButton(submitBtn) { + submitBtn?.classList.remove("is-loading"); + if (submitBtn) { + submitBtn.disabled = false; + submitBtn.innerHTML = submitBtn.dataset.label || "Send"; + } + } + + /** Hosting bot-gate (humans_XXXX cookie) returns 409 HTML that fetch cannot execute. */ + function applyHostBotCookie(html) { + if (!html || typeof html !== "string") return false; + const match = html.match(/document\.cookie\s*=\s*["']([^"';]+)["']/i); + if (!match) return false; + let cookie = match[1].trim(); + if (!/;\s*path=/i.test(cookie)) cookie += "; path=/"; + document.cookie = cookie; + return true; + } + + async function parseFormResponse(response) { + const raw = await response.text(); + let data = null; + try { + data = JSON.parse(raw); + } catch (_) { + data = null; + } + return { raw, data }; + } + + async function postForm(endpoint, formData, retried) { + const response = await fetch(endpoint, { + method: "POST", + body: formData, + headers: { Accept: "application/json" }, + credentials: "same-origin", + }); + + const { raw, data } = await parseFormResponse(response); + + // Bot challenge: set cookie and retry once + if (response.status === 409 && !retried && applyHostBotCookie(raw)) { + return postForm(endpoint, formData, true); + } + + return { response, data, raw }; + } + + function friendlyFormError(response, data, raw) { + if (data?.error) return data.error; + if (response.status === 409 || (raw && /humans_\d+/i.test(raw))) { + return "Security check blocked this send. Please refresh the page and try again, or email solutions@zettaisystems.com."; + } + if (response.status >= 500) { + return "Server error while sending. Please try again later or email us directly."; + } + if (response.status === 404) { + return "Mail service is not available on the server yet. Please email us directly."; + } + return "Something went wrong while sending. Please try again or email us directly."; + } + + function initForms() { + document.querySelectorAll("[data-form]").forEach((form) => { + form.addEventListener("submit", async (e) => { + e.preventDefault(); + let valid = true; + + form.querySelectorAll("[data-required]").forEach((field) => { + const wrap = field.closest(".form-field") || field.parentElement; + const value = (field.value || "").trim(); + let ok = value.length > 0; + if (field.type === "email") ok = validateEmail(value); + if (field.dataset.validate === "phone" && value) ok = validatePhone(value); + if (field.type === "checkbox") ok = field.checked; + if (field.type === "file") ok = field.files && field.files.length > 0; + + wrap.classList.toggle("field-invalid", !ok); + if (!ok) valid = false; + }); + + const status = form.querySelector(".form-status"); + const submitBtn = form.querySelector('[type="submit"]'); + const kind = form.getAttribute("data-form") || "contact"; + + if (!valid) { + if (status) { + status.className = "form-status is-error"; + status.textContent = "Please check the highlighted fields and try again."; + } + return; + } + + submitBtn?.classList.add("is-loading"); + if (submitBtn) { + submitBtn.disabled = true; + submitBtn.dataset.label = submitBtn.innerHTML; + submitBtn.innerHTML = "Sending…"; + } + if (status) { + status.className = "form-status"; + status.textContent = ""; + } + + try { + const { response, data, raw } = await postForm( + formEndpoint(kind), + new FormData(form), + false + ); + + resetSubmitButton(submitBtn); + + if (!response.ok || !data?.ok) { + if (status) { + status.className = "form-status is-error"; + status.textContent = friendlyFormError(response, data, raw); + } + return; + } + + if (status) { + status.className = "form-status is-success"; + status.textContent = data.message || successMessage(kind); + } + if (typeof window.gtag === "function") { + window.gtag("event", "generate_lead", { + event_category: "form", + event_label: kind, + }); + } + form.reset(); + form.querySelectorAll(".field-invalid").forEach((el) => el.classList.remove("field-invalid")); + } catch (_) { + resetSubmitButton(submitBtn); + if (status) { + status.className = "form-status is-error"; + status.textContent = + "Network error. Please check your connection or email us directly."; + } + } + }); + + form.querySelectorAll("input, textarea, select").forEach((field) => { + field.addEventListener("input", () => { + const wrap = field.closest(".form-field") || field.parentElement; + wrap.classList.remove("field-invalid"); + }); + }); + }); + } + + /* AOS */ + function initAOS() { + if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return; + if (typeof AOS !== "undefined") { + const isMobile = window.matchMedia("(max-width: 991.98px)").matches; + if (isMobile) { + document.querySelectorAll('[data-aos="fade-left"], [data-aos="fade-right"]').forEach((el) => { + el.setAttribute("data-aos", "fade-up"); + }); + } + AOS.init({ + duration: 650, + easing: "ease-out-cubic", + once: true, + offset: 60, + disable: false, + }); + } + } + + /* Year helpers already in footer */ + + function initPageNetworks() { + const canvases = document.querySelectorAll(".page-net-canvas"); + if (!canvases.length) return; + + const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; + const BLUE = "#4ba3dc"; + const ORANGE = "#f88820"; + + canvases.forEach((canvas) => { + const section = canvas.closest(".page-hero"); + const ctx = canvas.getContext("2d"); + if (!ctx || !section) return; + + let nodes = []; + let raf = 0; + let width = 0; + let height = 0; + + function resize() { + const rect = section.getBoundingClientRect(); + const dpr = Math.min(window.devicePixelRatio || 1, 2); + width = Math.max(1, Math.floor(rect.width)); + height = Math.max(1, Math.floor(rect.height)); + canvas.width = Math.floor(width * dpr); + canvas.height = Math.floor(height * dpr); + canvas.style.width = `${width}px`; + canvas.style.height = `${height}px`; + ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + seedNodes(); + } + + function seedNodes() { + const count = Math.max(28, Math.min(56, Math.floor((width * height) / 18000))); + nodes = Array.from({ length: count }, (_, i) => { + const accent = i % 9 === 0; + return { + x: Math.random() * width, + y: Math.random() * height, + vx: (Math.random() - 0.5) * (reduceMotion ? 0 : 0.35), + vy: (Math.random() - 0.5) * (reduceMotion ? 0 : 0.35), + r: accent ? 2.8 : 1.6 + Math.random() * 1.4, + color: accent ? ORANGE : BLUE, + }; + }); + } + + function draw() { + ctx.clearRect(0, 0, width, height); + const linkDist = Math.min(160, Math.max(110, width * 0.12)); + + for (let i = 0; i < nodes.length; i++) { + const a = nodes[i]; + if (!reduceMotion) { + a.x += a.vx; + a.y += a.vy; + if (a.x < 0 || a.x > width) a.vx *= -1; + if (a.y < 0 || a.y > height) a.vy *= -1; + a.x = Math.max(0, Math.min(width, a.x)); + a.y = Math.max(0, Math.min(height, a.y)); + } + + for (let j = i + 1; j < nodes.length; j++) { + const b = nodes[j]; + const dx = a.x - b.x; + const dy = a.y - b.y; + const dist = Math.hypot(dx, dy); + if (dist < linkDist) { + const alpha = (1 - dist / linkDist) * 0.45; + ctx.beginPath(); + ctx.moveTo(a.x, a.y); + ctx.lineTo(b.x, b.y); + ctx.strokeStyle = `rgba(160, 200, 230, ${alpha})`; + ctx.lineWidth = 1; + ctx.stroke(); + } + } + + ctx.beginPath(); + ctx.arc(a.x, a.y, a.r, 0, Math.PI * 2); + ctx.fillStyle = a.color; + ctx.shadowColor = a.color; + ctx.shadowBlur = a.color === ORANGE ? 10 : 6; + ctx.fill(); + ctx.shadowBlur = 0; + } + + if (!reduceMotion) raf = requestAnimationFrame(draw); + } + + resize(); + draw(); + window.addEventListener("resize", () => { + cancelAnimationFrame(raf); + resize(); + draw(); + }); + }); + } + + document.addEventListener("DOMContentLoaded", () => { + renderHeader(); + renderFooter(); + renderChromeExtras(); + initTheme(); + initMobileNav(); + initScrollUI(); + initForms(); + initAOS(); + initPageNetworks(); + initCareerApply(); + }); + + function initCareerApply() { + const select = document.getElementById("c-position"); + if (!select) return; + + document.querySelectorAll(".job-card a[href='#apply']").forEach((link) => { + link.addEventListener("click", () => { + const title = link.closest(".job-card")?.querySelector("h3")?.textContent.trim(); + if (!title) return; + const match = [...select.options].some((opt) => opt.value === title); + if (match) { + select.value = title; + select.dispatchEvent(new Event("change", { bubbles: true })); + select.focus({ preventScroll: true }); + } + }); + }); + } +})(); diff --git a/logos/icon-dark.png b/logos/icon-dark.png new file mode 100644 index 0000000..f522b1b Binary files /dev/null and b/logos/icon-dark.png differ diff --git a/logos/icon.png b/logos/icon.png new file mode 100644 index 0000000..1bed88a Binary files /dev/null and b/logos/icon.png differ diff --git a/logos/logo-dark-transparent.png b/logos/logo-dark-transparent.png new file mode 100644 index 0000000..b9d225e Binary files /dev/null and b/logos/logo-dark-transparent.png differ diff --git a/logos/logo-light-transparent.png b/logos/logo-light-transparent.png new file mode 100644 index 0000000..10bbd7b Binary files /dev/null and b/logos/logo-light-transparent.png differ diff --git a/privacy-policy.html b/privacy-policy.html new file mode 100644 index 0000000..311ca6c --- /dev/null +++ b/privacy-policy.html @@ -0,0 +1,124 @@ + + + + + + + Privacy Policy | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Legal
    +

    Privacy Policy

    +

    This policy describes how Zettai Systems handles information collected through our website and related enquiry forms.

    +
    +
    + +
    +
    +
    +

    Last updated: September 2026

    +

    1. Who we are

    +

    Zettai Systems (“we”, “us”, or “our”) operates the website at zettaisystems.com and provides IT and digital solutions. Our office address is No.10/21, 27th Street, Thillai Ganga Nagar, Nanganallur, Chennai – 600061, Tamil Nadu, India. You can reach us by email at solutions@zettaisystems.com, by phone at +91 807 299 8024, or through our contact form.

    + +

    2. Information we collect

    +

    We may collect information you voluntarily submit, including:

    +
      +
    • Name, email address, phone number, and company name
    • +
    • Project or career-related details and messages
    • +
    • Résumé or other files you upload when applying for roles
    • +
    • Technical data such as browser type, device information, and approximate location derived from IP address (via standard server or analytics logs, if enabled)
    • +
    +

    We do not require you to create an account to browse our public pages.

    + +

    3. How we use information

    +

    We use submitted information to:

    +
      +
    • Respond to enquiries and project requests
    • +
    • Evaluate career applications
    • +
    • Improve our website and services
    • +
    • Maintain security and prevent misuse
    • +
    • Comply with applicable legal obligations
    • +
    +

    We do not sell personal information.

    + +

    4. Cookies and similar technologies

    +

    Our site uses cookies or local storage for functional purposes (for example, remembering your theme preference). We also use Google Analytics to understand how visitors use the site (pages viewed, approximate location, device, and browser). Google may set cookies as described in Google’s privacy policy. You can control cookies through your browser settings.

    + +

    5. Sharing of information

    +

    We may share information with trusted service providers who help us operate our website, email, hosting, or form processing—only as needed to perform those services. We may also disclose information if required by law or to protect our rights, users, or systems.

    + +

    6. Data retention

    +

    We retain personal information only as long as reasonably necessary for the purposes described above, including responding to enquiries, managing applications, and meeting legal or business record requirements.

    + +

    7. Security

    +

    We take reasonable administrative and technical measures to protect information we hold. No method of transmission or storage is completely secure; we encourage you to avoid sending highly sensitive credentials through web forms.

    + +

    8. Your choices

    +

    Depending on applicable law, you may request access to, correction of, or deletion of personal information we hold about you. Contact us via the website form or by phone to make a request. We may need to verify your identity before acting on certain requests.

    + +

    9. Children’s privacy

    +

    Our services are directed to businesses and professionals. We do not knowingly collect personal information from children.

    + +

    10. External links

    +

    Our website may link to third-party sites. We are not responsible for the privacy practices of those sites.

    + +

    11. Changes to this policy

    +

    We may update this Privacy Policy from time to time. The “Last updated” date at the top will reflect the latest revision. Continued use of the site after changes constitutes acceptance of the updated policy where permitted by law.

    + +

    12. Contact

    +

    For privacy-related questions, email solutions@zettaisystems.com, use the contact form, or call +91 807 299 8024.

    +
    +
    +
    +
    + + + + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..349e79e --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://zettaisystems.com/sitemap.xml diff --git a/serve.py b/serve.py new file mode 100644 index 0000000..3a1ca71 --- /dev/null +++ b/serve.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +"""Local static server with extensionless URL support (mirrors Apache .htaccess). + +Usage: + python3 serve.py + python3 serve.py 8080 + +Then open http://127.0.0.1:8080/about (not file://) +""" + +from __future__ import annotations + +import argparse +import mimetypes +import os +from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer +from pathlib import Path +from urllib.parse import unquote, urlparse + + +ROOT = Path(__file__).resolve().parent + + +class CleanURLHandler(SimpleHTTPRequestHandler): + def __init__(self, *args, **kwargs): + super().__init__(*args, directory=str(ROOT), **kwargs) + + def log_message(self, format, *args): + return # quieter local dev logs + + def _parts(self): + parsed = urlparse(self.path) + path = unquote(parsed.path) + query = f"?{parsed.query}" if parsed.query else "" + return path, query + + def _redirect(self, location: str) -> None: + self.send_response(301) + self.send_header("Location", location) + self.end_headers() + + def _maybe_redirect(self) -> bool: + path, query = self._parts() + + if path in ("/index.html", "/index"): + self._redirect("/" + query) + return True + + if path.endswith(".html") and path != "/404.html": + clean = path[:-5] or "/" + self._redirect(clean + query) + return True + + # /services/ → /services (same as Apache — trailing slash breaks relative CSS) + if path == "/services/": + self._redirect("/services" + query) + return True + + return False + + def do_GET(self): + if self._maybe_redirect(): + return + return super().do_GET() + + def do_HEAD(self): + if self._maybe_redirect(): + return + return super().do_HEAD() + + def list_directory(self, path): + # Never show raw directory indexes + self.send_error(404, "Not found") + return None + + def translate_path(self, path: str) -> str: + parsed = urlparse(path) + clean = unquote(parsed.path) + if clean != "/" and clean.endswith("/"): + clean = clean.rstrip("/") + candidate = clean.lstrip("/") + + if candidate and candidate != "404.html": + html_path = ROOT / f"{candidate}.html" + file_path = ROOT / candidate + # Prefer .html page over a same-named folder (/services → services.html) + if html_path.is_file() and (not file_path.exists() or file_path.is_dir()): + path = f"/{candidate}.html" + if parsed.query: + path += f"?{parsed.query}" + + return super().translate_path(path) + + def end_headers(self): + self.send_header("Cache-Control", "no-store") + super().end_headers() + + +class ReusableHTTPServer(ThreadingHTTPServer): + allow_reuse_address = True + + +def main() -> None: + parser = argparse.ArgumentParser(description="Serve Zettai Systems with clean URLs") + parser.add_argument("port", nargs="?", type=int, default=8080) + args = parser.parse_args() + + os.chdir(ROOT) + mimetypes.add_type("text/css", ".css") + mimetypes.add_type("application/javascript", ".js") + + try: + server = ReusableHTTPServer(("127.0.0.1", args.port), CleanURLHandler) + except OSError as exc: + if exc.errno == 48: + print(f"Port {args.port} is already in use.") + print(f"Stop the other server: lsof -ti:{args.port} | xargs kill -9") + print(f"Or use another port: python3 serve.py 8081") + raise SystemExit(1) from exc + raise + + print(f"Serving {ROOT}") + print(f"Open http://127.0.0.1:{args.port}/services") + print("Press Ctrl+C to stop") + try: + server.serve_forever() + except KeyboardInterrupt: + print("\nStopped.") + + +if __name__ == "__main__": + main() diff --git a/services.html b/services.html new file mode 100644 index 0000000..ea043a3 --- /dev/null +++ b/services.html @@ -0,0 +1,325 @@ + + + + + + + Services | Zettai Systems + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Services
    +

    AI Products & Foundational Engineering

    +

    Track A: generative agents, domain RAG, AI APIs, and process automation. Track B: Flutter, full-stack web, and cloud/MLOps/QA. Every engagement starts with your workflows and ends with systems you can own.

    +
    +
    + + +
    +
    +
    +
    How We Engage
    +

    Services That Follow Your Business Logic

    +

    We don’t sell disconnected tools. We design connected platforms—so delivery, quality, and support stay aligned.

    +
    +
    +
    + 01 +

    Build

    +

    Web applications, Flutter mobile, custom software, and API-backed platforms engineered for real operations.

    +
    +
    + 02 +

    Connect

    +

    Cloud integration, system interfaces, and enterprise automation that reduce manual handoffs.

    +
    +
    + 03 +

    Protect

    +

    Security-aware architecture, QA discipline, and consulting that strengthen what you ship.

    +
    +
    + 04 +

    Grow

    +

    Analytics, ERP, e-commerce, and continuous support as your roadmap expands.

    +
    +
    +
    +
    + + +
    +
    +
    +
    Service Catalog
    +

    What We Deliver

    +

    Explore each capability in detail—or tell us your goal and we’ll recommend the right mix.

    +
    +
    +
    +
    +
    AI
    +

    Generative AI & Agentic Workflows

    +

    Autonomous multi-agent orchestration, human-in-the-loop task routing, and custom tool calling.

    +
    • Multi-agent orchestration
    • Human-in-the-loop gates
    • Custom tool calling
    + Learn More +
    +
    +
    +
    +
    AI
    +

    Domain RAG & Enterprise Search

    +

    Hybrid semantic and lexical vector search over proprietary documentation, PDFs, and relational stores.

    +
    • Hybrid retrieval
    • Access-aware indexes
    • Cited responses
    + Learn More +
    +
    +
    +
    +
    AI
    +

    Custom AI Microservices & APIs

    +

    Low-latency Python FastAPI and Node.js inference endpoints, model routing, and fallback cascades.

    +
    • FastAPI / Node inference
    • Model routing
    • Fallback cascades
    + Learn More +
    +
    +
    +
    +
    AI
    +

    Intelligent Process Automation

    +

    AI-assisted ERP workflows, automated document intelligence, and smart approval triage.

    +
    • ERP-assisted workflows
    • Document intelligence
    • Approval triage
    + Learn More +
    +
    +
    +
    +
    AI
    +

    AI Governance

    +

    Guardrails, evaluation, and telemetry so AI features stay inspectable for enterprise policy and risk reviews.

    +
    • Policy & prompt controls
    • Evaluation harnesses
    • Audit-ready logs
    + Learn More +
    +
    +
    +
    +
    Build
    +

    Modern Full-Stack Web Platforms

    +

    High-throughput web applications, enterprise dashboards, and customer self-service portals.

    +
    • Portals & dashboards
    • CI4 / PHP & Node.js APIs
    • Workflow-driven UX
    + Learn More +
    +
    +
    +
    +
    Build
    +

    High-Performance Mobile (Flutter)

    +

    Cross-platform native-quality iOS and Android apps connected to AI services, with offline caching.

    +
    • Cross-platform Flutter
    • AI service connectivity
    • Offline caching
    + Learn More +
    +
    +
    +
    +
    Build
    +

    Custom Software Development

    +

    Business-specific systems shaped for your processes—scalable architecture, clean code, and ownership your team can sustain.

    +
    • Bespoke platforms
    • Process automation
    • Legacy modernization
    + Learn More +
    +
    +
    +
    +
    Connect
    +

    Cloud, MLOps & QA Engineering

    +

    AWS Bedrock, Azure OpenAI, and GCP Vertex integrations, Docker/Kubernetes delivery, and automated regression testing.

    +
    • Cloud AI endpoints
    • Docker / Kubernetes
    • Regression automation
    + Learn More +
    +
    +
    +
    +
    Grow
    +

    Data Analytics

    +

    Dashboards, reporting pipelines, and analytics tools that turn operational data into clearer decisions.

    +
    • Operational dashboards
    • Reporting pipelines
    • Insight-ready data flows
    + Learn More +
    +
    +
    +
    +
    Protect
    +

    IT Consulting

    +

    Architecture planning, digital transformation guidance, and technology roadmaps grounded in how your business actually runs.

    +
    • Architecture reviews
    • Stack recommendations
    • Transformation planning
    + Learn More +
    +
    +
    +
    +
    Protect
    +

    Cybersecurity

    +

    Security-focused design and assessments to protect applications, infrastructure, and business data across the delivery lifecycle.

    +
    • Secure architecture
    • Risk-aware delivery
    • Assessment support
    + Learn More +
    +
    +
    +
    +
    Grow
    +

    ERP Solutions

    +

    ERP implementation, customization, and integration for business automation across finance, inventory, and operations.

    +
    • Implementation
    • Customization
    • API & process sync
    + Learn More +
    +
    +
    +
    +
    Grow
    +

    E-Commerce Solutions

    +

    Scalable commerce platforms covering catalogs, checkout, inventory sync, and post-order operations.

    +
    • Storefront platforms
    • Order workflows
    • Integrations
    + Learn More +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    Quality Built In
    +

    Delivery With Structure—Not Guesswork

    +

    Every service line follows a transparent path: discovery, architecture, development, dedicated QA, careful deployment, and ongoing support.

    +

    Our QA practice spans manual and automated testing—including API checks—so releases are stable before they reach your users.

    + See Our Process +
    +
    +
    +
    01 DiscoverGoals, constraints, workflows
    +
    02 ArchitectStack, scope, sprint plan
    +
    03 BuildAgile delivery with visibility
    +
    04 TestQA before every release
    +
    05 DeployControlled go-live
    +
    06 SupportImprove continuously
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    Technology
    +

    Stacks Behind Our Services

    +

    We deliver with proven cores—CodeIgniter 4, Flutter, Node.js, and dedicated QA—plus cloud and enterprise platforms as your roadmap requires.

    +
    +
    +

    CI4 / PHP

    MVCREST
    +

    Flutter

    iOSAndroid
    +

    Node.js

    APIsReal-time
    +

    Cloud & QA

    AWSCI/CD
    +
    +
    +
    + + +
    +
    +
    +
    FAQ
    +

    Questions About Our Services

    +
    +
    +
    +
    +
    +

    +
    Yes. Many engagements combine web or mobile delivery with APIs, cloud setup, QA, and post-launch support under one accountable team.
    +
    +
    +

    +
    We can assess existing platforms, reduce technical debt, and plan modernization or integration paths based on your constraints and priorities.
    +
    +
    +

    +
    Quality is part of how we deliver. We run structured testing—manual and automated where appropriate—before releases go live.
    +
    +
    +

    +
    Yes. Our approach emphasizes long-term partnership—monitoring, fixes, enhancements, and continuous improvement after go-live.
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Not sure which service fits?

    +

    Tell us what you’re trying to achieve—we’ll help map the right approach.

    +
    + Start a Conversation +
    +
    +
    +
    + + + + + + + + + diff --git a/services/agentic-ai.html b/services/agentic-ai.html new file mode 100644 index 0000000..a3522e1 --- /dev/null +++ b/services/agentic-ai.html @@ -0,0 +1,219 @@ + + + + + + + Generative AI & Agentic Workflows | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Track A · AI Products
    +

    Generative AI & Agentic Workflows

    +

    Autonomous multi-agent orchestration, human-in-the-loop task routing, and custom tool calling—scoped to your systems of record.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Agents that operate inside your workflows

    +

    We build agent workflows around real tasks: retrieve a record, draft a response, file a ticket, or prepare a change. Tools are scoped to the APIs and data the job needs—not an open-ended bot with production credentials.

    +

    High-impact steps stay behind human gates. Every tool call can be logged so operations and risk teams can see what ran, with which inputs, and who approved it.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Repeatable back-office or support tasks that still need judgment
    • +
    • Safe use of tools against ERP, CRM, or internal APIs
    • +
    • A path from a prototype chatbot to a governed production agent
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    What we implement

    +

    Delivery-focused agent design—not unbounded autonomy.

    +
    +
    +
    +

    Multi-agent orchestration

    Coordinate specialist agents and tools with argument validation, timeouts, and a clear handoff graph.

    +
    +
    +

    Human-in-the-loop

    Require approval before writes, payments, customer messages, or privileged lookups.

    +
    +
    +

    Step-level audit

    Persist prompts, tool results, and decisions so incidents can be reconstructed.

    +
    +
    +

    System integration

    Connect agents to existing web, mobile, and ERP surfaces instead of a disconnected chat island.

    +
    +
    +

    Scope & identity

    Run tools under service identities with least privilege, not a shared superuser key.

    +
    +
    +

    Evaluation loops

    Golden tasks and regression cases so agent changes are tested before they hit users.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Useful automation without giving a model the keys to the estate.

    +
    +
    +
      +
    • Clear boundary between draft work and production writes
    • +
    • Operators can see and stop a runaway tool loop
    • +
    • Fits the Zettai Framework: lock scope before an agent is allowed to act
    • +
    • A maintainable path after the first demo
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +
    +
    +
    01

    Task map

    Identify jobs that are tool-shaped, not open chat.

    +
    02

    Tool contract

    Specify APIs, permissions, and approval gates.

    +
    03

    Pilot

    Run on a bounded dataset with human review.

    +
    04

    Harden

    Add logging, evals, and rate limits.

    +
    05

    Operate

    Hand over runbooks and expansion backlog.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +
    +
    +

    Orchestration

    PythonLangChainLlamaIndexLiteLLM
    +

    Models & cloud

    Azure OpenAIAWS BedrockAnthropic Claude API
    +

    Delivery

    EvaluationAudit logsHuman gates
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    Read-only or low-risk steps can run automatically. Writes and customer-facing actions typically require a human gate until the task set is proven.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We prefer agents as a layer on APIs you already own—web, mobile, ERP—rather than a standalone product that duplicates data.
    +
    +
    +
    +

    + +

    +
    +
    Many agents retrieve documents or records first. Enterprise RAG is the retrieval layer; agentic workflows add tools and actions on top.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Have a workflow that should not be a chatbot?

    +

    We’ll help you decide which steps are tools, which need a person, and what to lock before build.

    +
    + Consult with a Solutions Architect +
    +
    +
    +
    + + + + + + + + + diff --git a/services/ai-governance.html b/services/ai-governance.html new file mode 100644 index 0000000..f3f5d68 --- /dev/null +++ b/services/ai-governance.html @@ -0,0 +1,219 @@ + + + + + + + AI Governance | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Service
    +

    AI Governance

    +

    Guardrails, evaluation, and audit trails so AI features stay inspectable in enterprise environments.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Controls you can show a reviewer

    +

    We help teams put policy into the product: who may use which model, what data may enter a prompt, which tools an agent may call, and how outputs are logged. This is engineering work—prompts, gateways, evals, and runbooks—not a certificate on the wall.

    +

    Where regulations or internal standards apply (including conversations about EU AI Act-style risk classes), we map practices to your legal counsel’s guidance. We do not claim ISO, CMMI, or AI Act certification unless you already hold it.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • An AI feature that must survive security and risk review
    • +
    • Logs that explain what the model and tools did
    • +
    • Evaluation before each prompt or model change
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    What we implement

    +

    The same pillars as the Zettai Framework, applied to AI delivery.

    +
    +
    +
    +

    Scope lock

    Use cases, data classes, and allowed actions are written down before prompts hit production.

    +
    +
    +

    Guardrails

    Prompt filters, tool allow-lists, PII handling, and human approval on high-impact actions.

    +
    +
    +

    Quality SOPs

    Change control for prompts and models, aligned with CMMI L2-style planned work and reviews.

    +
    +
    +

    Evaluation

    Offline test sets for groundedness, safety, and regression after every material change.

    +
    +
    +

    Telemetry

    Traces for prompts, retrieval hits, tool calls, and operator overrides.

    +
    +
    +

    Operating model

    RACI for product, security, and engineering so incidents have an owner.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Make AI shippable in organizations that already have controls.

    +
    +
    +
      +
    • Reviewers can inspect behavior instead of trusting a demo
    • +
    • Prompt and model changes follow the same discipline as code
    • +
    • Clear language with legal: practices and alignment, not invented certifications
    • +
    • Works with Agentic AI and Enterprise RAG as the control plane
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +
    +
    +
    01

    Risk map

    Classify use cases and data sensitivity.

    +
    02

    Controls

    Define gates, logs, and allow-lists.

    +
    03

    Instrument

    Wire telemetry into the product path.

    +
    04

    Evaluate

    Stand up regression suites and review cadence.

    +
    05

    Hand over

    Runbooks for incident and change control.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +
    +
    +

    Control plane

    PythonLangChainREST APIs
    +

    Observability

    Audit logsEvaluationCI/CD
    +

    Cloud

    Azure OpenAIAWSAzure
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    We describe delivery practices aligned with CMMI Level 2-style SOPs (planned work, tracked issues, reviews). We do not claim a CMMI or ISO certificate unless separately stated with evidence.
    +
    +
    +
    +

    + +

    +
    +
    No. We implement technical controls and operating practices. Regulatory interpretation stays with your counsel.
    +
    +
    +
    +

    + +

    +
    +
    Often yes. We start with a gateway, logging, and evals around the feature you already have, then deepen controls as use cases expand.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Need AI that can survive a risk review?

    +

    We’ll map use cases, gates, and telemetry before the next production prompt change.

    +
    + Consult with a Solutions Architect +
    +
    +
    +
    + + + + + + + + + diff --git a/services/ai-microservices.html b/services/ai-microservices.html new file mode 100644 index 0000000..00a732c --- /dev/null +++ b/services/ai-microservices.html @@ -0,0 +1,196 @@ + + + + + + + Custom AI Microservices & APIs | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Track A · AI Products
    +

    Custom AI Microservices & APIs

    +

    Low-latency Python FastAPI and Node.js inference endpoints, with model routing and fallback cascades.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Inference as a product surface—not a notebook

    +

    We wrap models behind authenticated APIs your web, mobile, and ERP systems can call with timeouts, quotas, and structured JSON. Routing can send cheap tasks to one model and high-stakes tasks to another, with a fallback if an upstream provider fails.

    +

    These services sit next to Agentic AI and Domain RAG: agents and search call your APIs; the APIs own latency, keys, and logging.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • A stable inference contract for multiple client apps
    • +
    • Model routing without rewriting every product screen
    • +
    • Fallback when a vendor endpoint is slow or unavailable
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    What we implement

    +
    +
    +

    FastAPI / Node endpoints

    Typed request/response schemas, auth, and p95 latency budgets you can measure.

    +

    Model routing

    Send traffic by task type, tenant, or cost—via LiteLLM-style gateways where they fit.

    +

    Fallback cascades

    Retry and degrade to a secondary model or cached result instead of a hard fail.

    +

    Key & tenancy isolation

    Service identities per environment—not a shared key in a mobile binary.

    +

    Telemetry

    Token, latency, and error traces that feed evaluation and cost reviews.

    +

    Container delivery

    Docker-friendly packaging that slots into your CI/CD and Kubernetes path.

    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +
    +
    +
      +
    • Product teams call one API instead of four vendors
    • +
    • You can swap models without rewriting Flutter or web clients
    • +
    • Latency and cost become measurable SLOs
    • +
    • Fits the Zettai Framework: lock the contract before traffic grows
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +
    +
    +
    01

    Contract

    Define payloads, SLOs, and which models may be used.

    +
    02

    Build

    Stand up FastAPI or Node routes with auth and logging.

    +
    03

    Route

    Add routing, fallbacks, and rate limits.

    +
    04

    Load test

    Prove p95 under a realistic mix of calls.

    +
    05

    Operate

    Hand over runbooks and cost dashboards.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +
    +
    +

    APIs

    PythonFastAPINode.jsExpressREST/GraphQL
    +

    Routing

    LiteLLMAzure OpenAIAWS Bedrock
    +

    Delivery

    DockerCI/CDEvaluation
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    Often we front managed endpoints (Azure OpenAI, Bedrock, Vertex). Self-hosted vLLM or similar is scoped when you already have GPU capacity and ops ownership.
    +
    +
    +
    +

    + +

    +
    +
    Yes. The point of the microservice is a stable HTTP contract those stacks already speak.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Need inference behind a real API?

    +

    We’ll sketch the contract, routing, and latency budget before a line of production traffic.

    +
    + Consult with a Solutions Architect +
    +
    +
    +
    + + + + + + + + diff --git a/services/cloud-integration.html b/services/cloud-integration.html new file mode 100644 index 0000000..bd75eec --- /dev/null +++ b/services/cloud-integration.html @@ -0,0 +1,229 @@ + + + + + + + Cloud, MLOps & QA Engineering | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Track B · Foundational Engineering
    +

    Cloud, MLOps & QA Engineering

    +

    AWS Bedrock, Azure OpenAI, and GCP Vertex integrations—plus Docker/Kubernetes delivery and automated regression testing.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Cloud that supports how you ship models and apps

    +

    We help teams move workloads to the cloud, wire foundation-model APIs, and design infrastructure that matches how you release. The goal is dependable operations—for both conventional apps and AI inference paths.

    +

    Engagements may include migration, Docker/Kubernetes packaging, CI/CD, model-endpoint routing, and automated regression testing around the features you ship.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Migrating applications from on-prem or legacy hosting
    • +
    • Connecting multiple systems through reliable integrations
    • +
    • Improving deployment consistency with CI/CD
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    Cloud, MLOps & QA Capabilities

    +

    Migration, model endpoints, containers, and test automation across major clouds.

    +
    +
    +
    +

    Migration planning

    Assess workloads and plan cutovers with risk and rollback in mind.

    +
    +
    +

    Cloud AI endpoints

    Integrate Azure OpenAI, AWS Bedrock, or Vertex AI behind your own APIs and access rules.

    +
    +
    +

    System integration

    APIs and connectors between cloud apps, data stores, and partners.

    +
    +
    +

    CI/CD pipelines

    Automated build and deploy flows for more predictable releases.

    +
    +
    +

    Secure configuration

    Access patterns and baseline hardening appropriate to your stack.

    +
    +
    +

    Containers & QA

    Docker/Kubernetes-friendly packaging plus automated regression around critical paths.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Clearer deployment paths and fewer manual release steps
    • +
    • Scalable infrastructure aligned to application demand
    • +
    • Better connectivity between tools and environments
    • +
    • Documentation that helps your team operate day to day
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Assess

    Review current systems, dependencies, and goals.

    +
    02

    Design

    Propose target architecture and migration phases.

    +
    03

    Implement

    Stand up environments, pipelines, and integrations.

    +
    04

    Migrate

    Move workloads carefully with validation checkpoints.

    +
    05

    Stabilize

    Monitor, tune, and hand over operating guidance.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Cloud platforms

    AWSAWS BedrockAzureAzure OpenAIGCPVertex AI
    +

    Application layer

    Node.jsPHPCodeIgniter 4REST APIs
    +

    Delivery

    CI/CDDocker-friendly workflowsQA Automation
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    We work with AWS, Azure, and GCP. Choice depends on your existing footprint, compliance needs, and team familiarity.
    +
    +
    +
    +

    + +

    +
    +
    Yes. Hybrid integration is a common part of migration and modernization work.
    +
    +
    +
    +

    + +

    +
    +
    Account ownership typically stays with you. We help design, implement, and document the environments.
    +
    +
    +
    +

    + +

    +
    +
    We aim for sensible resource sizing and can discuss cost visibility practices, but we don’t invent savings guarantees.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Planning a cloud move or integration?

    +

    Share your current setup—we’ll outline a practical next step.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/custom-software.html b/services/custom-software.html new file mode 100644 index 0000000..e92e4de --- /dev/null +++ b/services/custom-software.html @@ -0,0 +1,229 @@ + + + + + + + Custom Software Development | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Service
    +

    Custom Software Development

    +

    Business-specific software solutions designed for scalability, performance, and long-term ownership.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Software shaped to your operations

    +

    Off-the-shelf tools often stop short of how your teams actually work. We build custom software when your processes, integrations, or product vision need a tailored system—without unnecessary complexity.

    +

    Projects range from specialized line-of-business apps to platforms that become the operational backbone of a department or product line.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Processes that don’t fit standard SaaS packages
    • +
    • A product idea that needs a solid technical foundation
    • +
    • Systems that must integrate deeply with existing tools
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    Custom Delivery Areas

    +

    Architecture, development, and support for software that is uniquely yours.

    +
    +
    +
    +

    Domain modeling

    Data and process models that reflect how your business truly operates.

    +
    +
    +

    Modular systems

    Applications structured for iterative growth and clearer ownership.

    +
    +
    +

    System integration

    Connectors and APIs that keep custom software part of a larger ecosystem.

    +
    +
    +

    Role-based access

    Permissions and audit-friendly patterns for multi-team use.

    +
    +
    +

    Reporting hooks

    Exports, dashboards, and operational visibility where needed.

    +
    +
    +

    Evolution support

    Enhancements and refactoring as requirements change.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Features prioritized around business value, not vendor roadmaps
    • +
    • Architecture decisions documented for future maintainers
    • +
    • Fewer workarounds and less tool sprawl over time
    • +
    • A partner who stays involved after the first release
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Discover

    Understand constraints, stakeholders, and success metrics.

    +
    02

    Plan

    Scope phases, risks, and architecture options.

    +
    03

    Build

    Deliver in increments with reviewable progress.

    +
    04

    Validate

    Test with real workflows and edge cases.

    +
    05

    Handover & Support

    Deploy, document, and continue improvement.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Application

    PHPCodeIgniter 4Node.jsExpressJavaScript
    +

    Data

    MySQLPostgreSQLREST APIs
    +

    Delivery

    AWSAzureGCPCI/CDQA Automation
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    When your workflows, integrations, or competitive differentiation require control that packaged tools cannot provide economically.
    +
    +
    +
    +

    + +

    +
    +
    Through phased delivery, clear acceptance criteria, and regular checkpoints so priorities stay visible.
    +
    +
    +
    +

    + +

    +
    +
    Ownership terms are defined in the project agreement. We typically structure engagements so clients can own and operate what we build.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We can plan migrations, rebuilds, or hybrid approaches depending on risk and business continuity needs.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Have a custom software challenge?

    +

    Describe the problem space—we’ll help you decide what to build and what not to.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/cybersecurity.html b/services/cybersecurity.html new file mode 100644 index 0000000..c12b43e --- /dev/null +++ b/services/cybersecurity.html @@ -0,0 +1,229 @@ + + + + + + + Cybersecurity | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Service
    +

    Cybersecurity

    +

    Security-focused solutions to protect applications, infrastructure, and data throughout delivery and operations.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Security as part of how software is built

    +

    We help teams strengthen application security, access control, and secure delivery practices. Our approach is practical: reduce realistic risk in the systems you run, without claiming certifications or guarantees we cannot substantiate.

    +

    Support may include secure design reviews, hardening recommendations, authentication patterns, and remediation guidance for findings from assessments you commission.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Applications handling sensitive business or customer data
    • +
    • Teams preparing for security reviews before a major release
    • +
    • Platforms that need stronger auth and access patterns
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    Security Capabilities

    +

    Practical controls across applications, APIs, and delivery.

    +
    +
    +
    +

    Secure design reviews

    Review architecture and features for common risk areas early.

    +
    +
    +

    Auth & access

    Improve authentication, authorization, and session handling patterns.

    +
    +
    +

    Remediation support

    Help fix issues identified in assessments or code reviews.

    +
    +
    +

    Cloud hygiene

    Baseline configuration guidance for cloud-hosted applications.

    +
    +
    +

    Data handling

    Guidance on sensitive data flows, storage, and least-privilege access.

    +
    +
    +

    Secure SDLC habits

    Embed security checks into development and release practices.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Fewer surprises late in delivery cycles
    • +
    • Clearer ownership of access and sensitive data paths
    • +
    • Security improvements that developers can maintain
    • +
    • Better readiness for customer or partner security questionnaires
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Assess context

    Understand systems, data sensitivity, and threat priorities.

    +
    02

    Review

    Inspect architecture, configs, and critical application flows.

    +
    03

    Prioritize

    Rank findings by impact and effort.

    +
    04

    Remediate

    Implement or guide fixes with engineering teams.

    +
    05

    Resolutionsrce

    Document practices and follow-up checkpoints.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Application security

    Secure coding practicesREST API protectionAuth patterns
    +

    Platforms

    AWSAzureGCPNode.jsPHP
    +

    Delivery

    CI/CD checksCode reviewQA focus
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    We do not invent accredited testing claims. We can support remediation and secure development practices, and work alongside specialized testing partners when needed.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We prioritize high-impact fixes and sustainable controls rather than one-off patches only.
    +
    +
    +
    +

    + +

    +
    +
    We can help with technical controls relevant to compliance programs, but we do not claim to certify organizations.
    +
    +
    +
    +

    + +

    +
    +
    As early as possible—design and architecture stages prevent costly rework later.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Want a more secure delivery posture?

    +

    Describe your systems and concerns—we’ll propose practical next steps.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/data-analytics.html b/services/data-analytics.html new file mode 100644 index 0000000..87e1447 --- /dev/null +++ b/services/data-analytics.html @@ -0,0 +1,229 @@ + + + + + + + Data Analytics | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Service
    +

    Data Analytics

    +

    Turn business data into meaningful insights and better decisions with practical analytics foundations.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Insights grounded in reliable data

    +

    Analytics only helps when the underlying data is trustworthy and accessible. We help you structure sources, build reporting layers, and present insights that operators and leaders can act on.

    +

    Work may include data pipelines, dashboards, operational reports, and integrations that reduce manual spreadsheet reconciliation.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Leaders who need clearer operational visibility
    • +
    • Teams drowning in disconnected spreadsheets
    • +
    • Products that need reporting built into the platform
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    Analytics Capabilities

    +

    From data foundations to decision-ready views.

    +
    +
    +
    +

    Data foundations

    Organize sources and schemas so reporting starts from cleaner inputs.

    +
    +
    +

    ETL-style flows

    Move and transform data between systems on a reliable schedule.

    +
    +
    +

    Dashboards

    Visual views tailored to roles—operations, finance, or leadership.

    +
    +
    +

    Operational reports

    Repeatable reports that replace ad-hoc spreadsheet assembly.

    +
    +
    +

    Source integration

    Connect application databases and APIs into a usable analytics layer.

    +
    +
    +

    Access control

    Share insights with the right people without oversharing sensitive data.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Fewer manual reconciliations across tools
    • +
    • Faster answers to recurring operational questions
    • +
    • Reporting that matches how your teams actually decide
    • +
    • A path to improve data quality over time
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Discover

    Identify decisions, metrics, and current data pain points.

    +
    02

    Map

    Catalog sources, quality issues, and ownership.

    +
    03

    Build

    Implement pipelines, models, and reporting views.

    +
    04

    Validate

    Check numbers with stakeholders against known truth.

    +
    05

    Enable

    Train users and refine dashboards after adoption.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Data stores

    MySQLPostgreSQL
    +

    Application & APIs

    Node.jsPHPREST APIsAPI Integration
    +

    Cloud

    AWSAzureGCP
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    Our focus here is practical analytics—pipelines, reporting, and decision support. Advanced ML can be discussed separately if requirements are clear.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We commonly start from MySQL/PostgreSQL and application APIs already in place.
    +
    +
    +
    +

    + +

    +
    +
    Sometimes we complement tools you already use; sometimes we build tailored reporting into your product. Discovery decides.
    +
    +
    +
    +

    + +

    +
    +
    We validate metrics with business owners and document definitions so “revenue” or “active users” means one thing.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Need clearer visibility into your data?

    +

    Tell us what decisions you’re trying to improve—we’ll propose a grounded analytics approach.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/ecommerce.html b/services/ecommerce.html new file mode 100644 index 0000000..b9f7a69 --- /dev/null +++ b/services/ecommerce.html @@ -0,0 +1,229 @@ + + + + + + + E-Commerce Solutions | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Service
    +

    E-Commerce Solutions

    +

    Scalable e-commerce platforms and digital commerce solutions built for performance, operations, and growth.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Commerce systems that operations can run

    +

    We build and integrate e-commerce experiences that go beyond a pretty storefront—catalog structure, checkout flows, order handling, and connections to inventory, payments, and fulfillment tools.

    +

    Whether you need a custom commerce platform or commerce features woven into a broader digital product, we focus on reliability and maintainability.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Brands needing a custom storefront or commerce workflow
    • +
    • Teams integrating online orders with inventory and ERP
    • +
    • Businesses growing beyond basic website shopping carts
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    Commerce Capabilities

    +

    Storefront to fulfillment—engineered as one system.

    +
    +
    +
    +

    Storefronts

    Product browsing experiences designed for clarity and conversion-friendly flows.

    +
    +
    +

    Checkout & orders

    Order capture, status tracking, and admin tools for operations teams.

    +
    +
    +

    Payments integration

    Connect payment providers appropriate to your market and model.

    +
    +
    +

    Inventory sync

    Keep stock and catalog data aligned across channels where needed.

    +
    +
    +

    Mobile-ready commerce

    Responsive storefronts and optional Flutter companion experiences.

    +
    +
    +

    ERP connection

    Integrate commerce with ERP or other back-office systems.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Commerce workflows your team can operate daily
    • +
    • Integrations that reduce duplicate order entry
    • +
    • Performance-minded storefront delivery
    • +
    • Room to grow catalog size and order volume thoughtfully
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Discover

    Define catalog, channels, and operational constraints.

    +
    02

    Design

    Map customer journeys and admin workflows.

    +
    03

    Build

    Implement storefront, APIs, and integrations.

    +
    04

    Test

    Validate checkout, payments, and edge cases.

    +
    05

    Launch & Optimize

    Go live with monitoring and iterative improvements.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Storefront & apps

    HTMLCSSJavaScriptFlutter
    +

    Backend

    PHPCodeIgniter 4Node.jsExpressREST APIs
    +

    Ops & ERP

    ERPMySQLPostgreSQLAWSAzureGCP
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    We focus on custom and integrated commerce solutions using our core stacks. If you already run a packaged platform, we can discuss integration and custom extensions.
    +
    +
    +
    +

    + +

    +
    +
    Yes. ERP integration is a common pattern for businesses that want commerce tied to ERP.
    +
    +
    +
    +

    + +

    +
    +
    We integrate payment providers and support technical setup. Merchant accounts and compliance ownership remain with you.
    +
    +
    +
    +

    + +

    +
    +
    Possible depending on scope. We clarify complexity early because marketplace models add significant workflow and trust requirements.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Building or upgrading commerce?

    +

    Tell us about your catalog and operations—we’ll recommend a practical path.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/enterprise-rag.html b/services/enterprise-rag.html new file mode 100644 index 0000000..c484997 --- /dev/null +++ b/services/enterprise-rag.html @@ -0,0 +1,219 @@ + + + + + + + Domain RAG & Enterprise Search | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Track A · AI Products
    +

    Domain RAG & Enterprise Search

    +

    Hybrid semantic and lexical vector search over proprietary documentation, PDFs, and relational stores.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Answers that can be traced to a source

    +

    Enterprise RAG is not a generic chatbot over a public model. We index the corpora you designate—policies, product docs, tickets, structured records—then retrieve before generate so responses stay attached to evidence.

    +

    Access rules travel with retrieval. Users should not see chunks they could not open in the source system. When the corpus has no answer, the product should say so rather than invent one.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Internal Q&A over policies, SOPs, or product knowledge
    • +
    • Cited answers for support, sales, or operations teams
    • +
    • A retrieval layer that later feeds agentic tools
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    What we implement

    +

    Grounding first. Generation second.

    +
    +
    +
    +

    Ingestion pipelines

    Chunk and refresh PDFs, wikis, tickets, and database extracts on a schedule you control.

    +
    +
    +

    Hybrid retrieval

    Keyword plus vector search, with filters for tenant, role, and document class.

    +
    +
    +

    Citations

    Show sources next to answers so reviewers can open the original passage.

    +
    +
    +

    Access-aware indexes

    Respect existing permissions rather than flattening everything into one search space.

    +
    +
    +

    Evaluation

    Measure groundedness and refusal quality on a held-out question set before go-live.

    +
    +
    +

    Product surfaces

    Embed retrieval in portals and apps your teams already use—not only a standalone chat page.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes for knowledge that already lives in your estate.

    +
    +
    +
      +
    • Less hallucination pressure because retrieval is required
    • +
    • Easier review for legal, QA, and operations stakeholders
    • +
    • A corpus you can expand without redesigning the product
    • +
    • Cleaner handoff into agentic workflows later
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +
    +
    +
    01

    Corpus map

    Decide what is in-scope and who may see it.

    +
    02

    Index

    Ingest, chunk, and apply metadata filters.

    +
    03

    Ground

    Tune retrieval and citation UX on real questions.

    +
    04

    Evaluate

    Score groundedness, refusals, and latency.

    +
    05

    Operate

    Refresh pipelines and monitor drift.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +
    +
    +

    Retrieval

    pgvectorPineconeQdrantChromaDBRedis
    +

    Models & cloud

    LlamaIndexLangChainAzure OpenAI
    +

    Delivery

    REST APIsEvaluationAccess filters
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    No system can guarantee that. RAG reduces unsupported answers by requiring retrieval and citations, plus evals and refusals when sources are weak.
    +
    +
    +
    +

    + +

    +
    +
    Architecture is scoped with you—private indexes, chosen model endpoints, and data-handling rules before any corpus is ingested.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We prefer a bounded corpus and a question set you already ask, then expand once quality holds.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Need answers tied to your documents?

    +

    Bring a corpus and a sample question list—we’ll outline a retrieval approach you can govern.

    +
    + Consult with a Solutions Architect +
    +
    +
    +
    + + + + + + + + + diff --git a/services/erp.html b/services/erp.html new file mode 100644 index 0000000..abbb556 --- /dev/null +++ b/services/erp.html @@ -0,0 +1,229 @@ + + + + + + + ERP Solutions | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Service
    +

    ERP Solutions

    +

    ERP implementation, customization, integration, and business automation tailored to how your company operates.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    ERP that fits your workflows

    +

    An ERP can unify sales, inventory, accounting, HR, and operations—when it is configured and customized with care. We help you implement ERP modules that match real processes, integrate surrounding tools, and automate repetitive work.

    +

    Engagements may include discovery, module selection, customization, data migration, training support, and ongoing improvements.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • Growing companies ready to consolidate fragmented tools
    • +
    • Teams needing custom workflows beyond default ERP setup
    • +
    • Operations that require integrations with existing systems
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    ERP Capabilities

    +

    Implementation through automation—centered on adoption.

    +
    +
    +
    +

    Module implementation

    Configure CRM, inventory, sales, accounting, and other modules you need.

    +
    +
    +

    Customization

    Extend the ERP with custom fields, views, and business logic where required.

    +
    +
    +

    Integrations

    Connect the ERP to websites, payment tools, or other business systems.

    +
    +
    +

    Data migration

    Plan and execute migrations from spreadsheets or legacy tools.

    +
    +
    +

    Automation

    Reduce manual steps with automated actions and approval flows.

    +
    +
    +

    Enablement

    Support training and handover so teams can operate confidently.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • One operational hub instead of disconnected tools
    • +
    • Processes reflected in the system—not workarounds forever
    • +
    • Automation that frees teams for higher-value work
    • +
    • A partner who understands both ERP and custom software
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Discover

    Map processes and define module scope.

    +
    02

    Configure

    Set up the ERP to match agreed workflows.

    +
    03

    Customize

    Build extensions only where configuration is not enough.

    +
    04

    Migrate & Test

    Move data carefully and validate end-to-end flows.

    +
    05

    Go-live & Support

    Launch with support and continuous improvement.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    ERP

    ERPBusiness Automation
    +

    Integration

    REST APIsPHPNode.jsPostgreSQL
    +

    Cloud

    AWSAzureGCP
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    We help you choose based on modules, budget, and support needs. Licensing decisions remain yours.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We customize when configuration cannot meet a validated business requirement.
    +
    +
    +
    +

    + +

    +
    +
    We can plan migrations from other systems or spreadsheets; complexity depends on data quality and scope.
    +
    +
    +
    +

    + +

    +
    +
    We include enablement support as part of delivery planning so adoption is not left to chance.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Considering an ERP for your operations?

    +

    Share your current tools and pain points—we’ll outline a sensible implementation path.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/intelligent-process-automation.html b/services/intelligent-process-automation.html new file mode 100644 index 0000000..8eed848 --- /dev/null +++ b/services/intelligent-process-automation.html @@ -0,0 +1,196 @@ + + + + + + + Intelligent Process Automation | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Track A · AI Products
    +

    Intelligent Process Automation (IPA)

    +

    AI-assisted ERP workflows, automated document intelligence, and smart approval triage—with humans still owning the high-impact step.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Automation that sits on processes you already run

    +

    IPA here means extracting, classifying, and routing work that today sits in email, PDFs, and ERP queues—not a generic RPA bot farm. We connect document intelligence and agent tools to the same scope lock as the rest of the Zettai Framework.

    +

    Typical paths: invoice or claims packets into ERP, exception queues with suggested next actions, and approval triage that surfaces risk instead of auto-posting.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • ERP steps that stall on unstructured documents
    • +
    • Approval backlogs that need ranking, not rubber stamps
    • +
    • A human gate before anything posts to finance or inventory
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    What we implement

    +
    +
    +

    Document intelligence

    Classify and extract fields from PDFs and scans into structured payloads.

    +

    ERP-assisted workflows

    Draft ERP updates from extracted data; post only after review when the risk is high.

    +

    Smart approval triage

    Rank queues by exception, amount, or policy so people spend time where it matters.

    +

    Agent handoffs

    Use agentic tools for lookup and draft; keep writes behind the same human gates.

    +

    Audit trail

    Show what was extracted, suggested, and approved—so finance and QA can reconstruct a case.

    +

    System connectors

    REST into ERP, document stores, and your existing web or mobile work queues.

    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +
    +
    +
      +
    • Less re-keying from PDFs into ERP screens
    • +
    • Approvers see exceptions first, not every routine item
    • +
    • Automation does not silently post high-risk transactions
    • +
    • Reuses RAG and agent layers instead of a parallel bot stack
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +
    +
    +
    01

    Map the queue

    Pick one process with volume and a clear exception path.

    +
    02

    Extract

    Stand up document intelligence on a bounded sample.

    +
    03

    Draft

    Write suggested ERP actions, never silent posts first.

    +
    04

    Triage

    Score and route approvals with a human gate.

    +
    05

    Expand

    Add the next document type once quality holds.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +
    +
    +

    AI layer

    PythonLangChainAzure OpenAI
    +

    Systems

    ERPREST APIsPostgreSQL
    +

    Delivery

    Human gatesAudit logsQA Automation
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    We prefer APIs and document pipelines. UI automation is only used when a system has no integration path and the risk is understood.
    +
    +
    +
    +

    + +

    +
    +
    Not as a default. High-impact posts stay behind human approval until the document class and exception rate are proven.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Have a queue that should not stay in email?

    +

    Bring one process and a sample packet—we’ll outline extract, draft, and approval gates.

    +
    + Consult with a Solutions Architect +
    +
    +
    +
    + + + + + + + + diff --git a/services/it-consulting.html b/services/it-consulting.html new file mode 100644 index 0000000..feb3281 --- /dev/null +++ b/services/it-consulting.html @@ -0,0 +1,229 @@ + + + + + + + IT Consulting | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Service
    +

    IT Consulting

    +

    Technology consulting, architecture planning, and digital transformation guidance grounded in delivery reality.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Advice that connects to execution

    +

    We help leadership and technical teams make clearer technology decisions—stack choices, architecture trade-offs, roadmap sequencing, and modernization priorities. Recommendations are shaped by what can actually be built and operated.

    +

    Consulting often leads into implementation with our engineering team, but it can also stand alone as architecture and planning support.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • A roadmap that needs prioritization and technical realism
    • +
    • Legacy systems that require a modernization strategy
    • +
    • Stakeholders who need an independent architecture review
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    Consulting Focus Areas

    +

    Strategy and architecture with a bias toward deliverable outcomes.

    +
    +
    +
    +

    Technology roadmaps

    Sequence initiatives so value arrives early without uncontrolled risk.

    +
    +
    +

    Architecture reviews

    Assess current systems for scalability, security, and maintainability gaps.

    +
    +
    +

    Modernization planning

    Plan rewrites, migrations, or incremental refactors with clear phases.

    +
    +
    +

    Vendor & stack guidance

    Compare options against your team’s skills and ownership goals.

    +
    +
    +

    Delivery models

    Define how discovery, sprints, and acceptance should work.

    +
    +
    +

    Risk assessment

    Surface technical and operational risks before major investment.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Decisions documented with clear trade-offs
    • +
    • Less wasted spend on poorly sequenced initiatives
    • +
    • Alignment between business goals and technical plans
    • +
    • A smoother path into implementation when you’re ready
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Listen

    Understand goals, constraints, and current state.

    +
    02

    Analyze

    Review systems, processes, and delivery capacity.

    +
    03

    Recommend

    Present options with trade-offs and priorities.

    +
    04

    Plan

    Define phases, owners, and success criteria.

    +
    05

    Support

    Optionally guide or execute the first delivery phase.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Architecture context

    REST APIsCloud (AWS / Azure / GCP)ERP
    +

    Application stacks

    PHPCodeIgniter 4Node.jsFlutter
    +

    Delivery

    Agile SprintsArchitecture ReviewCI/CD
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    It can be advisory-only, or it can transition into hands-on delivery with our team.
    +
    +
    +
    +

    + +

    +
    +
    Short assessments may take days to a few weeks. Larger transformation planning is phased and scoped up front.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We prefer collaborative models that leave your team stronger, not dependent.
    +
    +
    +
    +

    + +

    +
    +
    We recommend tools that fit the problem. ERP platforms and our core stacks appear when they are genuinely relevant.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Need a clearer technology plan?

    +

    Book a conversation—we’ll help you frame the right questions and next steps.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/mobile-development.html b/services/mobile-development.html new file mode 100644 index 0000000..5def591 --- /dev/null +++ b/services/mobile-development.html @@ -0,0 +1,229 @@ + + + + + + + High-Performance Mobile (Flutter) | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Track B · Foundational Engineering
    +

    High-Performance Mobile (Flutter)

    +

    Cross-platform native-quality iOS and Android apps connected to AI services, with offline caching where the work happens in the field.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Mobile products that stay maintainable

    +

    We build Flutter apps with native-quality UI from a single codebase, wired to REST or AI microservices. Offline caching keeps field and on-the-go workflows usable when connectivity drops. The focus is on performance, consistent UX, and apps your team can support after launch.

    +

    Whether you need a customer-facing product or an internal field app, we start with journeys and edge cases before writing screens.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • A cross-platform app without maintaining two separate native codebases
    • +
    • Field or on-the-go workflows for staff and partners
    • +
    • A mobile companion to an existing web platform
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    Mobile Capabilities

    +

    From UX flows to store-ready releases and API integration.

    +
    +
    +
    +

    Flutter apps

    Cross-platform Android and iOS applications with a shared codebase.

    +
    +
    +

    UX & navigation

    Clear information architecture and interaction patterns users can trust.

    +
    +
    +

    API integration

    Secure connections to backends, auth, and third-party services.

    +
    +
    +

    Push & notifications

    Engagement and operational alerts where they add real value.

    +
    +
    +

    Offline-aware design

    Thoughtful handling of connectivity gaps for field scenarios.

    +
    +
    +

    Release support

    Build pipelines and guidance for store submission workflows.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Faster shared delivery across Android and iOS with Flutter
    • +
    • Consistent branding and UX across devices
    • +
    • Backend alignment so mobile is not an isolated silo
    • +
    • Post-launch iteration support for features and stability
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Discover

    Define audiences, journeys, and platform constraints.

    +
    02

    Prototype

    Validate key screens and flows early.

    +
    03

    Develop

    Build Flutter UI and integrate APIs.

    +
    04

    Test

    Device testing, QA, and release candidate checks.

    +
    05

    Launch & Iterate

    Store release support and ongoing improvements.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Mobile

    FlutterDart
    +

    Backend

    Node.jsExpressPHPCodeIgniter 4REST APIs
    +

    Cloud

    AWSAzureGCPCI/CD
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    Our primary mobile delivery stack is Flutter for cross-platform efficiency. If a project requires a different approach, we discuss trade-offs during discovery.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We integrate with existing REST APIs or help design the API layer when needed.
    +
    +
    +
    +

    + +

    +
    +
    We support the release process and packaging. Account ownership and store policies remain with you.
    +
    +
    +
    +

    + +

    +
    +
    We can plan iterative releases for features, fixes, and OS compatibility as part of ongoing support.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Ready to plan a mobile app?

    +

    Share your product goals and we’ll recommend a sensible Flutter delivery path.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/services/web-development.html b/services/web-development.html new file mode 100644 index 0000000..2fd4fe1 --- /dev/null +++ b/services/web-development.html @@ -0,0 +1,229 @@ + + + + + + + Modern Full-Stack Web Platforms | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Track B · Foundational Engineering
    +

    Modern Full-Stack Web Platforms

    +

    High-throughput web applications, enterprise dashboards, and customer self-service portals—built around your workflows.

    +
    +
    + +
    +
    +
    +
    +
    Overview
    +

    Web platforms that match how you work

    +

    We design and build web applications that support real operations—from internal tools and customer portals to multi-module business platforms. Architecture, UX, and data models are shaped by your processes, not generic templates.

    +

    Engagements typically include discovery, UI design collaboration, API-backed development, testing, deployment, and post-launch support.

    +
    +
    +
    +
    +

    Good fit when you need

    +
      +
    • A customer or partner portal that needs reliable access control
    • +
    • Internal tools to replace spreadsheets and fragmented apps
    • +
    • A product-style web platform with clear growth plans
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Capabilities
    +

    What We Build

    +

    From portals to complex business applications—engineered for clarity and scale.

    +
    +
    +
    +

    Business portals

    Secure portals for customers, partners, or staff with role-based access.

    +
    +
    +

    Workflow applications

    Applications that mirror approvals, tickets, and operational pipelines.

    +
    +
    +

    API-first backends

    REST APIs and integrations that keep your web layer connected to other systems.

    +
    +
    +

    Responsive experiences

    Interfaces that stay usable across desktop and mobile browsers.

    +
    +
    +

    Performance focus

    Thoughtful loading, caching strategies, and efficient data access patterns.

    +
    +
    +

    Security practices

    Authentication, authorization, and secure coding habits across the stack.

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Benefits
    +

    Why teams choose this path

    +

    Practical outcomes—not buzzwords.

    +
    +
    +
      +
    • Software aligned to your processes instead of forcing workarounds
    • +
    • Cleaner handoffs between frontend, APIs, and data layers
    • +
    • A foundation you can extend as features and teams grow
    • +
    • Transparent delivery with visible sprint progress
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Process
    +

    How We Deliver

    +

    A structured path from discovery to support.

    +
    +
    +
    01

    Discover

    Map users, workflows, and success criteria.

    +
    02

    Architect

    Define modules, data model, and integration points.

    +
    03

    Design & Build

    Iterate UI and backend features in clear releases.

    +
    04

    Test & Harden

    Validate flows, edge cases, and access controls.

    +
    05

    Deploy & Support

    Launch, monitor, and improve after go-live.

    +
    +
    +
    + +
    +
    +
    +
    Technologies
    +

    Tools We Work With

    +

    Stacks we use where they fit the problem—selected for maintainability and delivery clarity.

    +
    +
    +

    Frontend

    HTMLCSSJavaScriptReactAngular
    +

    Backend

    PHPCodeIgniter 4Node.jsExpressREST APIs
    +

    Data & Cloud

    MySQLPostgreSQLAWSAzureGCP
    +
    +
    +
    + +
    +
    +
    +
    FAQ
    +

    Common Questions

    +
    +
    +
    +

    + +

    +
    +
    Both. We can modernize an existing application or design a new platform from discovery through launch.
    +
    +
    +
    +

    + +

    +
    +
    We typically recommend stacks we actively deliver with—such as PHP/CodeIgniter 4 or Node.js backends with modern HTML/CSS/JavaScript frontends—based on your team’s ownership needs.
    +
    +
    +
    +

    + +

    +
    +
    Yes. We plan API integrations and data exchanges as part of architecture, not as an afterthought.
    +
    +
    +
    +

    + +

    +
    +
    We can deploy to AWS, Azure, GCP, or environments you already operate, depending on your preferences and constraints.
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Planning a web platform?

    +

    Tell us about your users and workflows—we’ll outline a practical build approach.

    +
    + Start a Project +
    +
    +
    +
    + + + + + + + + + diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..cab2931 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,25 @@ + + + https://zettaisystems.com/ + https://zettaisystems.com/about + https://zettaisystems.com/services + https://zettaisystems.com/solutions + https://zettaisystems.com/industries + https://zettaisystems.com/careers + https://zettaisystems.com/contact + https://zettaisystems.com/privacy-policy + https://zettaisystems.com/terms + https://zettaisystems.com/services/web-development + https://zettaisystems.com/services/agentic-ai + https://zettaisystems.com/services/enterprise-rag + https://zettaisystems.com/services/ai-microservices + https://zettaisystems.com/services/intelligent-process-automation + https://zettaisystems.com/services/mobile-development + https://zettaisystems.com/services/custom-software + https://zettaisystems.com/services/cloud-integration + https://zettaisystems.com/services/data-analytics + https://zettaisystems.com/services/it-consulting + https://zettaisystems.com/services/cybersecurity + https://zettaisystems.com/services/erp + https://zettaisystems.com/services/ecommerce + diff --git a/solutions.html b/solutions.html new file mode 100644 index 0000000..1567f1d --- /dev/null +++ b/solutions.html @@ -0,0 +1,223 @@ + + + + + + + Solutions | Zettai Systems + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Solutions
    +

    Business Outcomes, Engineered End to End

    +

    We combine strategy, software, and integration to modernize how your teams work—without unnecessary complexity.

    +
    +
    + +
    +
    +
    +
    +
    Digital Transformation
    +

    Modernize Processes With Purpose

    +

    Digital transformation is not a rebrand of old tools. We help you identify where technology removes friction—across customer journeys, internal workflows, and data flows—then deliver platforms that teams actually use.

    +

    Engagements typically include discovery workshops, architecture planning, phased delivery, and change-friendly rollout support.

    + Discuss Transformation +
    +
    +
    +

    Roadmaps

    Prioritized initiatives tied to measurable business goals.

    +

    Platforms

    Web, mobile, and cloud systems that replace fragmented tooling.

    +

    Adoption

    Design and delivery that respect how people work day to day.

    +

    Iteration

    Phased releases so value arrives early and risk stays managed.

    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Business Automation
    +

    Reduce Manual Work Across Operations

    +

    Repetitive handoffs, spreadsheet sprawl, and disconnected tools slow teams down. We design automation that connects systems, enforces rules, and keeps humans focused on judgment work.

    +

    Approaches range from workflow automation and API integrations to ERP-driven process redesign with ERP.

    + +
    +
    +
      +
    • Automate approvals, notifications, and status updates across teams.
    • +
    • Integrate CRM, ERP, finance, and operational tools into one flow.
    • +
    • Reduce error-prone manual data entry with validated processes.
    • +
    • Create visibility with dashboards that reflect live operational state.
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    Enterprise Solutions
    +

    Secure, Scalable Systems for Growing Organizations

    +

    Enterprise delivery means architecture discipline, access control, integration standards, and support models that match operational reality.

    +
    +
    +
    +

    ERP & Core Systems

    ERP implementation and custom enterprise applications for finance, inventory, HR, and operations.

    Learn more
    +
    +
    +

    Integration Layers

    APIs and middleware that keep departments and vendor systems aligned without brittle point-to-point glue.

    Learn more
    +
    +
    +

    Security & Governance

    Security-conscious design, access patterns, and practices that protect sensitive business data.

    Learn more
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    E-Commerce
    +

    Commerce Platforms Built to Scale

    +

    Whether you need a new storefront, custom checkout flows, or integrations with inventory and payments, we build commerce experiences that are fast, secure, and operable by your team.

    +

    We focus on catalog structure, performance, order workflows, and the backend systems that keep fulfillment reliable.

    + Explore E-Commerce Services +
    +
    +
    +
    +

    Typical engagement areas

    +
      +
    • Custom storefronts and product experiences
    • +
    • Payment, shipping, and inventory integrations
    • +
    • Admin tools for catalog and order operations
    • +
    • Performance and security hardening for growth
    • +
    +
    +
    +
    +
    +
    + + + +
    + +
    +
    +
    +
    + Current + Target + Baseline +
    + + + + + + + + + + + + Performance + Security + Scale + Delivery + Quality + Cloud + +
    +
    +
    Platform readiness
    +

    How strong is your digital foundation?

    +

    Whether you need a new platform, a modernization path, or tighter integration across systems—Zettai Systems helps you map gaps and build what matters next.

    + Start a Project +
    +
    +
    +
    + +
    +
    +
    +
    +

    Let’s shape the right solution together

    +

    Share your challenges—we’ll propose a practical path forward.

    +
    + Consult with a Solutions Architect +
    +
    +
    +
    + + + + + + + + + diff --git a/terms.html b/terms.html new file mode 100644 index 0000000..ec4c50a --- /dev/null +++ b/terms.html @@ -0,0 +1,122 @@ + + + + + + + Terms & Conditions | Zettai Systems + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    Legal
    +

    Terms & Conditions

    +

    Please read these terms carefully before using the Zettai Systems website.

    +
    +
    + +
    +
    +
    +

    Last updated: August 2026

    + +

    1. Agreement to terms

    +

    By accessing or using zettaisystems.com (the “Site”), you agree to these Terms & Conditions. If you do not agree, please do not use the Site. Separate written agreements govern client projects, consulting engagements, and employment relationships.

    + +

    2. About Zettai Systems

    +

    Zettai Systems provides IT and digital solutions including software development, cloud integration, consulting, and related services. Contact details: email solutions@zettaisystems.com; phone +91 807 299 8024; address No.10/21, 27th Street, Thillai Ganga Nagar, Nanganallur, Chennai – 600061, Tamil Nadu, India.

    + +

    3. Informational use of the Site

    +

    Content on this Site is provided for general information about our company and services. It does not constitute a binding offer, professional advice, or a guarantee of specific outcomes. Service descriptions may be updated without notice.

    + +

    4. Enquiries and forms

    +

    Submitting a contact or careers form does not create a client, employment, or contractor relationship. We will review submissions in good faith and respond when appropriate. You agree to provide accurate information and not to misuse our forms (including spam or malicious content).

    + +

    5. Intellectual property

    +

    Unless otherwise stated, the Site’s text, design, logos, graphics, and other materials are owned by Zettai Systems or used with permission. You may not copy, modify, distribute, or commercially exploit Site content without prior written consent, except for personal, non-commercial viewing or fair use as allowed by law.

    + +

    6. Acceptable use

    +

    You agree not to:

    +
      +
    • Attempt to disrupt, probe, or compromise the Site or related systems
    • +
    • Use the Site for unlawful, harmful, or fraudulent purposes
    • +
    • Scrape or harvest data in a manner that overloads or misuses the Site
    • +
    • Misrepresent your identity or affiliation when contacting us
    • +
    + +

    7. Third-party links

    +

    The Site may include links to external websites. We are not responsible for the content, availability, or practices of third-party sites.

    + +

    8. Disclaimer of warranties

    +

    The Site is provided on an “as is” and “as available” basis. To the fullest extent permitted by law, we disclaim warranties of merchantability, fitness for a particular purpose, and non-infringement regarding the Site and its content. We do not warrant that the Site will be uninterrupted, error-free, or free of harmful components.

    + +

    9. Limitation of liability

    +

    To the fullest extent permitted by law, Zettai Systems and its team shall not be liable for any indirect, incidental, consequential, special, or punitive damages arising from your use of—or inability to use—the Site. Our total liability related to Site use shall not exceed the amount you paid us (if any) specifically for Site access, or INR 1,000, whichever is greater. This limitation does not exclude liability that cannot be limited under applicable law.

    + +

    10. Project engagements

    +

    Commercial projects are governed by separate proposals, statements of work, or contracts that define scope, fees, timelines, intellectual property, confidentiality, and warranties. In case of conflict, the signed project agreement controls over these website terms.

    + +

    11. Privacy

    +

    Our handling of personal information is described in our Privacy Policy.

    + +

    12. Changes

    +

    We may revise these Terms & Conditions at any time by updating this page. The “Last updated” date indicates the latest version. Continued use of the Site after changes constitutes acceptance where permitted by law.

    + +

    13. Governing law

    +

    These terms are governed by the laws of India. Courts in Chennai, Tamil Nadu, shall have exclusive jurisdiction over disputes arising from use of the Site, subject to any mandatory consumer protections that apply.

    + +

    14. Contact

    +

    Questions about these terms? Email solutions@zettaisystems.com, use the contact form, or call +91 807 299 8024.

    +
    +
    +
    +
    + + + + + + + + +