Snippets Collections
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        Console.Write("Enter an email: ");
        string email = Console.ReadLine();

        string pattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$";

        if (Regex.IsMatch(email, pattern))
            Console.WriteLine("Email is in proper format.");
        else
            Console.WriteLine("Email is NOT in proper format.");
    }
}
//Step 1: Create the Private Assembly (Class Library)

//Open Visual Studio → Create a new project → select Class Library (.NET Framework).

//Name it: MyMathLibrary.

//Replace the default class code with:

using System;

namespace MyMathLibrary
{
    public class MathOperations
    {
        public int Add(int a, int b)
        {
            return a + b;
        }

        public int Multiply(int a, int b)
        {
            return a * b;
        }
    }
}


//Build the project → This generates MyMathLibrary.dll in bin\Debug\net6.0\.

//Step 2: Create the Console Application

//Open Visual Studio → Create a new project → Console App.

//Name it: UseMyMathLibrary.

//Step 3: Add Reference via Dependencies

//In Solution Explorer, expand the console app project (UseMyMathLibrary).

//Right-click Dependencies → Add Project Reference -> Browse -> MyMathLibrary->bin->Debug->.dll

//Check MyMathLibrary → click OK


//Step 4: Use the Assembly in Your Console App
using System;
using MyMathLibrary;

class Program
{
    static void Main()
    {
        MathOperations math = new MathOperations();

        int sum = math.Add(10, 20);
        int product = math.Multiply(5, 4);

        Console.WriteLine("Sum: " + sum);
        Console.WriteLine("Product: " + product);
    }
}
using System;

class Program
{
    static void Main()
    {
        Console.Write("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());

        int smallest = 9;

        while (num > 0)
        {
            int digit = num % 10;
            if (digit < smallest)
                smallest = digit;
            num /= 10;
        }

        Console.WriteLine("Smallest digit: " + smallest);
    }
}
using System;

class Program
{
    static void Main()
    {
        Console.Write("Enter a string: ");
        string str = Console.ReadLine().ToLower();

        int[] freq = new int[256]; 

        foreach (char ch in str)
        {
            if (ch != ' ')
                freq[ch]++;
        }

        int max = 0;
        char maxChar = ' ';

        for (int i = 0; i < 256; i++)
        {
            if (freq[i] > max)
            {
                max = freq[i];
                maxChar = (char)i;
            }
        }

        Console.WriteLine("Maximum occurring character: " + maxChar);
        Console.WriteLine("Occurrences: " + max);
    }
}
//Site1.Master
 <style>
     body {
         font-family: Arial, sans-serif;
         margin: 0;
         padding: 0;
     }

     header {
         background-color: #003366;
         color: white;
         padding: 15px;
         text-align: center;
         font-size: 24px;
     }

     nav {
         background-color: #005599;
         overflow: hidden;
     }

     nav a {
         float: left;
         display: block;
         color: white;
         text-align: center;
         padding: 14px 20px;
         text-decoration: none;
     }

     nav a:hover {
         background-color: #003366;
     }

     footer {
         background-color: #003366;
         color: white;
         text-align: center;
         padding: 10px;
         position: fixed;
         bottom: 0;
         width: 100%;
     }

     .content {
         padding: 20px;
         margin-bottom: 60px; /* space for footer */
     }
 </style>

//inside form tag
 <header>
     Welcome to ABC College of Engineering
 </header>

 <nav>
     <a href="Home.aspx">Home</a>
     <a href="Aboutus.aspx">About</a>
     
     <a href="Contactus.aspx">Contact</a>
 </nav>

 <div class="content">
     <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
     </asp:ContentPlaceHolder>
 </div>

 <footer>
     &copy; 2025 ABC College | All Rights Reserved
 </footer>
//Aboutus.apsx
    <h2>About Our College</h2>
<p>Founded in 1990, ABC College of Engineering is one of the premier institutions offering quality education.</p>
<p>Our mission is to produce skilled engineers and leaders capable of addressing global challenges.</p>
//similarly Contactus.aspx
using System;

class Program
{
    static void Main()
    {
        Console.Write("Enter a string: ");
        string str = Console.ReadLine();

        Console.Write("Enter the starting index: ");
        int start = Convert.ToInt32(Console.ReadLine());

        Console.Write("Enter the length of substring: ");
        int length = Convert.ToInt32(Console.ReadLine());

        string sub = str.Substring(start, length);

        Console.WriteLine("Extracted Substring: " + sub);
    }
}
using System;
using System.Text; // Required for StringBuilder

class Program
{
    static void Main()
    {
        // --- String Class Methods ---
        Console.WriteLine("=== String Class Methods ===");
        string str = "Hello World";

        Console.WriteLine("Original String: " + str);
        Console.WriteLine("To Upper Case: " + str.ToUpper());
        Console.WriteLine("To Lower Case: " + str.ToLower());
        Console.WriteLine("Substring (0,5): " + str.Substring(0, 5));
        Console.WriteLine("Replaced 'World' with 'C#': " + str.Replace("World", "C#"));
        Console.WriteLine("Contains 'Hello'? " + str.Contains("Hello"));
        Console.WriteLine("Length: " + str.Length);

        // --- StringBuilder Class Methods ---
        Console.WriteLine("\n=== StringBuilder Class Methods ===");
        StringBuilder sb = new StringBuilder("Hello");

        sb.Append(" World");
        Console.WriteLine("After Append: " + sb);

        sb.Insert(5, " C#");
        Console.WriteLine("After Insert: " + sb);

        sb.Replace("World", "Developers");
        Console.WriteLine("After Replace: " + sb);

        sb.Remove(5, 3);
        Console.WriteLine("After Remove: " + sb);

        sb.Clear();
        sb.Append("New String");
        Console.WriteLine("After Clear and Append: " + sb);
    }
}
using System;

class Program
{
    static void Main()
    {
        Console.Write("Enter a string: ");
        string str = Console.ReadLine().ToLower();

        int count = 0;

        foreach (char ch in str)
        {
            if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
            {
                count++;
            }
        }

        Console.WriteLine("Number of vowels: " + count);
    }
}
class Program
{
    static void Main()
    {
        Console.WriteLine("Enter a Number: ");
        int num = Convert.ToInt32(Console.ReadLine());

        int sum = 0;

        while (num > 0)
        {
            int digit = num % 10;
            sum += digit;
            num /= 10;
        }

        Console.WriteLine("Sum of digits: " + sum);

    }
}
class Program
{
    static void Main()
    {
        Console.WriteLine("Enter a Number: ");
        int num = Convert.ToInt32(Console.ReadLine());

        int reversed = 0;

        while (num > 0)
        {
            int digit = num % 10;
            reversed = reversed * 10 + digit;
            num /= 10;
        }

        Console.WriteLine("Reversed Num: " + reversed);

    }
}
using System;
class SmallestDigit
{
    static void Main()
    {
        Console.Write("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int smallest = 9;

        while (num > 0)
        {
            int digit = num % 10;
            if (digit < smallest)
                smallest = digit;
            num /= 10;
        }

        Console.WriteLine("Smallest digit: " + smallest);
    }
}
using System;
class MaxOccurringChar
{
    static void Main()
    {
        Console.Write("Enter a string: ");
        string str = Console.ReadLine();
        int[] freq = new int[256];

        foreach (char c in str)
            freq[c]++;

        int max = 0;
        char result = ' ';

        foreach (char c in str)
        {
            if (freq[c] > max)
            {
                max = freq[c];
                result = c;
            }
        }

        Console.WriteLine($"Maximum occurring character: {result}");
    }
}
class Program
{
    static void Main()
    {
        Console.WriteLine("Enter a String: ");
        string str = Console.ReadLine();

        string reversed = "";
        
        for(int i = str.Length - 1; i >= 0; i--)
        {
            reversed += str[i];
        }

        Boolean equal = true;

        for(int i = 0; i < str.Length; i++)
        {
            if (!(str[i] == reversed[i]))
            {
                equal = false; break;
            }
        }

        Console.WriteLine(equal ? "String is Palindrome" : "String is not a Palindrome");

    }
}
using System;
class CountOddDigits
{
    static void Main()
    {
        Console.Write("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int count = 0;

        while (num > 0)
        {
            int digit = num % 10;
            if (digit % 2 != 0)
                count++;
            num /= 10;
        }

        Console.WriteLine("Count of odd digits: " + count);
    }
}
using System;
class Program {
    static void Main() {
        Console.Write("Enter string: ");
        string str = Console.ReadLine();
        Console.Write("Enter start and length: ");
        int start = int.Parse(Console.ReadLine());
        int length = int.Parse(Console.ReadLine());
        string sub = str.Substring(start, length);
        Console.WriteLine("Substring: " + sub);
    }
}
using System;
using System.Text;
class StringManipulation
{
    static void Main()
    {
        string s = "Hello";
        Console.WriteLine("Original String: " + s);
        s = s.ToUpper();
        Console.WriteLine("Uppercase: " + s);
        s = s.Replace("HELLO", "WORLD");
        Console.WriteLine("Replaced: " + s);

        // StringBuilder
        StringBuilder sb = new StringBuilder("Welcome");
        sb.Append(" to C#");
        Console.WriteLine("StringBuilder Append: " + sb);
        sb.Insert(0, "Hi! ");
        Console.WriteLine("After Insert: " + sb);
        sb.Replace("C#", "Programming");
        Console.WriteLine("After Replace: " + sb);
    }
}
using System;
class Program {
    static void Main() {
        Console.Write("Enter string: ");
        string str = Console.ReadLine();
        int count = str.Count(c => "aeiouAEIOU".Contains(c));
        Console.WriteLine("Vowels: " + count);
    }
}
using System;
class SumOfDigits
{
    static void Main()
    {
        Console.Write("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int sum = 0;

        while (num > 0)
        {
            sum += num % 10;
            num /= 10;
        }

        Console.WriteLine("Sum of digits: " + sum);
    }
}
using System;
class ReverseNumber
{
    static void Main()
    {
        Console.Write("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int rev = 0;

        while (num > 0)
        {
            rev = rev * 10 + num % 10;
            num = num / 10;
        }

        Console.WriteLine("Reversed Number: " + rev);
    }
}
using System;
using System.Linq;
class Program {
    static void Main() {
        Console.Write("Enter string: ");
        string str = Console.ReadLine();
        string rev = new string(str.Reverse().ToArray());
        Console.WriteLine(str == rev ? "Palindrome" : "Not palindrome");
    }
}

or 

using System;
class Palindrome
{
    static void Main()
    {
        Console.Write("Enter a string: ");
        string str = Console.ReadLine();
        string rev = "";

        for (int i = str.Length - 1; i >= 0; i--)
            rev += str[i];

        if (str == rev)
            Console.WriteLine("Palindrome");
        else
            Console.WriteLine("Not Palindrome");
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Enter a number: ");
        int N = Convert.ToInt32(Console.ReadLine());

        int first = 0;
        int second = 1;

        Console.WriteLine("Fibonacci Series");

        for(int i = 1; i <= N; i++)
        {
            Console.Write(first + " ");
            int next = first + second;
            first = second;
            second = next;
        }

    }
}
using System;
class Fibonacci
{
    static void Main()
    {
        Console.Write("Enter the number of terms: ");
        int n = Convert.ToInt32(Console.ReadLine());
        int a = 0, b = 1, c;

        Console.Write("Fibonacci Series: ");
        for (int i = 1; i <= n; i++)
        {
            Console.Write(a + " ");
            c = a + b;
            a = b;
            b = c;
        }
    }
}
using System;
class Program {
    static void Main() {
        Console.Write("Enter a number: ");
        int n = int.Parse(Console.ReadLine());
        bool isPrime = n > 1;
        for(int i = 2; i <= Math.Sqrt(n); i++) {
            if(n % i == 0) {
                isPrime = false; break;
            }
        }
        Console.WriteLine(isPrime ? "Prime" : "Not prime");
    }
}
class Program
{
    static void Main()
    {
        Console.WriteLine("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        if (IsPrime(num))
        {
            Console.WriteLine("Prime Number");
        }
        else
        {
            Console.WriteLine("Not a Prime Number");
        }
    }

    static Boolean IsPrime(int num)
    {
        if (num == 1 || num == 0) return false;
        int c = 0;
        for(int i = 1; i <= num; i++)
        {
            if(num%i == 0)
            {
                c++;
            }
        }

        return c == 2;
    }
}
using System;

// Base class
class Employee
{
    public string Name { get; set; }
    public int EmployeeID { get; set; }
    public double Salary { get; set; }

    public Employee(string name, int id)
    {
        Name = name;
        EmployeeID = id;
    }

    // Virtual method to be overridden in derived classes
    public virtual void CalculateSalary()
    {
        Salary = 0;
    }

    public void Display()
    {
        Console.WriteLine("Employee Name: " + Name);
        Console.WriteLine("Employee ID: " + EmployeeID);
        Console.WriteLine("Salary: " + Salary);
        Console.WriteLine("-----------------------------");
    }
}

// Derived class: FullTimeEmployee
class FullTimeEmployee : Employee
{
    public double BasicSalary { get; set; }
    public int NumberOfDays { get; set; }
    public double HRA { get; set; }
    public double DA { get; set; }

    public FullTimeEmployee(string name, int id, double basic, int days, double hra, double da)
        : base(name, id)
    {
        BasicSalary = basic;
        NumberOfDays = days;
        HRA = hra;
        DA = da;
    }

    public override void CalculateSalary()
    {
        Salary = (BasicSalary * NumberOfDays) + HRA + DA;
    }
}

// Derived class: PartTimeEmployee
class PartTimeEmployee : Employee
{
    public double DailyWages { get; set; }
    public int NumberOfDays { get; set; }

    public PartTimeEmployee(string name, int id, double wages, int days)
        : base(name, id)
    {
        DailyWages = wages;
        NumberOfDays = days;
    }

    public override void CalculateSalary()
    {
        Salary = DailyWages * NumberOfDays;
    }
}

// Main Program
class Program
{
    static void Main()
    {
        // Create Full-Time Employee
        FullTimeEmployee fte = new FullTimeEmployee("Alice", 101, 1000, 22, 500, 300);
        fte.CalculateSalary();
        fte.Display();

        // Create Part-Time Employee
        PartTimeEmployee pte = new PartTimeEmployee("Bob", 102, 500, 15);
        pte.CalculateSalary();
        pte.Display();

        Console.ReadLine();
    }
}
using System;

// Step 1: Base interface
interface IShape
{
    void Draw();
}

// Step 2: Derived interface inherits from IShape
interface IColorShape : IShape
{
    void FillColor();
}

// Step 3: Implement the derived interface explicitly
class Rectangle : IColorShape
{
    // Explicit implementation of Draw() from IShape
    void IShape.Draw()
    {
        Console.WriteLine("Drawing a Rectangle");
    }

    // Explicit implementation of FillColor() from IColorShape
    void IColorShape.FillColor()
    {
        Console.WriteLine("Filling Rectangle with Blue color");
    }
}

class Program
{
    static void Main()
    {
        // Create object of Rectangle
        Rectangle rect = new Rectangle();

        // To access explicit interface methods, we need to cast to interface
        IShape shape = rect;
        shape.Draw();  // Calls IShape.Draw()

        IColorShape colorShape = rect;
        colorShape.FillColor();  // Calls IColorShape.FillColor()

        Console.ReadLine();
    }
}

 public delegate void OperationOnDelegate(int x,int y);
 internal class Program
 {
     public static void Add(int x,int y)
     {
         Console.WriteLine($"Add:{x + y}");

     }

     public static void Sub(int x, int y)
     {
         Console.WriteLine($"Sub:{x - y}");


     }

     public static void Mul(int x, int y)
     {
         Console.WriteLine($"Sub:{x * y}");
     }




     static void Main(string[] args)
     {
         OperationOnDelegate op;
         op = Add;
         op(10, 20);
         op = Sub;
         op(10, 20);
         op = Mul;
         op(10, 20);
         op = Add;
         op += Sub;
         op += Mul;
         op(20, 10);
     }
 }
hbase shell
list
create 'employee_details', 'PersonalInfo', 'ProfessionalInfo'
put 'employee_details', 'emp1', 'PersonalInfo:name', 'John Doe'
put 'employee_details', 'emp1', 'PersonalInfo:age', '29'
put 'employee_details', 'emp1', 'PersonalInfo:gender', 'Male'
put 'employee_details', 'emp1', 'ProfessionalInfo:designation', 'Engineer'
put 'employee_details', 'emp1', 'ProfessionalInfo:salary', '50000'
put 'employee_details', 'emp1', 'ProfessionalInfo:department', 'R&D'

put 'employee_details', 'emp2', 'PersonalInfo:name', 'Alice Smith'
put 'employee_details', 'emp2', 'PersonalInfo:age', '32'
put 'employee_details', 'PersonalInfo:gender', 'Female'
put 'employee_details', 'emp2', 'ProfessionalInfo:designation', 'Manager'
put 'employee_details', 'emp2', 'ProfessionalInfo:salary', '75000'
put 'employee_details', 'emp2', 'ProfessionalInfo:department', 'HR'
scan 'employee_details'
scan 'employee_details', { FILTER => "SingleColumnValueFilter('PersonalInfo','name',=,'binary:John Doe')" }
put 'employee_details', 'emp1', 'ProfessionalInfo:salary', '60000'
get 'employee_details', 'emp1'
deleteall 'employee_details', 'emp1'
get 'employee_details', 'emp1'
exit
¡Excelente pregunta! Es fundamental entender cómo funciona el "mago detrás de la cortina". Te lo explico paso a paso:

El Flujo Completo del Formulario
1. Vista (Formulario) → Controlador
php
<?php
// Esto genera un formulario HTML que apunta al controlador actual
$form = ActiveForm::begin([
    'action' => ['libro/crear'], // ← ¡AQUÍ ESTÁ LA CLAVE!
    'method' => 'post'
]); 
?>
Esto genera HTML como:

html
<form action="/index.php?r=libro/crear" method="post">
    <input type="text" name="Libro[titulo]" value="">
    <input type="text" name="Libro[autor_id]" value="">
    <!-- ... otros campos -->
</form>
2. Controlador - Donde la Magia Ocurre
php
public function actionCrear()
{
    $model = new Libro();

    // ¡ESTA LÍNEA ES LA CLAVE!
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        
        // Aquí se guarda en la base de datos
        if ($model->save()) {
            Yii::$app->session->setFlash('success', '¡Libro guardado!');
            return $this->redirect(['crear']);
        }
    }

    return $this->render('crear', ['model' => $model]);
}
Desglosemos el Proceso Mágico:
Paso 1: $model->load() - Recoge los Datos
php
// Esto hace automáticamente:
$postData = Yii::$app->request->post();
// $postData contiene: ['Libro' => ['titulo' => 'Mi libro', 'autor_id' => 1, ...]]

$model->titulo = $postData['Libro']['titulo'];
$model->autor_id = $postData['Libro']['autor_id'];
// ... y así con todos los campos
Paso 2: $model->validate() - Valida los Datos
php
// Usa las reglas que definiste en el modelo
public function rules()
{
    return [
        [['titulo', 'autor_id'], 'required'], // ← Se validan aquí
        [['titulo'], 'string', 'max' => 255],
    ];
}
Paso 3: $model->save() - Guarda en la BD
php
// Internamente hace:
public function save()
{
    if ($this->validate()) {
        // Genera y ejecuta el INSERT SQL automáticamente
        // INSERT INTO libros (titulo, autor_id, ...) VALUES ('Mi libro', 1, ...)
        return $this->insert(false);
    }
    return false;
}
Versión Visual del Flujo:
text
FORMULARIO HTML
     ↓ (envía POST)
CONTROLADOR actionCrear()
     ↓
$model->load()       ← Recoge datos del formulario
     ↓
$model->validate()   ← Verifica reglas
     ↓
$model->save()       ← INSERT en la base de datos
     ↓
REDIRIGE o MUESTRA ERROR
Ejemplo Práctico para Entender Mejor:
Tu Formulario Genera Esto:
html
<input type="text" name="Libro[titulo]" value="Cien años de soledad">
<input type="number" name="Libro[autor_id]" value="1">
El Controlador Recibe Esto:
php
// Yii::$app->request->post() contiene:
[
    'Libro' => [
        'titulo' => 'Cien años de soledad',
        'autor_id' => '1',
        'categoria_id' => '2',
        // ...
    ]
]
Y $model->load() Transforma Esto:
php
// Convierte automáticamente:
$model->titulo = 'Cien años de soledad';
$model->autor_id = 1;
$model->categoria_id = 2;
// ...
¿Cómo Sabe Dónde Guardar?
El Modelo Sabe Su Tabla:

php
class Libro extends ActiveRecord
{
    public static function tableName()
    {
        return 'libros'; // ← ¡Sabe que guarda en la tabla 'libros'!
    }
}
ActiveRecord Genera el SQL:

php
// Automáticamente crea:
INSERT INTO libros (titulo, autor_id, categoria_id, ...) 
VALUES ('Cien años de soledad', 1, 2, ...)
En Resumen:
El formulario envía datos al controlador via POST

$model->load() mapea los datos del formulario al modelo

$model->validate() verifica que todo esté correcto

$model->save() genera y ejecuta el INSERT automáticamente

La magia está en que Yii2 hace todo el trabajo pesado por ti: no necesitas escribir SQL, no necesitas mapear campos manualmente, todo es automático y seguro.

¿Quieres que profundice en alguna parte específica?

<style>
    
.video-embed {
    position: relative;
    padding-bottom: 56.25%;
    width: 100%;
    height: 100%;
} 
.video-responsive {    
    height: 100%;
    left: 0;
    position: absolute;
    top: 0;
    width: 100%;
}

.video-section {
    position: relative;
}
.video-section .st-flex {
    gap: 80px;
}
.video-content {
    display: flex;
    flex-direction: column;
    gap: 32px;
    align-items: flex-start;
}
.video-content>* {
    margin: 0;
}
.video-wrap {
    position: relative;
    /*aspect-ratio: 16/10;*/
    background: linear-gradient(135deg, #50bea4 0%, #007d8b 100%);
    background: url(/img/upload/hwcg-video-example.png);
    background-size: cover;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 0 50px rgba(0, 0, 0, 0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.video-placeholder {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    max-width: 100%;
}
.video-placeholder iframe,
.video-placeholder object,
.video-placeholder embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.video-video {
    position: relative;
    z-index: 1;
}
.video-video:after {
    content: '';
    position: absolute;
    z-index: -1;
    width: 50%;
    height: 90%;
    transform: rotate(-90deg);
    right: 8px;
    bottom: -56px;
    background: #50BEA4;
    filter: blur(125px);
    opacity: 0.6;
}

@media (min-width: 992px) {
    .video-section .video-content {
        flex-basis: calc(33.33333% - 40px);
    }
    .video-section .video-video {
        width: auto;
        flex-basis: calc(66.666666% - 40px);
    }
}

@media (max-width: 991px) {
    .video-section .st-flex {
        flex-direction: column;
        gap: 3rem;
    }
    .video-video {
        width: 100%;
    }
}

@media (max-width: 480px) {
    .video-section .st-flex {
        gap: 2rem;
    }
}

/*Banners*/
.banner [class^="st-container"], .banner [class*=" st-container"] {
    gap: 16px;
}
.banner.hero-banner {
    margin-top: 32px;
    padding-bottom: 0;
}
.banner-left {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    align-self: stretch;
background: var(--Light-Linear---Vertical, linear-gradient(185deg, #3DA58C 4.26%, #007D8B 95.74%));
    border-radius: 1.5rem;
    padding: 24px;
}
.banner-left .banner-content {
    padding: 64px 24px;   
}
.banner-right {
    display: flex;
    padding: 0;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    flex: 1 0 0;
    align-self: stretch;
    border-radius: 1.5rem;
    background-color: var(--grey-100);
    overflow: hidden;
    position: relative;
}
.banner-right .img-clip {
    width: 100%;
    height: 100%;
}
.banner-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 1rem;
    flex: 1 0 0;
}
.st-d1, .banner .st-d1 {
    align-self: stretch;
    color: #FFF;
    text-align: center;
    font-size: 4rem;
    font-style: normal;
    font-weight: 900;
    line-height: 100%; /* 4rem */
    letter-spacing: -0.08rem;
}
.banner h1, .banner .st-h1 {
    /*color: #fff;*/
    margin: 0;
    /*font-size: 44px;*/
    /*font-style: normal;*/
    /*font-weight: 900;*/
    /*line-height: 110%; */
    /*letter-spacing: -0.88px;*/
}
.banner h2, .banner .st-h2 {
    /*font-size: 30px;*/
    /*font-style: normal;*/
    /*font-weight: 400;*/
    /*line-height: 110%; */
    margin: 0;
}
.banner h3, .banner .st-h3 {
    /*font-size: 22px;*/
    /*font-style: normal;*/
    /*font-weight: 700;*/
    /*line-height: 125%; */
    /*color: #fff;*/
    margin: 0;
}
.banner p {
    margin: 0;
}
.banner .st-btn {
    margin-top: 16px;
}
.banner:not(.banner-light) *:not(.st-btn):not(.st-btn *) {
    color: #fff;
}
.banner-bottom {
    align-self: stretch;
    justify-content: space-between;
    align-items: center;
    gap: 8px
}
.reviews-panel {
    padding: 0.25rem 0.75rem 0.25rem 0.5rem;
    align-items: center;
    gap: 6px;
    
    border-radius: 6.25rem;
    border: 2px solid #FFF;
    background: var(--teal-50, #ECF8F5);
}
.banner.banner-light .banner-left {
    border-radius: 24px;
    border: 1px solid var(--teal-100, #A2DCCF);
    background: var(--teal-50, #ECF8F5);
}
.banner.banner-light .hero-breadcrumbs {
    width: 100%;
}
.banner.banner-light h1,
.banner.banner-light h2  {
    color: var(--teal-700, #007D8B);
}
@media screen and (max-width: 1000px) {
    .banner [class^="st-container"], 
    .banner [class*=" st-container"] {
        gap: 8px;
    }
}
@media screen and  (max-width: 767px) {
    .banner-left {
        padding: 0 16px;
    }
    .banner-left .banner-content {
        padding: 64px 0;
    }
    
    .banner-bottom {
        padding-bottom: 16px;
    }
    .st-d1, .banner .st-d1 {
        font-size: 40px;
        letter-spacing: -0.8px;
    }
    .banner h1, .banner .st-h1 {
        font-size: 28px;
        letter-spacing: -0.56px;
    }
    
    .banner h3, .banner .st-h3 {
        font-size: 18px;
    }
    
    .reviews-panel .google-stars {
        width: 64px;
    }
}
@media screen and  (min-width: 769px) {
    .banner-left {
        min-height: 383px;
    }
    .banner-content {
        max-width: 584px;
    }
}

/*reviews panel*/
.reviews-panel-total .st-h4 {
    margin: 0;
}
.reviews-panel-logo {
    height: 28px;
    display: flex;
    align-items: center;
}  


.cta-banner .banner-left .banner-content {
    padding: 80px 24px;
}
.cta-banner .banner-right {
    aspect-ratio: 12/7;
}
@media screen and (max-width: 1000px){
    .banner-right {
        aspect-ratio: 36 / 23;
    }
}
@media screen and (max-width: 768px){
    .cta-banner .banner-left .banner-content {
        padding: 40px 0;
    }
}


.lists-2-columns {
    display: flex;
    gap: 2rem;
    flex-wrap: wrap;
}
.lists-2-columns > * {
  width: calc(50% - 1rem);
}
.lists-2-columns ul {
  /*list-style-type: disc;*/
  /*padding-left: 1.25rem;*/
  /*margin: 0;*/
}
.lists-2-columns ul li {
  /*margin-bottom: 0.75rem;*/
  /*color: #004445;*/
  /*line-height: 1.5;*/
}
@media (max-width: 992px) {
    .lists-2-columns ul {
        width: 100%;
    }
}

.st-twothirds .st-container .st-flex {
    gap: 1rem;
}
.st-twothirds .st-item-1-3 {
    flex-basis: calc(33.3333% - .5rem)
}
.st-twothirds .st-item-2-3 {
    flex-basis: calc(66.6666% - .5rem)
}

@media (max-width: 992px) {
    .st-twothirds .st-flex {
       flex-direction: column;
    }
    .st-twothirds .st-item-1-3 {
        flex-basis: 100%;
    }
    .st-twothirds .st-item-2-3 {
        flex-basis: 100%;
    }
}

    
/*contact us*/
.contact-us .banner-right .img-clip {
    aspect-ratio: 680 / 763;
}
.contact-us .green-card {
    padding: 56px 48px;
    justify-content: flex-start
}
.st-form-headline {
    align-self: stretch;
    margin-bottom: 32px;
}
.st-form-headline h1 {
    color: var(--teal-700, #007D8B);
    text-align: center;
    font-family: "Sofia Pro";
    font-size: 36px;
    font-style: normal;
    font-weight: 900;
    line-height: 100%; /* 36px */
    letter-spacing: -0.72px;
    margin-bottom: 16px;
}
.st-form-headline p {
    color: var(--teal-900, #00454D);
    font-size: 17px;
    font-style: normal;
    font-weight: 400;
    line-height: 160%; /* 27.2px */
}
@media (max-width: 768px) {
    .contact-us .banner-right {
        display: none;
    }
    .contact-us .green-card {
        padding: 40px 24px;
    }
}


/*Base Form styles*/
.formwrap fieldset{
    display: block;
    position: relative;
}
.st-form fieldset{
    border: 0;
    padding: 0;
    display: flex;
    gap:  24px 16px;
    position: relative;
    flex-wrap: wrap;
}

.st-form .contact-form ul.errorlist {
    width: 100%;
}
.st-form .form {
    width: 100%;
    position: relative;
}
.st-form {
}
.st-form select {
    width: 100%;
    font-size: 16px;
    line-height: 1;
    padding: 6px 12px;
    border-radius: 4px;
    border: 1px solid var(--teal-700, #007D8B);
    background: #FFF;
    height: 54px;
}
.st-form input[type="radio"], .st-form input[type="checkbox"] {
    width: 20px;
    height: 20px;
}
.st-form .contact-form ul {
    margin-top: -12px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.st-form p:not([class]) {
    display: none;
}
.st-form ul li label {
    display: flex;
    gap: 6px;
    align-items: center;
    color: black;
    font-size: 14px;
    font-style: normal;
    font-weight: 400;
    line-height: 150%;
}
.st-form .sb-formfield, .st-form .st-form-input {
    position: relative;
    display: block;
    width: 100%;
    margin-bottom: 0;
}
.st-form .sb-formfield-0,
.st-form .sb-formfield-1,
.st-form .sb-formfield-2,
.st-form .sb-formfield-3 {
    flex-basis: calc(50% - 8px);
}
.st-form .sb-formfield:not(.sb-formfield--sms-consent) input, .st-form .st-form-input input {
    width: 100%;
    font-size: 16px;
    line-height: 1;
    padding: 22px 12px 6px 12px;
    border-radius: 4px;
    border: 1px solid var(--teal-700, #007D8B);
    background: #FFF;
    height: 54px;
}
.st-form .sb-formfield textarea {
    width: 100%;
    font-size: 16px;
    line-height: 1;
    padding: 6px 12px;
    border-radius: 4px;
    border: 1px solid var(--teal-700, #007D8B);
    background: #FFF;
    height: 162px;
}
.st-form .sb-formfield input:focus, .st-form .st-form-input input:focus {
    border-color: var(--teal-900);
}
.st-form .sb-formfield label, .st-form .st-form-input label {
    position: absolute;
    left: 12px;
    top: 4px;
    font-size: 10px;
    line-height: 1.6;
    color: var(--grey-900);
}
.st-form .sb-formfield.filled label, .st-form .st-form-input.filled label {
    color: var(--grey-900);
}
.st-form .submit {
    margin: 0;
    display: flex;
    justify-content: center;
    padding-top: 24px;
    width: 100%;
}
.st-form .submit input {
    display: inline-block;
    display: flex;
    min-width: 150px;
    padding: 12px 24px;
    justify-content: center;
    align-items: center;
    gap: 8px;
    color: #000;
    text-align: center;
    font-size: 16px;
    font-style: normal;
    font-weight: 700;
    line-height: 150%; /* 24px */
    border-radius: 32.99px;
    background: linear-gradient(179deg, #FFF0CC -23.23%, #FFDE8F 9.81%, #FFCE5C 42.85%, #FFC748 75.89%, #FFB50A 108.93%, #DB9C00 141.97%);
    box-shadow: 0px 22px 6px 0px rgba(0, 0, 0, 0.00), 0px 14px 6px 0px rgba(0, 0, 0, 0.01), 0px 8px 5px 0px rgba(0, 0, 0, 0.05), 0px 4px 4px 0px rgba(0, 0, 0, 0.09), 0px 1px 2px 0px rgba(0, 0, 0, 0.10);
    min-width: 150px;
    text-align: center;
    margin: 0 auto;
    border: 0;
    width: 150px;
    font-family: var(--font-text);
}

@media (max-width: 768px) {
    .st-form .sb-formfield-0,
    .st-form .sb-formfield-1,
    .st-form .sb-formfield-2,
    .st-form .sb-formfield-3 {
        flex-basis: calc(100%);
    }
}

/*consent checkbox*/
.st-form .sb-formfield--sms-consent {
    text-align: left;
    display: flex;
    justify-content: center;
    align-items: flex-start;
    flex-direction: row-reverse;
    gap: 16px;
    align-self: stretch;
}
.st-form .sb-formfield--sms-consent label {
    color: var(--teal-900, #00454D);
    font-size: 10px;
    font-style: normal;
    font-weight: 400;
    line-height: 160%; /* 16px */
    position: unset;
}

/*End base form styles*/

/*zip finder*/
.hero-zip-finder {
    gap: 1rem;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    position: relative
}

.hero-zip-finder h3 {
    /*font-size: 22px;*/
    /*font-weight: 700;*/
    /*line-height: 115%;*/
    /*position: relative;*/
    text-align: center;
    color: #fff;
}

#zip-form {
    background-color: #fff;
    border-radius: 100px;
    flex-flow: row;
    justify-content: flex-end;
    align-items: center;
    width: 377px;
    margin: 0;
    padding: 4px;
    display: flex;
    position: relative;
    overflow: hidden
}

#zip-form input {
    color: #737373;
    font-size: 17px;
    font-weight: 400;
    line-height: 1;
    width: 213px;
    height: 40px;
    /*position: absolute;*/
    /*left: 24px;*/
    /*bottom: 4px;*/
    border: none;
    padding-left: 33px;
}

#zip-form label {
    display: none;
}
#zip-form button {
    margin: 0;
}
.zip-form-icon {
    position: absolute;
    left: 1rem;
    top: 1.1rem;
}

#no-zip {
    display: flex;
    padding: 2px 6px;
    justify-content: center;
    align-items: flex-start;
    gap: 6px;
    border-radius: 2px;
    background: var(--black-100, #F4F5F6);
    margin-top: 12px;
    max-width: 286px;
    position: absolute;
}

#no-zip svg {
    margin: 2px;
    width: 12px;
    height: 12px;
}

#no-zip p {
    color: #fff;
    font-size: 10px;
    line-height: 1.6;
    text-align: left;
}

#no-zip a {
    display: block;
    color: white;
    text-decoration: underline;
}

#no-zip .invalid-zip-error,
#no-zip .unserviced-zip-error {
    position: relative;
    line-height: 0;
}

#no-zip .invalid-zip-error button {
    position: absolute;
    top: 0;
    right: -4px;
}

#no-zip .invalid-zip-error svg {
    width: 12px;
    height: 12px;
    fill: #000;
}

@media (max-width: 767px) {
    #no-zip {
        position: unset;
    }
#zip-form {
    width: auto;
}
    .hero-zip-finder {
        width: auto;
    }
    
    #zip-form input {
        width: 169px;
    }
    #zip-form .st-btn {
        width: 150px;
    }
}


/*new zip finder error css*/
.hero-zip-finder--initial #no-zip {
    display: none;
}

.hero-zip-finder--invalid-zip #no-zip {
    display: initial;
}

.hero-zip-finder--invalid-zip #zip-form,
.hero-zip-finder--invalid-zip .unserviced-zip-error {
    display: none;
}

.hero-zip-finder--unserviced-zip #no-zip {
    display: initial;
}

.hero-zip-finder--unserviced-zip #zip-form,
.hero-zip-finder--unserviced-zip .invalid-zip-error {
    display: none;
}

/**/



.feature-cards {
    margin-top: 1rem;
    padding-bottom: 16px;
}
.feature-cards .st-container {
    --gap: 16px;
}

.feature-card {
    background-color: #a2dccf;
    border: 0.5px solid #50bea4;
    border-radius: 16px;
    padding: 20px 24px;
    display: flex;
    align-items: center;
    align-self: stretch;
    gap: 16px;
    flex: 1;
    min-width: 300px;
    overflow: hidden;
    
    position: relative;
}
.feature-card:hover {
    border-radius: 16px;
    border: 0.5px solid var(--teal-300, #50BEA4);
    background: var(--teal-50, #ECF8F5);
    box-shadow: 0 0 25px 0 rgba(0, 0, 0, 0.25);
}
.feature-card:hover:after {
    content: '';
    background: url(/sb-homewatchcaregivers/svg/arrow-right-diagonal.svg) center no-repeat;
    background-color: #fff;
    border-radius: 0 0 0 24px;
    display: flex;
    width: 48px;
    height: 48px;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;
    aspect-ratio: 1 / 1;
    position: absolute;
    right: 0;
    top: 0;
}
.feature-card .icon-container {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background-color: white;
    border: 1.5px solid #50bea4;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.feature-card .icon-container.light-bg {
    background-color: #ecf8f5;
}

.feature-card .icon-container svg {
    width: 100%;
    height: 100%;
}

.feature-card .content {
    flex: 1;
}

.feature-card .title {
    font-size: 18px;
    font-weight: bold;
    color: #00454d;
    margin-bottom: 2px;
    line-height: 1.25;
}

.feature-card .description {
    font-size: 13px;
    color: #000000;
    line-height: 1.6;
}

@media (max-width: 768px) {
    body {
        padding: 8px;
    }

    .feature-cards .st-container-lg {
        flex-direction: column;
        gap: 8px;
    }

    .feature-card {
        min-width: auto;
    }
}





/*Template Component - Basic Content*/
.basic-content {
    position: relative;
}
.basic-content .st-container-md > .st-flex {
    /*gap: 6rem;*/
    gap: 80px;
    align-items: center;
    flex-wrap: nowrap;
}
.basic-content .st-flex > * {
    display: flex;
}
.basic-content .videoimg-right {
    order: 2;
}
.basic-content-html {                
    display: flex;
    flex-direction: column;
    gap: 24px;
    align-items: flex-start;
}
.basic-content-html > * {
    margin: 0!important;
}
.basic-content picture {
    --_img-height: var(--img-height, 390px);
    aspect-ratio: 13 / 11;
    max-width: 100%;
    width: 330px;
    height: 390px;
}
.basic-content.video .basic-content-videoimg {
    --_item-width: var(--item-width, 100%);
    max-width: 100%;
    flex-basis: var(--_item-width);
}
.basic-content h2, .basic-content .st-h2 {
    margin-bottom: -8px;
}
.basic-content li, .grey-box li {
    font-size: 17px;
    line-height: 160%;
    margin-bottom: 12px;
}
@media (min-width: 992px) {
    .basic-content.image .basic-content-videoimg {
        min-width: 330px;
        max-width: 100%;
    }
    .basic-content.video .basic-content-videoimg {
        min-width: 705px;
        max-width: 100%;
    }
    .basic-content-html {
        width: auto;
        flex-grow: 1;
        /*width: calc(66.666666% - 40px);*/
    }
}

@media (max-width: 992px) {
    .basic-content.image .basic-content-videoimg {
        justify-content: center;
        width: 100%;
    }
    .basic-content.image .basic-content-videoimg picture {
        --img-height: 295px;
        width: 100%;
        aspect-ratio: 250.00 / 295.45;
        margin-left: auto;
        margin-right: auto;
    }
}
@media (max-width: 991px) {
    .basic-content .st-container-md > .st-flex {
        flex-direction: column;
        gap: 3rem;
    }
}
@media (max-width: 480px) {
    .basic-content .st-container-md > .st-flex {
        gap: 2rem;
    }
}


.basic-content-html div,
.highlight-box {
    background: #f7f7f7;
    border-left: 4px solid #50bea4;
    border-radius: 0 12px 12px 0;
    padding: 1rem 2rem;
    font-size: 22px;
    line-height: 1.25;
    flex-wrap: nowrap;
    align-items: center;
    gap: 2rem;
    width: 100%;
    justify-content: space-between;
    display: flex;
    margin-top: 8px;
}
.basic-content-html div *,
.highlight-box * {
    margin: 0;
}
.basic-content-html div h3,
.highlight-box h3 {
    color: var(--teal-900);
    font-weight: 600;
    margin: 0;
}
.basic-content-html div .st-h4,
.basic-content-html div h4,
.highlight-box .st-h4,
.highlight-box h4,
.highlight-box .st-h4 p,
.highlight-box h4 p {
    display: block;
    color: var(--teal-900);
    --headline-height: 125%;
    font-size: 1.125rem;
    font-style: normal;
    font-weight: 800;
}
.basic-content-html div .st-h4 a,
.basic-content-html div h4 a,
.highlight-box .st-h4 a {
    display: inline;
    color: var(--teal-700);
    text-decoration: underline;
}

.highlight-box .st-btn {
    flex-grow: 1;
    white-space: nowrap;
    flex-shrink: 0;
    width: auto;
}
@media (max-width: 480px) {
    .basic-content-html div,
    .highlight-box {
        padding: 1.5rem;
        flex-direction: column;
    }
    .basic-content-html div button,
    .highlight-box .st-btn {
        align-self: stretch;
    }
}

.basic-content button {
    
}

.video-wrap {
    position: relative;
    /*aspect-ratio: 16/10;*/
    background: linear-gradient(135deg, #50bea4 0%, #007d8b 100%);
    background: url(/img/upload/hwcg-video-example.png);
    background-size: cover;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 0 50px rgba(0, 0, 0, 0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.video-placeholder {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    max-width: 100%;
}
.video-placeholder iframe,
.video-placeholder object,
.video-placeholder embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.video-video:after {
    content: '';
    position: absolute;
    z-index: -1;
    width: 50%;
    height: 90%;
    transform: rotate(-90deg);
    right: 8px;
    bottom: -56px;
    background: #50BEA4;
    filter: blur(125px);
    opacity: 0.6;
}

@media (max-width: 991px) {
    .video-video {
        width: 100%;
    }
}

/**/


/**/
/**/
picture {
    position: relative;
}
.blur {
    position: relative;
}
.blur:after {
    content: '';
    position: absolute;
    z-index: -1;
    width: 64%;
    height: 88%;
    left: 0;
    top: 45px;
    background: #50BEA4;
    filter: blur(125px);
    opacity: 0.6;
    /*background: url(/sb-homewatchcaregivers/svg/green-glow.svg);*/
    /*background-size: cover;*/
    /*background-position: center;*/
    /*width: 212px;*/
    /*height: 344px;*/
}
.shadow > * {
    box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.25);
}
.corners-24 > * {
    border-radius: 24px;
    overflow: hidden;
}
.image-double,
.image-double > * {
    border-radius: unsfet;
    box-shadow: unset;
}
.image-double {
    width: 100%;
}



.darkgreen-bar .darkgreen-bar-wrapper {
    background: linear-gradient(to bottom, #007d8b, #00454d);
    border-radius: 1.5rem;
    display: flex;
    overflow: hidden;
}

.darkgreen-bar .card {
    padding: 4rem 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    min-width: 200px;
    position: relative;
    flex-grow: 1;
}

.darkgreen-bar .card h3 {
    margin: 0;
}
.darkgreen-bar .card:not(:first-child) {
    border-left: 4px solid #50bea4;
}
.darkgreen-bar .icon {
    width: 56px;
    height: 56px;
}
.darkgreen-bar .icon svg {
    width: 100%;
    height: 100%;
}
.darkgreen-bar .text {
    color: white;
    font-size: 17px;                       
    text-align: center;
    line-height: 1.6;
    max-width: 200px;
}
.darkgreen-bar-title {
    color: var(--Teal-100, #A2DCCF);
    text-align: center;
    font-size: 32px;
    font-style: normal;
    font-weight: 900;
    line-height: 110%; /* 35.2px */
    letter-spacing: -0.64px;
    margin-top: -8px;
    margin-bottom: 8px;
}
.darkgreen-bar .card > *:not(.darkgreen-bar-title) {
    margin: 0;
}

.darkgreen-bar.bar-3-cards .card {
    width: 33%;
}
.darkgreen-bar.bar-4-cards .card {
    width: 25%;
}
.darkgreen-bar.bar-6-cards .darkgreen-bar-wrapper {
    flex-wrap: wrap;
}
.darkgreen-bar.bar-6-cards .card {
    width: 33%;
}
.darkgreen-bar.bar-6-cards .card:nth-child(1),
.darkgreen-bar.bar-6-cards .card:nth-child(2),
.darkgreen-bar.bar-6-cards .card:nth-child(3) {
    border-bottom: 4px solid #50bea4;
    
}
@media (max-width: 992px) {
    .darkgreen-bar .darkgreen-bar-wrapper {
        flex-wrap: wrap;
    }

    .darkgreen-bar .card {
        min-width: 50%;
        width: 50%;
    }

    .darkgreen-bar .card:not(:first-child) {
        border-top: 4px solid #50bea4;
    }
}

@media (max-width: 768px) {
    .darkgreen-bar .darkgreen-bar-wrapper {
        flex-direction: column;
    }

    .darkgreen-bar .card {
        min-width: 100%;
        width: 100%;
    }

    .darkgreen-bar.bar-3-cards .card {
        padding: 24px;
    }

    .darkgreen-bar.bar-4-cards .card {
        padding: 32px;
    }

    .darkgreen-bar .text {
        max-width: 100%;
    }

    .darkgreen-bar .card:not(:first-child) {
        border-left: none;
        border-top: 4px solid #50bea4;
    }
}

.faq-headline {
    margin-bottom: 24px;
    text-align: center;
}

.faq-item {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-direction: column;
    margin-bottom: 12px;
    background: #EEF1F6;
    border-radius: 8px;
    display: flex;
    padding: 16px 32px;
    flex-direction: column;
    align-items: center;
    gap: 32px;
    align-self: stretch;

    border-radius: 12px;
    border: 0.5px solid var(--teal-300, #50BEA4);
    background: var(--teal-50, #ECF8F5);
}

.faq-question {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    border-radius: 8px;
    font-family: var(--font-headline);
    font-size: 20px;
    font-weight: 600;
    line-height: 115%;
    flex-wrap: nowrap;
    text-align: left;

    color: var(--teal-900, #00454D);
    font-size: 24px;
    font-style: normal;
    font-weight: 400;
    line-height: 125%;
    /* 30px */
}

.faq-item:hover,
.faq-item:focus {
    background: var(--teal-100);
}

.faq-answer {
    width: 100%;
    padding: 24px 32px;
    display: none;
}

.active .faq-answer {
    display: flex;
}

.active svg {
    transform: rotate(45deg);
    transition: all 1ms;
}



.green-card-grey-box .st-container {
    align-items: center;
    justify-content: center;
    gap: 1rem;
}
.green-card {
    border: 0.5px solid var(--teal-100, #A2DCCF);
    background: var(--teal-50, #ECF8F5);
    border-radius: 1.5rem;
    padding: 3rem;
    width: 400px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-self: stretch;
    align-items: flex-start;
    gap: 2rem;
    flex-shrink: 0;
} 
.green-card > * {
    margin: 0!important;
}
.green-card .st-btn {
    margin-top: 1rem;
}
.grey-box {
    border: 1px solid var(--grey-300, #CCC);
    background: var(--grey-100, #F7F7F7);
    border-radius: 1.5rem;
    padding: 3rem;
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-self: stretch;
    gap: 2rem;
}
@media (max-width: 992px) {
    .green-card {
        padding: 40px 24px;
    }
    .grey-box {
        padding: 40px 24px;
    }
}




.services-panel {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 3rem;
    padding: 48px;
}

.services-icons {
    display: flex;
    gap: 0.75rem;
    justify-content: center;
    flex-wrap: wrap;
}

.service-icon {
    width: 112px;
    height: 99px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    cursor: pointer;
    transition: transform 0.3s ease;
    position: relative;
    overflow: hidden;
}

.service-icon span {
    position: relative;
    z-index: 1;
    color: white;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: none;
}

.service-icon:hover {
    transform: scale(1.1);
}

.services-content {
    border-top: 1px solid #ffe199;
    padding-top: 2rem;
    text-align: center;
    min-height: 150px;
    width: 100%;
    /* Ensure consistent height */
}

.service-description {
    display: none;
    font-size: 1.125rem;
    font-weight: 700;
    color: #000;
    line-height: 1.4;
    margin-bottom: 1.5rem;
}

.service-description p {
    margin-bottom: 36px;
}
.service-description.active {
    display: block;
}
.default-description {
    display: block;
    font-size: 1.125rem;
    font-weight: 700;
    color: #000;
    line-height: 1.4;
    margin-bottom: 1.5rem;
}
.default-description.hidden {
    display: none;
}
.learn-more-button {
    background-color: #ffe199;
    border: none;
    border-radius: 50px;
    padding: 0.5rem 1rem;
    font-size: 0.8125rem;
    color: #000;
    cursor: pointer;
    transition: all 0.3s ease;
}
.learn-more-button:hover {
    background-color: #ffd700;
    transform: translateY(-1px);
}


@media (max-width: 768px) {
    .services-panel {
        padding: 40px 24px;
        gap: 2rem;
    }
    .services-icons {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: repeat(2, 1fr);
        gap: 0.5rem;
        justify-items: center;
    }
    .service-icon {
        width: 90px;
        height: 80px;
        font-size: 0.6875rem;
    }
    .service-description {
        font-size: 1rem;
    }
}

@media (max-width: 480px) {
    .services-panel {
        padding: 1.5rem;
    }
    .services-icons {
        gap: 0.25rem;
    }
    .service-icon {
        width: 70px;
        height: 65px;
        font-size: 0.625rem;
    }
    .service-description {
        font-size: 0.9375rem;
    }
}




.slick-disabled {
    opacity: .8;
}

.st-section-heading {
    margin-bottom: 48px;
}

.st-section-heading p:last-of-type {
    margin-bottom: 0;
}

.st-section-heading .st-btn {
    margin-top: 32px;
}

.st-section-heading h2,
.st-section-heading .st-h2 {
    --headline-margin: 24px;
}

@media (max-width: 767px) {

    .st-section-heading h2,
    .st-section-heading .st-h2 {
        --headline-margin: 16px;
    }
}

.st-teal-700 {
    color: var(--teal-700);
}

/*Team Carousel*/
.slick-team-carousel {}

.team-carousel-wrap {
    position: relative;
}

.team-carousel-arrows {
    display: flex;
    padding: 0 16px;
    justify-content: space-between;
    gap: 24px;
    position: absolute;
    top: calc(50% - 22px);
    z-index: 1;
    width: 100%;
}

.team-carousel-item {
    text-align: left;
    overflow: hidden;
    padding: 8px 8px 12px 8px;
    align-items: flex-start;
    gap: 12px;
    flex-shrink: 0;
    width: 100%;
    display: block;

    border-radius: 24px;
    border: 0.5px solid var(--grey-300, #CCC);
    background: var(--grey-100, #F7F7F7);
    transition: all .3s ease;
}

.slick-team-carousel .slick-track {
    gap: 16px;
    padding: 8px 0;
}

@media screen and (max-width: 768px) {
    .team-carousel {
        padding-left: 0;
        padding-right: 0;
        padding-bottom: 50px;
    }

    .team-carousel .slick-dots {
        display: block;
        bottom: -50px;
    }

    .team-carousel-arrows {
        display: none;
    }
}

.team-carousel-name {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.team-carousel-name .st-h4 {
    color: var(--teal-900);
}

.team-carousel-position {
    color: var(--grey-700);
    font-size: 10px;
    font-style: normal;
    font-weight: 400;
    line-height: 160%;
    /* 16px */
    display: flex;
    gap: 5px
}

.team-carousel-location {
    color: var(--grey-700);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 4px;
}

.team-carousel-location .st-p2 {
    font-weight: 700;
}

.team-carousel-title {
    --var-p-margin: 0;
    padding: 12px 8px 0 8px;
    width: 100%;
}

.team-carousel-title * {
    margin: 0;
}

.team-carousel-img.img-clip {
    border-radius: 24px;
    --img-height: 400px;
}


h2,
.st-h2 {
    color: var(--teal-700)
}

/*Expert Tips element*/
.expert-tips-wrap {
    display: flex;
    flex-direction: column;
    gap: 24px;
    justify-content: center;
    align-items: center;
}

.expert-tips-wrap h2 {
    text-align: center;
    color: var(--teal-700);
    margin: 0;
}

.expert-tips-carousel {
    max-width: 1200px;
    width: 100%;

}

.expert-tips-carousel .slick-list {
    overflow: hidden;
}

.expert-tips-carousel .slick-track {
    gap: 32px;
    overflow: hidden;
    padding: 24px 0;
}

.expert-tips-carousel .slick-dots {
    margin-top: 64px;
    display: block;
}

@media screen and (max-width: 680px) {
    .expert-tips-wrap {
        gap: 16px;
    }
    .expert-tips-carousel {
        margin-bottom: 16px;
    }

    .expert-tips-carousel .slick-track {
        gap: 16px;
        overflow: hidden;
    }

    .expert-tips-wrap {}

    .expert-tips-wrap .st-btn {
        margin-top: 56px;
    }
}


.green-tab {
    display: flex;
    padding: 8px 16px;
    justify-content: flex-start;
    align-items: center;
    gap: 8px;
    align-self: stretch;
    
    border-radius: 12px 12px 0 0;
    border-bottom: 0.5px solid var(--teal-100, #A2DCCF);
    background: #ECF8F5;
}
.green-panel {
    display: flex;
    padding: 12px 12px 12px 24px;
    justify-content: space-between;
    align-items: center;
    flex: 1 0 0;
    
    border-radius: 12px;
    border: 0.5px solid var(--teal-100, #A2DCCF);
    background: var(--teal-50, #ECF8F5);
}

/*Blog Styles*/
.sb-blog {
    padding: 0;
}
.blog-categories {
    margin-top: 24px;
    gap: 8px;
    --justify: center;
}
.blog-categories li {
    list-style-type: none;
}
.blog-categories li a {
    display: flex;
    padding: 4px 12px;
    justify-content: center;
    align-items: center;
    gap: 8px;
    border-radius: 100px;
    background: var(--teal-50, #ECF8F5);
    color: #000;
    text-align: center;
    font-size: 13px;
    font-weight: 400;
    line-height: 160%;
}
li.active-category a {
    background: #50BEA4;
    backdrop-filter: blur(25px);
    color: #000;
}
.post-list-header {
    text-align: center;
    margin-top: 0px;
    margin-bottom: 48px;
}

.blog-featured-img {
    height: 216px;
    border-radius: 12px 12px 0 0;
    background-position: center center;
    background-size: cover;
}

.post-list-cat-wrap {
    align-items:stretch;
}

.blog-cont {
    padding: 24px;
}

.blog-cont {
    --headline-margin: 0 0 8px 0;
}

.article-body {
    border-radius: 12px;
    overflow: hidden;
    border: 0.5px solid var(--grey-300, #CCC);
    background: var(--grey-100, #F7F7F7);
    transition: all .5s ease;
    display: block;
}
.cat-list li {
    list-style-type: none;
    margin-top: 1rem;
    display: flex;
    padding: 4px 8px;
    justify-content: center;
    align-items: center;
    border-radius: 100px;
    background: #FFF;
}
.cat-list {
    display: flex;
    padding: 0;
    flex-wrap: wrap;
    --p-size: 11px;
    --p-margin: 0;
    gap: 4px;
}
.blog-item-bottom {
    --justify: space-between;
    --p-margin: 0;
    --align: center;
}

.blog-animation {
    line-height: 100%;
}

.blog-animation {
    --p-color: var(--teal-700);

    font-family: var(--font-headline);
    font-size: 20px;
    font-style: normal;
    font-weight: 600;
    line-height: 1;
    position: relative;
    top: 2.5px;
    border-bottom: 2px solid var(--teal-700);
}

.blog-animation span {
    font-family: var(--font-headline);
    font-size: 14px;
    font-style: normal;
    font-weight: 600;
    line-height: 1;
    flex-grow: 2;
}

.blog-animation svg {
    fill: var(--teal-700);
}

.post-list-item {
    border-radius: 12px;
}

.blog-image-wrap {
    background-color: white;
}

.next-prev-wrapper {
    --justify: center;
    margin-top: 48px;
    margin-bottom: 48px;
}

.blog-animation svg {

    transition: all .3s ease 0s;

}

.article-body:hover {
    border-radius: 12px;
    border: 0.5px solid var(--teal-100, #A2DCCF);
    background: var(--teal-50, #ECF8F5);
    box-shadow: 0px 0px 24px 0px rgba(0, 0, 0, 0.25);
    transition: all .3s ease 0s;
}



.article-body.featured-post {
    background-color: var(--teal-700);
    --headline-color: white;
    --p-color: white;
}
.article-body.featured-post .blog-animation span {
    color: white;
}
.article-body.featured-post .blog-animation svg {
    fill: white;
}
.article-body.featured-post:hover {
    background-color: var(--teal-900);
}


.cat-selector {
    width: 100%;
    padding: 14px;
    -webkit-appearance: none;
    border-radius: 4px;
    border: 1px solid var(--teal-700, #007D8B);
    font-family: var(--font-text);
    background: #FFF;
    color: var(--grey-500, #808080);
    font-size: 16px;
    font-weight: 400;
    line-height: 160%; /* 25.6px */
}
.selector-arrow {
    position: absolute;
    right: 12px;
    top: 24px;
    transition: all .25s ease 0s;
}
.selector-cont {
    position: relative;
    width: 100%;
    margin-top: 24px;
}
.selector-cont:focus-within .selector-arrow {
    rotate: 180deg;
}
.post-list-cat-wrap {
    align-items: stretch;
}

.resources-body .green-tab {
    margin-bottom: 24px;
}
.latest-resources .green-panel {
    margin-bottom: 32px;
}
.latest-resources .selector-cont {
    max-width: 344px;
    margin: 0;
}


.card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.explore-btn {
    background: none;
    color: #007d8b;
    font-size: 13px;
    border-bottom: 1px solid #007d8b;
    padding: 0 0 2px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.resources-top {
    gap: 32px;
}
.resources-top > .st-item {
    flex-basis: calc(50% - 16px)
}
.popular-resources .post-list-cat-wrap {
    display: flex;
    flex-direction: column;
    gap: 24px;
}
.popular-resources .post-list-item {
    display: flex;
}
.popular-resources .blog-image-wrap {
    width: 228px;
    height:148px;
    flex-shrink: 0;
}
.popular-resources .blog-image-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.popular-resources .blog-cont {
    flex: 1;
    padding: 24px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}
.popular-resources .blog-cont .st-h4 {
    margin-bottom: 12px;
}
.topics-section {
    text-align: center;
    margin-bottom: 64px;
    position: relative;
    padding: 24px 0;
}

.topics-title {
    font-size: 30px;
    color: #007d8b;
    margin-bottom: 24px;
}

.topic-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    position: relative;
}

.topic-btn {
    background: linear-gradient(to right, #007d8b, #00454d);
    color: white;
    font-size: 22px;
    font-weight: 600;
    padding: 32px 12px;
    border-radius: 8px;
    /*min-width: 500px;*/
    /*max-width: 800px;*/
    width: calc(50% - 4px);
    backdrop-filter: blur(25px);
}

.topic-btn:hover {
    opacity: 0.9;
}

.compass-icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 120px;
    height: 120px;
    border-radius: 50%;
    box-shadow: 0 0 50px rgba(0, 0, 0, 0.5);
}
@media screen and (max-width: 767px) {
    .topic-btn {
        font-size: 16px;
    }
    .compass-icon {
        width: 64px;
        height: 64px;
    }
}





/*blog post styles*/
article.post-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 64px;
    align-self: stretch;
}
.post-categories {
    display: flex;
    align-items: center;
    gap: 4px;
}
.post-cat {
    list-style-type: none;
    font-size: 14px;
    font-style: normal;
    font-weight: 700;
    line-height: 150%;
    color: var(--teal-900);
}
.post-cat a {
    font-size: 12px;
    font-style: normal;
    font-weight: 700;
    line-height: 150%;
    color: var(--teal-900);
}
.post-featured-img>div {
    width: 100%;
    max-width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    border-radius: 0 24px 24px 0;
}
.post-title-card {
    margin-top: 32px;
        padding-bottom: 64px;
}
.post-content {
    --headline-margin: 0 0 16px 0;
    --headline-color: var(--teal-900);

    display: flex;
    flex-direction: column;
}
.post-content img {
    max-width: 100%;
    border-radius: 24px;
    height: 100%;
}
.blog-post .post-content {
    --headline-margin: 40px 0 16px 0;

    max-width: 980px;
    margin: 0 auto;
    width: 100%;
}
.blog-post .post-content ul,
.blog-post .post-content ol {
    margin-left: 20px;
    margin-top: 16px;
    margin-bottom: 16px;
}
.blog-post .post-content li {
    margin-bottom: 8px;
}
.blog-post .post-content h2 {
    margin-top: 24px;
    margin-bottom: 16px;
}
.blog-post .post-content h3 {
    margin-top: 16px;
    margin-bottom: 16px;
}
.blog-post .post-content ol {
    margin-top: 16px;
    margin-bottom: 16px;
}
.blog-post .post-content p {
    margin-bottom: 16px;
    margin-top: 8px;
}
#page-blog .expert-tips-wrap h2 {
}

@media screen and (max-width: 1000px) {
    article.post-container {
        width: 100%;
    }
    .post-cat a {
        font-size: 10px;
    }
    .post-featured-img>div {
        width: calc(100vw - 24px);
        height: 234px;
        border-radius: 0 0 24px 24px;
    }
    .post-content {
        padding: 0 12px;
    }
    .sb-blog {
        padding: 0;
    }
}

/*end blog post styles*/





.st-teal-900 {
    color: var(--teal-900);
}




/*nearby areas*/
.nearby-areas.lightgreen-card-left .lightgreen-card {
    justify-content: flex-start;
}

.nearby-areas-map {
    min-height: 450px;

    align-self: stretch;
}

.nearby-areas-map .gm-style-iw-a {
    display: none;
}

.sb-googlemap img[alt="Google"] {
    transform: unset;
}

.nearby-areas-content h2 {
    color: var(--teal-900, #00454D);
    font-family: "Sofia Pro";
    font-size: 32px;
    font-style: normal;
    font-weight: 900;
    line-height: 110%;
    /* 35.2px */
    letter-spacing: -0.64px;
    margin-bottom: 32px;
}

.nearby-areas-content li {
    list-style-type: none;
}

.serviceArea__towns {
    max-height: 300px;
    overflow-y: scroll;
    pointer-events: auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    align-self: stretch;
    gap: 8px
}

.serviceArea__town a {
    color: var(--teal-700, #007D8B);
}

.serviceArea__towns::-webkit-scrollbar {
    width: 9px;
}

.serviceArea__towns::-webkit-scrollbar-track {
    width: 9px;
}

.serviceArea__towns::-webkit-scrollbar-thumb {
    border-radius: 10px;
    background-color: var(--teal-100);
    width: 9px;
}

.serviceArea__town {
    color: var(--teal-700, #007D8B);
    font-size: 17px;
    font-style: normal;
    font-weight: 400;
    line-height: 160%;
    /* 27.2px */
}

@media screen and (max-width: 900px) {

    .serviceArea__towns {
        max-height: 160px;
    }
}
    
/*Directory*/
.sb-directory {
    background-color: var(--grey-100);
    padding: 0;
}
/*.sb-directory .breadcrumbs {*/
/*    margin-top: 2rem;*/
/*}*/
.sb-directory h1 {
    color: var(--teal-700);
}
.lp-directory-header, .city-list {
    margin-top: 0;
}
.lp-directory-header-navigation, .lp-directory-search-form {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 12px;
}
.lp-directory-header-navigation {
    margin: 48px 0;
}
.lp-directory-header-navigation a {
    padding: 8px 24px;
    background-color: var(--lp-color-primary);
    color: white;
    text-decoration: none;
    font-weight: bold;
    border-radius: 50px;
    font-size: 14px;
    font-style: normal;
    font-weight: 900;
    line-height: normal;
}
.lp-directory-header-navigation a svg{
    fill: white;
    margin-left: 5px;
}
.lp-directory-header-navigation a:hover, .lp-directory-header-navigation a:focus {
    color: #000000;
    background-color: #FFDD00;
    border-color: #000000;
}
.lp-directory-header-navigation a:hover svg, .lp-directory-header-navigation a:focus svg {
    fill: black;
}
.lp-directory-search-form input, .lp-directory-search-form select {
    line-height: 1;
    font-family: var(--font-text);
    color: rgba(40, 51, 62, 0.75);
    font-size: 0.8125rem;
    font-style: normal;
    font-weight: 400;
    line-height: 160%; /* 1.3rem */
    display: flex;
    width: 15.625rem;
    padding: 0.75rem;
    justify-content: space-between;
    align-items: center;
    border-radius: 0.25rem;
    border: 1px solid var(--teal-700, #007D8B);
    background: #FFF;
}
.lp-directory-header-wrap {
    
    text-align: center;
}
.lp-directory-header-wrap .st-h1 {
    color: var(--teal-700);
}
.lp-directory-state-item h3 {
    border-bottom: 2px solid #EEF1F6;
}
.region-locations ul {
    margin: 0;
    padding: 0;
    display: flex;
    gap: 24px;
    flex-wrap: wrap;
}
.region-locations {
    margin-bottom: 48px;
}
.lp-zip {
    list-style-type: none;
    flex-basis: calc(33.333333% - 16px);
    padding: 1.5rem;
    border-radius: 0.5rem;
    border: 1px solid var(--grey-100, #F7F7F7);
    background: #FFF;
}
.lp-statelist-content .location-contact {
    margin-bottom: 16px;
}
.lp-statelist-content .location-address {
    margin-bottom: .25rem;
}
.lp-statelist-content .location-address,
.lp-statelist-content .location-phone {
    color: #000;
    font-size: 0.8125rem;
    font-style: normal;
    font-weight: 400;
    line-height: 160%; /* 1.3rem */
    position: relative;
    margin-left: 18px;
}

.lp-statelist-content .location-address svg,
.lp-statelist-content .location-phone svg {
    position: absolute;
    left: -18px;
    top: 5px;
}
.lp-statelist-content .location-phone {
    color: var(--teal-900);
    font-weight: 500;
}
.lp-location-info-name {
    color: #000;
    font-size: 1rem;
    font-style: normal;
    font-weight: 800;
    margin-bottom: 1rem;
    line-height: 125%; /* 1.25rem */
}
.directory-header {
    margin-bottom: 48px;
}
.location-links {
    display: flex;
    align-items: center;
    gap: 1rem;
    align-self: stretch;
}
@media screen and (max-width: 1000px){
    .lp-zip {
        flex-basis: calc(50% - 12px);
    }
    .state-list {
        padding-left: 0;
        padding-right: 0;
    }
}
@media screen and (max-width: 680px){
    .lp-zip {
        flex-basis: 100%;
    }
    .lp-directory-search-form {
        flex-direction: column;
        flex-wrap: wrap;
        width: 100%;
    }
    .lp-directory-search-state, .lp-directory-search-zip, #directory_id_zip, #directory_id_state {
        width: 100%;
        --var-p-margin: 0;
    }
    
    .location-links {
        flex-wrap: wrap;
    }
}
/*End Directory*/




/*AB Brands Carousel*/
.ab-brand-carousel {
}
.ab-brand-carousel .custom_paging {
    margin: 0;
    padding: 0;
    position: absolute;
    left: 50%;
    bottom: -2rem;
    transform: translateX(-50%);
}
.ab-brand-carousel .custom_paging li {
    display: none;
    font-size: 1.03125rem;
    color: #4A4A4A;
    font-weight: 800;
    line-height: 1;
}
.ab-brand-carousel .custom_paging li.slick-active {
    display: block;
}

.ab-brand-carousel .slick-arrow svg {
    stroke: unset;
    fill: var(--teal-300);
}
.ab-brand-carousel .slick-next {
    right: calc(50% - 45px);
    bottom: -2rem;
    top: unset;
    z-index: 5;
    transform: none;
}
.ab-brand-carousel .slick-prev {
    left: calc(50% - 45px);
    bottom: -2rem;
    top: unset;
    z-index: 5;
    transform: none;
}
.lp-ab-carousel-item a {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.brand-carousel .slick-track {
    display: flex;
    align-items: center;
}
@media only screen and (min-width: 992px) {
}


/*all carousels*/

.slick-dots {
    bottom: -55px;
}
.slick-dots li button {
    width: 1rem;
    height: 1rem;
    background: var(--teal-700);
    border: 1px solid var(--teal-700);
    border-radius: 100px;
}
.slick-dots li.slick-active button {
    background: transparent;
}


/*Reviews Carousel*/
.reviews {
    --var-sec-m-top: 0;
    --var-sec-p-bottom: 64px;
    padding: 3rem 2rem;
}
.btn-reviews {
    width: max-content;
}
.reviews .st-container {
    --var-justify: space-between;
    --var-align: center;
    --var-headline-margin: 0;
    --var-gap: 2rem;
    border-radius: 24px;
    background: var(--Linear-Horizontal, linear-gradient(90deg, #007D8B 0%, #00454D 100%));
    padding: 3rem;
}
.reviews-left {
    width: calc(33.3333% - 1rem);
    --var-headline-color: white;
    color: white;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.5rem;
    flex: 1 0 0;
} 
.reviews-left h1, .reviews-left .st-h1 {
    color: white;
    margin: 0;
}
.reviews-left h4 {
    color: white;
    margin: 0;
}
.review-btn-prev {
    left: 0;
}
.review-btn-next {
    right: 0;
}
.reviews-right {
    width: calc(66.666% - 1rem);
    
}


.review-carousel-wrap .slick-track {
    gap: 24px;
}
.review-item {
    display: flex;
    min-width: 12.5rem;
    padding: 1.5rem;
    flex-direction: column;
    align-items: center;
    gap: 24px;
    flex: 1 0 0;
    
    border-radius: 0.75rem;
    background: #FFF;
    height: 100%;
}
.review-bottom p {
    margin: 0;
}
.review-bottom .st-h4 {
    margin-bottom: 8px;
}
.review-title {
    --var-headline-margin: 0 0 12px 0;
}
.review-total {
   --var-gap: 16px;
   justify-content: space-between;
}
.review-total .st-p3 {
    --var-align: center;
    
    margin: 0;
    color: var(--grey-500);
}

.reviews .slick-dots li button {
    background: white;
    border: 1px solid white;
}
@media screen and (max-width: 992px){
    .reviews {
        padding: 40px 8px;
    }
    .reviews .st-container {
       flex-direction: column;
        align-items: center;
        gap: 32px;
        background: var(--Vertical-Linear, linear-gradient(180deg, #007D8B 0%, #00454D 100%));
        padding: 40px 24px 88px 24px;
    }
    .reviews-left,
    .reviews-right {
        width: 100%;
        align-items: center;
        gap: 1rem;
    }
    
    .reviews-left h1, .reviews-left .st-h1 {
        text-align: center;
    }
    .reviews-left h4 {
        text-align: center;
    }
    .review-carousel-wrap .slick-track {
        gap: 16px;
    }
    .review-carousel-wrap {
        padding: 0;
    }
    .carousel-arrows {
        display: none;
    }
}
@media screen and (max-width: 680px){
}

@media screen and (max-width: 550px){
    .btn-reviews {
        width: 100%;
        justify-self: stretch;
    }
    .reviews-left .st-flex {
        width: auto;
    }
    .review-content p {
        font-size: 13px;
    }

}
/*End reviews carousel*/


    .reviews .slick-arrow {
        width: 2.75rem;
        height: 2.75rem;
        transform: rotate(0);
        aspect-ratio: 1/1;
        fill: var(--teal-50, #ECF8F5);
        padding: 0;
    }
    .reviews .review-btn-prev.slick-arrow {
        padding: 0;
        transform: rotate(180deg);
    }
    
    
        /*Contact Us page*/
.contact-us.banner .banner-left {
  align-items: center;
}

.icon-container {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background-color: white;
  border: 1.5px solid #50bea4;
  display: flex !important;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.phone-section {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}

.phone-text {
  font-size: 24px;
  color: #00454d;
}

.phone-number {
  font-size: 22px;
  font-weight: 600;
  color: #007d8b;
  text-decoration: none;
}

.phone-number:hover {
  background-color: rgba(0, 125, 139, 0.1);
}

.cards-container {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
  margin-bottom: 48px;
}

.banner-card {
  background-color: #a2dccf;
  border: 0.5px solid #50bea4;
  border-radius: 16px;
  padding: 20px 24px;
  text-align: center;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  text-decoration: none;
  color: inherit;
  display: block;
  display: flex;
  text-align: center;
  justify-content: center;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

.banner-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 125, 139, 0.15);
}

.main-card .icon {
  width: 80px;
  height: 80px;
  background-color: white;
  border: 1.5px solid #50bea4;
  border-radius: 50%;
  margin: 0 auto 16px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.main-card .icon svg {
  width: 40px;
  height: 40px;
  fill: #007d8b;
}

.main-card-title {
  font-size: 22px;
  font-weight: 600;
  color: #00454d;
  margin-bottom: 2px;
}

.secondary-cards {
  display: flex;
  gap: 16px;
}

.secondary-card {
  flex: 1;
}

.secondary-card .icon {
  width: 56px;
  height: 56px;
  background-color: white;
  border: 1.5px solid #50bea4;
  border-radius: 50%;
  margin: 0 auto 16px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.secondary-card .icon svg {
  width: 24px;
  height: 24px;
  fill: #007d8b;
}

.secondary-card-title {
  font-size: 18px;
  font-weight: 700;
  color: #00454d;
}

@media (max-width: 768px) {
  .banner .st-d1 {
    font-size: 48px;
  }
  
  .phone-text {
    font-size: 20px;
  }
  
  .phone-number {
    font-size: 20px;
  }
}

@media (max-width: 480px) {
  .main-card-title {
    font-size: 18px;
  }
  
  .secondary-card-title {
    font-size: 16px;
  }
  
  .secondary-cards {
    flex-direction: column;
  }
  
  .phone-section {
    flex-direction: column;
    gap: 8px;
  }
}
    .st-black {
    color: #000;
}
.st-grey-900 {
    color: var(--grey-900)!important;
}
.st-teal-700 {
    color: var(--teal-700);
}
.st-teal {
    color: var(--teal-700);
}
.st-teal-bg {
    background-color: var(--teal-700);
}
.st-deepteal {
    color: var(--teal-900);
}
.st-deepteal-bg {
    background-color: var(--teal-900);
}
.st-white {
    color: #fff!important;
}
.st-lightteal {
    color: var(--teal-100);
}
.st-lightteal-bg {
    background-color: var(--teal-100);
}
.st-paleteal {
    color: var(--teal-50);
}
.st-paleteal-bg {
    background-color: var(--teal-50);
}

</style>

<link rel="preconnect" href="https://use.typekit.net">
<link rel="preload" href="https://use.typekit.net/afn0wzt.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://use.typekit.net/afn0wzt.css"></noscript>


<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.12/handlebars.min.js"></script>


{#

<script id="template-geoip-location" type="text/x-handlebars-template">
{% raw %}
    <a class="st-h5 geo-localname" href="{{location.location_url}}"><span>{{location.location_display_name}}</span></a>
{% endraw %}
</script>

<script id="template-geoip-btn-v1" type="text/x-handlebars-template">
{% raw %}
    <a class="btn" href="{{location.location_url}}#trigger_schedule"><span>Get a Free Quote</span></a>
{% endraw %}
</script>

<script id="template-geoip-btn-v2" type="text/x-handlebars-template">
{% raw %}
    <a class="btn v2" href="{{location.location_url}}#trigger_schedule"><span>Get a Free Quote</span></a>
{% endraw %}
</script>
#}

<!-- ServiceTitan DNI 
<script>
    dni = (function(q,w,e,r,t,y,u){q['ServiceTitanDniObject']=t;q[t]=q[t]||function(){
        (q[t].q=q[t].q||[]).push(arguments)};q[t].l=1*new Date();y=w.createElement(e);
        u=w.getElementsByTagName(e)[0];y.async=true;y.src=r;u.parentNode.insertBefore(y,u);
        return q[t];
    })(window,document,'script','https://static.servicetitan.com/marketing-ads/dni.js','dni');
    dni('init', '4061878556');
    document.addEventListener('DOMContentLoaded', function() { dni('load'); }, false);
</script>
<!-- ServiceTitan DNI -->
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":x-connect: :star: Boost Days - What's on this week in Canberra! :star: :x-connect:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Happy Monday Canberra! \n\nWe’ve got an exciting week ahead as the *Hackathon* kicks off across Xero! :xero-hackathon:\n\n*See below for what's in store:* 👇"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":calendar-date-22: *Wednesday, 22nd October*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":lunch: *Hackathon Lunch:* Provided in our suite from *12:00pm*."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":apple: *Snacks*\n\nKeep your creativity flowing! Healthy snacks will be available in the *Kitchen* throughout the week."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*What else :heart:*\n\nStay tuned to this channel, and make sure you’re subscribed to the <https://calendar.google.com/calendar/u/0/r?cid=Y19jYzU3YWJkZTE4ZTE0YzVlYTYxMGU4OThjZjRhYWQ0MTNhYmIzMDBjZjBkMzVlNDg0M2M5NDQ4NDk3NDAyYjkyQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20/|*Canberra Social Calendar*> for all upcoming events."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Let’s power up, Canberra! ⚡\n\nLove,\nWX :party-wx:"
			}
		}
	]
}
https://www.facebook.com/merse.lopez
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>🔬 Aropha AI Biodegradation Prediction Platform</title>
  <style>
    /* General Styles */
    body {
      font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
      margin: 0;
      padding: 0;
      background-color: #2C4555; /* Matching background */
      color: #ffffff;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      height: 100vh;
    }
 
    .container {
      background: #1E2A34;
      padding: 30px;
      border-radius: 10px;
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
      width: 90%;
      max-width: 400px;
      text-align: center;
    }
 
    /* Logo */
    .logo {
      width: 200px;
      margin-bottom: 20px;
    }
 
    h2 {
      margin-bottom: 20px;
      font-size: 24px;
      color: #ffffff;
    }
 
    label {
      display: block;
      margin: 10px 0 5px;
      text-align: left;
      font-weight: bold;
      color: #ffffff;
    }
 
    input {
      width: 100%;
      padding: 10px;
      margin-bottom: 10px;
      border: 1px solid #ccc;
      border-radius: 5px;
      background: #24343D;
      color: #ffffff;
      border: none;
      outline: none;
    }
 
    input::placeholder {
      color: #b0b8bf;
    }
 
    .error {
      color: red;
      font-size: 14px;
      display: none;
    }
 
    button[type="submit"] {
      width: 100%;
      background-color: #007BFF;
      color: white;
      border: none;
      padding: 12px;
      border-radius: 5px;
      cursor: pointer;
      font-size: 16px;
    }
 
    button[type="submit"]:hover {
      background-color: #0056b3;
    }
 
    /* Modal Styles */
    .modal {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background: rgba(0, 0, 0, 0.6);
      display: none;
      justify-content: center;
      align-items: center;
      z-index: 1000;
    }
 
    .modal-content {
      background: #1E2A34;
      padding: 20px;
      border-radius: 8px;
      max-width: 500px;
      width: 90%;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
      text-align: center;
      color: #ffffff;
    }
 
    .close-button {
      margin-top: 20px;
      padding: 10px 20px;
      border: none;
      background: #007BFF;
      color: white;
      border-radius: 5px;
      cursor: pointer;
    }
 
    .close-button:hover {
      background: #0056b3;
    }
 
    /* Additional Info */
    .info {
      text-align: center;
      margin-top: 20px;
      font-size: 14px;
      color: #b0b8bf;
    }
 
    .info a {
      color: #007BFF;
      text-decoration: none;
    }
 
    .info a:hover {
      text-decoration: underline;
    }
 
    /* Footer Styles */
    footer {
      text-align: center;
      padding: 10px;
      color: #b0b8bf;
      font-size: 14px;
    }
 
    footer a {
      color: #ffffff;
      text-decoration: underline;
    }
  </style>
</head>
<body>
 
  <div class="container">
    <img src="https://www.users.aropha.com/static/assets/img/logo-rectangular.png" alt="Aropha Logo" class="logo">
    <h2>Create an Account</h2>
    <form id="signup-form">
      <label for="first_name">First Name</label>
      <input type="text" id="first_name" name="first_name" placeholder="Optional">
 
      <label for="last_name">Last Name</label>
      <input type="text" id="last_name" name="last_name" placeholder="Optional">
 
      <label for="email">Email</label>
      <input type="email" id="email" name="email" required>
 
      <label for="password">Password</label>
      <input type="password" id="password" name="password" required>
 
      <label for="confirm_password">Re-enter Password</label>
      <input type="password" id="confirm_password" name="confirm_password" required>
      <p class="error" id="error-message">Passwords do not match.</p>
 
      <button type="submit">Sign Up</button>
    </form>
    <!-- Additional Info for Password Reset -->
    <div class="info">
      <p>
        Forgot your password? Reset it <a href="https://www.users.aropha.com/login.html" target="_blank">here</a>.
      </p>
    </div>
  </div>
 
  <!-- Modal for displaying messages from your endpoint -->
  <div id="messageModal" class="modal">
    <div class="modal-content">
      <p id="modalMessage"></p>
      <button class="close-button" id="closeModal">Close</button>
    </div>
  </div>
 
  <footer>
    <p>
      Follow us on <a href="https://www.linkedin.com/company/aropha/">LinkedIn</a> | &copy; 2025 Aropha Inc. All Rights Reserved.
    </p>
  </footer>
 
  <script>
    document.getElementById("signup-form").addEventListener("submit", function(event) {
    event.preventDefault(); // Prevent default form submission
 
    var password = document.getElementById("password").value;
    var confirmPassword = document.getElementById("confirm_password").value;
    var errorMessage = document.getElementById("error-message");
 
    if (password !== confirmPassword) {
        errorMessage.style.display = "block";
        return;
    } else {
        errorMessage.style.display = "none";
    }
 
    let formData = new FormData(document.getElementById("signup-form"));
 
    fetch('https://modelserver.aropha.com/register', {
        method: 'POST',
        body: formData
    })
    .then(async response => {
        let responseData;
        try {
            responseData = await response.json(); // Try parsing as JSON
        } catch (error) {
            responseData = await response.text(); // Fallback for non-JSON responses
        }
 
        console.log("Server response:", responseData); // Debugging log
 
        let message = "";
        if (typeof responseData === "object") {
            message = responseData.detail || responseData.message || JSON.stringify(responseData, null, 2);
        } else {
            message = responseData;
        }
 
        document.getElementById("modalMessage").textContent = message;
        document.getElementById("messageModal").style.display = "flex";
    })
    .catch(error => {
        console.error("Fetch error:", error);
        document.getElementById("modalMessage").textContent = "An error occurred. Please try again.";
        document.getElementById("messageModal").style.display = "flex";
    });
});
 
// Close modal
document.getElementById("closeModal").addEventListener("click", function() {
    document.getElementById("messageModal").style.display = "none";
});
 
  </script>
</body>
</html>
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xero-hackathon: Let’s Celebrate Our Hackathon Legends! :xero-hackathon:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "The Hackathon may be over, but the innovation continues.\n\nJoin us for our *Hackathon Social Happy Hour* to celebrate the incredible ideas, teamwork, and creativity that came to life during Hackathon Week."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":celebrate: *Hackathon Social Happy Hour*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "📅 *[Insert date/time/location/food/drinks]*\n\nCome along to celebrate, reconnect, share highlights and toast to another successful Hackathon."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Thank you to every Xero who participated. \n\nYour energy and ideas continue to power up Xero and our customers. :rocket:💙\n\nSee you there!\n Love, \n\nWX :party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "⚡ We’re halfway through Hackathon Week, Wellington! ⚡",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "What an incredible start it has been. The energy, ideas, and teamwork across the office have been inspiring to see. :xero-hackathon: 💙"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Here’s a reminder of what’s happening for the rest of the week* 👇"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "💡 *Spaces and Snacks*\n\nOur Hackathon spaces *[Insert names]* remain open and ready for your collaboration sessions. \n\nFor all Hackathon participants, don’t forget to grab some snacks and juices located on *Level 3* to keep your creativity flowing."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: :lunch: *[Insert Boost Hackathon Meal if applicable to your location]*\n\nJoin us for a Hackathon Boost *[Insert Breakfast / Lunch ]* at *[Insert time and location]*.Come together with fellow Hackers, share ideas, and connect over this special meal to celebrate Hackathon Week."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Stay Connected :speech_balloon:*\n\nJoin <https://join.slack.com/share/enQtOTY1NTEzNTcwODQ3MC1lYTI0Njg1M2MxY2ZlODE5ODdlOWNkMmI2NmY2YTViOTc2NGQ0OWQ5ZjU1ZjA2NzJkODY5NjM2ODM2NDE4OTQ0 /|*#xero-hackathon*> for global updates, inspiration, and stories from other offices."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*What else :stay-tuned:*\n\nStay tuned to this channel, and make sure you’re subscribed to the <https://calendar.google.com/calendar/u/0/r?cid=Y180Y2UwNGEwNjY2YjI5NDNlZmEwZGM4YWI5MTdjMTcyNDE2NzVhZmQ5MTllN2EwZjg5NTg5OTVkMTA2MDAzZmEwQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20/|*Wellington Social Calendar*> for all upcoming events."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Keep the ideas coming and continue to power up innovation and customer delight. :ai: 💫\n\nLove,\n\nWX :Party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":xero-hackathon: :xero-hackathon: :xero-hackathon: Get Ready Xeros: Hackathon is BACK! :xero-hackathon::xero-hackathon::xero-hackathon:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Xeros! *[Insert location]*\n\nOur October Hackathon kicks off next week starting on *Monday 20 to Friday 24 October*.\n\n:battery: The theme is *“Power up with AI, and unlock customer delight!”*\n\nThis Hackathon is all about powering up our customers and our Xeros through AI, innovation, and connection."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Here’s what we’ve got lined up for the week:*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":croissant: *Hackathon Boost [Breakfast/Lunch] on Wednesday 22nd October at 12pm*\n*[Insert and edit meal type/day/date/time/location]*\nJoin us for a shared meal in the *Wominjeka Breakout Space* to connect with fellow Hackers, recharge, and get inspired."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":brainstorm: *Brainstorming Booths and Breakout Spaces*\nDedicated Hackathon spaces have been booked to support your collaboration and creative sessions. *[Insert specific space names or levels if applicable to your location]*\n\n:teamworkhands1: *Hackathon Breakout Space* - Level 2 underneath the All Hands Space\n:bulb: *Brainstorming Booths* - Level 2 underneath the All Hands Space"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":apple: *Snacks and Juices*\nKeep those ideas flowing with snacks and juices available in the *Level 3 kitchen* to Hackathon participants all week. *[Insert specific location for snacks and juices if applicable to your location]*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":speech_balloon: *Stay Connected*\nJoin the conversation in <https://join.slack.com/share/enQtOTY1NTEzNTcwODQ3MC1lYTI0Njg1M2MxY2ZlODE5ODdlOWNkMmI2NmY2YTViOTc2NGQ0OWQ5ZjU1ZjA2NzJkODY5NjM2ODM2NDE4OTQ0 /|*#xero-hackathon*> to stay up to date, share ideas, and see what’s happening globally."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Let’s power up, Xeros! :zap: \nLove,\nWX :party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":x-connect: :star: Boost Days – What’s on this week in Melbourne !:star: :x-connect:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Melbourne,\nWe’ve got an exciting week ahead as the *Hackathon* kicks off across Xero! :xero-hackathon:\n\n*See below for what’s in store:* 👇"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":calendar-date-22: *Wednesday, 22nd October*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Xero Café* – Café-style beverages and sweet treats.\n:cookie: *Barista Special* – Caramel Cappuccino\n:burger: *Hackathon Boost Lunch* - Enjoy delicious *Bot Burgers* from *12.00pm* in the *Wominjeka Breakout Space, Level 3*.\n\nCome together with fellow Hackers, share ideas, and fuel up for the days ahead."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":calendar-date-23: *Thursday, 23rd October*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Xero Café* – Café-style beverages and sweet treats.\n:cookie: *Sweet Treats* – Choc Chip Cookies & Caramel Slice\n:breakfast: *Boost Breakfast* – Provided from *8:30am* in the *Wominjeka Breakout Space, Level 3*."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":brain: *Brainstorming Booths + Breakout Spaces*\n\nThe following spaces have been reserved for Hackathon teams to collaborate and create:\n• Wominjecka\n• TBC\n• TBC"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":apple: :juicebox: *Snacks + Juices*\n\nKeep your creativity flowing! Healthy snacks and juices will be available in the *Level 3 kitchen* throughout the week."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":speech_balloon: *Stay Connected*\n\nJoin <https://join.slack.com/share/enQtOTY1NTEzNTcwODQ3MC1lYTI0Njg1M2MxY2ZlODE5ODdlOWNkMmI2NmY2YTViOTc2NGQ0OWQ5ZjU1ZjA2NzJkODY5NjM2ODM2NDE4OTQ0 /|*#xero-hackathon*> for global updates, inspiration, and stories from other offices."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*What else :heart:*\n\nStay tuned to this channel, and make sure you’re subscribed to the <https://calendar.google.com/calendar/u/0/r?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t /|*Melbourne Social Calendar*> for all upcoming events."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Let’s power up, Melbourne! ⚡\n\nLove,\nWX :party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":x-connect: :star: Boost Days - What's on this week in Hawkes Bay! :star: :x-connect:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Happy Monday Ahuriri! \n\nWe’ve got an exciting week ahead as the *Hackathon* kicks off across Xero! :xero-hackathon:\n\n*See below for what's in store:* 👇"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":calendar-date-22: *Wednesday, 22nd October*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Café Partnership:* Enjoy coffee and café-style beverages from our cafe partner, *Adoro*, located in our office building *8:00am - 11:30am*.\n\n:croissant: *Hackathon Hackfast Breakfast:* Provided by *Design Cuisine* from *9:30am-10:30am* in the *Kitchen*."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":calendar-date-23: *Thursday, 23rd October*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Café Partnership:* Enjoy coffee and café-style beverages from our cafe partner, *Adoro*, located in our office building *8:00am - 11:30am*.\n\n:green_salad: *Lunch:* Provided by *Design Cuisine* from *12:30pm-1:30pm* in the *Kitchen*."
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":brain: *Brainstorming Booths + Breakout Spaces*\n\nThe following spaces have been reserved for Hackathon teams to collaborate and create:\n• TBC\n• TBC"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":apple: :juicebox: *Snacks + Juices*\n\nKeep your creativity flowing! Healthy snacks and juices will be available in the *Kitchen* throughout the week."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*What else :heart:*\n\nStay tuned to this channel, and make sure you’re subscribed to the <https://calendar.google.com/calendar/u/0/r?cid=eGVyby5jb21fbXRhc2ZucThjaTl1b3BpY284dXN0OWlhdDRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ/|*Hawkes Bay Social Calendar*> for all upcoming events."
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Let’s power up, Hawkes Bay! ⚡\n\nLove,\nWX :party-wx:"
			}
		}
	]
}
Class = int(input("Enter your class : "))
if Class < 10 and Class>8:
    print("You are Below 10 pls wait 1 year")
elif Class ==10:
    print("Your are in 10th Best of luck Prepare Work Hard")
elif Class >10 :
    print("Congratulation You are 10th passed")
else:
    print("Invalid Entry")
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: What's on in Melbourne this week! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n Hey Melbourne, happy Monday and hope you all had a Fab weekend! Please see below for what's on this week. "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero Café :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n :caramel-slice: *Sweet Treats*: Selection of Cinnamon Donuts & Sponge roll\n\n :coffee: White mocha"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 10th October :calendar-date-8:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " \n\n:indiajones: *Lunch*: Join us at 12.00pm as we head off to Indian for Lunch. Menu is in the :thread: "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 12th October :calendar-date-12:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " :croissant: Join us for some yummy breakfast featuring our pancake special from *8.30am - 10.30am* in the *Wominjeka Breakout Space*. Menu is in the :thread:  "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " What else :heart: \n Stay tuned to this channel, and make sure you're subscribed to the <https://calendar.google.com/calendar/u/0?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Melbourne Social Calendar*> :party-wx:"
			}
		}
	]
}
Guía Detallada para Avanzar en PostgreSQL
Vamos a explorar cada punto con explicaciones claras y muchos ejemplos prácticos para que aprendas PostgreSQL a fondo.

1. Configuración avanzada del servidor y optimización
PostgreSQL usa un archivo llamado postgresql.conf para ajustar su comportamiento.

listen_addresses: en qué interfaces de red escucha; por defecto es todas ('*').

port: puerto estándar es 5432.

max_connections: máximo de conexiones concurrentes; por ejemplo, 100.

shared_buffers: memoria usada para caching, se recomienda ~25% de RAM.

work_mem: memoria para operaciones de ordenamiento y joins; un valor típico es 8MB.

maintenance_work_mem: para mantenimiento como VACUUM.

effective_cache_size: estima la caché del sistema operativo para planificación de consultas.

Ejemplo básico de configuración:
text
listen_addresses = '*'
port = 5432
max_connections = 100
shared_buffers = 1024MB
work_mem = 8MB
maintenance_work_mem = 256MB
effective_cache_size = 2048MB
Para aplicar cambios: generalmente con SELECT pg_reload_conf(); o reiniciar el servidor.

2. Tipos de datos complejos y funciones avanzadas
PostgreSQL soporta tipos avanzados:

ARRAY: almacenar listas en una columna.

JSON / JSONB: datos estructurados para aplicaciones web.

hstore: pares clave-valor.

UUID: identificadores únicos.

Tipos geométricos, rango, XML, y más.

Ejemplo con JSONB:
sql
CREATE TABLE productos (
  id SERIAL PRIMARY KEY,
  info JSONB
);

INSERT INTO productos (info) VALUES ('{"nombre": "Manzana", "precio": 1.25}');

-- Consultar precio
SELECT info->>'precio' AS precio FROM productos;
Funciones avanzadas incluyen agregados personalizados, funciones de ventana, expresiones regulares, y SQL/PL.

3. Índices, vistas, secuencias y otros objetos
Índices aceleran búsquedas:

sql
CREATE INDEX idx_nombre ON empleados(nombre);
Vistas Son consultas guardadas:

sql
CREATE VIEW vista_ventas AS
SELECT cliente, SUM(total) AS total_ventas FROM ventas GROUP BY cliente;
Secuencias para números automáticos:

sql
CREATE SEQUENCE seq_pedido START 1;
SELECT nextval('seq_pedido');
Otros objetos: funciones, triggers, esquemas.

4. Consultas complejas y optimización
Uso de JOINs para unir tablas:

sql
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
JOIN departamentos d ON e.departamento_id = d.id;
Subconsultas:

sql
SELECT nombre FROM empleados WHERE salario > (SELECT AVG(salario) FROM empleados);
Funciones de ventana:

sql
SELECT nombre, salario, RANK() OVER (ORDER BY salario DESC) FROM empleados;
Optimización:

Usa EXPLAIN para ver el plan de ejecución.

Crea índices apropiados.

Evita SELECT * si no necesitas todas las columnas.

Usa LIMIT y OFFSET para paginación.

5. Seguridad, roles y autenticación
Crear roles:

sql
CREATE ROLE lector LOGIN PASSWORD 'pass123';
GRANT SELECT ON empleados TO lector;
Revocar permisos:

sql
REVOKE SELECT ON empleados FROM lector;
Configuración en pg_hba.conf controla qué hosts y con qué métodos pueden conectar.

6. Replicación, backups y recuperación
Replicación: permite tener copias de la base para alta disponibilidad.

Configurar wal_level, max_wal_senders, hot_standby.

Replica física o lógica.

Backups:

pg_dump para backups lógicos.

pg_basebackup para copias físicas.

Recuperación:

Restaurar con pg_restore o psql.

Point-In-Time Recovery configurando WAL.

7. PL/pgSQL: procedimientos almacenados y triggers
Crear función:

sql
CREATE FUNCTION suma(a INT, b INT) RETURNS INT AS $$
BEGIN
  RETURN a + b;
END;
$$ LANGUAGE plpgsql;
Crear trigger para log de inserciones:

sql
CREATE TABLE log_inserciones (id SERIAL, tabla TEXT, fecha TIMESTAMP);

CREATE FUNCTION log_insert() RETURNS trigger AS $$
BEGIN
  INSERT INTO log_inserciones(tabla, fecha) VALUES (TG_TABLE_NAME, now());
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trig_insert
  AFTER INSERT ON empleados
  FOR EACH ROW EXECUTE FUNCTION log_insert();
8. Integración y gestión de rendimiento
Pools de conexiones con PgBouncer para manejar muchas conexiones.

Monitoreo con herramientas como pg_stat_activity, pg_stat_statements.

Profiling y optimización con EXPLAIN ANALYZE.

Integración en aplicaciones con drivers (psycopg2 para Python, pg JDBC, etc).

Ajuste de parámetros según uso para mejorar rendimiento.

Conclusión
Esta guía te da los fundamentos y ejemplos necesarios para avanzar hacia un dominio completo de PostgreSQL. Para cada punto, te recomiendo practicar en un entorno real y usar documentación oficial para profundizar según tus necesidades.
1. DDL (Lenguaje para crear y modificar la estructura)
¿Qué hace?
Construye y cambia las "casas" donde guardamos datos: tablas, bases de datos, índices.

Ejemplos:
Crear una base de datos:

sql
CREATE DATABASE mi_tienda;
Crear una tabla con columnas y llaves primarias:

sql
CREATE TABLE empleados (
  id SERIAL PRIMARY KEY,
  nombre VARCHAR(100),
  salario NUMERIC(10,2),
  departamento VARCHAR(50)
);
Modificar una tabla para agregar una columna:

sql
ALTER TABLE empleados ADD COLUMN fecha_ingreso DATE;
Eliminar una tabla:

sql
DROP TABLE empleados;
Vaciar toda la información de una tabla pero mantenerla:

sql
TRUNCATE TABLE empleados;
2. DML (Lenguaje para manipular datos)
¿Qué hace?
Pone, cambia o borra información dentro de las tablas.

Ejemplos:
Agregar un dato (insertar):

sql
INSERT INTO empleados (nombre, salario, departamento) VALUES ('Ana', 3000, 'Ventas');
Modificar un dato:

sql
UPDATE empleados SET salario = 3200 WHERE nombre = 'Ana';
Borrar un dato:

sql
DELETE FROM empleados WHERE nombre = 'Ana';
3. DQL (Lenguaje para consultar datos)
¿Qué hace?
Hace preguntas para ver qué datos hay dentro.

Ejemplos:
Traer todos los datos:

sql
SELECT * FROM empleados;
Traer solo el nombre y salario de empleados de ventas:

sql
SELECT nombre, salario FROM empleados WHERE departamento = 'Ventas';
Ordenar empleados por salario de más alto a bajo:

sql
SELECT nombre, salario FROM empleados ORDER BY salario DESC;
4. TCL (Lenguaje para controlar transacciones)
¿Qué hace?
Controla guardar o deshacer varios cambios juntos para que no se pierdan datos.

Ejemplos:
Empezar la transacción manual:

sql
BEGIN;
Guardar cambios:

sql
COMMIT;
Deshacer cambios:

sql
ROLLBACK;
5. DCL (Lenguaje para controlar permisos)
¿Qué hace?
Decide quién puede ver o cambiar cosas.

Ejemplos:
Dar permiso para usar una tabla:

sql
GRANT SELECT ON empleados TO usuario;
Quitar permiso:

sql
REVOKE SELECT ON empleados FROM usuario;
Sobre relaciones entre tablas
Se definen en DDL con claves primarias y foráneas para unir tablas, por ejemplo:

sql
CREATE TABLE departamentos (
  id SERIAL PRIMARY KEY,
  nombre VARCHAR(50)
);

CREATE TABLE empleados (
  id SERIAL PRIMARY KEY,
  nombre VARCHAR(100),
  departamento_id INT,
  CONSTRAINT fk_departamento FOREIGN KEY (departamento_id) REFERENCES departamentos(id)
);
Para manipular datos que respetan esa relación usamos DML.

Para consultar usando esas relaciones usamos DQL (con JOIN).

Para asegurar cambios correctos usamos TCL.

Para manejar permisos sobre estas relaciones usamos DCL.

¿Qué es SQL?
SQL es un lenguaje que usamos para hablar con las bases de datos, que son como cajas donde guardamos mucha información ordenada.

Las partes importantes de SQL, como bloques de LEGO:
1. DDL — Lenguaje para construir y cambiar la casa (estructura)
Aquí creamos las tablas donde guardamos cosas, como listas o cajones.

También podemos cambiar estas tablas o borrarlas.

Ejemplos: crear una tabla, cambiarla, borrarla.

2. DML — Lenguaje para poner y quitar cosas dentro de la casa (datos)
Aquí metemos información nueva, cambiamos la que ya hay, o borramos.

Ejemplos: agregar un amigo nuevo, cambiar su teléfono, borrar un amigo antiguo.

3. DQL — Lenguaje para preguntar qué hay adentro
Aquí hacemos preguntas para ver qué datos tenemos.

Usamos estas consultas para encontrar solo lo que queremos dentro de las tablas.

4. TCL — Lenguaje para asegurar que tus cambios sean completos o puedas volver atrás
Esto ayuda a guardar o cancelar cambios grandes para que todo esté bien.

5. DCL — Lenguaje para dar permisos y seguridad
Decide quién puede entrar a la casa, quién puede cambiar cosas y quién solo puede mirar.

Las relaciones entre tablas
Las tablas pueden estar unidas por relaciones, como amigos que tienen un vínculo.

Estas relaciones se crean con reglas (claves primarias y foráneas) y se construyen usando DDL.

Luego, con preguntas (DQL), juntamos información de diferentes tablas con estas relaciones.

Resumen rápido para usar PostgreSQL:
Construye tu espacio (DDL): crea tablas para guardar información.

Pon datos dentro (DML): agrega o cambia información en las tablas.

Pregunta datos (DQL): busca y mira la información que necesitas.

Cuida tus pasos (TCL): guarda tus cambios o deshazlos si algo sale mal.

Protege tu casa (DCL): controla quién puede ver o cambiar las cosas.

Con estos pasos entenderás cómo funciona y podrás dominar SQL en PostgreSQL, usando cada parte según lo que quieras hacer. ¡Es como jugar con bloques para construir y manejar tu propia base de datos! Sigue practicando construyendo, poniendo datos y preguntando para aprender rápido.

Pon
El Data Query Language (DQL) en SQL se utiliza para consultar y recuperar datos de las bases de datos. Su función principal es obtener información almacenada en las tablas mediante comandos de consulta, siendo el más común el comando SELECT.

Ejemplos de DQL en PostgreSQL:
Consultar todos los datos de una tabla:
sql
SELECT * FROM empleados;

Consultar datos con condición específica:
sql
SELECT nombre, salario FROM empleados WHERE departamento = 'Ventas';

Consultar con ordenamiento:
sql
SELECT nombre, salario FROM empleados ORDER BY salario DESC;

Consultar datos con funciones agregadas:
sql
SELECT departamento, AVG(salario) AS salario_promedio FROM empleados GROUP BY departamento;

Consultar datos con rangos de fechas:
sql
SELECT * FROM ventas WHERE fecha BETWEEN '2024-01-01' AND '2024-12-31';

Uso de expresiones CASE (condicionales):
sql
SELECT nombre,
  CASE 
    WHEN salario > 50000 THEN 'Alto'
    ELSE 'Medio'
  END AS categoria
FROM empleados;
En resumen, DQL es el lenguaje para formular consultas que permiten extraer datos específicos o resumidos de las bases de datos, sobre todo usando SELECT y sus variantes en PostgreSQL.
El Data Definition Language (DDL) en SQL se utiliza para definir y modificar la estructura de los objetos en una base de datos, como bases de datos, tablas, esquemas, índices, etc. Es el lenguaje que permite crear, alterar y eliminar la estructura de los datos.

En PostgreSQL, las operaciones comunes que se realizan con DDL son:

Crear bases de datos con CREATE DATABASE.

Crear tablas con CREATE TABLE.

Modificar tablas con ALTER TABLE.

Eliminar tablas con DROP TABLE.

Limpiar datos de tablas con TRUNCATE TABLE.

Ejemplos en PostgreSQL
Crear una base de datos:

sql
CREATE DATABASE myhotels;
Crear una tabla con una llave primaria autoincremental:

sql
CREATE TABLE hotels (
  id serial PRIMARY KEY,
  name varchar(255) NOT NULL,
  stars int
);
Modificar una tabla para agregar una columna:

sql
ALTER TABLE hotels ADD COLUMN address varchar(255);
Eliminar una tabla:

sql
DROP TABLE hotels;
Vaciar una tabla (elimina todas las filas pero mantiene la estructura):

sql
TRUNCATE TABLE hotels;
En resumen, DDL permite definir y modificar la estructura de la base de datos y sus objetos, facilitando la creación y administración del esquema de datos en PostgreSQL.

# AHT20 (0x38) + BMP280 (0x77) on Raspberry Pi Pico, I2C0 (GP8 SDA, GP9 SCL)
from machine import Pin, I2C
from time import sleep

# ---------- I2C ----------
i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=100000)
AHT_ADDR = 0x38
BMP_ADDR = 0x77      # your chip id 0x58 confirmed BMP280 at 0x77

# --------- AHT20 (T + RH) ----------
def aht20_init():
    try:
        i2c.writeto(AHT_ADDR, b'\xBA')  # soft reset
        sleep(0.02)
    except OSError:
        pass
    i2c.writeto(AHT_ADDR, b'\xBE\x08\x00')  # init/calibrate
    sleep(0.02)

def aht20_read():
    i2c.writeto(AHT_ADDR, b'\xAC\x33\x00')  # trigger
    # wait until not busy
    for _ in range(60):
        status = i2c.readfrom(AHT_ADDR, 1)[0]
        if (status & 0x80) == 0:
            break
        sleep(0.005)
    raw = i2c.readfrom(AHT_ADDR, 6)
    hum = ((raw[1]<<12) | (raw[2]<<4) | (raw[3]>>4)) / 1048576.0 * 100.0
    tmp = (((raw[3]&0x0F)<<16) | (raw[4]<<8) | raw[5]) / 1048576.0 * 200.0 - 50.0
    return tmp, hum

# --------- BMP280 (Pressure + Temp) ----------
# Minimal driver (forced mode, x1 oversampling)
def _u16(b): return b[0] | (b[1] << 8)
def _s16(b):
    v = _u16(b)
    return v - 65536 if v & 0x8000 else v

# Read calibration constants
cal = i2c.readfrom_mem(BMP_ADDR, 0x88, 24)
dig_T1 = _u16(cal[0:2])
dig_T2 = _s16(cal[2:4])
dig_T3 = _s16(cal[4:6])
dig_P1 = _u16(cal[6:8])
dig_P2 = _s16(cal[8:10])
dig_P3 = _s16(cal[10:12])
dig_P4 = _s16(cal[12:14])
dig_P5 = _s16(cal[14:16])
dig_P6 = _s16(cal[16:18])
dig_P7 = _s16(cal[18:20])
dig_P8 = _s16(cal[20:22])
dig_P9 = _s16(cal[22:24])

# Configure: ctrl_meas (temp x1, press x1, sleep), config (standby/filter default)
# We'll use "forced" mode per read.
i2c.writeto_mem(BMP_ADDR, 0xF4, b'\x27')  # osrs_t=1, osrs_p=1, mode=3 (normal)
i2c.writeto_mem(BMP_ADDR, 0xF5, b'\x00')  # config default

t_fine = 0
def bmp280_read():
    global t_fine
    # Force a measurement (write mode to forced would be 0x25; normal 0x27 is okay too)
    # Read raw data: 0xF7..0xFC: press_msb, press_lsb, press_xlsb, temp_msb, temp_lsb, temp_xlsb
    data = i2c.readfrom_mem(BMP_ADDR, 0xF7, 6)
    adc_p = ((data[0] << 16) | (data[1] << 8) | data[2]) >> 4
    adc_t = ((data[3] << 16) | (data[4] << 8) | data[5]) >> 4

    # Temperature compensation (datasheet)
    var1 = ((adc_t / 16384.0) - (dig_T1 / 1024.0)) * dig_T2
    var2 = (((adc_t / 131072.0) - (dig_T1 / 8192.0)) ** 2) * dig_T3
    t_fine = int(var1 + var2)
    T = (var1 + var2) / 5120.0

    # Pressure compensation (datasheet)
    var1p = t_fine / 2.0 - 64000.0
    var2p = var1p * var1p * dig_P6 / 32768.0
    var2p = var2p + var1p * dig_P5 * 2.0
    var2p = var2p / 4.0 + dig_P4 * 65536.0
    var1p = (dig_P3 * var1p * var1p / 524288.0 + dig_P2 * var1p) / 524288.0
    var1p = (1.0 + var1p / 32768.0) * dig_P1
    if var1p == 0:
        return T, 0.0  # avoid division by zero
    P = 1048576.0 - adc_p
    P = (P - var2p / 4096.0) * 6250.0 / var1p
    var1p = dig_P9 * P * P / 2147483648.0
    var2p = P * dig_P8 / 32768.0
    P = P + (var1p + var2p + dig_P7) / 16.0
    P_hPa = P / 100.0
    return T, P_hPa

# ----- Altitude from pressure -----
P0_SEA_LEVEL = 1013.25   # set this to your current sea-level pressure for best accuracy
def altitude_from_pressure(p_hPa, p0=P0_SEA_LEVEL):
    return 44330.0 * (1.0 - (p_hPa / p0) ** (1/5.255))

# ---------- Demo ----------
aht20_init()
while True:
    try:
        Taht, RH = aht20_read()
        Tbmp, P = bmp280_read()
        alt = altitude_from_pressure(P, P0_SEA_LEVEL)

        print("AHT20  ->  T = %.2f °C   RH = %.1f %%" % (Taht, RH))
        print("BMP280 ->  T = %.2f °C   P  = %.2f hPa   Alt ≈ %.1f m (P0=%.2f hPa)" %
              (Tbmp, P, alt, P0_SEA_LEVEL))
        print()
    except OSError as e:
        print("Read error:", e)
    sleep(1)
Mixiloy is always about creativity; the bartender is known for the exceptional drinks he can craft and his discerning palate. Now, one of the ingredients that is shaking up the cocktail world is citrus Caviar, aka Finger lime pearls.  

The exotic finger lime is the source of this zesty garnish, which explodes with flavorful juice sacs that resemble tiny caviar pearls. They add a delightful tang to beverages that transform even basic recipes into sophisticated concoctions. Making a Citron Caviar Cocktail is a fun way for home bartenders to show off their skills and try out new flavors.
public int reverse(int x) {
  int reversed = 0;
  
  while( x != 0) {
    int digit = x % 10;
    x = x / 10;
    
     if (reversed > Integer.MAX_VALUE / 10 || 
         (reversed == Integer.MAX_VALUE / 10 && digit > 7)) {
       return 0; 
    }
    if (reversed < Integer.MIN_VALUE / 10 || 
        (reversed == Integer.MIN_VALUE / 10 && digit < -8)) {
      return 0; 
    }
    
    reversed = reversed * 10 + digit
  }
  return reversed;
}
<div class="lp-reviews-page pad-md-v" >
{% set review_context = get_reviews(sources=['consumerfusion']) %}
{% set reviews = review_context.filter() %}
{% set average_rating = review_context.get_average_rating() %}

    <div class="st-container">
        <div class="reviews-page-heading lp-flex lp-center-xs lp-middle-xs lp-between-sm lp-center-xs">
            <div class="lp-center-xs lp-start-sm">
                <h1 class="lp-h2 black">Customer Reviews</h1>
                <p class="p-2">Benjamin Franklin Plumbing</p>
            </div>
            
            {% if average_rating %}
            <div class="reviews-panel">
                <div class="reviews-logo-stars">
                    <div class="reviews-google-logo">
                        <img alt="Google reviews logo" width="32" height="32" src="/img/upload/google-g-logo.png">
                    </div>
                    <div class="reviews-stars">
                        <svg class="lp-icon lp-icon-stars-filled lp-icon-stars-reviews-item" role="img" focusable="false" aria-label="Number of Stars in the review"><use xlink:href="#lp-icon-stars-filled" width="134" height="24"></use></svg>
                    </div>
                </div>
                <div class="reviews-total">
                    <span class="reviews-avg">{{ average_rating.average_rating }}</span>
                    {% if place['user_ratings_total'] %}
                    <span class="reviews-num">({{ average_rating.count }} reviews)</span>
                    {% endif %}
                </div>
            </div>
            <!--end place rating >= 4 check-->
            {% endif %}
        </div>

        
        <div class="cmp-reviews-content">
            <div class="lp-reviews-wrap">
                {% for item in reviews %}
                <div class="review-item">
                    <img data-src="/img/upload/bfp-review-flag.png" width="43" height="60" alt="" loading="lazy" class="lazyload review-flag">
                    <div class="review-header">
                        {% if item['author_name'] %}
                        <p class="review-author">{{ item['author_name'] }}</p>
                        {% endif %}
                        <div class="starrating">
                            <svg class="lp-icon lp-icon-stars-filled lp-icon-stars-reviews-item" role="img" focusable="false" aria-label="Number of Stars in the review">
                                <use xlink:href="#lp-icon-stars-filled"></use>
                            </svg>
                        </div>
                        {% if item['datetime'] %}
                        <p class="review-date">{{ item['datetime']|datefmt('long') }}</p>
                        {% endif %}
                    </div>
                    <p class="p-2 review-content">
                        {% if item['text'] %}
                        {{ item['text'] }}
                        {% endif %}
                    </p>
                </div>
                
                {% endfor %}
            </div>
        </div>
    </div>
</div>


{% endif %}


<style>
    
    
/*reviews*/
.reviews {
    padding-top: 72px;
    padding-bottom: 72px;
}
.reviews .lp-flex {
    gap: 24px;
}
.reviews .right {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
}
.reviews .heading-wrap {
    gap: 4px;
}
.reviews .heading-wrap h4 {
    font-size: 17px;
    font-weight: 700;
    line-height: 120%; /* 20.4px */
    letter-spacing: 0.85px;
    text-transform: uppercase;
    color: #000;
}
.reviews .slick-slide {
}
.reviews .slick-slide > div {
    padding: 16px;
    position: relative;
}
/*.reviews .slick-slide > div:after {*/
/*    content: '';*/
/*    position: absolute;*/
/*    right: 16px;*/
/*    top: -14px;*/
/*    width: 42px;*/
/*    height: 54px;*/
/*    background: url(/img/upload/bfp-review-flag.png) no-repeat;*/
/*    background-size: cover;*/
/*    background-position: center;*/
/*    z-index: 3;*/
/*}*/
.review-item {
    max-width: 300px;
    height: 400px;
    border-radius: 8px;
    background: #FFF;
    box-shadow: 2px 4px 25px 0px rgba(0, 0, 0, 0.25);
    z-index: 2;
    max-height: 400px;
    position: relative;
    padding: 32px 24px;
    overflow: visible;
    
    position: relative;
    display: flex!important;
    flex-direction: column;
    gap: 24px;
}
.review-flag {
    position: absolute;
    right: 16px;
    top: -14px;
    z-index: 3;
}
.review-header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    align-self: stretch;
}
.review-author {
    font-weight: 700;
    line-height: 160%; /* 33.6px */
}
.review-item .starrating svg {
    width: 134px;
    height: 24px;
    fill: var(--gold);
}
.review-date {
    align-self: stretch;
    color: var(--blue);
    font-size: 12px;
    font-weight: 700;
    line-height: 160%; /* 19.2px */
}
.review-content {
    line-height: 160%; /* 25.6px */
    height: auto;
}
.reviews .review-content {
    overflow-y: scroll;
    max-height: 241px;
}
.arrows-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 24px;
    position: relative;
    margin-top: 32px;
}
.reviews .arrows-wrap {
    margin-top: -8px;
}
.arrows-wrap .slick-arrow {
    display: flex;
    padding: 9px;
    justify-content: center;
    align-items: center;
    border-radius: 100px;
    background: var(--gold);
    border: 4px solid black;
    
    position: relative;
    top: unset;
    right: unset;
    left: unset;
    line-height: unset;
    font-size: unset;
    height: 44px;
    width: 44px;
    cursor: pointer;
    transform: unset;
}
.arrows-wrap .slick-arrow svg {
    width: 24px;
    height: 24px;
    fill: black
}

.reviews-cta .lp-btn.black {
    background: #000;
    color: var(--gold);
    border-color: #000;
    font-family: var(--lp-font-headline);
    font-size: 17px;
    font-weight: 700;
    line-height: 120%; /* 20.4px */
    letter-spacing: 0.51px;
    padding-top: 15px;
    padding-bottom: 15px;
}
@media (min-width: 992px) {
    .reviews.lp-50-50 .lp-50 {
        flex-basis: calc(50% - 12px);
        width: calc(50% - 12px);;
    }
    .reviews .lp-photo {
        margin-top: 62px;
    }
    .reviews .lp-flex {
    }
    .reviews .right {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        align-items: flex-end;
        align-self: stretch;
        gap: 24px;
    }
    .reviews-cta {
        margin-top: 54px;
    }
}
@media (max-width: 991px) {
    .reviews {
        padding-top: 32px;
    }
    .reviews .left {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 24px;
    }
    .reviews .heading-wrap {
        text-align: center;
        order: 3;
    }
    .reviews .reviews-avg {
        order: 2;
    }
    .reviews .lp-photo {
        order: 1;
    }
}
@media (max-width: 767px) {
    .reviews .reviews-arrows {
        display: none;
    }
    .reviews {
        padding: 0 0 32px 0;
    }
    .reviews .lp-container {
        padding: 0;
    }
    .reviews .heading-wrap, .reviews .right {
        padding-left: 16px;
        padding-right: 16px;
    }
    .reviews .lp-photo img {
        border-radius: 0;
        box-shadow: none;
    }
}

/*Reviews page*/
.reviews-page-heading {
    gap: 16px;
}
.lp-reviews-wrap {
    margin-top: 32px;
    columns: 3;
    column-gap: 24px;
}
.lp-reviews-page .review-item {
    max-width: 100%;
    height: auto;
    break-inside: avoid;
    margin-bottom: 36px;
    flex-direction: column;
    gap: 24px;
    max-height: none;
    position: static;
}
.lp-reviews-page .review-item .review-flag {
    display: none;
}
.lp-reviews-page .review-content {
    max-height: unset;
}
@media screen and (max-width: 1024px) {
    .lp-reviews-wrap {
        columns: 2;
    }
}
@media screen and (max-width: 767px) {
    .lp-reviews-wrap {
        columns: 1;
    }
}

</style>
<div class="lp-reviews-page pad-md-v" >
{% set review_context = get_reviews(sources=['consumerfusion']) %}
{% set reviews = review_context.filter() %}
{% set average_rating = review_context.get_average_rating() %}

    <div class="st-container">
        <div class="reviews-page-heading lp-flex lp-center-xs lp-middle-xs lp-between-sm lp-center-xs">
            <div class="lp-center-xs lp-start-sm">
                <h1 class="lp-h2 black">Customer Reviews</h1>
                <p class="p-2">Benjamin Franklin Plumbing</p>
            </div>
            
            {% if average_rating %}
            <div class="reviews-panel">
                <div class="reviews-logo-stars">
                    <div class="reviews-google-logo">
                        <img alt="Google reviews logo" width="32" height="32" src="/img/upload/google-g-logo.png">
                    </div>
                    <div class="reviews-stars">
                        <svg class="lp-icon lp-icon-stars-filled lp-icon-stars-reviews-item" role="img" focusable="false" aria-label="Number of Stars in the review"><use xlink:href="#lp-icon-stars-filled" width="134" height="24"></use></svg>
                    </div>
                </div>
                <div class="reviews-total">
                    <span class="reviews-avg">{{ average_rating.average_rating }}</span>
                    {% if place['user_ratings_total'] %}
                    <span class="reviews-num">({{ average_rating.count }} reviews)</span>
                    {% endif %}
                </div>
            </div>
            <!--end place rating >= 4 check-->
            {% endif %}
        </div>

        
        <div class="cmp-reviews-content">
            <div class="lp-reviews-wrap">
                {% for item in reviews %}
                <div class="review-item">
                    <img data-src="/img/upload/bfp-review-flag.png" width="43" height="60" alt="" loading="lazy" class="lazyload review-flag">
                    <div class="review-header">
                        {% if item['author_name'] %}
                        <p class="review-author">{{ item['author_name'] }}</p>
                        {% endif %}
                        <div class="starrating">
                            <svg class="lp-icon lp-icon-stars-filled lp-icon-stars-reviews-item" role="img" focusable="false" aria-label="Number of Stars in the review">
                                <use xlink:href="#lp-icon-stars-filled"></use>
                            </svg>
                        </div>
                        {% if item['datetime'] %}
                        <p class="review-date">{{ item['datetime']|datefmt('long') }}</p>
                        {% endif %}
                    </div>
                    <p class="p-2 review-content">
                        {% if item['text'] %}
                        {{ item['text'] }}
                        {% endif %}
                    </p>
                </div>
                
                {% endfor %}
            </div>
        </div>
    </div>
</div>


{% endif %}


<style>
    
    
/*reviews*/
.reviews {
    padding-top: 72px;
    padding-bottom: 72px;
}
.reviews .lp-flex {
    gap: 24px;
}
.reviews .right {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
}
.reviews .heading-wrap {
    gap: 4px;
}
.reviews .heading-wrap h4 {
    font-size: 17px;
    font-weight: 700;
    line-height: 120%; /* 20.4px */
    letter-spacing: 0.85px;
    text-transform: uppercase;
    color: #000;
}
.reviews .slick-slide {
}
.reviews .slick-slide > div {
    padding: 16px;
    position: relative;
}
/*.reviews .slick-slide > div:after {*/
/*    content: '';*/
/*    position: absolute;*/
/*    right: 16px;*/
/*    top: -14px;*/
/*    width: 42px;*/
/*    height: 54px;*/
/*    background: url(/img/upload/bfp-review-flag.png) no-repeat;*/
/*    background-size: cover;*/
/*    background-position: center;*/
/*    z-index: 3;*/
/*}*/
.review-item {
    max-width: 300px;
    height: 400px;
    border-radius: 8px;
    background: #FFF;
    box-shadow: 2px 4px 25px 0px rgba(0, 0, 0, 0.25);
    z-index: 2;
    max-height: 400px;
    position: relative;
    padding: 32px 24px;
    overflow: visible;
    
    position: relative;
    display: flex!important;
    flex-direction: column;
    gap: 24px;
}
.review-flag {
    position: absolute;
    right: 16px;
    top: -14px;
    z-index: 3;
}
.review-header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    align-self: stretch;
}
.review-author {
    font-weight: 700;
    line-height: 160%; /* 33.6px */
}
.review-item .starrating svg {
    width: 134px;
    height: 24px;
    fill: var(--gold);
}
.review-date {
    align-self: stretch;
    color: var(--blue);
    font-size: 12px;
    font-weight: 700;
    line-height: 160%; /* 19.2px */
}
.review-content {
    line-height: 160%; /* 25.6px */
    height: auto;
}
.reviews .review-content {
    overflow-y: scroll;
    max-height: 241px;
}
.arrows-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 24px;
    position: relative;
    margin-top: 32px;
}
.reviews .arrows-wrap {
    margin-top: -8px;
}
.arrows-wrap .slick-arrow {
    display: flex;
    padding: 9px;
    justify-content: center;
    align-items: center;
    border-radius: 100px;
    background: var(--gold);
    border: 4px solid black;
    
    position: relative;
    top: unset;
    right: unset;
    left: unset;
    line-height: unset;
    font-size: unset;
    height: 44px;
    width: 44px;
    cursor: pointer;
    transform: unset;
}
.arrows-wrap .slick-arrow svg {
    width: 24px;
    height: 24px;
    fill: black
}

.reviews-cta .lp-btn.black {
    background: #000;
    color: var(--gold);
    border-color: #000;
    font-family: var(--lp-font-headline);
    font-size: 17px;
    font-weight: 700;
    line-height: 120%; /* 20.4px */
    letter-spacing: 0.51px;
    padding-top: 15px;
    padding-bottom: 15px;
}
@media (min-width: 992px) {
    .reviews.lp-50-50 .lp-50 {
        flex-basis: calc(50% - 12px);
        width: calc(50% - 12px);;
    }
    .reviews .lp-photo {
        margin-top: 62px;
    }
    .reviews .lp-flex {
    }
    .reviews .right {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        align-items: flex-end;
        align-self: stretch;
        gap: 24px;
    }
    .reviews-cta {
        margin-top: 54px;
    }
}
@media (max-width: 991px) {
    .reviews {
        padding-top: 32px;
    }
    .reviews .left {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 24px;
    }
    .reviews .heading-wrap {
        text-align: center;
        order: 3;
    }
    .reviews .reviews-avg {
        order: 2;
    }
    .reviews .lp-photo {
        order: 1;
    }
}
@media (max-width: 767px) {
    .reviews .reviews-arrows {
        display: none;
    }
    .reviews {
        padding: 0 0 32px 0;
    }
    .reviews .lp-container {
        padding: 0;
    }
    .reviews .heading-wrap, .reviews .right {
        padding-left: 16px;
        padding-right: 16px;
    }
    .reviews .lp-photo img {
        border-radius: 0;
        box-shadow: none;
    }
}

/*Reviews page*/
.reviews-page-heading {
    gap: 16px;
}
.lp-reviews-wrap {
    margin-top: 32px;
    columns: 3;
    column-gap: 24px;
}
.lp-reviews-page .review-item {
    max-width: 100%;
    height: auto;
    break-inside: avoid;
    margin-bottom: 36px;
    flex-direction: column;
    gap: 24px;
    max-height: none;
    position: static;
}
.lp-reviews-page .review-item .review-flag {
    display: none;
}
.lp-reviews-page .review-content {
    max-height: unset;
}
@media screen and (max-width: 1024px) {
    .lp-reviews-wrap {
        columns: 2;
    }
}
@media screen and (max-width: 767px) {
    .lp-reviews-wrap {
        columns: 1;
    }
}

</style>
star

Sun Oct 12 2025 14:41:38 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 14:37:27 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:47:45 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:46:39 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:45:23 GMT+0000 (Coordinated Universal Time)

@rcb

star

Sun Oct 12 2025 13:42:21 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:37:27 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:34:25 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:33:31 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:32:35 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:29:56 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:29:31 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:28:49 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:28:05 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:27:37 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:27:03 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:26:36 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:26:02 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:25:25 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:24:16 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:24:14 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 13:23:26 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:22:49 GMT+0000 (Coordinated Universal Time)

@robo

star

Sun Oct 12 2025 13:20:15 GMT+0000 (Coordinated Universal Time)

@vplab2025 #c#

star

Sun Oct 12 2025 12:14:19 GMT+0000 (Coordinated Universal Time)

@rcb

star

Sun Oct 12 2025 09:46:23 GMT+0000 (Coordinated Universal Time)

@rcb

star

Sun Oct 12 2025 08:47:52 GMT+0000 (Coordinated Universal Time)

@rcb

star

Sat Oct 11 2025 08:08:00 GMT+0000 (Coordinated Universal Time)

@cse41 #bash

star

Fri Oct 10 2025 18:18:17 GMT+0000 (Coordinated Universal Time)

@jrg_300i #postgres

star

Fri Oct 10 2025 08:48:10 GMT+0000 (Coordinated Universal Time)

@kimibb

star

Fri Oct 10 2025 05:52:27 GMT+0000 (Coordinated Universal Time) https://app.slack.com/block-kit-builder/TTUJY0L22?force_cold_boot=1#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22:x-connect:%20:star:%20Boost%20Days%20-%20What's%20on%20this%20week%20in%20Canberra!%20:star:%20:x-connect:%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Happy%20Monday%20Canberra!%20%5Cn%5CnWe%E2%80%99ve%20got%20an%20exciting%20week%20ahead%20as%20the%20*Hackathon*%20kicks%20off%20across%20Xero!%20:xero-hackathon:%5Cn%5Cn*See%20below%20for%20what's%20in%20store:*%20%F0%9F%91%87%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:calendar-date-22:%20*Wednesday,%2022nd%20October*%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:lunch:%20*Hackathon%20Lunch:*%20Provided%20in%20our%20suite%20from%20*12:00pm*.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:apple:%20*Snacks*%5Cn%5CnKeep%20your%20creativity%20flowing!%20Healthy%20snacks%20will%20be%20available%20in%20the%20*Kitchen*%20throughout%20the%20week.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*What%20else%20:heart:*%5Cn%5CnStay%20tuned%20to%20this%20channel,%20and%20make%20sure%20you%E2%80%99re%20subscribed%20to%20the%20%3Chttps://calendar.google.com/calendar/u/0/r?cid=Y19jYzU3YWJkZTE4ZTE0YzVlYTYxMGU4OThjZjRhYWQ0MTNhYmIzMDBjZjBkMzVlNDg0M2M5NDQ4NDk3NDAyYjkyQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20/%7C*Canberra%20Social%20Calendar*%3E%20for%20all%20upcoming%20events.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Let%E2%80%99s%20power%20up,%20Canberra!%20%E2%9A%A1%5Cn%5CnLove,%5CnWX%20:party-wx:%22%7D%7D%5D%7D

@FOHWellington

star

Fri Oct 10 2025 04:08:24 GMT+0000 (Coordinated Universal Time) https://www.facebook.com/merse.lopez

@cholillo18

star

Fri Oct 10 2025 04:04:53 GMT+0000 (Coordinated Universal Time) https://app.slack.com/block-kit-builder/TTUJY0L22?force_cold_boot=1#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22:xero-hackathon:%20Let%E2%80%99s%20Celebrate%20Our%20Hackathon%20Legends!%20:xero-hackathon:%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22The%20Hackathon%20may%20be%20over,%20but%20the%20innovation%20continues.%5Cn%5CnJoin%20us%20for%20our%20*Hackathon%20Social%20Happy%20Hour*%20to%20celebrate%20the%20incredible%20ideas,%20teamwork,%20and%20creativity%20that%20came%20to%20life%20during%20Hackathon%20Week.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:celebrate:%20*Hackathon%20Social%20Happy%20Hour*%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22%F0%9F%93%85%20*%5BInsert%20date/time/location/food/drinks%5D*%5Cn%5CnCome%20along%20to%20celebrate,%20reconnect,%20share%20highlights%20and%20toast%20to%20another%20successful%20Hackathon.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Thank%20you%20to%20every%20Xero%20who%20participated.%20%5Cn%5CnYour%20energy%20and%20ideas%20continue%20to%20power%20up%20Xero%20and%20our%20customers.%20:rocket:%F0%9F%92%99%5Cn%5CnSee%20you%20there!%5Cn%20Love,%20%5Cn%5CnWX%20:party-wx:%22%7D%7D%5D%7D

@FOHWellington

star

Fri Oct 10 2025 03:59:16 GMT+0000 (Coordinated Universal Time) https://app.slack.com/block-kit-builder/TTUJY0L22?force_cold_boot=1#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22%E2%9A%A1%20We%E2%80%99re%20halfway%20through%20Hackathon%20Week,%20Wellington!%20%E2%9A%A1%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22What%20an%20incredible%20start%20it%20has%20been.%20The%20energy,%20ideas,%20and%20teamwork%20across%20the%20office%20have%20been%20inspiring%20to%20see.%20:xero-hackathon:%20%F0%9F%92%99%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*Here%E2%80%99s%20a%20reminder%20of%20what%E2%80%99s%20happening%20for%20the%20rest%20of%20the%20week*%20%F0%9F%91%87%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22%F0%9F%92%A1%20*Spaces%20and%20Snacks*%5Cn%5CnOur%20Hackathon%20spaces%20*%5BInsert%20names%5D*%20remain%20open%20and%20ready%20for%20your%20collaboration%20sessions.%20%5Cn%5CnFor%20all%20Hackathon%20participants,%20don%E2%80%99t%20forget%20to%20grab%20some%20snacks%20and%20juices%20located%20on%20*Level%203*%20to%20keep%20your%20creativity%20flowing.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:breakfast:%20:lunch:%20*%5BInsert%20Boost%20Hackathon%20Meal%20if%20applicable%20to%20your%20location%5D*%5Cn%5CnJoin%20us%20for%20a%20Hackathon%20Boost%20*%5BInsert%20Breakfast%20/%20Lunch%20%5D*%20at%20*%5BInsert%20time%20and%20location%5D*.Come%20together%20with%20fellow%20Hackers,%20share%20ideas,%20and%20connect%20over%20this%20special%20meal%20to%20celebrate%20Hackathon%20Week.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*Stay%20Connected%20:speech_balloon:*%5Cn%5CnJoin%20%3Chttps://join.slack.com/share/enQtOTY1NTEzNTcwODQ3MC1lYTI0Njg1M2MxY2ZlODE5ODdlOWNkMmI2NmY2YTViOTc2NGQ0OWQ5ZjU1ZjA2NzJkODY5NjM2ODM2NDE4OTQ0%20/%7C*#xero-hackathon*%3E%20for%20global%20updates,%20inspiration,%20and%20stories%20from%20other%20offices.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*What%20else%20:stay-tuned:*%5Cn%5CnStay%20tuned%20to%20this%20channel,%20and%20make%20sure%20you%E2%80%99re%20subscribed%20to%20the%20%3Chttps://calendar.google.com/calendar/u/0/r?cid=Y180Y2UwNGEwNjY2YjI5NDNlZmEwZGM4YWI5MTdjMTcyNDE2NzVhZmQ5MTllN2EwZjg5NTg5OTVkMTA2MDAzZmEwQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20/%7C*Wellington%20Social%20Calendar*%3E%20for%20all%20upcoming%20events.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Keep%20the%20ideas%20coming%20and%20continue%20to%20power%20up%20innovation%20and%20customer%20delight.%20:ai:%20%F0%9F%92%AB%5Cn%5CnLove,%5Cn%5CnWX%20:Party-wx:%22%7D%7D%5D%7D

@FOHWellington

star

Fri Oct 10 2025 03:56:43 GMT+0000 (Coordinated Universal Time) https://app.slack.com/block-kit-builder/TTUJY0L22?force_cold_boot=1#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22:xero-hackathon:%20:xero-hackathon:%20:xero-hackathon:%20Get%20Ready%20Xeros:%20Hackathon%20is%20BACK!%20:xero-hackathon::xero-hackathon::xero-hackathon:%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Hey%20Xeros!%20*%5BInsert%20location%5D*%5Cn%5CnOur%20October%20Hackathon%20kicks%20off%20next%20week%20starting%20on%20*Monday%2020%20to%20Friday%2024%20October*.%5Cn%5Cn:battery:%20The%20theme%20is%20*%E2%80%9CPower%20up%20with%20AI,%20and%20unlock%20customer%20delight!%E2%80%9D*%5Cn%5CnThis%20Hackathon%20is%20all%20about%20powering%20up%20our%20customers%20and%20our%20Xeros%20through%20AI,%20innovation,%20and%20connection.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*Here%E2%80%99s%20what%20we%E2%80%99ve%20got%20lined%20up%20for%20the%20week:*%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:croissant:%20*Hackathon%20Boost%20%5BBreakfast/Lunch%5D%20on%20Wednesday%2022nd%20October%20at%2012pm*%5Cn*%5BInsert%20and%20edit%20meal%20type/day/date/time/location%5D*%5CnJoin%20us%20for%20a%20shared%20meal%20in%20the%20*Wominjeka%20Breakout%20Space*%20to%20connect%20with%20fellow%20Hackers,%20recharge,%20and%20get%20inspired.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:brainstorm:%20*Brainstorming%20Booths%20and%20Breakout%20Spaces*%5CnDedicated%20Hackathon%20spaces%20have%20been%20booked%20to%20support%20your%20collaboration%20and%20creative%20sessions.%20*%5BInsert%20specific%20space%20names%20or%20levels%20if%20applicable%20to%20your%20location%5D*%5Cn%5Cn:teamworkhands1:%20*Hackathon%20Breakout%20Space*%20-%20Level%202%20underneath%20the%20All%20Hands%20Space%5Cn:bulb:%20*Brainstorming%20Booths*%20-%20Level%202%20underneath%20the%20All%20Hands%20Space%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:apple:%20*Snacks%20and%20Juices*%5CnKeep%20those%20ideas%20flowing%20with%20snacks%20and%20juices%20available%20in%20the%20*Level%203%20kitchen*%20to%20Hackathon%20participants%20all%20week.%20*%5BInsert%20specific%20location%20for%20snacks%20and%20juices%20if%20applicable%20to%20your%20location%5D*%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:speech_balloon:%20*Stay%20Connected*%5CnJoin%20the%20conversation%20in%20%3Chttps://join.slack.com/share/enQtOTY1NTEzNTcwODQ3MC1lYTI0Njg1M2MxY2ZlODE5ODdlOWNkMmI2NmY2YTViOTc2NGQ0OWQ5ZjU1ZjA2NzJkODY5NjM2ODM2NDE4OTQ0%20/%7C*#xero-hackathon*%3E%20to%20stay%20up%20to%20date,%20share%20ideas,%20and%20see%20what%E2%80%99s%20happening%20globally.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Let%E2%80%99s%20power%20up,%20Xeros!%20:zap:%20%5CnLove,%5CnWX%20:party-wx:%22%7D%7D%5D%7D

@FOHWellington

star

Fri Oct 10 2025 03:53:54 GMT+0000 (Coordinated Universal Time) https://app.slack.com/block-kit-builder/TTUJY0L22?force_cold_boot=1#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22:x-connect:%20:star:%20Boost%20Days%20%E2%80%93%20What%E2%80%99s%20on%20this%20week%20in%20Melbourne%20!:star:%20:x-connect:%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Hey%20Melbourne,%5CnWe%E2%80%99ve%20got%20an%20exciting%20week%20ahead%20as%20the%20*Hackathon*%20kicks%20off%20across%20Xero!%20:xero-hackathon:%5Cn%5Cn*See%20below%20for%20what%E2%80%99s%20in%20store:*%20%F0%9F%91%87%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:calendar-date-22:%20*Wednesday,%2022nd%20October*%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:coffee:%20*Xero%20Caf%C3%A9*%20%E2%80%93%20Caf%C3%A9-style%20beverages%20and%20sweet%20treats.%5Cn:cookie:%20*Barista%20Special*%20%E2%80%93%20Caramel%20Cappuccino%5Cn:burger:%20*Hackathon%20Boost%20Lunch*%20-%20Enjoy%20delicious%20*Bot%20Burgers*%20from%20*12.00pm*%20in%20the%20*Wominjeka%20Breakout%20Space,%20Level%203*.%5Cn%5CnCome%20together%20with%20fellow%20Hackers,%20share%20ideas,%20and%20fuel%20up%20for%20the%20days%20ahead.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:calendar-date-23:%20*Thursday,%2023rd%20October*%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:coffee:%20*Xero%20Caf%C3%A9*%20%E2%80%93%20Caf%C3%A9-style%20beverages%20and%20sweet%20treats.%5Cn:cookie:%20*Sweet%20Treats*%20%E2%80%93%20Choc%20Chip%20Cookies%20&%20Caramel%20Slice%5Cn:breakfast:%20*Boost%20Breakfast*%20%E2%80%93%20Provided%20from%20*8:30am*%20in%20the%20*Wominjeka%20Breakout%20Space,%20Level%203*.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:brain:%20*Brainstorming%20Booths%20+%20Breakout%20Spaces*%5Cn%5CnThe%20following%20spaces%20have%20been%20reserved%20for%20Hackathon%20teams%20to%20collaborate%20and%20create:%5Cn%E2%80%A2%20Wominjecka%5Cn%E2%80%A2%20TBC%5Cn%E2%80%A2%20TBC%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:apple:%20:juicebox:%20*Snacks%20+%20Juices*%5Cn%5CnKeep%20your%20creativity%20flowing!%20Healthy%20snacks%20and%20juices%20will%20be%20available%20in%20the%20*Level%203%20kitchen*%20throughout%20the%20week.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:speech_balloon:%20*Stay%20Connected*%5Cn%5CnJoin%20%3Chttps://join.slack.com/share/enQtOTY1NTEzNTcwODQ3MC1lYTI0Njg1M2MxY2ZlODE5ODdlOWNkMmI2NmY2YTViOTc2NGQ0OWQ5ZjU1ZjA2NzJkODY5NjM2ODM2NDE4OTQ0%20/%7C*#xero-hackathon*%3E%20for%20global%20updates,%20inspiration,%20and%20stories%20from%20other%20offices.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*What%20else%20:heart:*%5Cn%5CnStay%20tuned%20to%20this%20channel,%20and%20make%20sure%20you%E2%80%99re%20subscribed%20to%20the%20%3Chttps://calendar.google.com/calendar/u/0/r?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t%20/%7C*Melbourne%20Social%20Calendar*%3E%20for%20all%20upcoming%20events.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Let%E2%80%99s%20power%20up,%20Melbourne!%20%E2%9A%A1%5Cn%5CnLove,%5CnWX%20:party-wx:%22%7D%7D%5D%7D

@FOHWellington

star

Fri Oct 10 2025 03:51:20 GMT+0000 (Coordinated Universal Time) https://app.slack.com/block-kit-builder/TTUJY0L22?force_cold_boot=1#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22:x-connect:%20:star:%20Boost%20Days%20-%20What's%20on%20this%20week%20in%20Hawkes%20Bay!%20:star:%20:x-connect:%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Happy%20Monday%20Ahuriri!%20%5Cn%5CnWe%E2%80%99ve%20got%20an%20exciting%20week%20ahead%20as%20the%20*Hackathon*%20kicks%20off%20across%20Xero!%20:xero-hackathon:%5Cn%5Cn*See%20below%20for%20what's%20in%20store:*%20%F0%9F%91%87%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:calendar-date-22:%20*Wednesday,%2022nd%20October*%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:coffee:%20*Caf%C3%A9%20Partnership:*%20Enjoy%20coffee%20and%20caf%C3%A9-style%20beverages%20from%20our%20cafe%20partner,%20*Adoro*,%20located%20in%20our%20office%20building%20*8:00am%20-%2011:30am*.%5Cn%5Cn:croissant:%20*Hackathon%20Hackfast%20Breakfast:*%20Provided%20by%20*Design%20Cuisine*%20from%20*9:30am-10:30am*%20in%20the%20*Kitchen*.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:calendar-date-23:%20*Thursday,%2023rd%20October*%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:coffee:%20*Caf%C3%A9%20Partnership:*%20Enjoy%20coffee%20and%20caf%C3%A9-style%20beverages%20from%20our%20cafe%20partner,%20*Adoro*,%20located%20in%20our%20office%20building%20*8:00am%20-%2011:30am*.%5Cn%5Cn:green_salad:%20*Lunch:*%20Provided%20by%20*Design%20Cuisine*%20from%20*12:30pm-1:30pm*%20in%20the%20*Kitchen*.%22%7D%7D,%7B%22type%22:%22divider%22%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:brain:%20*Brainstorming%20Booths%20+%20Breakout%20Spaces*%5Cn%5CnThe%20following%20spaces%20have%20been%20reserved%20for%20Hackathon%20teams%20to%20collaborate%20and%20create:%5Cn%E2%80%A2%20TBC%5Cn%E2%80%A2%20TBC%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22:apple:%20:juicebox:%20*Snacks%20+%20Juices*%5Cn%5CnKeep%20your%20creativity%20flowing!%20Healthy%20snacks%20and%20juices%20will%20be%20available%20in%20the%20*Kitchen*%20throughout%20the%20week.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*What%20else%20:heart:*%5Cn%5CnStay%20tuned%20to%20this%20channel,%20and%20make%20sure%20you%E2%80%99re%20subscribed%20to%20the%20%3Chttps://calendar.google.com/calendar/u/0/r?cid=eGVyby5jb21fbXRhc2ZucThjaTl1b3BpY284dXN0OWlhdDRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ/%7C*Hawkes%20Bay%20Social%20Calendar*%3E%20for%20all%20upcoming%20events.%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22Let%E2%80%99s%20power%20up,%20Hawkes%20Bay!%20%E2%9A%A1%5Cn%5CnLove,%5CnWX%20:party-wx:%22%7D%7D%5D%7D

@FOHWellington

star

Fri Oct 10 2025 02:54:40 GMT+0000 (Coordinated Universal Time)

@root1024 ##python #matplotlib #flowofcontrol

star

Thu Oct 09 2025 23:20:04 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Oct 09 2025 16:27:31 GMT+0000 (Coordinated Universal Time)

@jrg_300i #postgres

star

Thu Oct 09 2025 16:20:01 GMT+0000 (Coordinated Universal Time)

@jrg_300i ##yii2

star

Thu Oct 09 2025 16:14:11 GMT+0000 (Coordinated Universal Time)

@jrg_300i ##yii2

star

Thu Oct 09 2025 15:56:55 GMT+0000 (Coordinated Universal Time)

@jrg_300i ##yii2

star

Thu Oct 09 2025 15:49:14 GMT+0000 (Coordinated Universal Time)

@jrg_300i ##yii2

star

Thu Oct 09 2025 06:54:11 GMT+0000 (Coordinated Universal Time)

@iliavial #python

star

Wed Oct 08 2025 16:35:31 GMT+0000 (Coordinated Universal Time) https://citroncaviarlb.com/5-must-try-citron-caviar-cocktail-recipes-for-home-bartenders/

@citroncaviar

star

Wed Oct 08 2025 13:26:53 GMT+0000 (Coordinated Universal Time)

@Inescn

star

Wed Oct 08 2025 06:59:36 GMT+0000 (Coordinated Universal Time) https://www.thecryptoape.com/pancakeswap-clone-script

@Davidbrevis

star

Wed Oct 08 2025 05:55:44 GMT+0000 (Coordinated Universal Time)

@kimibb

star

Wed Oct 08 2025 05:55:44 GMT+0000 (Coordinated Universal Time)

@kimibb

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension