feat: update design with spazio solazzo vibe (#10)

* refactor: update the whole color palette with the spazio solazzo vibe and simplify design code to use Daisy UI
This commit is contained in:
Víctor Martínez 2026-01-17 22:17:25 +01:00 committed by GitHub
parent 2cbce8ec39
commit 9c45660e11
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 1125 additions and 662 deletions

View file

@ -27,26 +27,31 @@
default: false; default: false;
prefersdark: true; prefersdark: true;
color-scheme: "dark"; color-scheme: "dark";
--color-base-100: oklch(25% 0.015 200); --color-base-100: #1a1a1a;
--color-base-200: oklch(20% 0.012 200); --color-base-200: #2a2a2a;
--color-base-300: oklch(15% 0.01 200); --color-base-300: #3a3a3a;
--color-base-content: oklch(95% 0.01 200); --color-base-content: #e5e5e5;
--color-primary: oklch(58% 0.15 180); --color-primary: #c85a6e;
--color-primary-content: oklch(98% 0.01 180); --color-primary-content: #ffffff;
--color-secondary: oklch(58% 0.15 180); --color-secondary: #7bb8db;
--color-secondary-content: oklch(98% 0.01 180); --color-secondary-content: #ffffff;
--color-accent: oklch(60% 0.12 175); --color-accent: #95c5db;
--color-accent-content: oklch(98% 0.01 175); --color-accent-content: #ffffff;
--color-neutral: oklch(30% 0.02 200); --color-neutral: #9ca3af;
--color-neutral-content: oklch(98% 0.01 200); --color-neutral-content: #e5e5e5;
--color-info: oklch(58% 0.158 241.966); --color-info: #7bb8db;
--color-info-content: oklch(97% 0.013 236.62); --color-info-content: #ffffff;
--color-success: oklch(60% 0.118 184.704); --color-success: oklch(65% 0.14 150);
--color-success-content: oklch(98% 0.014 180.72); --color-success-content: #ffffff;
--color-warning: oklch(66% 0.179 58.318); --color-warning: oklch(75% 0.18 50);
--color-warning-content: oklch(98% 0.022 95.277); --color-warning-content: #1a1a1a;
--color-error: oklch(58% 0.253 17.585); --color-error: oklch(65% 0.22 25);
--color-error-content: oklch(96% 0.015 12.422); --color-error-content: #ffffff;
--color-background-dark: #2b1220;
--color-card-dark: #1a3c34;
--color-text-primary-dark: #ffffff;
--color-text-secondary-dark: #d4c5b0;
--color-border-dark: #5e503f;
--radius-selector: 1rem; --radius-selector: 1rem;
--radius-field: 1rem; --radius-field: 1rem;
--radius-box: 1.5rem; --radius-box: 1.5rem;
@ -62,26 +67,31 @@
default: true; default: true;
prefersdark: false; prefersdark: false;
color-scheme: "light"; color-scheme: "light";
--color-base-100: oklch(99% 0.005 200); --color-base-100: #ffffff;
--color-base-200: oklch(97% 0.01 200); --color-base-200: #f3f4f6;
--color-base-300: oklch(93% 0.015 200); --color-base-300: #d4c5b0;
--color-base-content: oklch(30% 0.02 200); --color-base-content: #2b1220;
--color-primary: oklch(58% 0.15 180); --color-primary: #ac485a;
--color-primary-content: oklch(98% 0.01 180); --color-primary-content: #ffffff;
--color-secondary: oklch(58% 0.15 180); --color-secondary: #63a5c9;
--color-secondary-content: oklch(98% 0.01 180); --color-secondary-content: #ffffff;
--color-accent: oklch(62% 0.12 175); --color-accent: #7fafc9;
--color-accent-content: oklch(98% 0.01 175); --color-accent-content: #ffffff;
--color-neutral: oklch(50% 0.02 200); --color-neutral: #5e503f;
--color-neutral-content: oklch(98% 0.01 200); --color-neutral-content: #ffffff;
--color-info: oklch(62% 0.18 210); --color-info: #63a5c9;
--color-info-content: oklch(97% 0.01 210); --color-info-content: #ffffff;
--color-success: oklch(70% 0.14 140); --color-success: oklch(70% 0.14 140);
--color-success-content: oklch(98% 0.01 140); --color-success-content: oklch(98% 0.01 140);
--color-warning: oklch(78% 0.18 45); --color-warning: oklch(78% 0.18 45);
--color-warning-content: oklch(20% 0.02 45); --color-warning-content: oklch(20% 0.02 45);
--color-error: oklch(58% 0.20 20); --color-error: oklch(58% 0.2 20);
--color-error-content: oklch(96% 0.01 20); --color-error-content: oklch(96% 0.01 20);
--color-background-light: #ffffff;
--color-card-light: #ffffff;
--color-text-primary-light: #2b1220;
--color-text-secondary-light: #5e503f;
--color-border-light: #f3f4f6;
--radius-selector: 1rem; --radius-selector: 1rem;
--radius-field: 1rem; --radius-field: 1rem;
--radius-box: 1.5rem; --radius-box: 1.5rem;
@ -101,61 +111,18 @@
@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *)); @custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));
/* Make LiveView wrapper divs transparent for layout */ /* Make LiveView wrapper divs transparent for layout */
[data-phx-session], [data-phx-teleported-src] { display: contents } [data-phx-session],
[data-phx-teleported-src] {
display: contents;
}
/* This file is for your main application CSS */ /* This file is for your main application CSS */
/* New Design Color Palette - Mediterranean Blue Theme */ /* New Design Color Palette - Spazio Solazzo Theme */
@theme { @theme {
/* Primary - Mediterranean Blue */
--color-primary: #0ea5e9;
--color-primary-hover: #0284c7;
/* Accent - Sicilian Lemon/Sun */
--color-accent: #facc15;
/* Light Mode Colors */
--color-background-light: #f8fafc;
--color-card-light: #ffffff;
--color-text-primary-light: #0f172a;
--color-text-secondary-light: #334155;
--color-border-light: #e2e8f0;
/* Dark Mode Colors */
--color-background-dark: #0f172a;
--color-card-dark: #1e293b;
--color-text-primary-dark: #f1f5f9;
--color-text-secondary-dark: #94a3b8;
--color-border-dark: #334155;
/* Slate Scale for consistency */
--color-slate-50: #f8fafc;
--color-slate-100: #f1f5f9;
--color-slate-200: #e2e8f0;
--color-slate-300: #cbd5e1;
--color-slate-400: #94a3b8;
--color-slate-500: #64748b;
--color-slate-600: #475569;
--color-slate-700: #334155;
--color-slate-800: #1e293b;
--color-slate-900: #0f172a;
/* Sky Scale for primary variations */
--color-sky-100: #e0f2fe;
--color-sky-400: #38bdf8;
--color-sky-500: #0ea5e9;
--color-sky-600: #0284c7;
/* Yellow Scale for accent */
--color-yellow-100: #fef9c3;
--color-yellow-300: #fde047;
--color-yellow-400: #facc15;
--color-yellow-600: #ca8a04;
--color-yellow-700: #a16207;
--color-yellow-900: #713f12;
/* Typography */ /* Typography */
--font-display: 'Inter', 'Montserrat', sans-serif; --font-display: "Montserrat", sans-serif;
--font-brand: "Montserrat", sans-serif;
} }
/* Global Typography & Styles */ /* Global Typography & Styles */
@ -165,9 +132,16 @@ html {
body { body {
font-family: var(--font-display); font-family: var(--font-display);
background-color: white;
color: var(--color-text-primary-light);
} }
h1, h2, h3, h4, h5, h6 { h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-display); font-family: var(--font-display);
font-weight: 700; font-weight: 700;
} }
@ -175,3 +149,74 @@ h1, h2, h3, h4, h5, h6 {
.prose { .prose {
font-family: var(--font-display); font-family: var(--font-display);
} }
/* Logo Styles */
.hero-logo-img {
max-width: 100%;
height: auto;
max-height: 300px;
display: block;
margin: 0 auto;
}
/* Spazio Solazzo Color Utility Classes */
/* These map to DaisyUI theme colors for easy maintenance */
.text-plum {
color: var(--color-primary);
}
.text-plum-light {
color: #b16788;
}
.text-plum-dark {
color: var(--color-base-content);
}
.text-sky-accent {
color: var(--color-secondary);
}
.text-sky-accent-light {
color: var(--color-accent);
}
.text-earth {
color: var(--color-neutral);
}
.text-oak {
color: var(--color-base-300);
}
.bg-plum {
background-color: var(--color-primary);
}
.bg-sky-accent {
background-color: var(--color-secondary);
}
.bg-sky-accent-light {
background-color: var(--color-accent);
}
.bg-earth {
background-color: var(--color-neutral);
}
.border-plum {
border-color: var(--color-primary);
}
.border-sky-accent {
border-color: var(--color-secondary);
}
.hover\:bg-plum-light:hover {
background-color: #b16788;
}
.hover\:text-plum:hover {
color: var(--color-primary);
}

View file

@ -26,12 +26,12 @@ defmodule SpazioSolazzoWeb.BookingComponents do
<div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0"> <div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0">
<div <div
id={"#{@id}-container"} id={"#{@id}-container"}
class="relative transform overflow-hidden rounded-3xl bg-white dark:bg-gray-800 px-4 pb-4 pt-5 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-sm sm:p-6" class="relative transform overflow-hidden rounded-3xl bg-base-100 px-4 pb-4 pt-5 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-sm sm:p-6"
> >
<div> <div>
<div class="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-teal-100 dark:bg-teal-900/30"> <div class="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-success/10">
<svg <svg
class="h-6 w-6 text-teal-600 dark:text-teal-400" class="h-6 w-6 text-success"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
viewBox="0 0 24 24" viewBox="0 0 24 24"
@ -45,11 +45,11 @@ defmodule SpazioSolazzoWeb.BookingComponents do
</svg> </svg>
</div> </div>
<div class="mt-3 text-center sm:mt-5"> <div class="mt-3 text-center sm:mt-5">
<h3 class="text-lg font-semibold leading-6 text-gray-900 dark:text-white"> <h3 class="text-lg font-semibold leading-6 text-base-content">
Booking Successful! Booking Successful!
</h3> </h3>
<div class="mt-2"> <div class="mt-2">
<p class="text-sm text-gray-500 dark:text-gray-400"> <p class="text-sm text-neutral">
Your booking has been confirmed. You will receive a confirmation email shortly. Your booking has been confirmed. You will receive a confirmation email shortly.
</p> </p>
</div> </div>
@ -59,7 +59,7 @@ defmodule SpazioSolazzoWeb.BookingComponents do
<button <button
phx-click={@on_close} phx-click={@on_close}
type="button" type="button"
class="inline-flex w-full justify-center rounded-2xl bg-teal-600 px-3 py-3 text-sm font-semibold text-white shadow-lg hover:bg-teal-700 hover:shadow-xl focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600 transition-all" class="btn btn-success w-full rounded-2xl text-white shadow-lg hover:shadow-xl transition-all"
> >
Got it! Got it!
</button> </button>
@ -86,25 +86,24 @@ defmodule SpazioSolazzoWeb.BookingComponents do
class={[ class={[
"group w-full flex items-center justify-between p-4 rounded-xl border-2 transition-all duration-200", "group w-full flex items-center justify-between p-4 rounded-xl border-2 transition-all duration-200",
if(@booked, if(@booked,
do: do: "border-base-300 bg-base-200 cursor-not-allowed opacity-75",
"border-slate-300 dark:border-slate-600 bg-slate-100 dark:bg-slate-700 cursor-not-allowed opacity-75",
else: else:
"border-sky-500/40 hover:border-sky-500 bg-transparent hover:bg-sky-500/5 dark:hover:bg-sky-500/10 cursor-pointer" "border-secondary/40 hover:border-secondary bg-transparent hover:bg-secondary/5 cursor-pointer"
) )
]} ]}
> >
<span class={[ <span class={[
"text-lg font-bold transition-colors", "text-lg font-bold transition-colors",
if(@booked, if(@booked,
do: "text-slate-500 dark:text-slate-400", do: "text-neutral",
else: "text-slate-900 dark:text-white group-hover:text-sky-500" else: "text-base-content group-hover:text-secondary"
) )
]}> ]}>
{CalendarExt.format_time_range(@time_slot)} {CalendarExt.format_time_range(@time_slot)}
</span> </span>
<span class={[ <span class={[
"text-xs font-medium", "text-xs font-medium",
if(@booked, do: "text-slate-500", else: "text-sky-500") if(@booked, do: "text-neutral", else: "text-secondary")
]}> ]}>
{if @booked, do: "Booked", else: "Available"} {if @booked, do: "Booked", else: "Available"}
</span> </span>

View file

@ -256,12 +256,13 @@ defmodule SpazioSolazzoWeb.CoreComponents do
~H""" ~H"""
<div class="fieldset mb-2"> <div class="fieldset mb-2">
<label> <label>
<span :if={@label} class="label mb-1">{@label}</span> <span :if={@label} class="block text-sm font-medium text-base-content mb-2">{@label}</span>
<textarea <textarea
id={@id} id={@id}
name={@name} name={@name}
class={[ class={[
@class || "w-full textarea", @class ||
"textarea textarea-bordered w-full rounded-xl focus:border-secondary !outline-none text-base-content resize-none",
@errors != [] && (@error_class || "textarea-error") @errors != [] && (@error_class || "textarea-error")
]} ]}
{@rest} {@rest}
@ -309,14 +310,15 @@ defmodule SpazioSolazzoWeb.CoreComponents do
~H""" ~H"""
<div class="fieldset mb-2"> <div class="fieldset mb-2">
<label> <label>
<span :if={@label} class="label mb-1 text-gray-900 dark:text-gray-100">{@label}</span> <span :if={@label} class="block text-sm font-medium text-base-content mb-2">{@label}</span>
<input <input
type={@type} type={@type}
name={@name} name={@name}
id={@id} id={@id}
value={Phoenix.HTML.Form.normalize_value(@type, @value)} value={Phoenix.HTML.Form.normalize_value(@type, @value)}
class={[ class={[
@class || "w-full input", @class ||
"input input-bordered w-full rounded-xl focus:border-secondary !outline-none text-base-content",
@errors != [] && (@error_class || "input-error") @errors != [] && (@error_class || "input-error")
]} ]}
{@rest} {@rest}

View file

@ -34,42 +34,33 @@ defmodule SpazioSolazzoWeb.LandingComponents do
def feature_card(assigns) do def feature_card(assigns) do
~H""" ~H"""
<div class="bg-white dark:bg-slate-900 p-8 rounded-2xl border border-slate-100 dark:border-slate-800 shadow-sm hover:shadow-lg hover:border-teal-500/30 dark:hover:border-teal-500/30 transition-all duration-300 group"> <div class="card bg-base-100 p-8 rounded-2xl border border-base-200 shadow-sm hover:shadow-lg hover:border-primary/30 transition-all duration-300 group">
<div class={[ <div class={[
"w-12 h-12 rounded-xl flex items-center justify-center mb-6 group-hover:scale-110 transition-transform", "w-12 h-12 rounded-xl flex items-center justify-center mb-6 group-hover:scale-110 transition-transform",
color_classes(@color) color_classes(@color)
]}> ]}>
<.icon name={@icon} class="w-7 h-7" /> <.icon name={@icon} class="w-7 h-7" />
</div> </div>
<h3 class="text-xl font-bold text-slate-900 dark:text-white mb-3"> <h3 class="text-xl font-bold text-base-content mb-3">
{@title} {@title}
</h3> </h3>
<p class="text-slate-600 dark:text-slate-400 leading-relaxed"> <p class="text-neutral leading-relaxed">
{@description} {@description}
</p> </p>
</div> </div>
""" """
end end
defp color_classes("sky"), do: "bg-sky-100 dark:bg-sky-900/30 text-sky-600 dark:text-sky-400" defp color_classes("primary"), do: "bg-primary/10 text-primary"
defp color_classes("secondary"), do: "bg-secondary/10 text-secondary"
defp color_classes("orange"), defp color_classes("accent"), do: "bg-accent/10 text-accent"
do: "bg-orange-100 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400" defp color_classes("sky"), do: "bg-secondary/10 text-secondary"
defp color_classes("orange"), do: "bg-primary/10 text-primary"
defp color_classes("yellow"), defp color_classes("yellow"), do: "bg-accent/10 text-accent"
do: "bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600 dark:text-yellow-400" defp color_classes("emerald"), do: "bg-success/10 text-success"
defp color_classes("indigo"), do: "bg-info/10 text-info"
defp color_classes("emerald"), defp color_classes("purple"), do: "bg-primary/10 text-primary"
do: "bg-emerald-100 dark:bg-emerald-900/30 text-emerald-600 dark:text-emerald-400" defp color_classes(_), do: "bg-neutral/10 text-neutral"
defp color_classes("indigo"),
do: "bg-indigo-100 dark:bg-indigo-900/30 text-indigo-600 dark:text-indigo-400"
defp color_classes("purple"),
do: "bg-purple-100 dark:bg-purple-900/30 text-purple-600 dark:text-purple-400"
defp color_classes(_),
do: "bg-slate-100 dark:bg-slate-900/30 text-slate-600 dark:text-slate-400"
@doc """ @doc """
Renders a house rules section with a list of rules. Renders a house rules section with a list of rules.
@ -87,20 +78,20 @@ defmodule SpazioSolazzoWeb.LandingComponents do
def house_rules(assigns) do def house_rules(assigns) do
~H""" ~H"""
<section class="py-16 px-6"> <section class="py-16 px-6">
<div class="mx-auto max-w-[1000px] bg-orange-50 dark:bg-slate-800/50 rounded-3xl p-8 md:p-12 border border-orange-100 dark:border-slate-700/50"> <div class="mx-auto max-w-[1000px] bg-base-200 rounded-3xl p-8 md:p-12 border border-base-300">
<div class="flex flex-col md:flex-row gap-8 items-center justify-center"> <div class="flex flex-col md:flex-row gap-8 items-center justify-center">
<div class="flex-1 md:flex-none w-full md:w-auto"> <div class="flex-1 md:flex-none w-full md:w-auto">
<h3 class="text-2xl font-bold text-slate-900 dark:text-white mb-4"> <h3 class="text-2xl font-bold text-base-content mb-4">
{@title} {@title}
</h3> </h3>
<ul class="space-y-3"> <ul class="space-y-3">
<li <li
:for={rule <- @rule} :for={rule <- @rule}
class="flex items-start gap-3 text-slate-600 dark:text-slate-300" class="flex items-start gap-3 text-neutral"
> >
<.icon <.icon
name="hero-check-circle" name="hero-check-circle"
class="w-5 h-5 text-orange-500 dark:text-orange-400 shrink-0 mt-0.5" class="w-5 h-5 text-secondary shrink-0 mt-0.5"
/> />
<span>{render_slot(rule)}</span> <span>{render_slot(rule)}</span>
</li> </li>
@ -138,12 +129,12 @@ defmodule SpazioSolazzoWeb.LandingComponents do
def page_header(assigns) do def page_header(assigns) do
~H""" ~H"""
<section class="relative pt-6 md:pt-10 pb-16 px-6"> <section class="relative pt-6 md:pt-10 pb-16 px-6 bg-base-100">
<div class="mx-auto max-w-[1200px]"> <div class="mx-auto max-w-[1200px]">
<div class="mb-6 flex items-center gap-2 text-sm text-slate-500 dark:text-slate-400"> <div class="mb-6 flex items-center gap-2 text-sm text-neutral">
<.link <.link
navigate={~p"/"} navigate={~p"/"}
class="hover:text-sky-500 dark:hover:text-yellow-400 transition-colors flex items-center gap-1" class="hover:text-primary transition-colors flex items-center gap-1"
> >
<.icon name="hero-arrow-left" class="w-4 h-4" /> Back to Home <.icon name="hero-arrow-left" class="w-4 h-4" /> Back to Home
</.link> </.link>
@ -151,41 +142,42 @@ defmodule SpazioSolazzoWeb.LandingComponents do
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-16 items-center"> <div class="grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-16 items-center">
<div class="order-2 lg:order-1 flex flex-col gap-6"> <div class="order-2 lg:order-1 flex flex-col gap-6">
<div> <div>
<h1 class="text-4xl md:text-5xl lg:text-6xl font-black text-slate-900 dark:text-white leading-[1.1] tracking-tight"> <h1 class="text-4xl md:text-5xl lg:text-6xl font-black text-base-content leading-[1.1] tracking-tight">
{render_slot(@title)} {render_slot(@title)}
</h1> </h1>
</div> </div>
<p class="text-lg text-slate-600 dark:text-slate-300 leading-relaxed max-w-xl"> <p class="text-lg text-neutral leading-relaxed max-w-xl">
{render_slot(@description)} {render_slot(@description)}
</p> </p>
<div class="flex flex-col sm:flex-row gap-4 pt-2"> <div class="flex flex-col sm:flex-row gap-4 pt-2">
<.link <.link
navigate={@booking_path} navigate={@booking_path}
class="h-14 px-8 rounded-2xl bg-sky-500 hover:bg-sky-600 dark:bg-teal-500 dark:hover:bg-teal-600 text-white text-lg font-bold transition-all shadow-xl shadow-sky-500/30 dark:shadow-teal-500/30 flex items-center justify-center gap-3 w-full sm:w-auto hover:-translate-y-1" class="btn btn-primary h-14 px-8 rounded-2xl text-lg font-bold shadow-xl w-full sm:w-auto hover:-translate-y-1"
> >
<span>{@booking_label}</span> <span>{@booking_label}</span>
<.icon name="hero-arrow-right" class="w-5 h-5" /> <.icon name="hero-arrow-right" class="w-5 h-5" />
</.link> </.link>
<div class="flex items-center gap-2 text-slate-500 dark:text-slate-400 px-4 h-14 w-full sm:w-auto justify-center"> <div class="flex items-center gap-2 text-neutral px-4 h-14 w-full sm:w-auto justify-center">
<span class="text-2xl font-bold text-slate-900 dark:text-white">{@price}</span> <span class="text-2xl font-bold text-base-content">{@price}</span>
<span class="text-sm">/ {@price_unit}</span> <span class="text-sm">/ {@price_unit}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="order-1 lg:order-2 relative group"> <div class="order-1 lg:order-2 relative group">
<div class="absolute -inset-1 bg-gradient-to-r from-orange-400 to-yellow-400 rounded-3xl blur opacity-25 group-hover:opacity-50 transition duration-1000 group-hover:duration-200"> <div class="absolute -inset-1 bg-gradient-to-r from-primary to-secondary rounded-3xl blur opacity-25 group-hover:opacity-50 transition duration-1000 group-hover:duration-200">
</div> </div>
<div class="relative overflow-hidden rounded-2xl aspect-[4/3] shadow-2xl shadow-black/40"> <div class="relative overflow-hidden rounded-2xl aspect-[4/3] shadow-2xl">
<.live_component <.live_component
module={SpazioSolazzoWeb.CarouselLiveComponent} module={SpazioSolazzoWeb.CarouselLiveComponent}
id="page-header-carousel" id="page-header-carousel"
images={@images} images={@images}
height="100%"
/> />
<div class="absolute inset-0 bg-gradient-to-t from-slate-900/80 via-transparent to-transparent"> <div class="absolute inset-0 bg-gradient-to-t from-base-300/80 via-transparent to-transparent pointer-events-none">
</div> </div>
<div class="absolute bottom-6 left-6 right-6 flex justify-between items-end"> <div class="absolute bottom-6 left-6 right-6 flex justify-between items-end pointer-events-none">
<div> <div>
<span class="block text-yellow-400 font-bold text-sm mb-1 tracking-wide"> <span class="block text-white font-bold text-sm mb-1 tracking-wide">
CAPACITY CAPACITY
</span> </span>
<span class="text-white font-bold text-xl flex items-center gap-2"> <span class="text-white font-bold text-xl flex items-center gap-2">
@ -224,13 +216,13 @@ defmodule SpazioSolazzoWeb.LandingComponents do
def features_section(assigns) do def features_section(assigns) do
~H""" ~H"""
<section class="py-20 bg-slate-50 dark:bg-slate-800/30 border-y border-slate-200 dark:border-slate-800"> <section class="py-20 bg-base-200 border-y border-base-300">
<div class="mx-auto max-w-[1200px] px-6"> <div class="mx-auto max-w-[1200px] px-6">
<div class="text-center max-w-2xl mx-auto mb-16"> <div class="text-center max-w-2xl mx-auto mb-16">
<h2 class="text-3xl font-bold text-slate-900 dark:text-white mb-4"> <h2 class="text-3xl font-bold text-base-content mb-4">
{@title} {@title}
</h2> </h2>
<p class="text-slate-600 dark:text-slate-400"> <p class="text-neutral">
{@description} {@description}
</p> </p>
</div> </div>
@ -240,7 +232,7 @@ defmodule SpazioSolazzoWeb.LandingComponents do
icon={feature.icon} icon={feature.icon}
title={feature.title} title={feature.title}
description={feature.description} description={feature.description}
color={Map.get(feature, :color, "sky")} color={Map.get(feature, :color, "primary")}
/> />
</div> </div>
</div> </div>

View file

@ -39,9 +39,9 @@ defmodule SpazioSolazzoWeb.Layouts do
def app(assigns) do def app(assigns) do
~H""" ~H"""
<.app_header current_user={@current_user} title="Spazio Solazzo" icon="hero-sun-solid" /> <.app_header current_user={@current_user} />
<main class="bg-slate-50 dark:bg-slate-900 flex-1 relative transition-colors duration-300"> <main class="bg-base-100 flex-1 relative transition-colors duration-300">
{render_slot(@inner_block)} {render_slot(@inner_block)}
</main> </main>
@ -102,7 +102,7 @@ defmodule SpazioSolazzoWeb.Layouts do
def theme_toggle(assigns) do def theme_toggle(assigns) do
~H""" ~H"""
<button <button
class="p-2 rounded-full hover:bg-slate-100 dark:hover:bg-slate-800 text-slate-600 dark:text-slate-400 transition-colors" class="p-2 rounded-full hover:bg-base-200 text-neutral transition-colors"
phx-click={ phx-click={
JS.dispatch("phx:set-theme", JS.dispatch("phx:set-theme",
detail: %{theme: "toggle"} detail: %{theme: "toggle"}
@ -116,27 +116,16 @@ defmodule SpazioSolazzoWeb.Layouts do
""" """
end end
attr :title, :string, default: nil, doc: "the title shown on the top left of the header"
attr :icon, :string, default: nil, doc: "The icon shown on the top left of the header"
attr :current_user, :map, attr :current_user, :map,
default: nil, default: nil,
doc: "the current authenticated user" doc: "the current authenticated user"
defp app_header(assigns) do defp app_header(assigns) do
~H""" ~H"""
<header class="sticky top-0 z-50 w-full border-b border-slate-200 dark:border-slate-800 bg-white/80 dark:bg-slate-900/80 backdrop-blur-md px-6 py-4"> <header class="sticky top-0 z-50 w-full border-b border-base-200 bg-base-100 backdrop-blur-md px-6 py-4">
<div class="mx-auto flex h-10 max-w-[1200px] items-center justify-between"> <div class="mx-auto flex h-10 max-w-[1200px] items-center justify-between">
<.link <.link navigate="/" class="flex items-center gap-3 hover:opacity-80 transition-opacity">
navigate="/" <img src="/images/logo.png" alt="Spazio Solazzo" class="h-8" />
class="flex items-center gap-3 text-slate-900 dark:text-slate-100 hover:opacity-80 transition-opacity"
>
<div class="flex items-center justify-center text-sky-500">
<.icon name={@icon} class="size-8" />
</div>
<h2 class="text-lg font-bold leading-tight tracking-tight text-slate-800 dark:text-slate-100">
{@title}
</h2>
</.link> </.link>
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
@ -146,14 +135,14 @@ defmodule SpazioSolazzoWeb.Layouts do
<div class="hidden md:flex items-center gap-3"> <div class="hidden md:flex items-center gap-3">
<.link <.link
navigate={~p"/profile"} navigate={~p"/profile"}
class="size-10 rounded-full bg-slate-200 dark:bg-slate-700 flex items-center justify-center text-slate-500 dark:text-slate-400 border-2 border-primary/20 hover:border-primary/40 transition-colors" class="btn btn-circle btn-outline text-primary hover:bg-info/10"
> >
<.icon name="hero-user" class="size-5" /> <.icon name="hero-user" class="size-6" />
</.link> </.link>
<.link <.link
href={~p"/sign-out"} href={~p"/sign-out"}
id="sign-out-link" id="sign-out-link"
class="px-4 py-2 text-sm font-medium text-slate-700 dark:text-slate-300 hover:text-red-600 hover:bg-red-50 dark:hover:text-red-400 dark:hover:bg-red-950/30 rounded-lg transition-colors border border-slate-300 dark:border-slate-600 hover:border-red-300 dark:hover:border-red-800" class="btn btn-outline btn-error btn-sm hover:text-error hover:bg-error/10"
> >
Sign Out Sign Out
</.link> </.link>
@ -161,17 +150,13 @@ defmodule SpazioSolazzoWeb.Layouts do
<%!-- Mobile menu button --%> <%!-- Mobile menu button --%>
<button <button
phx-click={JS.toggle(to: "#mobile-menu")} phx-click={JS.toggle(to: "#mobile-menu")}
class="md:hidden p-2 rounded-lg hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors" class="btn btn-ghost btn-sm md:hidden text-neutral"
id="mobile-menu-button" id="mobile-menu-button"
> >
<.icon name="hero-bars-3" class="size-6 text-slate-600 dark:text-slate-400" /> <.icon name="hero-bars-3" class="size-6" />
</button> </button>
<% else %> <% else %>
<.link <.link navigate={~p"/sign-in"} id="sign-in-link" class="btn btn-secondary btn-sm">
navigate={~p"/sign-in"}
id="sign-in-link"
class="px-4 py-2 text-sm font-medium text-white bg-sky-500 hover:bg-sky-600 rounded-lg transition-colors shadow-sm"
>
Sign In Sign In
</.link> </.link>
<% end %> <% end %>
@ -181,21 +166,21 @@ defmodule SpazioSolazzoWeb.Layouts do
<%= if @current_user do %> <%= if @current_user do %>
<div <div
id="mobile-menu" id="mobile-menu"
class="md:hidden absolute top-full right-0 left-0 mt-2 mx-6 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl shadow-lg overflow-hidden" class="md:hidden absolute top-full right-0 left-0 mt-2 mx-6 bg-base-100 border border-base-200 rounded-xl shadow-lg overflow-hidden"
style="display: none;" style="display: none;"
> >
<div class="flex flex-col"> <div class="menu">
<.link <.link
navigate={~p"/profile"} navigate={~p"/profile"}
phx-click={JS.hide(to: "#mobile-menu")} phx-click={JS.hide(to: "#mobile-menu")}
class="flex items-center gap-3 px-4 py-3 text-sm font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors" class="flex items-center gap-3 px-4 py-3 text-sm font-medium hover:bg-accent/10 text-neutral transition-colors"
> >
<.icon name="hero-user" class="size-5 text-slate-500 dark:text-slate-400" /> Profile <.icon name="hero-user" class="size-5 text-primary" /> Profile
</.link> </.link>
<.link <.link
href={~p"/sign-out"} href={~p"/sign-out"}
id="mobile-sign-out-link" id="mobile-sign-out-link"
class="flex items-center gap-3 px-4 py-3 text-sm font-medium text-red-600 dark:text-red-500 hover:bg-red-50 dark:hover:bg-red-950/30 transition-colors border-t border-slate-200 dark:border-slate-800" class="flex items-center gap-3 px-4 py-3 text-sm font-medium hover:bg-error/10 text-error transition-colors border-t border-base-200"
> >
<.icon name="hero-arrow-right-on-rectangle" class="size-5" /> Sign Out <.icon name="hero-arrow-right-on-rectangle" class="size-5" /> Sign Out
</.link> </.link>
@ -212,30 +197,30 @@ defmodule SpazioSolazzoWeb.Layouts do
assigns = assign(assigns, :current_year, current_year) assigns = assign(assigns, :current_year, current_year)
~H""" ~H"""
<footer class="border-t border-slate-200 dark:border-slate-800 bg-white dark:bg-slate-900 py-12 px-6 transition-colors duration-300"> <footer class="footer border-t border-base-200 bg-base-100 py-12 px-6">
<div class="mx-auto max-w-[1200px] flex flex-col md:flex-row justify-between gap-8"> <div class="mx-auto max-w-[1200px] w-full flex flex-col md:flex-row justify-between gap-8">
<div class="flex flex-col gap-4 max-w-sm"> <div class="flex flex-col gap-4 max-w-sm">
<div class="flex items-center gap-3 text-slate-900 dark:text-slate-100"> <div class="flex items-center gap-3">
<div class="flex items-center justify-center size-6 bg-sky-500 rounded text-white"> <img src="/images/logo.png" alt="Spazio Solazzo" class="h-6" />
<.icon name="hero-squares-2x2" class="size-4" />
</div>
<h2 class="text-base font-bold">Spazio Solazzo</h2>
</div> </div>
<p class="text-sm text-slate-500 dark:text-slate-400"> <p class="text-sm text-neutral">
A community-driven space dedicated to work, creativity, and connection. A community-driven space dedicated to work, creativity, and connection.
</p> </p>
<p class="text-xs text-neutral">
© {@current_year} Spazio Solazzo. All rights reserved.
</p>
</div> </div>
<div class="flex gap-16 flex-wrap"> <div class="flex gap-16 flex-wrap md:justify-end">
<div> <div>
<h3 class="text-sm font-bold text-slate-900 dark:text-slate-100 uppercase tracking-wider mb-4"> <h3 class="text-sm font-bold text-base-content uppercase tracking-wider mb-4">
Spaces Spaces
</h3> </h3>
<ul class="flex flex-col gap-3"> <ul class="flex flex-col gap-3">
<li> <li>
<a <a
href="/coworking" href="/coworking"
class="text-sm text-slate-500 dark:text-slate-400 hover:text-sky-500 transition-colors" class="text-sm text-neutral hover:text-secondary transition-colors"
> >
Coworking Coworking
</a> </a>
@ -243,7 +228,7 @@ defmodule SpazioSolazzoWeb.Layouts do
<li> <li>
<a <a
href="/meeting" href="/meeting"
class="text-sm text-slate-500 dark:text-slate-400 hover:text-sky-500 transition-colors" class="text-sm text-neutral hover:text-secondary transition-colors"
> >
Meeting Room Meeting Room
</a> </a>
@ -251,7 +236,7 @@ defmodule SpazioSolazzoWeb.Layouts do
<li> <li>
<a <a
href="/music" href="/music"
class="text-sm text-slate-500 dark:text-slate-400 hover:text-sky-500 transition-colors" class="text-sm text-neutral hover:text-secondary transition-colors"
> >
Music Room Music Room
</a> </a>
@ -260,7 +245,7 @@ defmodule SpazioSolazzoWeb.Layouts do
</div> </div>
<div> <div>
<h3 class="text-sm font-bold text-slate-900 dark:text-slate-100 uppercase tracking-wider mb-4"> <h3 class="text-sm font-bold text-base-content uppercase tracking-wider mb-4">
Community Community
</h3> </h3>
<ul class="flex flex-col gap-3"> <ul class="flex flex-col gap-3">
@ -269,7 +254,7 @@ defmodule SpazioSolazzoWeb.Layouts do
href="https://caravanseraipalermo.it/" href="https://caravanseraipalermo.it/"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
class="text-sm text-slate-500 dark:text-slate-400 hover:text-sky-500 transition-colors" class="text-sm text-neutral hover:text-secondary transition-colors"
> >
Caravanserai Palermo Caravanserai Palermo
</a> </a>
@ -279,7 +264,7 @@ defmodule SpazioSolazzoWeb.Layouts do
href="https://mojocohouse.com/" href="https://mojocohouse.com/"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
class="text-sm text-slate-500 dark:text-slate-400 hover:text-sky-500 transition-colors" class="text-sm text-neutral hover:text-secondary transition-colors"
> >
Mojo Cohouse Mojo Cohouse
</a> </a>
@ -289,7 +274,7 @@ defmodule SpazioSolazzoWeb.Layouts do
href="https://jaster.xyz" href="https://jaster.xyz"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
class="text-sm text-slate-500 dark:text-slate-400 hover:text-sky-500 transition-colors" class="text-sm text-neutral hover:text-secondary transition-colors"
> >
Author's Blog Author's Blog
</a> </a>
@ -298,12 +283,6 @@ defmodule SpazioSolazzoWeb.Layouts do
</div> </div>
</div> </div>
</div> </div>
<div class="mx-auto max-w-[1200px] mt-12 pt-8 border-t border-slate-100 dark:border-slate-800 text-center md:text-left">
<p class="text-xs text-slate-500">
© {@current_year} Spazio Solazzo. All rights reserved.
</p>
</div>
</footer> </footer>
""" """
end end

View file

@ -57,86 +57,68 @@ defmodule SpazioSolazzoWeb.PageComponents do
~H""" ~H"""
<div <div
id={@id} id={@id}
class="group relative overflow-hidden rounded-2xl bg-white dark:bg-slate-800 shadow-sm border border-slate-200 dark:border-slate-800 hover:border-sky-500/50 transition-all duration-300" class="card group relative overflow-hidden rounded-3xl bg-base-100 shadow-xl hover:shadow-2xl transition-all duration-500"
> >
<div class={[ <div class={[
"flex flex-col h-full", "flex flex-col h-full",
@image_position == :left && "md:flex-row", @image_position == :left && "md:flex-row",
@image_position == :right && "md:flex-row-reverse" @image_position == :right && "md:flex-row-reverse"
]}> ]}>
<div class="md:w-2/5 relative h-64 md:h-auto overflow-hidden"> <div class="md:w-1/2 relative h-80 md:h-auto overflow-hidden">
<div <div
class="absolute inset-0 bg-cover bg-center transition-transform duration-700 group-hover:scale-105" class="absolute inset-0 bg-cover bg-center transition-transform duration-700 group-hover:scale-105"
style={"background-image: url('#{@image_url}');"} style={"background-image: url('#{@image_url}');"}
> >
</div> </div>
<div class="absolute inset-0 bg-gradient-to-t from-slate-900/60 to-transparent md:hidden">
</div>
<div class="absolute bottom-4 left-4 md:hidden">
<span class={[
"text-white text-xs font-bold px-2 py-1 rounded uppercase tracking-wider",
@primary_label_variant == :primary && "bg-sky-500",
@primary_label_variant == :secondary && "bg-slate-600",
@primary_label_variant == :accent && "bg-yellow-400 text-slate-900"
]}>
{@primary_label}
</span>
</div>
</div> </div>
<div class="flex-1 p-6 md:p-8 flex flex-col justify-center"> <div class="card-body flex-1 p-10 md:p-16 flex flex-col justify-center">
<div class="flex items-center justify-between mb-2"> <div class="flex items-center justify-between mb-6">
<span class={[ <span class={[
"hidden md:inline-block text-xs font-bold px-2 py-1 rounded uppercase tracking-wider mb-2", "badge badge-outline font-bold uppercase tracking-[0.2em]",
@primary_label_variant == :primary && @primary_label_variant == :primary && "badge-primary",
"text-sky-500 bg-sky-100 dark:bg-sky-900/20", @primary_label_variant == :secondary && "badge-secondary",
@primary_label_variant == :secondary && @primary_label_variant == :accent && "badge-accent"
"text-slate-600 dark:text-slate-400 bg-slate-100 dark:bg-slate-800",
@primary_label_variant == :accent &&
"text-yellow-700 dark:text-yellow-400 bg-yellow-100 dark:bg-yellow-900/20"
]}> ]}>
{@primary_label} {@primary_label}
</span> </span>
<%= if @secondary_label do %> <%= if @secondary_label do %>
<div class="flex items-center gap-2 text-slate-500 dark:text-slate-400 text-sm"> <div class="flex items-center gap-2 text-sm font-medium text-neutral">
<%= if @secondary_label_icon do %> <%= if @secondary_label_icon do %>
<.icon name={@secondary_label_icon} class="size-[18px]" /> <.icon name={@secondary_label_icon} class="size-5 text-primary" />
<% end %> <% end %>
<span>{@secondary_label}</span> <span>{@secondary_label}</span>
</div> </div>
<% end %> <% end %>
</div> </div>
<h3 class="text-2xl font-bold text-slate-900 dark:text-slate-100 mb-3"> <h3 class="card-title text-3xl font-extrabold mb-4 text-base-content">
{@title} {@title}
</h3> </h3>
<p class="text-slate-600 dark:text-slate-400 mb-6 leading-relaxed"> <p class="mb-10 leading-relaxed text-lg font-light text-neutral">
{@description} {@description}
<%= if @note do %> <%= if @note do %>
<span class={[ <span class="font-medium text-neutral">
"font-medium",
@primary_label_variant == :accent &&
"text-yellow-600 dark:text-yellow-400",
@primary_label_variant != :accent &&
"text-slate-700 dark:text-slate-300"
]}>
{@note} {@note}
</span> </span>
<% end %> <% end %>
</p> </p>
<div class="flex flex-col sm:flex-row gap-4 sm:items-center justify-between mt-auto pt-6 border-t border-slate-100 dark:border-slate-800"> <div class="card-actions flex flex-col sm:flex-row gap-8 sm:items-center justify-between mt-auto pt-10 border-t border-base-200">
<div class="flex flex-col"> <div class="flex flex-col">
<span class="text-sm text-slate-500">Starting from</span> <span class="text-[11px] uppercase font-bold tracking-widest text-neutral">
<span class="text-lg font-bold text-slate-900 dark:text-slate-100"> {if @time_unit == "4 hours", do: "Access", else: "Rate"}
</span>
<span class="text-3xl font-extrabold text-base-content">
{@price} {@price}
<span class="text-sm font-normal text-slate-500">/ {@time_unit}</span> <span class="text-base font-light text-neutral">/ {@time_unit}</span>
</span> </span>
</div> </div>
<.link <.link
navigate={@booking_url} navigate={@booking_url}
class="h-10 px-6 bg-sky-500 hover:bg-sky-600 text-white rounded-lg font-medium transition-colors flex items-center justify-center gap-2 group-hover:shadow-lg group-hover:shadow-sky-500/20" class="btn btn-primary h-14 px-10 rounded-2xl uppercase text-xs tracking-widest"
> >
<.icon name="hero-calendar" class="size-5" /> Book {@asset_type} <.icon name="hero-calendar" class="size-5" />
{"Book #{@asset_type}"}
</.link> </.link>
</div> </div>
</div> </div>

View file

@ -15,6 +15,7 @@ defmodule SpazioSolazzoWeb.AuthCallbackLive do
|> assign(:email, nil) |> assign(:email, nil)
|> assign(:existing_user?, false) |> assign(:existing_user?, false)
|> assign(:token, nil) |> assign(:token, nil)
|> assign(:form, to_form(%{}))
{:ok, socket} {:ok, socket}
end end
@ -46,10 +47,17 @@ defmodule SpazioSolazzoWeb.AuthCallbackLive do
_ -> false _ -> false
end end
form_params = %{
"name" => "",
"phone_number" => "",
"remember_me" => "false"
}
socket socket
|> assign(:token, token) |> assign(:token, token)
|> assign(:email, email) |> assign(:email, email)
|> assign(:existing_user?, existing_user?) |> assign(:existing_user?, existing_user?)
|> assign(:form, to_form(form_params))
{:error, _reason} -> {:error, _reason} ->
socket socket
@ -59,23 +67,20 @@ defmodule SpazioSolazzoWeb.AuthCallbackLive do
end end
@impl true @impl true
def handle_event("sign_in", args, %{assigns: %{token: token}} = socket) do def handle_event("sign_in", user_params, %{assigns: %{token: token}} = socket) do
remember_me = Map.get(args, "remember_me") == "on" remember_me = user_params["remember_me"] == "true"
{:noreply, {:noreply,
redirect(socket, to: ~p"/auth/magic/sign-in?token=#{token}&remember_me=#{remember_me}")} redirect(socket, to: ~p"/auth/magic/sign-in?token=#{token}&remember_me=#{remember_me}")}
end end
@impl true @impl true
def handle_event( def handle_event("register", user_params, socket) do
"register",
%{"name" => name, "phone_number" => phone_number} = args,
socket
) do
%{token: token} = socket.assigns %{token: token} = socket.assigns
remember_me = Map.get(args, "remember_me") == "on"
name = String.trim(name) name = String.trim(user_params["name"] || "")
phone_number = String.trim(phone_number) phone_number = String.trim(user_params["phone_number"] || "")
remember_me = user_params["remember_me"] == "true"
url = url =
if phone_number == "" do if phone_number == "" do

View file

@ -1,147 +1,117 @@
<Layouts.app flash={@flash} current_user={@current_user}> <Layouts.app flash={@flash} current_user={@current_user}>
<div class="min-h-screen bg-gradient-to-br from-slate-50 via-sky-50 to-slate-100 dark:from-slate-950 dark:via-slate-900 dark:to-slate-950 flex items-center justify-center px-4"> <div class="min-h-screen bg-gradient-to-br from-base-100 via-secondary/5 to-base-200 flex items-center justify-center px-4">
<div class="w-full max-w-md"> <div class="w-full max-w-md">
<div class="bg-white dark:bg-slate-800 rounded-2xl shadow-2xl border border-slate-200 dark:border-slate-700 overflow-hidden"> <div class="bg-base-100 rounded-2xl shadow-2xl border border-base-200 overflow-hidden">
<div class="p-8"> <div class="p-8">
<%= if @existing_user? do %> <%= if @existing_user? do %>
<%!-- Existing User Sign In --%> <%!-- Existing User Sign In --%>
<div class="text-center mb-6"> <div class="text-center mb-6">
<div class="inline-flex items-center justify-center size-12 bg-sky-100 dark:bg-sky-900/30 rounded-full mb-4"> <div class="inline-flex items-center justify-center size-12 bg-success/10 rounded-full mb-4">
<.icon name="hero-check-circle" class="size-6 text-sky-600 dark:text-sky-400" /> <.icon name="hero-check-circle" class="size-6 text-success" />
</div> </div>
<h2 class="text-2xl font-bold text-slate-900 dark:text-slate-100 mb-2"> <h2 class="text-2xl font-bold text-base-content mb-2">
Welcome Back! Welcome Back!
</h2> </h2>
<p class="text-slate-600 dark:text-slate-400 text-sm"> <p class="text-neutral text-sm">
We found your account. Click below to continue. We found your account. Click below to continue.
</p> </p>
</div> </div>
<form id="sign-in-form" phx-submit="sign_in" class="space-y-5"> <.form :let={f} for={@form} id="sign-in-form" phx-submit="sign_in" class="space-y-5">
<div class="flex items-center gap-3 p-4 bg-gradient-to-r from-slate-50 to-sky-50/50 dark:from-slate-900 dark:to-slate-800 rounded-xl border border-slate-200 dark:border-slate-700"> <div class="flex items-center gap-3 p-4 bg-secondary/5 rounded-xl border border-base-200">
<div class="flex-shrink-0"> <div class="flex-shrink-0">
<.icon name="hero-envelope" class="size-5 text-sky-600 dark:text-sky-400" /> <.icon name="hero-envelope" class="size-5 text-secondary" />
</div> </div>
<span class="text-sm font-medium text-slate-700 dark:text-slate-300 truncate"> <span class="text-sm font-medium text-base-content truncate">
{@email} {@email}
</span> </span>
</div> </div>
<label class="flex items-start gap-3 cursor-pointer group p-3 rounded-lg hover:bg-slate-50 dark:hover:bg-slate-900/50 transition-colors"> <.input
<input field={f[:remember_me]}
type="checkbox" type="checkbox"
name="remember_me" label="Remember me on this device for 30 days"
id="remember_me" class="checkbox-primary"
class="mt-0.5 size-5 rounded border-slate-300 dark:border-slate-600 text-sky-600 focus:ring-2 focus:ring-sky-500 focus:ring-offset-0 dark:bg-slate-700 cursor-pointer" />
/>
<span class="text-sm text-slate-700 dark:text-slate-300 leading-tight">
Remember me on this device for 30 days
</span>
</label>
<button <.button
type="submit" type="submit"
id="sign-in-button" id="sign-in-button"
class="w-full px-6 py-3.5 bg-gradient-to-r from-sky-500 to-sky-600 hover:from-sky-600 hover:to-sky-700 text-white font-semibold rounded-xl transition-all shadow-lg shadow-sky-500/30 hover:shadow-xl hover:shadow-sky-500/40 hover:-translate-y-0.5 active:translate-y-0" class="btn btn-secondary w-full rounded-xl text-white"
> >
Sign In to Your Account Sign In to Your Account
</button> </.button>
</form> </.form>
<% else %> <% else %>
<%!-- New User Registration --%> <%!-- New User Registration --%>
<div class="text-center mb-6"> <div class="text-center mb-6">
<div class="inline-flex items-center justify-center size-12 bg-sky-100 dark:bg-sky-900/30 rounded-full mb-4"> <div class="inline-flex items-center justify-center size-12 bg-primary/10 rounded-full mb-4">
<.icon name="hero-user-plus" class="size-6 text-sky-600 dark:text-sky-400" /> <.icon name="hero-user-plus" class="size-6 text-primary" />
</div> </div>
<h2 class="text-2xl font-bold text-slate-900 dark:text-slate-100 mb-2"> <h2 class="text-2xl font-bold text-base-content mb-2">
Complete Your Profile Complete Your Profile
</h2> </h2>
<p class="text-slate-600 dark:text-slate-400 text-sm"> <p class="text-neutral text-sm">
Just a few details to get you started Just a few details to get you started
</p> </p>
</div> </div>
<form id="registration-form" phx-submit="register" class="space-y-5"> <.form
<div class="flex items-center gap-3 p-4 bg-gradient-to-r from-slate-50 to-sky-50/50 dark:from-slate-900 dark:to-slate-800 rounded-xl border border-slate-200 dark:border-slate-700"> :let={f}
for={@form}
id="registration-form"
phx-submit="register"
class="space-y-5"
>
<div class="flex items-center gap-3 p-4 bg-secondary/5 rounded-xl border border-base-200">
<div class="flex-shrink-0"> <div class="flex-shrink-0">
<.icon name="hero-envelope" class="size-5 text-sky-600 dark:text-sky-400" /> <.icon name="hero-envelope" class="size-5 text-secondary" />
</div> </div>
<span class="text-sm font-medium text-slate-700 dark:text-slate-300 truncate"> <span class="text-sm font-medium text-base-content truncate">
{@email} {@email}
</span> </span>
</div> </div>
<div> <.input
<label field={f[:name]}
for="name" type="text"
class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2" label="Full Name *"
> placeholder="John Doe"
Full Name <span class="text-rose-500">*</span> required
</label> />
<div class="relative">
<input
type="text"
name="name"
id="name"
required
class="w-full pl-11 pr-4 py-3 rounded-xl border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 placeholder-slate-400 dark:placeholder-slate-500 focus:ring-2 focus:ring-sky-500 focus:border-transparent transition-shadow"
placeholder="John Doe"
/>
<div class="absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none">
<.icon name="hero-user" class="size-5 text-slate-400 dark:text-slate-500" />
</div>
</div>
</div>
<div> <div>
<label <.input
for="phone_number" field={f[:phone_number]}
class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2" type="tel"
> label="Phone Number (Optional)"
Phone Number (Optional) placeholder="+39 123456789"
</label> />
<div class="relative"> <p class="mt-2 text-xs text-neutral">
<input
type="tel"
name="phone_number"
id="phone_number"
class="w-full pl-11 pr-4 py-3 rounded-xl border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 placeholder-slate-400 dark:placeholder-slate-500 focus:ring-2 focus:ring-sky-500 focus:border-transparent transition-shadow"
placeholder="+39 123456789"
/>
<div class="absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none">
<.icon name="hero-phone" class="size-5 text-slate-400 dark:text-slate-500" />
</div>
</div>
<p class="mt-2 text-xs text-slate-500 dark:text-slate-400">
Your number will only be used to contact you personally about booking issues, never for marketing. Your number will only be used to contact you personally about booking issues, never for marketing.
</p> </p>
</div> </div>
<label class="flex items-start gap-3 cursor-pointer group p-3 rounded-lg hover:bg-slate-50 dark:hover:bg-slate-900/50 transition-colors"> <.input
<input field={f[:remember_me]}
type="checkbox" type="checkbox"
name="remember_me" label="Remember me on this device for 30 days"
id="remember_me" class="checkbox-primary"
class="mt-0.5 size-5 rounded border-slate-300 dark:border-slate-600 text-sky-600 focus:ring-2 focus:ring-sky-500 focus:ring-offset-0 dark:bg-slate-700 cursor-pointer" />
/>
<span class="text-sm text-slate-700 dark:text-slate-300 leading-tight">
Remember me on this device for 30 days
</span>
</label>
<button <.button
type="submit" type="submit"
id="register-button" id="register-button"
class="w-full px-6 py-3.5 bg-gradient-to-r from-sky-500 to-sky-600 hover:from-sky-600 hover:to-sky-700 text-white font-semibold rounded-xl transition-all shadow-lg shadow-sky-500/30 hover:shadow-xl hover:shadow-sky-500/40 hover:-translate-y-0.5 active:translate-y-0" class="btn btn-secondary w-full rounded-xl text-white"
> >
Create Account Create Account
</button> </.button>
</form> </.form>
<% end %> <% end %>
</div> </div>
<div class="px-8 py-4 bg-slate-50 dark:bg-slate-900/50 border-t border-slate-200 dark:border-slate-700"> <div class="px-8 py-4 bg-base-200 border-t border-base-300">
<p class="text-xs text-center text-slate-500 dark:text-slate-400"> <p class="text-xs text-center text-neutral">
By continuing, you agree to our Terms of Service and Privacy Policy By continuing, you agree to our Terms of Service and Privacy Policy
</p> </p>
</div> </div>
@ -150,7 +120,7 @@
<div class="mt-6 text-center"> <div class="mt-6 text-center">
<.link <.link
navigate="/" navigate="/"
class="inline-flex items-center gap-2 text-sm text-slate-600 dark:text-slate-400 hover:text-sky-600 dark:hover:text-sky-400 transition-colors" class="inline-flex items-center gap-2 text-sm text-neutral hover:text-secondary transition-colors"
> >
<.icon name="hero-arrow-left" class="size-4" /> <.icon name="hero-arrow-left" class="size-4" />
<span>Back to home</span> <span>Back to home</span>

View file

@ -1,42 +1,29 @@
<Layouts.app flash={@flash} current_user={@current_user}> <Layouts.app flash={@flash} current_user={@current_user}>
<div class="min-h-screen bg-gradient-to-br from-slate-50 via-sky-50 to-slate-100 dark:from-slate-950 dark:via-slate-900 dark:to-slate-950 flex items-center justify-center px-4 py-12"> <div class="min-h-screen bg-gradient-to-br from-base-100 via-secondary/5 to-base-200 flex items-center justify-center px-4 py-12">
<div class="w-full max-w-md"> <div class="w-full max-w-md">
<div class="text-center mb-8"> <div class="text-center mb-8">
<h2 class="text-slate-600 dark:text-slate-400 text-2xl"> <h2 class="text-neutral text-2xl">
Sign in with your email Sign in with your email
</h2> </h2>
</div> </div>
<div class="bg-white dark:bg-slate-800 rounded-2xl shadow-2xl border border-slate-200 dark:border-slate-700 overflow-hidden"> <div class="bg-base-100 rounded-2xl shadow-2xl border border-base-200 overflow-hidden">
<div class="p-8"> <div class="p-8">
<form phx-submit="request_magic_link" class="space-y-5"> <form phx-submit="request_magic_link" class="space-y-5">
<div> <.input
<label type="email"
for="email" name="email"
class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2" id="email"
> label="Email Address"
Email Address value={@email}
</label> required
<div class="relative"> placeholder="you@example.com"
<input />
type="email"
name="email"
id="email"
value={@email}
required
class="w-full pl-11 pr-4 py-3 rounded-xl border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 placeholder-slate-400 dark:placeholder-slate-500 focus:ring-2 focus:ring-sky-500 focus:border-transparent transition-shadow"
placeholder="you@example.com"
/>
<div class="absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none">
<.icon name="hero-envelope" class="size-5 text-slate-400 dark:text-slate-500" />
</div>
</div>
</div>
<button <button
type="submit" type="submit"
disabled={@loading} disabled={@loading}
class="w-full px-6 py-3.5 bg-gradient-to-r from-sky-500 to-sky-600 hover:from-sky-600 hover:to-sky-700 disabled:from-slate-400 disabled:to-slate-500 text-white font-semibold rounded-xl transition-all shadow-lg shadow-sky-500/30 hover:shadow-xl hover:shadow-sky-500/40 hover:-translate-y-0.5 active:translate-y-0 disabled:cursor-not-allowed disabled:transform-none" class="btn btn-secondary mt-2 w-full rounded-xl text-white"
> >
<%= if @loading do %> <%= if @loading do %>
Sending... Sending...
@ -47,8 +34,8 @@
</form> </form>
</div> </div>
<div class="px-8 py-4 bg-slate-50 dark:bg-slate-900/50 border-t border-slate-200 dark:border-slate-700"> <div class="px-8 py-4 bg-base-200 border-t border-base-300">
<p class="text-xs text-center text-slate-500 dark:text-slate-400"> <p class="text-xs text-center text-neutral">
We'll send you a secure link to sign in without a password We'll send you a secure link to sign in without a password
</p> </p>
</div> </div>
@ -57,7 +44,7 @@
<div class="mt-6 text-center"> <div class="mt-6 text-center">
<.link <.link
navigate="/" navigate="/"
class="inline-flex items-center gap-2 text-sm text-slate-600 dark:text-slate-400 hover:text-sky-600 dark:hover:text-sky-400 transition-colors" class="inline-flex items-center gap-2 text-sm text-neutral hover:text-secondary transition-colors"
> >
<.icon name="hero-arrow-left" class="size-4" /> <.icon name="hero-arrow-left" class="size-4" />
<span>Back to home</span> <span>Back to home</span>

View file

@ -3,23 +3,23 @@
<div class="mb-10"> <div class="mb-10">
<.link <.link
navigate={"/#{@space.slug}"} navigate={"/#{@space.slug}"}
class="inline-flex items-center gap-2 text-sm font-medium text-slate-500 hover:text-sky-500 dark:text-slate-400 dark:hover:text-white transition-colors" class="inline-flex items-center gap-2 text-sm font-medium text-neutral hover:text-secondary transition-colors"
> >
<.icon name="hero-arrow-left" class="w-5 h-5" /> Back to {@space.name} <.icon name="hero-arrow-left" class="w-5 h-5" /> Back to {@space.name}
</.link> </.link>
</div> </div>
<div class="text-center mb-12"> <div class="text-center mb-12">
<h1 class="text-4xl md:text-5xl lg:text-6xl font-black text-slate-900 dark:text-white tracking-tight mb-4"> <h1 class="text-4xl md:text-5xl lg:text-6xl font-black text-base-content tracking-tight mb-4">
{@asset.name} {@asset.name}
</h1> </h1>
<p class="text-lg text-slate-600 dark:text-slate-400 max-w-2xl mx-auto"> <p class="text-lg text-neutral max-w-2xl mx-auto">
{@space.name} - Flexible booking options available {@space.name} - Flexible booking options available
</p> </p>
</div> </div>
<div class="max-w-4xl mx-auto bg-white dark:bg-slate-800 rounded-3xl p-8 md:p-12 border border-slate-200 dark:border-slate-700 shadow-xl shadow-slate-200/50 dark:shadow-none"> <div class="max-w-4xl mx-auto bg-base-100 rounded-3xl p-8 md:p-12 border border-base-200 shadow-xl">
<h2 class="text-2xl font-bold text-slate-900 dark:text-white mb-8"> <h2 class="text-2xl font-bold text-base-content mb-8">
Available Time Slots Available Time Slots
</h2> </h2>
@ -31,16 +31,16 @@
/> />
<div class="time-slots-wrapper"> <div class="time-slots-wrapper">
<p class="mb-4 text-slate-500 dark:text-slate-400"> <p class="mb-4 text-neutral">
Selected day: Selected day:
<span class="font-bold text-slate-900 dark:text-white"> <span class="font-bold text-base-content">
{SpazioSolazzo.CalendarExt.format_date(@selected_date)} {SpazioSolazzo.CalendarExt.format_date(@selected_date)}
</span> </span>
</p> </p>
<div class="max-h-80 overflow-y-auto pr-4 space-y-3"> <div class="max-h-80 overflow-y-auto pr-4 space-y-3">
<%= if @time_slots == [] do %> <%= if @time_slots == [] do %>
<div class="text-center py-8 text-slate-500 dark:text-slate-400"> <div class="text-center py-8 text-neutral">
No time slots available for this date No time slots available for this date
</div> </div>
<% else %> <% else %>
@ -53,8 +53,8 @@
</div> </div>
</div> </div>
<div class="mt-8 pt-6 border-t border-slate-200 dark:border-slate-700 text-center"> <div class="mt-8 pt-6 border-t border-base-200 text-center">
<p class="text-base font-medium text-sky-500 dark:text-sky-400 flex items-center justify-center gap-2"> <p class="text-base font-medium text-secondary flex items-center justify-center gap-2">
<.icon name="hero-credit-card" class="w-5 h-5" /> Payment due upon arrival. <.icon name="hero-credit-card" class="w-5 h-5" /> Payment due upon arrival.
</p> </p>
</div> </div>

View file

@ -59,88 +59,54 @@ defmodule SpazioSolazzoWeb.BookingFormLiveComponent do
phx-target={@myself} phx-target={@myself}
> >
<div class="mt-6 space-y-4"> <div class="mt-6 space-y-4">
<div> <.input
<label name="customer_name"
for="customer_name" id="customer_name"
class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2" label="Name *"
> value={@form[:customer_name].value}
Name <span class="text-rose-500">*</span> required
</label> placeholder="Your full name"
<div class="relative"> />
<input
type="text"
name="customer_name"
id="customer_name"
value={@form[:customer_name].value}
required
class="w-full pl-11 pr-4 py-3 rounded-xl border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 placeholder-slate-400 dark:placeholder-slate-500 focus:ring-2 focus:ring-sky-500 focus:border-transparent transition-shadow"
placeholder="Your full name"
/>
<div class="absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none">
<.icon name="hero-user" class="size-5 text-slate-400 dark:text-slate-500" />
</div>
</div>
</div>
<div> <div>
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2"> <label class="block text-sm font-medium text-base-content mb-2">
Email Email
</label> </label>
<div class="flex items-center gap-3 p-4 bg-gradient-to-r from-slate-50 to-sky-50/50 dark:from-slate-900 dark:to-slate-800 rounded-xl border border-slate-200 dark:border-slate-700"> <div class="flex items-center gap-3 p-4 bg-secondary/5 rounded-xl border border-base-200">
<div class="flex-shrink-0"> <div class="flex-shrink-0">
<.icon name="hero-envelope" class="size-5 text-sky-600 dark:text-sky-400" /> <.icon name="hero-envelope" class="size-5 text-secondary" />
</div> </div>
<span class="text-sm font-medium text-slate-700 dark:text-slate-300 truncate"> <span class="text-sm font-medium text-base-content truncate">
{@current_user.email} {@current_user.email}
</span> </span>
</div> </div>
</div> </div>
<div> <.input
<label name="customer_phone"
for="customer_phone" id="customer_phone"
class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2" label="Phone (Optional)"
> value={@form[:customer_phone].value}
Phone (Optional) placeholder="+39 123456789"
</label> />
<div class="relative">
<input
type="tel"
name="customer_phone"
id="customer_phone"
value={@form[:customer_phone].value}
class="w-full pl-11 pr-4 py-3 rounded-xl border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 placeholder-slate-400 dark:placeholder-slate-500 focus:ring-2 focus:ring-sky-500 focus:border-transparent transition-shadow"
placeholder="+39 123456789"
/>
<div class="absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none">
<.icon name="hero-phone" class="size-5 text-slate-400 dark:text-slate-500" />
</div>
</div>
</div>
<div> <.input
<label type="textarea"
for="customer_comment" name="customer_comment"
class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2" label="Comments (Optional)"
> id="customer_comment"
Comments (Optional) placeholder="Any special requests or notes..."
</label> value={@form[:customer_comment].value}
<textarea rows="4"
name="customer_comment" />
id="customer_comment"
placeholder="Any special requests or notes..."
rows="4"
class="w-full px-4 py-3 rounded-xl border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 placeholder-slate-400 dark:placeholder-slate-500 focus:ring-2 focus:ring-sky-500 focus:border-transparent transition-shadow resize-none"
>{@form[:customer_comment].value}</textarea>
</div>
</div> </div>
<div class="mt-6 p-4 bg-sky-50 dark:bg-sky-900/20 border border-sky-200 dark:border-sky-800 rounded-xl"> <div class="mt-6 p-4 bg-info/5 border border-info/20 rounded-xl">
<div class="flex gap-3"> <div class="flex gap-3">
<div class="flex-shrink-0"> <div class="flex-shrink-0">
<.icon name="hero-information-circle" class="size-5 text-sky-600 dark:text-sky-400" /> <.icon name="hero-information-circle" class="size-5 text-info" />
</div> </div>
<div class="text-xs text-slate-600 dark:text-slate-300 space-y-1"> <div class="text-xs text-neutral space-y-1">
<ul class="list-disc list-inside space-y-0.5 ml-1"> <ul class="list-disc list-inside space-y-0.5 ml-1">
<li>Cancel anytime with no commitment</li> <li>Cancel anytime with no commitment</li>
<li>Payment upon arrival only</li> <li>Payment upon arrival only</li>
@ -152,14 +118,14 @@ defmodule SpazioSolazzoWeb.BookingFormLiveComponent do
<div class="mt-6 flex items-center gap-3"> <div class="mt-6 flex items-center gap-3">
<button <button
type="submit" type="submit"
class="flex-1 bg-teal-600 hover:bg-teal-700 text-white font-semibold py-3 px-4 rounded-2xl transition-colors" class="btn btn-primary flex-1 rounded-2xl"
> >
Confirm Confirm
</button> </button>
<button <button
type="button" type="button"
phx-click={@on_cancel} phx-click={@on_cancel}
class="flex-1 bg-gray-200 hover:bg-gray-300 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-800 dark:text-gray-200 font-semibold py-3 px-4 rounded-2xl transition-colors" class="btn btn-ghost btn-secondary dark:text-white flex-1 rounded-2xl"
> >
Cancel Cancel
</button> </button>

View file

@ -77,28 +77,28 @@ defmodule SpazioSolazzoWeb.CalendarLiveComponent do
type="button" type="button"
phx-click="prev-month" phx-click="prev-month"
phx-target={@myself} phx-target={@myself}
class="p-2 rounded-full hover:bg-slate-100 dark:hover:bg-slate-800 text-slate-600 dark:text-slate-400 transition-colors" class="p-2 rounded-full hover:bg-base-200 text-neutral transition-colors"
> >
<.icon name="hero-chevron-left" class="w-5 h-5" /> <.icon name="hero-chevron-left" class="w-5 h-5" />
</button> </button>
<h3 class="text-lg font-semibold text-slate-900 dark:text-white"> <h3 class="text-lg font-semibold text-base-content">
{Calendar.strftime(@beginning_of_month, "%B %Y")} {Calendar.strftime(@beginning_of_month, "%B %Y")}
</h3> </h3>
<button <button
type="button" type="button"
phx-click="next-month" phx-click="next-month"
phx-target={@myself} phx-target={@myself}
class="p-2 rounded-full hover:bg-slate-100 dark:hover:bg-slate-800 text-slate-600 dark:text-slate-400 transition-colors" class="p-2 rounded-full hover:bg-base-200 text-neutral transition-colors"
> >
<.icon name="hero-chevron-right" class="w-5 h-5" /> <.icon name="hero-chevron-right" class="w-5 h-5" />
</button> </button>
</div> </div>
<div class="grid grid-cols-7 text-center text-sm font-medium text-slate-500 dark:text-slate-400 mb-2"> <div class="grid grid-cols-7 text-center text-sm font-medium text-neutral mb-2">
<span>Mo</span><span>Tu</span><span>We</span><span>Th</span><span>Fr</span><span>Sa</span><span>Su</span> <span>Mo</span><span>Tu</span><span>We</span><span>Th</span><span>Fr</span><span>Sa</span><span>Su</span>
</div> </div>
<div class="grid grid-cols-7 gap-y-2 text-center text-slate-700 dark:text-slate-300"> <div class="grid grid-cols-7 gap-y-2 text-center text-base-content">
<%= for date <- @grid do %> <%= for date <- @grid do %>
<% is_selected = Date.compare(date, @selected_date) == :eq <% is_selected = Date.compare(date, @selected_date) == :eq
is_past = Date.compare(date, @today) == :lt is_past = Date.compare(date, @today) == :lt
@ -115,13 +115,13 @@ defmodule SpazioSolazzoWeb.CalendarLiveComponent do
[ [
"p-2 rounded-full transition-colors", "p-2 rounded-full transition-colors",
# Styling for past dates (disabled) # Styling for past dates (disabled)
is_past && "cursor-not-allowed opacity-40 text-slate-400 dark:text-slate-600", is_past && "cursor-not-allowed opacity-40 text-neutral",
# Styling for selected date # Styling for selected date
is_selected && is_selected &&
"bg-sky-500 text-white font-bold shadow-md shadow-sky-500/30", "bg-secondary text-white font-bold shadow-md shadow-secondary/30",
# Styling for regular dates # Styling for regular dates
!is_past && !is_selected && !is_past && !is_selected &&
"hover:bg-sky-500/20 dark:hover:bg-sky-500/20" "hover:bg-secondary/20"
] ]
} }
> >

View file

@ -0,0 +1,74 @@
defmodule SpazioSolazzoWeb.CarouselLiveComponent do
@moduledoc """
A LiveComponent for image carousels with navigation controls.
## Configuration Options
- `images`: List of image URLs (required)
- `height`: Height of the carousel (default: "650px")
"""
use Phoenix.LiveComponent
import SpazioSolazzoWeb.CoreComponents, only: [icon: 1]
@impl true
def update(assigns, socket) do
{:ok,
socket
|> assign(assigns)
|> assign_new(:carousel_index, fn -> 0 end)
|> assign_new(:height, fn -> "650px" end)}
end
@impl true
def handle_event("carousel_next", _params, socket) do
images_count = length(socket.assigns.images)
new_index = rem(socket.assigns.carousel_index + 1, images_count)
{:noreply, assign(socket, carousel_index: new_index)}
end
@impl true
def handle_event("carousel_prev", _params, socket) do
images_count = length(socket.assigns.images)
new_index = rem(socket.assigns.carousel_index - 1 + images_count, images_count)
{:noreply, assign(socket, carousel_index: new_index)}
end
@impl true
def render(assigns) do
~H"""
<div
class="relative carousel w-full max-h-160"
style={"height: #{@height};"}
>
<div
class="flex h-full transition-transform duration-500 ease-in-out"
style={"transform: translateX(-#{@carousel_index * 100}%);"}
>
<div :for={image <- @images} class="carousel-item w-full">
<img
src={image}
class="w-full object-cover"
/>
</div>
</div>
<button
phx-click="carousel_prev"
phx-target={@myself}
aria-label="Previous image"
class="absolute left-4 top-1/2 -translate-y-1/2 bg-white/20 hover:bg-white/40 backdrop-blur-sm p-2 rounded-full text-white transition-colors"
>
<.icon name="hero-chevron-left" class="w-6 h-6" />
</button>
<button
phx-click="carousel_next"
phx-target={@myself}
aria-label="Next image"
class="absolute right-4 top-1/2 -translate-y-1/2 bg-white/20 hover:bg-white/40 backdrop-blur-sm p-2 rounded-full text-white transition-colors"
>
<.icon name="hero-chevron-right" class="w-6 h-6" />
</button>
</div>
"""
end
end

View file

@ -1,67 +0,0 @@
defmodule SpazioSolazzoWeb.CarouselLiveComponent do
@moduledoc """
A LiveComponent for image carousels with navigation controls.
"""
use Phoenix.LiveComponent
import SpazioSolazzoWeb.CoreComponents, only: [icon: 1]
@impl true
def update(assigns, socket) do
{:ok,
socket
|> assign(assigns)
|> assign_new(:carousel_index, fn -> 0 end)}
end
@impl true
def handle_event("carousel_next", _params, socket) do
images_count = length(socket.assigns.images)
new_index = rem(socket.assigns.carousel_index + 1, images_count)
{:noreply, assign(socket, carousel_index: new_index)}
end
@impl true
def handle_event("carousel_prev", _params, socket) do
images_count = length(socket.assigns.images)
new_index = rem(socket.assigns.carousel_index - 1 + images_count, images_count)
{:noreply, assign(socket, carousel_index: new_index)}
end
@impl true
def render(assigns) do
~H"""
<div class="relative w-full h-full">
<div
class="flex h-full transition-transform duration-500 ease-in-out"
style={"transform: translateX(-#{@carousel_index * 100}%);"}
>
<div
:for={image <- @images}
class="w-full flex-shrink-0 bg-cover bg-center"
style={"background-image: url('#{image}');"}
>
</div>
</div>
<%= if length(@images) > 1 do %>
<button
phx-click="carousel_prev"
phx-target={@myself}
aria-label="Previous image"
class="absolute z-999 left-4 top-1/2 -translate-y-1/2 bg-white/20 hover:bg-white/40 backdrop-blur-sm p-2 rounded-full text-white transition-colors cursor-pointer"
>
<.icon name="hero-chevron-left" class="w-6 h-6" />
</button>
<button
phx-click="carousel_next"
phx-target={@myself}
aria-label="Next image"
class="absolute z-999 right-4 top-1/2 -translate-y-1/2 bg-white/20 hover:bg-white/40 backdrop-blur-sm p-2 rounded-full text-white transition-colors cursor-pointer"
>
<.icon name="hero-chevron-right" class="w-6 h-6" />
</button>
<% end %>
</div>
"""
end
end

View file

@ -38,19 +38,19 @@
/> />
</.features_section> </.features_section>
<section class="py-20 px-6 bg-white dark:bg-slate-900" id="interactive-floor-plan"> <section class="py-20 px-6 bg-base-100" id="interactive-floor-plan">
<div class="mx-auto max-w-[1200px]"> <div class="mx-auto max-w-[1200px]">
<div class="text-center mb-12"> <div class="text-center mb-12">
<h2 class="text-3xl font-bold text-slate-900 dark:text-white mb-4"> <h2 class="text-3xl font-bold text-base-content mb-4">
Interactive Floor Plan Interactive Floor Plan
</h2> </h2>
<p class="text-slate-600 dark:text-slate-400 max-w-lg mx-auto"> <p class="text-neutral max-w-lg mx-auto">
Select any desk to customize your booking details on the next page, where availability is confirmed. Select any desk to customize your booking details on the next page, where availability is confirmed.
</p> </p>
</div> </div>
<div class="bg-slate-50 dark:bg-slate-800/50 rounded-3xl p-8 md:p-12 border border-slate-200 dark:border-slate-800 shadow-xl shadow-slate-200/50 dark:shadow-none relative overflow-hidden"> <div class="bg-base-200 rounded-3xl p-8 md:p-12 border border-base-300 shadow-xl relative overflow-hidden">
<div class="absolute top-6 right-6 opacity-10 pointer-events-none select-none"> <div class="absolute top-6 right-6 opacity-10 pointer-events-none select-none">
<.icon name="hero-building-office-2" class="w-32 h-32 text-sky-500" /> <.icon name="hero-building-office-2" class="w-32 h-32 text-secondary" />
</div> </div>
<div class="flex flex-col items-center gap-10"> <div class="flex flex-col items-center gap-10">
<div class="grid grid-cols-2 md:grid-cols-4 gap-6 w-full max-w-3xl"> <div class="grid grid-cols-2 md:grid-cols-4 gap-6 w-full max-w-3xl">
@ -59,13 +59,13 @@
navigate={~p"/book/asset/#{asset.id}"} navigate={~p"/book/asset/#{asset.id}"}
class="group relative flex flex-col items-center gap-3 cursor-pointer" class="group relative flex flex-col items-center gap-3 cursor-pointer"
> >
<div class="w-full aspect-[4/3] rounded-xl bg-white dark:bg-slate-800 border-2 border-slate-200 dark:border-slate-700 group-hover:border-sky-500 dark:group-hover:border-teal-500 group-hover:shadow-lg group-hover:shadow-sky-500/20 dark:group-hover:shadow-teal-500/20 transition-all duration-300 flex items-center justify-center relative"> <div class="w-full aspect-[4/3] rounded-xl bg-base-100 border-2 border-base-200 group-hover:border-secondary group-hover:shadow-lg group-hover:shadow-secondary/20 transition-all duration-300 flex items-center justify-center relative">
<.icon <.icon
name="hero-computer-desktop" name="hero-computer-desktop"
class="w-12 h-12 text-slate-300 group-hover:text-sky-500 dark:group-hover:text-teal-500 transition-colors" class="w-12 h-12 text-base-300 group-hover:text-secondary transition-colors"
/> />
</div> </div>
<span class="text-sm font-bold text-slate-500 group-hover:text-sky-500 dark:group-hover:text-teal-500 transition-colors"> <span class="text-sm font-bold text-neutral group-hover:text-secondary transition-colors">
{asset.name} {asset.name}
</span> </span>
</.link> </.link>

View file

@ -9,11 +9,18 @@ defmodule SpazioSolazzoWeb.PageLive do
{:ok, meeting_space} = BookingSystem.get_space_by_slug("meeting", not_found_error?: false) {:ok, meeting_space} = BookingSystem.get_space_by_slug("meeting", not_found_error?: false)
{:ok, music_space} = BookingSystem.get_space_by_slug("music", not_found_error?: false) {:ok, music_space} = BookingSystem.get_space_by_slug("music", not_found_error?: false)
carousel_images = [
"https://lh3.googleusercontent.com/aida-public/AB6AXuApty1_MYrfkL2mpGOAKKvlxo-7B-Y6nnko3DA4UDhJ-dCSjcyOLMFy1C0xZmh1_Pu9TEEFj25GkJ74dR1Sb_x4sY9mDjecKICFvwHFgHkMFVMigsZjldl9rH34x4tZhdpWvUGCo32V1P5_0uwtXVPohKMbvIbBxr5nsPoEy_d7X4WgIMOA1Nv2bwDgkqbsG4X3noBx-riLqcnREEl3cb0kbtquJZJ6pYHfbimuNyuxtfQHzrG8KOMHe3YPoIgWt43mgPtgPL9gswni",
"https://lh3.googleusercontent.com/aida-public/AB6AXuDmh_AkVuUoICqpHk1NdLuLdi0xQBOC8Hy9PrsSNz956igHFRhbNGsB8k0vSLe2U2NW1sxRVZm_dwR27Q4Db_f21XbYkLtfiRYob-j4ran1rTBB0bQAz4QLFSO1yL_cPhDIpAyvC069mDQ33-ckZgZ_yvFsIK_-_0Jj2NEOnDie684uaR7vKuiBWlsr-JmAsPzUp7Aik7Qbzozune348nBz1bvWkBNMCpMO3JV8hrYBo1i6JlUiGSuP3-5fWXKt8dKhxPUN-amjLFgh",
"https://lh3.googleusercontent.com/aida-public/AB6AXuBBJs1jEAgwwiIvJD00kx3aA9pfI-o2fXT-eZ9dEQeHNHhvwQdVqrwsqwNvCR69rIYUNBKf-uY1dqXZSvXaXoE__slTLMqGHkUzSQSXql9PwhW3cLoMMv1wtj52qDORHy-0NE2_qbTLxm051aTxGLloQKUCIklZ0EMKxs8lvMpnLisnRZBkSMyUVcTBcQu16gZw3eDuMGUtXaTXskrQFGwDcThTCCF4TZiNAmgEk87ae3VgEwfJ2zBVeyHQ-BfMo5KHRtNl6lbzBT9N"
]
{:ok, {:ok,
assign(socket, assign(socket,
coworking_space: coworking_space, coworking_space: coworking_space,
meeting_space: meeting_space, meeting_space: meeting_space,
music_space: music_space music_space: music_space,
carousel_images: carousel_images
)} )}
end end
end end

View file

@ -1,107 +1,105 @@
<Layouts.app flash={@flash} current_user={@current_user}> <Layouts.app flash={@flash} current_user={@current_user}>
<div class="relative flex min-h-screen flex-col"> <div class="relative flex min-h-screen flex-col bg-base-100">
<section class="relative"> <main class="flex-1 bg-base-100">
<div class="mx-auto max-w-[1200px] px-6 py-8 md:py-12"> <section class="bg-base-100">
<div class="relative overflow-hidden rounded-2xl bg-slate-800 min-h-[560px] flex flex-col items-center justify-center text-center p-8 md:p-16 isolate shadow-2xl shadow-black/20"> <div class="mx-auto max-w-[1200px] px-6 pt-25 pb-20 text-center bg-base-100">
<div <div class="flex justify-center">
class="absolute inset-0 z-[-1] bg-cover bg-center" <img
style="background-image: linear-gradient(rgba(15, 23, 42, 0.5) 0%, rgba(15, 23, 42, 0.9) 100%), url('https://lh3.googleusercontent.com/aida-public/AB6AXuBVz7hjSfL7xWWBlBXpSrRPuvuZmh5BA_08oQ4rFz40B3LzNT_5mEPpp7Rijgny5L9PuA2WdReFGkAVHYKwAooKRsKVNl2Z0Af7sEtbJexf3vy_ztOz6aQVY48nllXQtVOzowyihYcrTZWJkV4ZT6m6gTCzMovPPQsv-_Lk1UTwGUED4kHXQgnZQuvEUcEprvAcBTCpPHRq7cn3QVldkdAlDfVpoQUQfKMlfuAJHyrHHlFkGf5NlRiH0q-l8QAHCQ8T16DiZi5R3j9I');" alt="Spazio Solazzo"
> class="hero-logo-img drop-shadow-sm"
src="/images/logo_spazio_solazzo.svg"
/>
</div> </div>
<p class="text-lg md:text-xl text-earth font-light leading-relaxed max-w-2xl mx-auto mb-12">
A space in the heart of Palermo where people meet to work, share ideas and spend time together.
</p>
<a
href="#our-spaces"
class="btn btn-primary h-14 px-12 rounded-full text-white font-bold shadow-xl uppercase text-sm tracking-widest"
>
Explore Spaces <.icon name="hero-chevron-down" class="size-5" />
</a>
</div>
<div class="flex flex-col items-center gap-6 max-w-3xl"> <div class="w-full mb-24">
<h1 class="text-white text-5xl md:text-7xl font-black leading-tight tracking-tight"> <.live_component
Creativity module={SpazioSolazzoWeb.CarouselLiveComponent}
<span class="text-transparent bg-clip-text bg-gradient-to-r from-yellow-300 to-sky-400"> id="home-carousel"
lives here images={@carousel_images}
</span> height="650px"
</h1> />
<p class="text-slate-300 text-lg md:text-xl font-normal max-w-2xl leading-relaxed"> </div>
Work, Meet, and Jam in the heart of the city. Join a grounded community of innovators at Spazio Solazzo. </section>
</p>
<div class="flex flex-col sm:flex-row gap-4 mt-4"> <section class="bg-base-100" id="our-spaces">
<a <div class="mx-auto max-w-[1200px] px-6 pt-12 pb-12 bg-base-100">
href="#our-spaces" <div class="flex flex-col md:flex-row md:items-end justify-between gap-4 border-b border-base-200 pb-10">
class="h-12 px-8 rounded-xl bg-sky-500 hover:bg-sky-600 text-white font-bold transition-all shadow-lg shadow-sky-500/30 flex items-center gap-2" <div>
> <h2 class="text-4xl font-extrabold tracking-tight text-plum-dark">
Explore Spaces <.icon name="hero-arrow-down" class="size-5" /> Our Natural Habitats
</a> </h2>
<p class="mt-3 text-lg font-light text-earth">
Sophisticated environments tailored for your creative flow.
</p>
</div> </div>
</div> </div>
</div> </div>
</div>
</section>
<div class="mx-auto max-w-[1200px] px-6 pt-10 pb-6" id="our-spaces"> <div class="mx-auto max-w-[1200px] px-6 pb-24 space-y-20 bg-base-100" id="spaces">
<div class="flex flex-col md:flex-row md:items-end justify-between gap-4 border-b border-slate-200 dark:border-slate-800 pb-6"> <%= if @coworking_space do %>
<div> <.space_card
<h2 class="text-slate-900 dark:text-slate-100 text-3xl font-bold tracking-tight"> id="coworking"
Our Spaces title={@coworking_space.name}
</h2> description={@coworking_space.description}
<p class="text-slate-500 dark:text-slate-400 mt-2"> price="15"
Choose the perfect environment for your needs. time_unit="4 hours"
</p> image_url="https://lh3.googleusercontent.com/aida-public/AB6AXuApty1_MYrfkL2mpGOAKKvlxo-7B-Y6nnko3DA4UDhJ-dCSjcyOLMFy1C0xZmh1_Pu9TEEFj25GkJ74dR1Sb_x4sY9mDjecKICFvwHFgHkMFVMigsZjldl9rH34x4tZhdpWvUGCo32V1P5_0uwtXVPohKMbvIbBxr5nsPoEy_d7X4WgIMOA1Nv2bwDgkqbsG4X3noBx-riLqcnREEl3cb0kbtquJZJ6pYHfbimuNyuxtfQHzrG8KOMHe3YPoIgWt43mgPtgPL9gswni"
primary_label="Coworking"
primary_label_variant={:secondary}
image_position={:left}
booking_url={"/#{@coworking_space.slug}"}
asset_type="Desk"
/>
<% end %>
<%= if @meeting_space do %>
<.space_card
id="meeting"
title={@meeting_space.name}
description={@meeting_space.description}
price="40"
time_unit="hour"
image_url="https://lh3.googleusercontent.com/aida-public/AB6AXuDmh_AkVuUoICqpHk1NdLuLdi0xQBOC8Hy9PrsSNz956igHFRhbNGsB8k0vSLe2U2NW1sxRVZm_dwR27Q4Db_f21XbYkLtfiRYob-j4ran1rTBB0bQAz4QLFSO1yL_cPhDIpAyvC069mDQ33-ckZgZ_yvFsIK_-_0Jj2NEOnDie684uaR7vKuiBWlsr-JmAsPzUp7Aik7Qbzozune348nBz1bvWkBNMCpMO3JV8hrYBo1i6JlUiGSuP3-5fWXKt8dKhxPUN-amjLFgh"
primary_label="Meeting"
primary_label_variant={:secondary}
secondary_label="Up to 8 people"
secondary_label_icon="hero-user-group"
image_position={:right}
booking_url={"/#{@meeting_space.slug}"}
asset_type="Room"
/>
<% end %>
<%= if @music_space do %>
<.space_card
id="music"
title={@music_space.name}
description={@music_space.description}
price="25"
time_unit="hour"
image_url="https://lh3.googleusercontent.com/aida-public/AB6AXuBBJs1jEAgwwiIvJD00kx3aA9pfI-o2fXT-eZ9dEQeHNHhvwQdVqrwsqwNvCR69rIYUNBKf-uY1dqXZSvXaXoE__slTLMqGHkUzSQSXql9PwhW3cLoMMv1wtj52qDORHy-0NE2_qbTLxm051aTxGLloQKUCIklZ0EMKxs8lvMpnLisnRZBkSMyUVcTBcQu16gZw3eDuMGUtXaTXskrQFGwDcThTCCF4TZiNAmgEk87ae3VgEwfJ2zBVeyHQ-BfMo5KHRtNl6lbzBT9N"
primary_label="Music"
primary_label_variant={:primary}
secondary_label="Not Soundproof"
secondary_label_icon="hero-speaker-x-mark"
note="Note: This is not a professional studio and is not soundproofed."
image_position={:left}
booking_url={"/#{@music_space.slug}"}
asset_type="Slot"
/>
<% end %>
</div> </div>
<div class="flex items-center gap-2 text-sm text-slate-600 dark:text-slate-400 bg-slate-100 dark:bg-slate-800 px-3 py-1.5 rounded-lg border border-slate-200 dark:border-slate-800"> </section>
<.icon name="hero-information-circle" class="size-[18px]" /> </main>
<span>Payment due in person upon arrival</span>
</div>
</div>
</div>
<section class="mx-auto max-w-[1200px] px-6 pb-20 space-y-8" id="spaces">
<%= if @coworking_space do %>
<.space_card
id="coworking"
title={@coworking_space.name}
description={@coworking_space.description}
price="15"
time_unit="4 hours"
image_url="https://lh3.googleusercontent.com/aida-public/AB6AXuApty1_MYrfkL2mpGOAKKvlxo-7B-Y6nnko3DA4UDhJ-dCSjcyOLMFy1C0xZmh1_Pu9TEEFj25GkJ74dR1Sb_x4sY9mDjecKICFvwHFgHkMFVMigsZjldl9rH34x4tZhdpWvUGCo32V1P5_0uwtXVPohKMbvIbBxr5nsPoEy_d7X4WgIMOA1Nv2bwDgkqbsG4X3noBx-riLqcnREEl3cb0kbtquJZJ6pYHfbimuNyuxtfQHzrG8KOMHe3YPoIgWt43mgPtgPL9gswni"
primary_label="Workspace"
primary_label_variant={:primary}
image_position={:left}
booking_url={"/#{@coworking_space.slug}"}
asset_type="Desk"
/>
<% end %>
<%= if @meeting_space do %>
<.space_card
id="meeting"
title={@meeting_space.name}
description={@meeting_space.description}
price="40"
time_unit="hour"
image_url="https://lh3.googleusercontent.com/aida-public/AB6AXuDmh_AkVuUoICqpHk1NdLuLdi0xQBOC8Hy9PrsSNz956igHFRhbNGsB8k0vSLe2U2NW1sxRVZm_dwR27Q4Db_f21XbYkLtfiRYob-j4ran1rTBB0bQAz4QLFSO1yL_cPhDIpAyvC069mDQ33-ckZgZ_yvFsIK_-_0Jj2NEOnDie684uaR7vKuiBWlsr-JmAsPzUp7Aik7Qbzozune348nBz1bvWkBNMCpMO3JV8hrYBo1i6JlUiGSuP3-5fWXKt8dKhxPUN-amjLFgh"
primary_label="Business"
primary_label_variant={:secondary}
secondary_label="Up to 8 people"
secondary_label_icon="hero-user-group"
image_position={:right}
booking_url={"/#{@meeting_space.slug}"}
asset_type="Room"
/>
<% end %>
<%= if @music_space do %>
<.space_card
id="music"
title={@music_space.name}
description={@music_space.description}
price="25"
time_unit="hour"
image_url="https://lh3.googleusercontent.com/aida-public/AB6AXuBBJs1jEAgwwiIvJD00kx3aA9pfI-o2fXT-eZ9dEQeHNHhvwQdVqrwsqwNvCR69rIYUNBKf-uY1dqXZSvXaXoE__slTLMqGHkUzSQSXql9PwhW3cLoMMv1wtj52qDORHy-0NE2_qbTLxm051aTxGLloQKUCIklZ0EMKxs8lvMpnLisnRZBkSMyUVcTBcQu16gZw3eDuMGUtXaTXskrQFGwDcThTCCF4TZiNAmgEk87ae3VgEwfJ2zBVeyHQ-BfMo5KHRtNl6lbzBT9N"
primary_label="Jam Space"
primary_label_variant={:accent}
secondary_label="Not Soundproof"
secondary_label_icon="hero-speaker-x-mark"
note="Note: This is not a professional studio and is not soundproofed."
image_position={:left}
booking_url={"/#{@music_space.slug}"}
asset_type="Slot"
/>
<% end %>
</section>
</div> </div>
</Layouts.app> </Layouts.app>

View file

@ -1,20 +1,20 @@
<Layouts.app flash={@flash} current_user={@current_user}> <Layouts.app flash={@flash} current_user={@current_user}>
<div class="mx-auto max-w-[800px] px-6 py-12"> <div class="mx-auto max-w-[800px] px-6 py-12">
<div class="mb-10 text-center"> <div class="mb-10 text-center">
<h1 class="text-4xl font-black text-slate-900 dark:text-white tracking-tight"> <h1 class="text-4xl font-black text-base-content tracking-tight">
User Profile User Profile
</h1> </h1>
<p class="text-slate-500 dark:text-slate-400 mt-2"> <p class="text-neutral mt-2">
Manage your account settings and personal information Manage your account settings and personal information
</p> </p>
</div> </div>
<div class="space-y-8"> <div class="space-y-8">
<%!-- Personal Information Section --%> <%!-- Personal Information Section --%>
<section class="bg-white dark:bg-card-dark rounded-2xl p-8 border border-slate-200 dark:border-slate-800 shadow-sm"> <section class="bg-base-100 rounded-2xl p-8 border border-base-200 shadow-sm">
<div class="flex items-center gap-3 mb-8"> <div class="flex items-center gap-3 mb-8">
<.icon name="hero-user" class="text-primary w-6 h-6" /> <.icon name="hero-user" class="text-primary w-6 h-6" />
<h2 class="text-xl font-bold text-slate-900 dark:text-white"> <h2 class="text-xl font-bold text-base-content">
Personal Information Personal Information
</h2> </h2>
</div> </div>
@ -33,12 +33,11 @@
label="Full Name *" label="Full Name *"
required required
placeholder="Enter your full name" placeholder="Enter your full name"
class="w-full bg-slate-50 dark:bg-slate-900/50 border-slate-200 dark:border-slate-700 rounded-xl px-4 py-3 text-slate-900 dark:text-white focus:ring-2 focus:ring-primary focus:border-transparent transition-all outline-none"
/> />
</div> </div>
<div class="space-y-2"> <div class="space-y-2">
<label class="text-sm font-semibold text-slate-700 dark:text-slate-300"> <label class="text-sm font-semibold text-base-content">
Email Address Email Address
</label> </label>
<div class="relative"> <div class="relative">
@ -47,14 +46,14 @@
readonly readonly
value={@current_user.email} value={@current_user.email}
title="Email cannot be changed" title="Email cannot be changed"
class="w-full bg-slate-100 dark:bg-slate-800/50 border border-slate-200 dark:border-slate-700 rounded-xl px-4 py-3 text-slate-500 dark:text-slate-500 cursor-not-allowed outline-none" class="w-full bg-base-200 border border-base-300 rounded-xl px-4 py-3 text-neutral cursor-not-allowed outline-none"
/> />
<.icon <.icon
name="hero-lock-closed" name="hero-lock-closed"
class="absolute right-4 top-1/2 -translate-y-1/2 text-slate-400 w-5 h-5" class="absolute right-4 top-1/2 -translate-y-1/2 text-neutral w-5 h-5"
/> />
</div> </div>
<p class="text-xs text-slate-400"> <p class="text-xs text-neutral">
Contact support to change your email address. Contact support to change your email address.
</p> </p>
</div> </div>
@ -65,15 +64,14 @@
type="tel" type="tel"
label="Phone Number" label="Phone Number"
placeholder="+39 123456789" placeholder="+39 123456789"
class="w-full bg-slate-50 dark:bg-slate-900/50 border-slate-200 dark:border-slate-700 rounded-xl px-4 py-3 text-slate-900 dark:text-white focus:ring-2 focus:ring-primary focus:border-transparent transition-all outline-none"
/> />
</div> </div>
</div> </div>
<div class="mt-8 pt-8 border-t border-slate-100 dark:border-slate-800 flex justify-end"> <div class="mt-8 pt-8 border-t border-base-200 flex justify-end">
<button <button
type="submit" type="submit"
class="h-11 px-8 rounded-xl bg-primary hover:bg-primary-hover text-white font-bold transition-all shadow-lg shadow-sky-500/30 cursor-pointer" class="btn btn-primary rounded-xl shadow-lg cursor-pointer"
> >
Save Changes Save Changes
</button> </button>
@ -82,28 +80,28 @@
</section> </section>
<%!-- Account Management Section --%> <%!-- Account Management Section --%>
<section class="bg-white dark:bg-card-dark rounded-2xl p-8 border border-slate-200 dark:border-slate-800 shadow-sm border-l-4 border-l-danger/50"> <section class="bg-base-100 rounded-2xl p-8 border border-base-200 shadow-sm border-l-4 border-l-error/50">
<div class="flex items-center gap-3 mb-8"> <div class="flex items-center gap-3 mb-8">
<.icon name="hero-no-symbol" class="text-danger w-6 h-6" /> <.icon name="hero-no-symbol" class="text-error w-6 h-6" />
<h2 class="text-xl font-bold text-slate-900 dark:text-white"> <h2 class="text-xl font-bold text-base-content">
Account Management Account Management
</h2> </h2>
</div> </div>
<div class="bg-red-50 dark:bg-red-900/10 border border-red-200 dark:border-red-900/30 rounded-xl p-5 mb-8"> <div class="bg-error/5 border border-error/20 rounded-xl p-5 mb-8">
<h3 class="text-red-600 dark:text-red-500 font-bold text-sm mb-2 flex items-center gap-2"> <h3 class="text-error font-bold text-sm mb-2 flex items-center gap-2">
<.icon <.icon
name="hero-exclamation-triangle" name="hero-exclamation-triangle"
class="w-5 h-5 text-red-600 dark:text-red-500" class="w-5 h-5 text-error"
/> Danger Zone /> Danger Zone
</h3> </h3>
<p class="text-sm text-slate-600 dark:text-slate-400 leading-relaxed"> <p class="text-sm text-neutral leading-relaxed">
Deleting your account is permanent. This action cannot be undone. All your current active bookings will be cancelled. Deleting your account is permanent. This action cannot be undone. All your current active bookings will be cancelled.
</p> </p>
</div> </div>
<div class="space-y-6"> <div class="space-y-6">
<div class="flex items-start gap-3 p-4 bg-slate-50 dark:bg-slate-900/30 rounded-xl border border-slate-100 dark:border-slate-800"> <div class="flex items-start gap-3 p-4 bg-base-200 rounded-xl border border-base-300">
<div class="flex h-6 items-center"> <div class="flex h-6 items-center">
<input <input
type="checkbox" type="checkbox"
@ -111,14 +109,14 @@
phx-click="toggle_delete_history" phx-click="toggle_delete_history"
value="on" value="on"
checked={@delete_history} checked={@delete_history}
class="h-5 w-5 rounded border-slate-300 dark:border-slate-700 bg-white dark:bg-slate-900 text-primary focus:ring-primary" class="checkbox checkbox-primary"
/> />
</div> </div>
<div class="text-sm leading-6"> <div class="text-sm leading-6">
<label for="gdpr-consent" class="font-medium text-slate-900 dark:text-slate-200"> <label for="gdpr-consent" class="font-medium text-base-content">
Delete all my booking history and personal data (GDPR compliant) Delete all my booking history and personal data (GDPR compliant)
</label> </label>
<p class="text-slate-500 dark:text-slate-400"> <p class="text-neutral">
We will permanently remove all records related to your identity and activities from our servers. We will permanently remove all records related to your identity and activities from our servers.
</p> </p>
</div> </div>
@ -128,7 +126,7 @@
<button <button
type="button" type="button"
phx-click="show_delete_modal" phx-click="show_delete_modal"
class="h-11 px-6 rounded-xl border-2 border-red-600 text-red-600 hover:bg-red-600 hover:text-white dark:border-red-500 dark:text-red-500 dark:hover:bg-red-500 font-bold transition-all flex items-center gap-2 cursor-pointer" class="btn btn-outline btn-error rounded-xl flex items-center gap-2 cursor-pointer"
> >
<.icon name="hero-trash" class="w-5 h-5" /> Delete My Account <.icon name="hero-trash" class="w-5 h-5" /> Delete My Account
</button> </button>
@ -144,18 +142,18 @@
class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm" class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm"
phx-click="hide_delete_modal" phx-click="hide_delete_modal"
> >
<div class="bg-white dark:bg-card-dark rounded-2xl p-8 max-w-md mx-4 shadow-2xl border border-slate-200 dark:border-slate-800"> <div class="bg-base-100 rounded-2xl p-8 max-w-md mx-4 shadow-2xl border border-base-200">
<div class="flex items-center gap-3 mb-4"> <div class="flex items-center gap-3 mb-4">
<.icon name="hero-exclamation-triangle" class="text-danger w-8 h-8" /> <.icon name="hero-exclamation-triangle" class="text-error w-8 h-8" />
<h3 class="text-xl font-bold text-slate-900 dark:text-white"> <h3 class="text-xl font-bold text-base-content">
Confirm Account Deletion Confirm Account Deletion
</h3> </h3>
</div> </div>
<p class="text-slate-600 dark:text-slate-400 mb-6"> <p class="text-neutral mb-6">
Are you absolutely sure you want to delete your account? This action cannot be undone. Are you absolutely sure you want to delete your account? This action cannot be undone.
<%= if @delete_history do %> <%= if @delete_history do %>
<strong class="text-danger"> <strong class="text-error">
All your booking history will be permanently deleted. All your booking history will be permanently deleted.
</strong> </strong>
<% else %> <% else %>
@ -167,14 +165,14 @@
<button <button
type="button" type="button"
phx-click="hide_delete_modal" phx-click="hide_delete_modal"
class="h-11 px-6 rounded-xl border-2 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 font-bold transition-all cursor-pointer" class="btn btn-ghost rounded-xl cursor-pointer"
> >
Cancel Cancel
</button> </button>
<button <button
type="button" type="button"
phx-click="confirm_delete_account" phx-click="confirm_delete_account"
class="h-11 px-6 rounded-xl bg-danger hover:bg-red-600 dark:text-white hover:text-white text-slate-700 font-bold transition-all cursor-pointer" class="btn btn-error rounded-xl cursor-pointer"
> >
Yes, Delete My Account Yes, Delete My Account
</button> </button>

View file

@ -19,18 +19,22 @@ end
# Create Coworking Space # Create Coworking Space
coworking = coworking =
BookingSystem.create_space!("Coworking", "coworking", "Flexible desk spaces for remote work") BookingSystem.create_space!("Arcipelago", "coworking", "Flexible desk spaces for remote work")
IO.puts("✓ Created Coworking space") IO.puts("✓ Created Coworking space")
# Create Meeting Room Space # Create Meeting Room Space
meeting = meeting =
BookingSystem.create_space!("Meeting room", "meeting", "Private conference rooms by the hour") BookingSystem.create_space!(
"Media room",
"meeting",
"Private conference room for your meetings"
)
IO.puts("✓ Created Meeting Room space") IO.puts("✓ Created Meeting Room space")
# Create Music Studio Space # Create Music Studio Space
music = BookingSystem.create_space!("Music room", "music", "Evening recording sessions") music = BookingSystem.create_space!("Hall", "music", "Tailored for band rehearsals.")
IO.puts("✓ Created Music Studio space") IO.puts("✓ Created Music Studio space")

BIN
priv/static/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View file

@ -0,0 +1,522 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 966 298" style="enable-background:new 0 0 966 298;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#63A5C9;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#AC485A;}
</style>
<g>
<path class="st0" d="M109.16,61c-0.99-1.05-1.84-2.02-2.77-2.91c-1.06-1-2.14-2.09-3.57-2.44c-1.2-0.3-2.5-0.2-3.74-0.31
c-0.77-0.07-1.53-0.26-2.3-0.29c-0.62-0.04-1.24,0.12-1.87,0.14c-1.07,0.04-2.14,0.06-3.21,0.06c-2.03-0.01-4.06-0.04-6.1-0.06
c-3.29-0.05-6.58-0.09-9.88-0.16c-2.53-0.06-5.06-0.25-7.59-0.26c-0.78,0-1.6,0.3-2.33,0.62c-0.83,0.36-0.85,1.02-0.1,1.55
c0.64,0.45,1.33,0.84,2.02,1.22c2.02,1.11,4.04,2.24,6.1,3.29c2.38,1.22,4.79,2.39,7.2,3.56c4.48,2.18,9.02,4.29,13.46,6.55
c3.82,1.93,7.58,3.99,11.3,6.12c2.17,1.24,4.26,2.63,6.28,4.11c1.3,0.96,2.12,2.39,2.61,3.95c1.16,3.73,1.32,7.56,0.99,11.4
c-0.25,2.93-1.12,5.69-2.89,8.08c-1.75,2.36-4.25,3.73-6.99,4.6c-0.84,0.27-1.82,0.1-2.73,0.12c-2.35,0-4.7-0.01-7.05-0.02
c-2.32,0-4.65,0.04-6.98-0.01c-1.92-0.04-3.82-0.21-5.74-0.23c-3.03-0.02-6.06,0.06-9.08,0.08c-2.2,0.01-4.4,0.08-6.59-0.03
c-2.23-0.1-4.46-0.35-6.69-0.6c-1.15-0.13-2.38-0.17-3.39-0.64c-1.38-0.65-2.67-1.56-3.87-2.52c-1.39-1.11-2.7-2.35-3.93-3.63
c-0.92-0.96-1.67-2.1-2.56-3.22c1.75-1.46,3.47-2.9,5.32-4.45c-0.07-0.02,0.11,0.03,0.3,0.07c-0.06-0.05-0.11-0.11-0.17-0.17
c0.44-0.52,0.82-1.11,1.33-1.54c1.05-0.86,2.18-1.61,3.26-2.42c0.29-0.22,0.47-0.58,0.76-0.81c0.65-0.53,1.3-0.45,1.76,0.25
c0.68,1.03,1.49,1.94,2.38,2.81c1.37,1.34,2.98,1.85,4.78,1.91c2,0.08,4.01,0.08,6.02,0.02c2.51-0.06,5.02-0.31,7.52-0.3
c2.29,0,4.59,0.28,6.88,0.41c1.22,0.07,2.45,0.11,3.67,0.13c2.97,0.04,5.94,0.07,8.9,0.11c0.96,0,1.92,0.05,2.87-0.02
c0.38-0.03,0.74-0.33,1.12-0.52c0.03-0.1,0.05-0.21,0.08-0.31c-1.21-0.75-2.39-1.56-3.64-2.23c-2.35-1.26-4.77-2.43-7.13-3.67
c-0.64-0.34-1.19-0.85-1.83-1.19c-1.12-0.59-2.29-1.1-3.42-1.67c-1.65-0.84-3.28-1.71-4.92-2.56c-1.76-0.91-3.53-1.81-5.29-2.73
c-1.92-1.01-3.8-2.13-5.77-3.03c-1.92-0.88-3.63-2.05-5.42-3.12c-1.54-0.92-3.22-1.59-4.78-2.46c-2.02-1.13-4.01-2.35-5.51-4.18
c-0.61-0.74-1.28-1.47-1.66-2.32c-0.7-1.53-1.45-3.06-1.47-4.83c-0.02-0.8-0.51-1.6-0.5-2.4c0.02-1.32,0.25-2.65,0.42-3.97
c0.16-1.22,0.3-2.44,0.56-3.64c0.12-0.53,0.51-1,0.81-1.48c0.37-0.59,0.75-1.17,1.16-1.73c0.38-0.55,0.75-1.12,1.21-1.59
c0.72-0.76,1.48-1.5,2.3-2.14c0.56-0.43,1.24-0.71,1.88-1.02c0.78-0.36,1.55-0.73,2.36-1.02c2.41-0.86,4.93-0.88,7.45-0.88
c2.45-0.01,4.9-0.16,7.35-0.13c2.06,0.02,4.12,0.26,6.18,0.3c2.05,0.04,4.1-0.09,6.16-0.09c0.92,0,1.84,0.16,2.76,0.16
c1.67-0.01,3.35-0.1,5.03-0.13c0.67-0.01,1.34,0.06,2.01,0.09c2.35,0.12,4.7,0.18,7.05,0.35c2.33,0.17,4.49,1.01,6.37,2.35
c1.34,0.95,2.47,2.21,3.64,3.38c1.04,1.04,2.03,2.14,3.04,3.21c0.56,0.58,0.48,0.93-0.2,1.47c-1.21,0.97-2.21,2.19-3.36,3.23
c-1.22,1.1-2.5,2.13-3.75,3.19c-0.62,0.53-1.22,1.07-1.84,1.59C110.51,59.9,109.83,60.45,109.16,61z"/>
<path class="st0" d="M321.76,94.57c1.24,0,2.2-0.01,3.17,0c4.04,0.06,8.08,0.11,12.12,0.17c3.89,0.06,7.78,0.15,11.67,0.16
c2.07,0.01,4.15-0.14,6.22-0.14c2.04,0,4.08,0.11,6.12,0.14c0.52,0.01,0.76,0.24,0.74,0.71c-0.02,2.18-0.06,4.37-0.11,6.56
c-0.06,1.63-0.11,3.28-0.22,4.91c-0.11,1.54-0.15,1.73-1.78,1.78c-0.67,0.02-1.36,0.12-2.04,0.17c-0.74,0.05-1.48,0.15-2.24,0.14
c-2.35-0.03-4.69-0.11-7.04-0.12c-1.32,0-2.65,0.09-3.98,0.15c-1.61,0.06-3.22,0.13-4.84,0.15c-0.89,0-1.8-0.16-2.69-0.13
c-1.91,0.06-3.8,0.21-5.71,0.28c-0.83,0.02-1.69-0.09-2.54-0.13c-1.43-0.06-2.85-0.15-4.28-0.16c-2.83-0.03-5.69-0.03-8.52-0.01
c-2.35,0.02-4.69,0.1-7.02,0.13c-1.91,0.04-3.82,0.05-5.73,0.02c-1.09,0-2.17-0.07-3.24-0.18c-0.22-0.02-0.52-0.32-0.59-0.56
c-0.18-0.59-0.33-1.2-0.33-1.82c-0.09-3.17-0.05-6.34-0.22-9.5c-0.09-1.79,0.85-2.96,1.98-4.02c1.81-1.69,3.69-3.28,5.56-4.9
c2.85-2.47,5.73-4.92,8.56-7.41c0.98-0.87,1.85-1.88,2.84-2.76c1.78-1.59,3.61-3.13,5.41-4.69c0.2-0.16,0.41-0.31,0.59-0.49
c1.78-1.66,3.54-3.3,5.3-4.98c1.35-1.3,2.67-2.68,4.02-3.99c1.21-1.16,2.48-2.24,3.71-3.4c1.13-1.1,2.24-2.25,3.37-3.39
c0.13-0.14,0.2-0.33,0.3-0.46c-3.37,0.09-6.71,0.21-10.04,0.25c-1.02,0.02-2.02-0.24-3.04-0.28c-1.19-0.05-2.37-0.01-3.56-0.01
c-0.68,0-1.39,0.02-2.09,0c-1.83-0.06-3.67-0.15-5.5-0.18c-2.8-0.06-5.6-0.09-8.39-0.1c-1.52-0.01-3.02,0.11-4.54,0.06
c-1.26-0.03-2.54-0.18-3.8-0.38c-0.24-0.03-0.61-0.54-0.59-0.81c0.17-2.64,0.46-5.27,0.63-7.91c0.09-1.69,0.04-3.39,0.04-5.1
c0-0.71,0.54-1.24,1.43-1.25c0.74,0,1.46,0.13,2.21,0.14c0.65,0,1.3-0.14,1.95-0.14c1.72,0.03,3.45,0.13,5.17,0.16
c0.71,0.01,1.41-0.16,2.11-0.16c5.37,0.04,10.77,0.11,16.14,0.16c2.3,0.02,4.58-0.02,6.87,0.02c1.43,0.01,2.85,0.17,4.26,0.15
c2.24-0.05,4.47-0.26,6.71-0.26c2.47,0,4.93,0.18,7.37,0.24c1.78,0.05,3.58,0.01,5.36,0.03c0.89,0.02,1.76,0.09,2.63,0.18
c0.83,0.09,0.61,0.81,0.65,1.27c0.15,2.46,0.26,4.92,0.33,7.37c0.02,1.18-0.05,2.36-0.05,3.54c-0.02,0.5-0.06,1.02,0.07,1.5
c0.39,1.65-0.46,2.61-1.65,3.58c-2.87,2.36-5.67,4.81-8.45,7.25c-2.69,2.34-5.32,4.73-7.95,7.1c-2,1.8-4,3.6-5.97,5.43
c-2.13,1.98-4.22,3.99-6.34,5.99c-1.76,1.67-3.54,3.32-5.32,4.99C325.28,91.22,323.62,92.81,321.76,94.57z"/>
<path class="st0" d="M433.15,106.58c-0.18,0-0.46,0.07-0.65-0.02c-0.94-0.48-1.89-0.95-2.78-1.52c-0.48-0.32-0.76-0.92-1.22-1.26
c-0.72-0.56-1.52-0.98-2.28-1.48c-0.2-0.14-0.48-0.32-0.54-0.53c-0.28-1.28-1.35-1.97-2.15-2.83c-2.19-2.3-3.76-5-5.34-7.71
c-1.13-1.92-2.13-3.93-2.97-5.99c-0.56-1.36-0.8-2.87-1.07-4.33c-0.3-1.65-0.61-3.33-0.65-4.99c-0.02-1.67,0.2-3.35,0.45-5.01
c0.28-1.98,0.8-3.93,1-5.9c0.2-1.75,1.04-3.19,1.8-4.66c0.8-1.52,1.74-2.95,2.72-4.37c0.7-1.02,1.58-1.93,2.35-2.9
c0.57-0.72,1.09-1.51,1.72-2.17c0.78-0.79,1.63-1.49,2.48-2.2c0.93-0.79,1.82-1.66,2.86-2.3c3.06-1.92,6.19-3.68,9.84-4.32
c1.06-0.19,2.09-0.72,3.17-0.81c2.56-0.2,5.11-0.22,7.67-0.34c3.45-0.18,6.62,1.06,9.82,2.04c1.91,0.58,3.86,1.19,5.63,2.09
c2.11,1.07,4.13,2.39,6.1,3.74c1.04,0.72,1.94,1.7,2.83,2.64c1.3,1.4,2.67,2.79,3.78,4.35c0.83,1.18,1.32,2.6,1.93,3.93
c1.67,3.72,2.83,7.62,3.85,11.57c0.18,0.76,0.24,1.57,0.28,2.37c0.07,1.38,0.13,2.76,0.15,4.15c0,0.5-0.13,1.02-0.26,1.51
c-0.81,3.13-1.57,6.28-2.5,9.37c-0.93,3.03-2.74,5.6-4.67,8.06c-1.52,1.93-3.11,3.8-4.8,5.56c-0.74,0.77-1.85,1.17-2.74,1.8
c-1.98,1.41-4.19,2.39-6.34,3.44c-2.17,1.06-4.47,1.65-6.86,1.97c-1.11,0.16-2.19,0.48-3.3,0.62c-0.72,0.1-1.43,0.03-2.15,0.05
c-1,0.03-2.02,0.17-3,0.09c-1.39-0.11-2.74-0.4-4.13-0.56c-0.61-0.06-1.24,0.1-1.85,0c-0.74-0.13-1.46-0.43-2.19-0.65
c-0.98-0.3-2-0.55-2.93-0.95C435.17,107.71,434.19,107.13,433.15,106.58z M468.99,76.35c-0.07-0.01-0.15-0.03-0.22-0.05
c-0.05-0.29-0.15-0.57-0.17-0.87c0-0.25,0.13-0.5,0.13-0.76c-0.02-0.64-0.17-1.28-0.15-1.92c0.09-3.96-1.24-7.44-3.76-10.41
c-0.96-1.14-2.39-1.88-3.41-2.99c-1.54-1.67-3.59-2.34-5.56-3.02c-1.74-0.6-3.69-0.67-5.56-0.8c-3.35-0.23-6.6,0.6-9.69,1.67
c-1.98,0.69-3.76,2.09-5.47,3.38c-1.94,1.48-3.45,3.42-4.71,5.53c-1.15,1.95-2.48,3.84-2.58,6.18c-0.06,1.45,0.19,2.92,0.43,4.38
c0.56,3.65,1.65,7.1,4.17,9.95c1.3,1.48,2.45,3.13,3.95,4.38c1.96,1.64,4.17,2.94,6.78,3.42c1.59,0.28,3.11,1.07,4.76,0.98
c1.93-0.11,3.87-0.27,5.74-0.64c1.35-0.27,2.61-0.93,3.93-1.41c2.47-0.9,4.49-2.48,6.12-4.48c0.93-1.13,2.17-2.11,2.33-3.73
c1.52-1.71,1.76-3.93,2.41-5.99C468.77,78.26,468.82,77.29,468.99,76.35z"/>
<path class="st0" d="M205.38,109.36c0.3-0.87,0.46-1.48,0.71-2.06c0.74-1.74,1.53-3.45,2.25-5.19c0.96-2.33,1.84-4.7,2.83-7.03
c0.98-2.31,2.08-4.57,3.07-6.86c1.1-2.55,2.13-5.13,3.21-7.69c0.43-1,0.97-1.96,1.37-2.98c0.65-1.67,1.24-3.36,1.83-5.06
c1.39-4,2.97-7.91,5-11.64c0.78-1.43,1.32-3,1.95-4.51c1.23-2.94,2.44-5.89,3.67-8.82c0.77-1.83,1.59-3.64,2.33-5.47
c0.28-0.66,0.69-0.97,1.41-0.97c2.63,0.01,5.28-0.02,7.92,0c2.2,0.02,4.41,0.13,6.61,0.14c0.67,0.01,1.07,0.26,1.32,0.84
c0.69,1.66,1.33,3.34,2.02,5c0.69,1.66,1.39,3.31,2.11,4.95c1.09,2.47,2.19,4.94,3.35,7.38c0.74,1.57,1.67,3.06,2.41,4.63
c0.93,1.96,1.72,3.96,2.59,5.94c0.57,1.32,1.24,2.59,1.78,3.93c0.37,0.9,0.54,1.88,0.91,2.78c0.85,2.05,1.78,4.07,2.67,6.11
c0.11,0.21,0.2,0.4,0.33,0.6c0.54,0.9,1.19,1.67,1.33,2.84c0.13,1.13,0.85,2.17,1.28,3.26c0.67,1.73,1.3,3.47,1.98,5.2
c0.45,1.06,1.06,2.06,1.48,3.13c1.06,2.66,2.02,5.36,3.06,8.02c0.22,0.57,0.65,1.07,0.94,1.63c0.19,0.35,0.26,0.74,0.48,1.36
c-1.96,0-3.71-0.04-5.43,0.01c-3.63,0.1-7.25,0.28-10.86,0.37c-0.28,0-0.69-0.36-0.82-0.65c-0.67-1.51-1.26-3.06-1.89-4.58
c-0.87-2.08-1.76-4.15-2.69-6.21c-0.07-0.18-0.41-0.35-0.61-0.33c-1.57,0.09-3.15,0.33-4.73,0.36c-4,0.05-8.01,0.05-12.01,0.01
c-4.34-0.04-8.67-0.1-13-0.18c-0.54-0.01-0.82,0.16-1.01,0.66c-0.81,2.08-1.68,4.13-2.47,6.21c-0.44,1.15-0.81,2.33-1.14,3.52
c-0.23,0.81-0.77,1.22-1.97,1.23c-2.92,0.02-5.85,0.06-8.77,0.08C210,109.38,207.81,109.36,205.38,109.36z M243.08,58.76
c-0.12,0.02-0.25,0.03-0.37,0.04c-2.64,7.92-5.29,15.84-7.99,23.91c2.88,0,5.79,0.03,8.69-0.01c2.94-0.04,5.89-0.16,9.06-0.25
C249.3,74.46,246.18,66.6,243.08,58.76z"/>
<path class="st0" d="M395.38,109.21c-1.38,0-1,0.07-2.56,0.09c-0.62,0-1.24-0.12-1.86-0.09c-2.36,0.09-4.72,0.24-7.07,0.32
c-0.79,0.02-1.65,0.05-2.35-0.24c-0.32-0.13-0.37-1.04-0.44-1.59c-0.07-0.56-0.03-1.13-0.04-1.71c-0.01-0.39-0.07-0.8,0-1.19
c0.2-1.11,0.19-2.2-0.01-3.33c-0.18-1.09,0.01-2.25-0.01-3.37c-0.03-1.32-0.14-2.61-0.14-3.91c0.01-1.13,0.14-2.28,0.21-3.45
c0.03,0-0.12-0.02-0.23-0.02c0.06-0.63,0.12-1.24,0.18-1.89c0.1,0.18,0.19,0.37,0.23,0.44c0-1.04,0.04-2.14-0.01-3.23
c-0.06-1.36-0.42-2.75-0.2-4.04c0.32-1.94-0.21-3.79-0.14-5.67c0.07-1.89,0.2-3.78,0.2-5.66c0.01-1.27-0.14-2.55-0.22-3.82
c0.05,0.1,0.11,0.23,0.22,0.46c0-1.34,0-2.57,0-3.9c0,0,0.13-0.02,0.3-0.03c-0.03-0.61,0.12-1.33-0.16-1.81
c-0.43-0.78,0.03-1.51-0.17-2.27c-0.21-0.79-0.03-1.67-0.03-2.52c0-1.61-0.03-3.23,0.01-4.84c0.03-1.09,0.15-2.19,0.23-3.3
c0.11-1.52,0.25-3.05,0.32-4.58c0.02-0.59-0.03-1.2-0.21-1.75c-0.23-0.73,0.24-0.81,0.69-0.86c1.45-0.15,2.92-0.32,4.38-0.35
c2.65-0.05,5.3-0.01,7.94-0.01c1.05,0,1.32,0.26,1.34,1.29c0.06,2.28,0.15,4.56,0.16,6.84c0,1.69-0.13,3.39-0.15,5.08
c-0.03,2.24,0.04,4.49-0.03,6.73c-0.04,1.53-0.24,3.06-0.34,4.59c-0.04,0.67-0.01,1.35,0.01,2.02c0.05,2.98,0.12,5.95,0.16,8.93
c0.03,2.81,0.02,5.63,0.01,8.45c0,2.19-0.01,4.38-0.05,6.57c-0.01,0.78-0.11,1.55-0.09,2.32L395.38,109.21z"/>
<path class="st0" d="M197.39,59.77c-0.17-0.69-0.3-1.4-0.52-2.07c-0.23-0.71-0.58-1.37-0.85-2.07c-0.22-0.56-0.32-1.17-0.59-1.71
c-0.45-0.9-0.95-1.78-1.51-2.61c-0.58-0.88-1.32-1.65-1.89-2.53c-0.74-1.15-1.54-2.23-2.74-2.93c-0.96-0.55-1.91-1.11-2.88-1.63
c-0.72-0.39-1.48-0.7-2.21-1.07c-0.3-0.15-0.55-0.42-0.87-0.49c-1.51-0.41-3.01-0.83-4.54-1.12c-1.28-0.25-2.58-0.35-3.89-0.46
c-0.04,0-0.09,0.01-0.13,0.01v-0.01h-20.53v0c-2.43,0-4.86-0.03-7.28,0.02c-1.46,0.03-2.92,0.2-4.38,0.35
c-0.45,0.04-0.92,0.13-0.69,0.86c0.18,0.55,0.23,1.16,0.21,1.75c-0.06,1.53-0.2,3.06-0.32,4.58c-0.08,1.1-0.2,2.2-0.23,3.3
c-0.04,1.61-0.01,3.23-0.01,4.84c0,0.84-0.18,1.73,0.03,2.52c0.2,0.76-0.26,1.49,0.17,2.27c0.28,0.48,0.13,1.21,0.16,1.81
c-0.16,0.02-0.3,0.03-0.3,0.03c0,1.33,0,2.56,0,3.9c-0.11-0.22-0.17-0.35-0.22-0.46c0.08,1.27,0.23,2.55,0.22,3.82
c-0.01,1.89-0.14,3.78-0.2,5.66c-0.07,1.89,0.47,3.74,0.14,5.67c-0.22,1.3,0.15,2.68,0.2,4.04c0.05,1.09,0.01,2.19,0.01,3.23
c-0.04-0.07-0.13-0.26-0.23-0.44c-0.06,0.64-0.12,1.26-0.18,1.89c0.11,0,0.25,0.02,0.23,0.02c-0.08,1.17-0.2,2.32-0.21,3.45
c-0.01,1.3,0.11,2.59,0.13,3.91c0.02,1.12-0.17,2.28,0.01,3.37c0.2,1.14,0.21,2.22,0.01,3.33c-0.07,0.39-0.01,0.79,0,1.19
c0.01,0.57-0.04,1.15,0.04,1.71c0.07,0.55,0.12,1.46,0.45,1.59c0.69,0.3,1.56,0.26,2.35,0.24c2.35-0.08,4.71-0.23,7.07-0.32
c0.62-0.03,1.24,0.09,1.86,0.09c1.56-0.02,1.19-0.09,2.56-0.09l0.1-15.31c-0.02-0.77,0.08-1.54,0.09-2.32
c0.02-1.1,0.02-2.2,0.02-3.3h18.69v-0.05c1.02,0.06,2.03,0.03,3.02-0.15c1.59-0.28,3.16-0.78,4.67-1.37
c1.68-0.66,3.31-1.46,4.74-2.59c0.45-0.35,0.82-0.8,1.25-1.17c0.71-0.62,1.56-1.13,2.14-1.84c1.24-1.5,2.44-3.04,3.36-4.79
c0.56-1.07,1.31-2.05,1.8-3.15c0.49-1.13,0.73-2.36,1.14-3.53c0.59-1.63,0.77-3.33,0.86-5.05
C197.81,62.98,197.78,61.36,197.39,59.77z M185.11,65.25c-0.04,0.65-0.15,1.32-0.54,1.9c-0.13,0.19-0.2,0.45-0.2,0.68
c-0.02,0.95-0.58,1.7-0.87,2.55c-0.12,0.35-0.25,0.67-0.6,0.89c-0.17,0.11-0.26,0.37-0.35,0.58c-0.37,0.85-1.17,1.23-1.88,1.67
c-0.82,0.51-1.73,0.88-2.6,1.29c-1.36,0.64-2.77,0.86-4.22,0.79l0.01,0.04h-17.81c-0.04-2.67-0.1-5.33-0.14-8
c-0.01-0.67-0.05-1.35-0.01-2.02c0.1-1.53,0.3-3.06,0.34-4.59c0.06-2.24,0-4.49,0.02-6.73c0-0.42,0.03-0.84,0.04-1.25h18.02
c0.6,0,1.21,0.04,1.82,0.16c0.69,0.14,1.38,0.24,2.08,0.32c1.23,0.15,2.21,0.78,3.14,1.54c1.37,1.12,2.4,2.5,3.01,4.16
c0.25,0.68,0.6,1.36,0.66,2.06c0.04,0.4-0.09,0.85-0.01,1.29c0.05,0.27,0.12,0.53,0.17,0.79c-0.04,0.01-0.07,0.02-0.11,0.03
c-0.02-0.1-0.05-0.19-0.11-0.39C185.03,63.83,185.16,64.55,185.11,65.25z"/>
</g>
<g>
<path class="st0" d="M138.14,178.87c-1.41-1.48-2.61-2.86-3.93-4.12c-1.5-1.42-3.04-2.96-5.07-3.47c-1.7-0.43-3.54-0.28-5.31-0.44
c-1.1-0.09-2.17-0.36-3.26-0.41c-0.88-0.05-1.76,0.17-2.65,0.2c-1.51,0.06-3.03,0.09-4.55,0.08c-2.88-0.01-5.76-0.05-8.64-0.09
c-4.66-0.07-9.33-0.12-14-0.23c-3.59-0.09-7.17-0.36-10.76-0.37c-1.11-0.01-2.27,0.42-3.31,0.88c-1.18,0.52-1.2,1.45-0.14,2.19
c0.91,0.64,1.88,1.2,2.86,1.73c2.87,1.58,5.73,3.17,8.65,4.66c3.38,1.73,6.79,3.38,10.21,5.04c6.36,3.09,12.78,6.08,19.09,9.29
c5.41,2.75,10.75,5.66,16.02,8.68c3.07,1.76,6.04,3.73,8.9,5.83c1.85,1.35,3.01,3.38,3.7,5.6c1.64,5.29,1.87,10.72,1.4,16.16
c-0.35,4.15-1.59,8.07-4.09,11.45c-2.48,3.35-6.02,5.28-9.91,6.52c-1.19,0.38-2.58,0.14-3.88,0.16c-3.33,0-6.66-0.01-9.99-0.03
c-3.29,0-6.59,0.05-9.89-0.01c-2.72-0.05-5.43-0.3-8.14-0.33c-4.3-0.03-8.58,0.09-12.87,0.12c-3.12,0.01-6.24,0.12-9.35-0.04
c-3.17-0.14-6.33-0.5-9.48-0.85c-1.62-0.18-3.37-0.25-4.81-0.91c-1.96-0.92-3.78-2.21-5.49-3.58c-1.97-1.58-3.82-3.34-5.57-5.15
c-1.31-1.37-2.37-2.97-3.63-4.57c2.48-2.08,4.92-4.11,7.54-6.31c-0.1-0.03,0.16,0.05,0.42,0.11c-0.08-0.08-0.16-0.16-0.24-0.24
c0.62-0.74,1.16-1.58,1.89-2.18c1.49-1.22,3.09-2.29,4.62-3.44c0.41-0.32,0.66-0.83,1.07-1.15c0.92-0.75,1.85-0.64,2.5,0.35
c0.96,1.46,2.11,2.75,3.38,3.98c1.94,1.89,4.23,2.61,6.77,2.71c2.84,0.11,5.69,0.11,8.53,0.03c3.55-0.09,7.11-0.45,10.67-0.42
c3.25,0,6.5,0.39,9.76,0.58c1.73,0.1,3.47,0.16,5.2,0.18c4.21,0.05,8.42,0.11,12.62,0.16c1.36,0,2.73,0.08,4.07-0.03
c0.55-0.04,1.06-0.47,1.58-0.74c0.04-0.13,0.07-0.29,0.11-0.43c-1.72-1.06-3.39-2.21-5.16-3.17c-3.34-1.79-6.76-3.45-10.11-5.21
c-0.91-0.48-1.69-1.2-2.6-1.68c-1.58-0.84-3.24-1.56-4.85-2.37c-2.34-1.19-4.64-2.42-6.97-3.63c-2.5-1.29-5.01-2.57-7.51-3.88
c-2.73-1.43-5.39-3.02-8.18-4.3c-2.72-1.25-5.15-2.9-7.69-4.42c-2.18-1.3-4.56-2.25-6.78-3.49c-2.87-1.61-5.69-3.33-7.82-5.92
c-0.86-1.04-1.81-2.08-2.36-3.29c-0.99-2.17-2.05-4.33-2.09-6.84c-0.03-1.14-0.72-2.27-0.71-3.4c0.03-1.88,0.35-3.76,0.59-5.63
c0.23-1.73,0.42-3.47,0.79-5.16c0.16-0.75,0.72-1.42,1.15-2.1c0.52-0.83,1.07-1.66,1.64-2.46c0.55-0.78,1.06-1.58,1.72-2.26
c1.02-1.08,2.1-2.13,3.26-3.03c0.79-0.62,1.75-1,2.67-1.44c1.1-0.52,2.2-1.04,3.34-1.45c3.42-1.22,6.99-1.25,10.56-1.26
c3.47,0,6.96-0.22,10.43-0.19c2.92,0.03,5.85,0.37,8.76,0.42c2.91,0.05,5.82-0.13,8.73-0.13c1.3-0.01,2.61,0.23,3.91,0.22
c2.37-0.01,4.75-0.14,7.13-0.18c0.95-0.01,1.9,0.09,2.85,0.13c3.33,0.17,6.67,0.26,10,0.5c3.31,0.25,6.36,1.44,9.02,3.34
c1.9,1.35,3.49,3.14,5.16,4.79c1.48,1.47,2.87,3.03,4.31,4.54c0.79,0.83,0.68,1.31-0.28,2.09c-1.71,1.38-3.14,3.1-4.77,4.58
c-1.72,1.56-3.54,3.02-5.31,4.53c-0.87,0.75-1.73,1.51-2.61,2.25C140.06,177.32,139.1,178.09,138.14,178.87z"/>
<path class="st0" d="M753.63,172.8c-3.28,0-6.59,0.05-9.88-0.02c-2.5-0.05-4.99-0.41-7.49-0.39c-5.81,0.07-11.64,0.33-17.47,0.41
c-3.02,0.04-6.07-0.11-9.09-0.24c-2.05-0.09-4.1-0.41-6.15-0.43c-1.58-0.01-3.18,0.38-4.78,0.44c-1.21,0.04-2.47-0.09-3.65-0.32
c-0.29-0.05-0.63-0.81-0.6-1.22c0.05-1.11,0.39-2.22,0.42-3.33c0.08-2.7,0-5.41,0.05-8.1c0-1.59,0.16-3.17,0.16-4.76
c0.03-0.8,0-1.61-0.16-2.39c-0.21-1.21,0.03-1.58,1.23-1.59c2.23-0.01,4.44,0.06,6.65-0.02c1.52-0.05,3.02-0.37,4.54-0.42
c1.26-0.05,2.5,0.16,3.76,0.18c2.94,0.04,5.91,0.04,8.88,0.04c2.6,0,5.23-0.05,7.86-0.01c1.08,0.01,2.18,0.27,3.28,0.25
c2.52-0.03,5.07-0.21,7.59-0.26c5.62-0.11,11.27-0.2,16.89-0.24c2.1-0.02,4.2,0.2,6.28,0.21c1.42,0.01,2.84-0.18,4.28-0.19
c1.16-0.01,2.31,0.22,3.49,0.18c2.68-0.1,5.39-0.37,8.07-0.42c2.26-0.05,4.52,0.07,6.78,0.23c0.92,0.06,1.5,0.64,1.47,1.72
c-0.05,1.34,0.03,2.68,0.03,4.02c0.1,4.8,0.21,9.61,0.29,14.41c0,0.2-0.21,0.43-0.37,0.58c-3.81,3.67-7.33,7.63-11.64,10.8
c-2.5,1.85-4.65,4.2-6.94,6.33c-1.34,1.23-2.65,2.44-3.97,3.69c-1.42,1.34-2.81,2.72-4.23,4.08c-3.21,3.11-6.44,6.22-9.64,9.35
c-3.13,3.03-6.33,5.96-9.25,9.16c-2.39,2.61-5.02,4.91-7.72,7.17c-1.68,1.39-3.05,3.18-4.52,4.76c19.05,0,38.12,0,57.35,0
c0.13,1.37,0.58,2.99,0.32,4.47c-0.42,2.15,0.11,4.2,0.16,6.31c0.03,2.06-0.05,4.12,0.03,6.16c0.05,1.33,0.32,2.64,0.53,4.31
c-0.55,0.17-1.34,0.64-2.15,0.67c-2.78,0.09-5.6,0.07-8.41,0.03c-3.91-0.05-7.86-0.17-11.77-0.24c-3.36-0.04-6.73-0.03-10.09-0.05
c-5.41-0.05-10.82-0.16-16.24-0.17c-2.23-0.01-4.44,0.16-6.67,0.22c-3.23,0.08-6.44-0.26-9.72,0.16c-2.34,0.29-4.78-0.29-7.2-0.43
c-1.21-0.08-2.44-0.03-3.65-0.08c-2.52-0.09-5.02-0.28-7.54-0.34c-0.92-0.04-1.84,0.2-2.76,0.2c-1.58-0.03-3.15-0.09-4.68-0.29
c-0.34-0.03-0.81-0.67-0.84-1.05c-0.11-2.34-0.03-4.68-0.13-6.99c-0.24-4.02-0.55-8.03-0.87-12.03c-0.08-0.79,0.21-1.29,0.79-1.75
c1.23-0.96,2.52-1.88,3.65-2.96c2.71-2.65,5.54-5.08,8.64-7.28c2.63-1.87,4.99-4.15,7.41-6.33c3.18-2.86,6.28-5.81,9.43-8.68
c1.89-1.71,3.86-3.31,5.75-5.03c3.86-3.58,7.65-7.26,11.59-10.8c2.34-2.13,4.94-3.98,7.33-6.07c1.89-1.66,3.65-3.49,5.46-5.25
C753.77,173.05,753.71,172.93,753.63,172.8z"/>
<path class="st0" d="M597.44,226.48c1.76,0,3.13-0.01,4.49,0c5.73,0.08,11.45,0.16,17.18,0.24c5.52,0.08,11.03,0.21,16.55,0.22
c2.94,0.01,5.88-0.2,8.83-0.2c2.89,0,5.78,0.16,8.67,0.21c0.74,0.01,1.08,0.34,1.05,1c-0.03,3.1-0.08,6.2-0.16,9.3
c-0.08,2.31-0.16,4.65-0.32,6.96c-0.16,2.18-0.21,2.45-2.52,2.52c-0.95,0.03-1.92,0.17-2.89,0.24c-1.05,0.08-2.1,0.21-3.18,0.2
c-3.34-0.04-6.65-0.16-9.98-0.17c-1.87,0-3.76,0.13-5.65,0.21c-2.29,0.08-4.57,0.18-6.86,0.21c-1.26,0-2.55-0.22-3.81-0.18
c-2.71,0.08-5.39,0.29-8.09,0.39c-1.18,0.03-2.39-0.13-3.6-0.18c-2.02-0.08-4.05-0.21-6.07-0.22c-4.02-0.04-8.07-0.04-12.09-0.01
c-3.34,0.03-6.65,0.14-9.96,0.18c-2.71,0.05-5.41,0.07-8.12,0.03c-1.55,0-3.07-0.11-4.6-0.26c-0.32-0.03-0.74-0.46-0.84-0.79
c-0.26-0.84-0.47-1.71-0.47-2.58c-0.13-4.49-0.08-8.99-0.32-13.48c-0.13-2.54,1.21-4.19,2.81-5.7c2.57-2.39,5.23-4.66,7.88-6.96
c4.05-3.51,8.12-6.97,12.14-10.5c1.39-1.23,2.63-2.67,4.02-3.91c2.52-2.25,5.12-4.43,7.67-6.64c0.29-0.24,0.58-0.45,0.84-0.69
c2.52-2.35,5.02-4.68,7.51-7.06c1.92-1.85,3.78-3.8,5.7-5.66c1.71-1.64,3.52-3.18,5.25-4.81c1.6-1.56,3.18-3.19,4.78-4.8
c0.18-0.19,0.29-0.46,0.42-0.65c-4.78,0.13-9.51,0.3-14.24,0.36c-1.44,0.02-2.86-0.34-4.31-0.4c-1.68-0.07-3.36-0.01-5.04-0.01
c-0.97,0-1.97,0.02-2.97-0.01c-2.6-0.09-5.2-0.21-7.8-0.26c-3.97-0.08-7.93-0.13-11.9-0.14c-2.15-0.01-4.28,0.16-6.44,0.09
c-1.79-0.05-3.6-0.26-5.39-0.54c-0.34-0.05-0.87-0.77-0.84-1.15c0.24-3.74,0.66-7.47,0.89-11.22c0.13-2.4,0.05-4.82,0.05-7.23
c0-1,0.76-1.75,2.02-1.76c1.05-0.01,2.08,0.18,3.13,0.19c0.92,0.01,1.84-0.2,2.76-0.19c2.44,0.04,4.89,0.18,7.33,0.21
c1,0.01,2-0.23,3-0.21c7.62,0.06,15.26,0.16,22.88,0.22c3.26,0.03,6.49-0.03,9.75,0.02c2.02,0.02,4.05,0.25,6.04,0.21
c3.18-0.06,6.33-0.36,9.51-0.36c3.49,0,6.99,0.25,10.46,0.34c2.52,0.07,5.07,0,7.59,0.05c1.26,0.02,2.5,0.12,3.73,0.24
c1.18,0.13,0.87,1.16,0.92,1.81c0.21,3.48,0.37,6.97,0.47,10.45c0.03,1.67-0.08,3.35-0.08,5.02c-0.03,0.72-0.08,1.45,0.11,2.13
c0.55,2.34-0.66,3.7-2.34,5.08c-4.07,3.34-8.04,6.82-11.98,10.29c-3.81,3.32-7.54,6.7-11.27,10.06c-2.84,2.55-5.67,5.11-8.46,7.7
c-3.02,2.8-5.99,5.66-8.98,8.49c-2.5,2.36-5.02,4.7-7.54,7.07C602.44,221.72,600.07,223.97,597.44,226.48z"/>
<path class="st0" d="M179.6,199.91c0.18-1.15,0.45-2.3,0.51-3.45c0.05-1-0.14-2-0.24-3c-0.04-0.43-0.16-0.87-0.11-1.28
c0.06-0.39,0.35-0.76,0.45-1.15c0.42-1.83,0.78-3.66,1.22-5.48c0.11-0.41,0.55-0.73,0.74-1.14c0.71-1.57,1.51-3.12,2-4.76
c0.45-1.45,1.69-2.44,2.1-3.76c1-3.26,3.3-5.53,5.5-7.89c1.26-1.35,2.65-2.57,3.89-3.93c2.62-2.89,5.6-5.33,9.05-7.14
c3.4-1.79,6.84-3.55,10.39-5.04c1.78-0.75,3.83-0.87,5.76-1.25c1.92-0.38,3.85-0.74,5.78-1.09c0.67-0.11,1.35-0.16,2.06-0.24
c-0.03-0.12-0.07-0.28-0.18-0.69c1.02,0.63,1.92,0.05,2.8,0.12c2.77,0.21,5.56,0.45,8.28,0.96c3.25,0.63,6.46,1.52,9.66,2.39
c0.66,0.17,1.21,0.74,1.85,1.06c1.56,0.78,3.17,1.45,4.7,2.26c2.07,1.1,4.11,2.29,6.14,3.47c2.57,1.49,4.26,3.78,5.84,6.23
c1.22,1.88,2.79,3.52,4.03,5.39c1.2,1.77,2.25,3.65,3.21,5.56c0.57,1.14,0.79,2.44,1.25,3.64c0.56,1.48,1.31,2.9,1.81,4.4
c0.47,1.43,0.74,2.94,1.1,4.41c0.83,3.38,0.9,6.84,0.71,10.29c-0.2,3.65-0.59,7.26-1.84,10.75c-0.89,2.48-1.39,5.12-2.44,7.51
c-1.04,2.34-2.63,4.43-3.82,6.71c-1.94,3.73-4.51,6.99-7.15,10.19c-1.25,1.52-3.04,2.6-4.56,3.91c-0.92,0.8-1.72,1.75-2.67,2.5
c-3.05,2.42-6.53,4.11-10.1,5.52c-3.21,1.26-6.56,2.31-9.94,2.92c-3.23,0.58-6.56,0.64-9.89-0.05c-2.19-0.45-4.51-0.29-6.75-0.59
c-2.06-0.28-4.09-0.76-6.11-1.25c-2.3-0.55-4.58-1.16-6.84-1.87c-2.98-0.92-5.81-2.29-8.2-4.24c-2.46-2.01-4.77-4.23-6.9-6.59
c-2.03-2.26-3.74-4.81-5.56-7.26c-0.66-0.89-1.13-1.94-1.87-2.77c-2.04-2.3-2.52-5.3-3.47-8.02c-1.11-3.19-1.56-6.61-2.08-9.98
c-0.28-1.8-0.1-3.68-0.15-5.52c-0.01-0.28-0.17-0.54-0.26-0.81C179.41,199.87,179.5,199.89,179.6,199.91z M257.82,196.06
c0.09-0.02,0.18-0.05,0.28-0.07c-0.14-0.66-0.31-1.31-0.44-1.98c-0.21-1.08,0.11-2.23,0.01-3.22c-0.16-1.75-1.03-3.46-1.66-5.16
c-1.55-4.17-4.12-7.63-7.55-10.43c-2.32-1.89-4.79-3.49-7.87-3.86c-1.75-0.21-3.5-0.45-5.22-0.81c-3.43-0.71-6.88-0.51-10.25-0.01
c-3.45,0.5-6.61,2.07-9.66,3.78c-2.49,1.41-4.7,3.13-6.42,5.47c-1.47,2-3.39,3.72-4.58,5.87c-2.86,5.14-4.23,10.64-3.07,16.61
c0.78,4.03,2.24,7.78,4.33,11.24c2.3,3.82,5.35,7.05,9.24,9.35c1.4,0.83,2.73,1.96,4.24,2.35c2.58,0.68,5.28,0.91,7.93,1.29
c4.54,0.67,8.94,0.22,13.12-1.76c2.19-1.04,4.48-1.96,6.53-3.23c1.77-1.11,3.79-2.08,4.72-4.2c0.22-0.53,0.45-1.19,0.88-1.46
c0.87-0.55,1.22-1.36,1.51-2.24c0.72-2.13,2.11-4.03,2.17-6.4c0.01-0.58,0.2-1.23,0.51-1.7c0.98-1.45,1.25-3.12,1.35-4.76
c0.11-1.77-0.2-3.57-0.35-5.64C257.7,195.6,257.76,195.82,257.82,196.06z"/>
<path class="st0" d="M851.4,243.5c-0.26,0-0.66,0.11-0.92-0.03c-1.34-0.68-2.68-1.34-3.94-2.15c-0.68-0.45-1.08-1.3-1.73-1.79
c-1.02-0.79-2.15-1.39-3.23-2.1c-0.29-0.2-0.68-0.45-0.76-0.75c-0.39-1.81-1.92-2.8-3.05-4.01c-3.1-3.26-5.33-7.09-7.57-10.93
c-1.6-2.72-3.02-5.57-4.2-8.49c-0.79-1.93-1.13-4.07-1.52-6.13c-0.42-2.34-0.87-4.72-0.92-7.08c-0.03-2.36,0.29-4.75,0.63-7.1
c0.39-2.8,1.13-5.56,1.42-8.37c0.29-2.48,1.47-4.52,2.55-6.61c1.13-2.15,2.47-4.19,3.86-6.19c1-1.44,2.23-2.74,3.34-4.11
c0.81-1.02,1.55-2.14,2.44-3.08c1.1-1.12,2.31-2.11,3.52-3.12c1.31-1.12,2.57-2.35,4.05-3.27c4.33-2.71,8.77-5.22,13.95-6.12
c1.5-0.28,2.97-1.02,4.49-1.15c3.63-0.29,7.25-0.3,10.88-0.49c4.89-0.25,9.38,1.5,13.93,2.89c2.71,0.83,5.46,1.69,7.99,2.96
c2.99,1.52,5.86,3.39,8.64,5.31c1.47,1.03,2.76,2.41,4.02,3.75c1.84,1.99,3.78,3.96,5.36,6.17c1.18,1.67,1.87,3.68,2.73,5.58
c2.36,5.28,4.02,10.8,5.46,16.4c0.26,1.08,0.34,2.23,0.39,3.36c0.1,1.96,0.18,3.92,0.21,5.88c0,0.72-0.18,1.44-0.37,2.14
c-1.16,4.44-2.23,8.9-3.55,13.29c-1.31,4.3-3.89,7.95-6.62,11.43c-2.15,2.73-4.41,5.39-6.8,7.88c-1.05,1.09-2.63,1.66-3.89,2.55
c-2.81,2-5.94,3.39-8.98,4.87c-3.07,1.5-6.33,2.34-9.72,2.8c-1.58,0.22-3.1,0.67-4.68,0.88c-1.02,0.14-2.02,0.04-3.05,0.07
c-1.42,0.04-2.86,0.24-4.26,0.13c-1.97-0.16-3.89-0.56-5.86-0.79c-0.87-0.08-1.76,0.14-2.63,0c-1.05-0.18-2.08-0.6-3.1-0.92
c-1.39-0.43-2.84-0.78-4.15-1.34C854.26,245.1,852.87,244.28,851.4,243.5z M902.21,200.63c-0.11-0.02-0.21-0.05-0.32-0.07
c-0.08-0.41-0.21-0.81-0.24-1.23c0-0.35,0.18-0.72,0.18-1.08c-0.03-0.91-0.24-1.81-0.21-2.72c0.13-5.62-1.76-10.54-5.33-14.76
c-1.37-1.61-3.39-2.67-4.83-4.24c-2.18-2.36-5.1-3.31-7.88-4.28c-2.47-0.85-5.23-0.96-7.88-1.14c-4.76-0.32-9.35,0.85-13.74,2.36
c-2.81,0.97-5.33,2.96-7.75,4.8c-2.76,2.1-4.89,4.85-6.67,7.84c-1.63,2.76-3.52,5.44-3.65,8.76c-0.08,2.06,0.26,4.15,0.6,6.21
c0.79,5.18,2.34,10.07,5.91,14.11c1.84,2.1,3.47,4.44,5.6,6.21c2.78,2.33,5.91,4.16,9.62,4.85c2.26,0.39,4.41,1.52,6.75,1.39
c2.73-0.16,5.49-0.38,8.14-0.91c1.92-0.38,3.7-1.33,5.57-2c3.5-1.27,6.36-3.52,8.67-6.35c1.31-1.6,3.07-3,3.31-5.29
c2.15-2.42,2.5-5.57,3.42-8.49C901.89,203.35,901.97,201.97,902.21,200.63z"/>
<path class="st0" d="M429.63,247.44c0.43-1.23,0.66-2.1,1.01-2.92c1.04-2.47,2.17-4.89,3.19-7.36c1.37-3.31,2.61-6.67,4.01-9.97
c1.39-3.27,2.94-6.48,4.35-9.73c1.56-3.61,3.01-7.28,4.55-10.9c0.6-1.43,1.38-2.78,1.94-4.22c0.92-2.36,1.75-4.77,2.59-7.17
c1.98-5.67,4.22-11.22,7.09-16.51c1.11-2.03,1.87-4.25,2.77-6.4c1.75-4.16,3.46-8.35,5.21-12.51c1.09-2.59,2.25-5.15,3.3-7.75
c0.39-0.93,0.97-1.38,2-1.37c3.73,0.01,7.49-0.03,11.23,0c3.11,0.03,6.25,0.18,9.37,0.21c0.95,0.01,1.52,0.37,1.87,1.2
c0.97,2.36,1.89,4.73,2.86,7.08c0.97,2.35,1.97,4.69,2.99,7.02c1.55,3.49,3.1,7,4.76,10.46c1.05,2.23,2.36,4.33,3.42,6.57
c1.31,2.77,2.44,5.62,3.68,8.43c0.81,1.87,1.76,3.68,2.52,5.56c0.53,1.28,0.76,2.67,1.29,3.94c1.21,2.91,2.52,5.78,3.78,8.66
c0.16,0.3,0.29,0.57,0.47,0.85c0.76,1.27,1.68,2.36,1.89,4.03c0.18,1.6,1.21,3.08,1.81,4.63c0.95,2.46,1.84,4.93,2.81,7.37
c0.63,1.51,1.5,2.92,2.1,4.44c1.5,3.77,2.86,7.59,4.33,11.38c0.32,0.81,0.92,1.52,1.34,2.31c0.26,0.5,0.37,1.05,0.68,1.93
c-2.78,0-5.25-0.07-7.7,0.01c-5.15,0.14-10.27,0.39-15.4,0.53c-0.39,0-0.97-0.51-1.16-0.92c-0.95-2.14-1.79-4.34-2.68-6.49
c-1.23-2.96-2.5-5.88-3.81-8.8c-0.11-0.25-0.58-0.5-0.87-0.47c-2.23,0.13-4.47,0.47-6.7,0.51c-5.67,0.07-11.36,0.07-17.03,0.01
c-6.15-0.05-12.29-0.14-18.43-0.25c-0.76-0.01-1.16,0.22-1.44,0.93c-1.14,2.94-2.38,5.86-3.5,8.8c-0.62,1.63-1.15,3.31-1.62,4.99
c-0.32,1.16-1.09,1.72-2.79,1.75c-4.14,0.04-8.29,0.09-12.44,0.12C436.19,247.47,433.08,247.44,429.63,247.44z M483.09,175.69
c-0.17,0.02-0.35,0.04-0.53,0.06c-3.74,11.22-7.5,22.45-11.32,33.9c4.09,0,8.21,0.05,12.32-0.01c4.17-0.07,8.35-0.23,12.84-0.35
C491.91,197.95,487.49,186.82,483.09,175.69z"/>
<path class="st0" d="M392.4,226.87c-0.11,2.04-0.25,3.84-0.3,5.65c-0.11,4.01-0.16,8.01-0.25,12.03c-0.01,0.63,0.06,1.29-0.11,1.88
c-0.09,0.32-0.56,0.7-0.89,0.75c-1.41,0.16-2.84,0.2-4.26,0.26c-1.72,0.11-3.44,0.22-5.16,0.24c-1.41,0-2.82-0.21-4.22-0.21
c-2.37-0.03-4.75,0.07-7.12,0.08c-1.37,0-2.73-0.08-4.1-0.11c-2.76,0-5.52,0.03-8.28,0c-2.65-0.04-5.29-0.18-7.93-0.18
c-2.06,0-4.11,0.16-6.17,0.18c-1.29,0-2.58-0.21-3.87-0.21c-2.08,0-4.17,0.1-6.25,0.13c-0.88,0-1.76-0.17-2.63-0.13
c-3.34,0.13-6.69,0.34-10.02,0.45c-1.12,0.03-2.34,0.08-3.33-0.34c-0.45-0.18-0.53-1.47-0.63-2.26c-0.11-0.79-0.04-1.6-0.05-2.42
c-0.01-0.55-0.09-1.13,0-1.68c0.29-1.58,0.27-3.11-0.01-4.73c-0.26-1.55,0.01-3.19-0.02-4.78c-0.04-1.87-0.2-3.7-0.19-5.54
c0.01-1.6,0.19-3.23,0.3-4.89c0.04,0-0.17-0.03-0.32-0.03c0.08-0.89,0.16-1.76,0.25-2.67c0.14,0.26,0.27,0.52,0.32,0.62
c0-1.47,0.05-3.03-0.01-4.58c-0.08-1.92-0.6-3.89-0.29-5.73c0.46-2.75-0.3-5.37-0.2-8.05c0.09-2.67,0.28-5.35,0.29-8.03
c0.01-1.8-0.2-3.61-0.31-5.41c0.07,0.14,0.16,0.33,0.31,0.65c0-1.9,0-3.65,0-5.54c0,0,0.19-0.02,0.42-0.05
c-0.05-0.86,0.17-1.88-0.22-2.57c-0.61-1.11,0.05-2.14-0.24-3.22c-0.3-1.12-0.05-2.37-0.05-3.57c0-2.29-0.05-4.58,0.01-6.86
c0.04-1.55,0.22-3.11,0.33-4.67c0.16-2.16,0.35-4.33,0.45-6.49c0.03-0.83-0.05-1.69-0.3-2.48c-0.33-1.04,0.34-1.16,0.98-1.21
c2.06-0.21,4.14-0.45,6.21-0.49c3.75-0.08,7.51-0.02,11.26-0.02c1.49,0,1.87,0.37,1.9,1.83c0.09,3.23,0.21,6.46,0.22,9.7
c0.01,2.4-0.18,4.8-0.21,7.2c-0.03,3.18,0.05,6.36-0.03,9.54c-0.06,2.17-0.34,4.33-0.48,6.51c-0.06,0.95-0.01,1.91,0.01,2.87
c0.07,4.22,0.18,8.43,0.22,12.65c0.04,3.99,0.03,7.99,0.02,11.98c-0.01,3.11-0.02,6.21-0.07,9.32c-0.01,1.1-0.15,2.19-0.12,3.28
c0.01,0.7,0.32,1.21,1.2,1.2c3.64-0.03,7.27-0.01,10.91-0.01c7.51,0.01,15.03,0.03,22.53,0.03c6.38,0,12.78-0.01,19.17-0.01
C391.55,226.73,392.01,226.82,392.4,226.87z"/>
</g>
<g>
<g>
<g>
<path class="st1" d="M131.9,174.87c-1.41-1.48-2.61-2.86-3.93-4.12c-1.5-1.42-3.04-2.96-5.07-3.47c-1.7-0.43-3.54-0.28-5.31-0.44
c-1.1-0.09-2.17-0.36-3.26-0.41c-0.88-0.05-1.76,0.17-2.65,0.2c-1.51,0.06-3.03,0.09-4.55,0.08c-2.88-0.01-5.76-0.05-8.64-0.09
c-4.66-0.07-9.33-0.12-14-0.23c-3.59-0.09-7.17-0.36-10.76-0.37c-1.11-0.01-2.27,0.42-3.31,0.88c-1.18,0.52-1.2,1.45-0.14,2.19
c0.91,0.64,1.89,1.2,2.86,1.73c2.87,1.58,5.73,3.17,8.65,4.66c3.38,1.73,6.79,3.38,10.21,5.04c6.36,3.09,12.78,6.08,19.09,9.29
c5.41,2.75,10.75,5.66,16.02,8.68c3.07,1.76,6.04,3.73,8.9,5.83c1.85,1.35,3.01,3.38,3.7,5.6c1.64,5.29,1.87,10.72,1.4,16.16
c-0.35,4.15-1.59,8.07-4.09,11.45c-2.48,3.35-6.02,5.28-9.91,6.52c-1.19,0.38-2.58,0.14-3.88,0.16c-3.33,0-6.66-0.01-9.99-0.03
c-3.29,0-6.59,0.05-9.89-0.01c-2.72-0.05-5.43-0.3-8.14-0.33c-4.3-0.03-8.58,0.09-12.87,0.12c-3.12,0.01-6.24,0.12-9.35-0.04
c-3.17-0.14-6.33-0.5-9.48-0.85c-1.62-0.18-3.37-0.25-4.81-0.91c-1.96-0.92-3.78-2.21-5.49-3.58c-1.97-1.58-3.82-3.34-5.57-5.15
c-1.31-1.37-2.37-2.97-3.63-4.57c2.48-2.08,4.92-4.11,7.54-6.31c-0.1-0.03,0.16,0.05,0.42,0.11c-0.08-0.08-0.16-0.16-0.24-0.24
c0.62-0.74,1.16-1.58,1.89-2.18c1.49-1.22,3.09-2.29,4.62-3.44c0.41-0.32,0.66-0.83,1.07-1.15c0.92-0.75,1.85-0.64,2.5,0.35
c0.96,1.46,2.11,2.75,3.38,3.98c1.94,1.89,4.23,2.61,6.77,2.71c2.84,0.11,5.69,0.11,8.53,0.03c3.55-0.09,7.11-0.45,10.67-0.42
c3.25,0,6.5,0.39,9.76,0.58c1.73,0.11,3.47,0.16,5.2,0.18c4.21,0.05,8.42,0.1,12.62,0.16c1.36,0,2.73,0.08,4.07-0.03
c0.55-0.04,1.06-0.47,1.58-0.74c0.04-0.13,0.07-0.29,0.11-0.43c-1.72-1.06-3.39-2.21-5.16-3.17c-3.34-1.79-6.76-3.45-10.11-5.21
c-0.91-0.48-1.69-1.2-2.6-1.68c-1.58-0.84-3.24-1.56-4.85-2.37c-2.34-1.19-4.64-2.42-6.97-3.63c-2.5-1.29-5.01-2.57-7.51-3.88
c-2.73-1.43-5.39-3.02-8.18-4.3c-2.72-1.25-5.15-2.9-7.69-4.42c-2.18-1.3-4.56-2.25-6.78-3.49c-2.87-1.61-5.69-3.33-7.82-5.92
c-0.86-1.04-1.81-2.08-2.36-3.29c-0.99-2.17-2.05-4.33-2.09-6.84c-0.03-1.14-0.72-2.27-0.71-3.4c0.03-1.88,0.35-3.76,0.59-5.63
c0.23-1.73,0.42-3.47,0.79-5.16c0.16-0.75,0.72-1.42,1.15-2.1c0.52-0.83,1.07-1.66,1.64-2.46c0.54-0.78,1.06-1.58,1.72-2.26
c1.02-1.08,2.1-2.13,3.26-3.03c0.79-0.62,1.75-1,2.67-1.44c1.1-0.52,2.2-1.04,3.34-1.44c3.42-1.22,6.99-1.25,10.56-1.26
c3.47,0,6.96-0.22,10.43-0.19c2.92,0.03,5.85,0.37,8.76,0.42c2.91,0.05,5.82-0.13,8.73-0.13c1.3-0.01,2.61,0.23,3.91,0.22
c2.37-0.01,4.75-0.14,7.13-0.18c0.95-0.01,1.9,0.09,2.85,0.13c3.33,0.17,6.67,0.26,10,0.5c3.31,0.25,6.36,1.44,9.02,3.34
c1.9,1.35,3.49,3.14,5.16,4.79c1.48,1.47,2.87,3.03,4.31,4.54c0.79,0.83,0.68,1.31-0.28,2.09c-1.71,1.38-3.14,3.1-4.77,4.58
c-1.72,1.56-3.54,3.02-5.31,4.53c-0.87,0.75-1.73,1.51-2.61,2.25C133.81,173.31,132.86,174.08,131.9,174.87z"/>
</g>
<g>
<path class="st1" d="M747.39,168.8c-3.28,0-6.59,0.05-9.88-0.02c-2.5-0.05-4.99-0.41-7.49-0.39c-5.81,0.07-11.64,0.33-17.47,0.41
c-3.02,0.04-6.07-0.11-9.09-0.24c-2.05-0.09-4.1-0.41-6.15-0.43c-1.58-0.01-3.18,0.38-4.78,0.44c-1.21,0.04-2.47-0.09-3.65-0.32
c-0.29-0.05-0.63-0.81-0.6-1.22c0.05-1.11,0.39-2.22,0.42-3.33c0.08-2.7,0-5.41,0.05-8.1c0-1.59,0.16-3.17,0.16-4.76
c0.03-0.8,0-1.61-0.16-2.39c-0.21-1.21,0.03-1.58,1.23-1.59c2.23-0.01,4.44,0.06,6.65-0.02c1.52-0.05,3.02-0.37,4.54-0.42
c1.26-0.05,2.5,0.16,3.76,0.18c2.94,0.04,5.91,0.04,8.88,0.04c2.6,0,5.23-0.05,7.86-0.01c1.08,0.01,2.18,0.27,3.28,0.25
c2.52-0.03,5.07-0.21,7.59-0.26c5.62-0.11,11.27-0.2,16.89-0.24c2.1-0.02,4.2,0.2,6.28,0.21c1.42,0.01,2.84-0.18,4.28-0.19
c1.16-0.01,2.31,0.22,3.49,0.18c2.68-0.1,5.39-0.37,8.07-0.42c2.26-0.05,4.52,0.07,6.78,0.23c0.92,0.06,1.5,0.64,1.47,1.72
c-0.05,1.34,0.03,2.68,0.03,4.02c0.1,4.8,0.21,9.61,0.29,14.41c0,0.2-0.21,0.43-0.37,0.58c-3.81,3.67-7.33,7.63-11.64,10.8
c-2.5,1.85-4.65,4.2-6.94,6.33c-1.34,1.23-2.65,2.44-3.97,3.69c-1.42,1.34-2.81,2.72-4.23,4.08c-3.21,3.11-6.44,6.22-9.64,9.35
c-3.13,3.03-6.33,5.96-9.25,9.16c-2.39,2.61-5.02,4.91-7.72,7.17c-1.68,1.39-3.05,3.18-4.52,4.76c19.05,0,38.12,0,57.35,0
c0.13,1.37,0.58,2.99,0.32,4.47c-0.42,2.15,0.11,4.2,0.16,6.31c0.03,2.06-0.05,4.12,0.03,6.16c0.05,1.33,0.32,2.64,0.53,4.31
c-0.55,0.17-1.34,0.64-2.15,0.67c-2.78,0.09-5.6,0.07-8.41,0.03c-3.91-0.05-7.86-0.17-11.77-0.24
c-3.36-0.04-6.73-0.03-10.09-0.05c-5.41-0.05-10.82-0.16-16.24-0.17c-2.23-0.01-4.44,0.16-6.67,0.22
c-3.23,0.08-6.44-0.26-9.72,0.16c-2.34,0.29-4.78-0.29-7.2-0.43c-1.21-0.08-2.44-0.03-3.65-0.08c-2.52-0.09-5.02-0.28-7.54-0.34
c-0.92-0.04-1.84,0.2-2.76,0.2c-1.58-0.03-3.15-0.09-4.68-0.29c-0.34-0.03-0.81-0.67-0.84-1.05c-0.11-2.34-0.03-4.68-0.13-6.99
c-0.24-4.02-0.55-8.03-0.87-12.03c-0.08-0.79,0.21-1.29,0.79-1.75c1.23-0.96,2.52-1.88,3.65-2.96c2.71-2.65,5.54-5.08,8.64-7.28
c2.63-1.87,4.99-4.15,7.41-6.33c3.18-2.86,6.28-5.81,9.43-8.68c1.89-1.71,3.86-3.31,5.75-5.03c3.86-3.58,7.65-7.26,11.59-10.8
c2.34-2.13,4.94-3.98,7.33-6.07c1.89-1.66,3.65-3.49,5.46-5.25C747.52,169.05,747.47,168.92,747.39,168.8z"/>
</g>
<g>
<path class="st1" d="M591.2,222.47c1.76,0,3.13-0.01,4.49,0c5.73,0.08,11.45,0.16,17.18,0.24c5.52,0.08,11.03,0.21,16.55,0.22
c2.94,0.01,5.88-0.2,8.83-0.2c2.89,0,5.78,0.16,8.67,0.21c0.74,0.01,1.08,0.34,1.05,1c-0.03,3.1-0.08,6.2-0.16,9.3
c-0.08,2.31-0.16,4.65-0.32,6.96c-0.16,2.18-0.21,2.45-2.52,2.52c-0.95,0.03-1.92,0.17-2.89,0.24c-1.05,0.08-2.1,0.21-3.18,0.2
c-3.34-0.04-6.65-0.16-9.98-0.17c-1.87,0-3.76,0.13-5.65,0.21c-2.29,0.08-4.57,0.18-6.86,0.21c-1.26,0-2.55-0.22-3.81-0.18
c-2.71,0.08-5.39,0.29-8.09,0.39c-1.18,0.03-2.39-0.13-3.6-0.18c-2.02-0.08-4.05-0.21-6.07-0.22c-4.02-0.04-8.07-0.04-12.09-0.01
c-3.34,0.03-6.65,0.14-9.96,0.18c-2.71,0.05-5.41,0.07-8.12,0.03c-1.55,0-3.07-0.11-4.6-0.26c-0.32-0.03-0.74-0.46-0.84-0.79
c-0.26-0.84-0.47-1.71-0.47-2.58c-0.13-4.49-0.08-8.98-0.32-13.48c-0.13-2.54,1.21-4.19,2.81-5.7c2.57-2.39,5.23-4.66,7.88-6.96
c4.05-3.51,8.12-6.97,12.14-10.5c1.39-1.23,2.63-2.67,4.02-3.91c2.52-2.25,5.12-4.43,7.67-6.64c0.29-0.24,0.58-0.45,0.84-0.69
c2.52-2.35,5.02-4.68,7.51-7.06c1.92-1.85,3.78-3.8,5.7-5.66c1.71-1.64,3.52-3.18,5.25-4.81c1.6-1.56,3.18-3.19,4.78-4.8
c0.18-0.19,0.29-0.46,0.42-0.65c-4.78,0.13-9.51,0.3-14.24,0.36c-1.44,0.02-2.86-0.34-4.31-0.4c-1.68-0.07-3.36-0.01-5.04-0.01
c-0.97,0-1.97,0.02-2.97-0.01c-2.6-0.09-5.2-0.21-7.8-0.26c-3.97-0.08-7.93-0.13-11.9-0.14c-2.15-0.01-4.28,0.16-6.44,0.09
c-1.79-0.05-3.6-0.26-5.39-0.54c-0.34-0.05-0.87-0.77-0.84-1.15c0.24-3.74,0.66-7.47,0.89-11.22c0.13-2.4,0.05-4.82,0.05-7.23
c0-1,0.76-1.75,2.02-1.76c1.05-0.01,2.08,0.18,3.13,0.19c0.92,0.01,1.84-0.2,2.76-0.19c2.44,0.04,4.89,0.18,7.33,0.21
c1,0.01,2-0.23,3-0.21c7.62,0.06,15.26,0.16,22.88,0.22c3.26,0.03,6.49-0.03,9.75,0.02c2.02,0.02,4.05,0.25,6.04,0.21
c3.18-0.06,6.33-0.36,9.51-0.36c3.49,0,6.99,0.25,10.46,0.34c2.52,0.07,5.07,0,7.59,0.05c1.26,0.02,2.5,0.12,3.73,0.24
c1.18,0.13,0.87,1.16,0.92,1.81c0.21,3.48,0.37,6.97,0.47,10.45c0.03,1.67-0.08,3.35-0.08,5.02c-0.03,0.72-0.08,1.45,0.11,2.13
c0.55,2.34-0.66,3.7-2.34,5.08c-4.07,3.34-8.04,6.82-11.98,10.29c-3.81,3.32-7.54,6.7-11.27,10.06c-2.84,2.55-5.67,5.11-8.46,7.7
c-3.02,2.8-5.99,5.66-8.98,8.49c-2.5,2.36-5.02,4.7-7.54,7.07C596.19,217.72,593.82,219.96,591.2,222.47z"/>
</g>
<g>
<g>
<path class="st1" d="M173.35,195.9c0.18-1.15,0.45-2.3,0.51-3.45c0.05-1-0.14-2-0.24-3c-0.04-0.43-0.16-0.87-0.11-1.28
c0.06-0.39,0.35-0.76,0.45-1.15c0.42-1.83,0.77-3.67,1.22-5.48c0.11-0.41,0.55-0.73,0.74-1.14c0.71-1.57,1.51-3.12,2-4.76
c0.45-1.45,1.69-2.44,2.1-3.76c1-3.26,3.3-5.53,5.5-7.89c1.26-1.35,2.65-2.57,3.89-3.93c2.62-2.89,5.6-5.33,9.05-7.14
c3.4-1.79,6.84-3.55,10.39-5.04c1.78-0.75,3.83-0.87,5.76-1.25c1.92-0.38,3.85-0.74,5.78-1.09c0.67-0.11,1.35-0.16,2.06-0.24
c-0.03-0.12-0.07-0.28-0.18-0.69c1.02,0.63,1.92,0.05,2.8,0.12c2.77,0.21,5.56,0.45,8.28,0.96c3.25,0.63,6.46,1.52,9.66,2.39
c0.66,0.17,1.21,0.74,1.85,1.06c1.56,0.78,3.17,1.45,4.7,2.26c2.07,1.1,4.11,2.29,6.14,3.47c2.57,1.49,4.26,3.78,5.84,6.23
c1.22,1.88,2.79,3.52,4.03,5.39c1.2,1.77,2.25,3.65,3.21,5.56c0.57,1.14,0.79,2.44,1.25,3.64c0.56,1.48,1.31,2.9,1.81,4.4
c0.47,1.43,0.74,2.94,1.1,4.41c0.83,3.38,0.9,6.84,0.71,10.29c-0.2,3.65-0.59,7.26-1.84,10.75c-0.89,2.48-1.39,5.12-2.44,7.51
c-1.04,2.34-2.63,4.43-3.82,6.71c-1.94,3.73-4.51,6.99-7.15,10.19c-1.25,1.52-3.04,2.6-4.56,3.91c-0.92,0.8-1.72,1.75-2.67,2.5
c-3.05,2.42-6.53,4.11-10.1,5.52c-3.21,1.26-6.56,2.31-9.94,2.92c-3.23,0.58-6.56,0.64-9.89-0.05
c-2.19-0.45-4.51-0.29-6.75-0.59c-2.06-0.28-4.09-0.76-6.11-1.25c-2.3-0.55-4.58-1.16-6.84-1.87c-2.98-0.92-5.81-2.29-8.2-4.24
c-2.46-2.01-4.77-4.23-6.9-6.59c-2.03-2.26-3.74-4.81-5.56-7.26c-0.66-0.89-1.13-1.94-1.87-2.77c-2.04-2.3-2.52-5.3-3.47-8.02
c-1.11-3.19-1.56-6.61-2.08-9.98c-0.28-1.8-0.1-3.68-0.15-5.52c-0.01-0.28-0.17-0.54-0.26-0.81
C173.16,195.86,173.25,195.88,173.35,195.9z M251.57,192.05c0.09-0.02,0.18-0.05,0.28-0.07c-0.14-0.66-0.31-1.31-0.44-1.98
c-0.21-1.08,0.11-2.23,0.01-3.22c-0.16-1.75-1.03-3.46-1.66-5.16c-1.55-4.17-4.12-7.63-7.55-10.43
c-2.32-1.89-4.79-3.49-7.87-3.86c-1.75-0.21-3.5-0.45-5.22-0.81c-3.43-0.71-6.88-0.51-10.25-0.01c-3.45,0.5-6.61,2.07-9.66,3.78
c-2.49,1.41-4.7,3.13-6.42,5.47c-1.47,2-3.39,3.72-4.58,5.87c-2.86,5.14-4.23,10.64-3.07,16.61c0.78,4.03,2.24,7.78,4.33,11.24
c2.3,3.82,5.35,7.05,9.24,9.35c1.4,0.83,2.73,1.96,4.24,2.35c2.58,0.68,5.28,0.91,7.93,1.29c4.54,0.67,8.94,0.22,13.12-1.76
c2.19-1.04,4.48-1.96,6.53-3.23c1.77-1.11,3.79-2.08,4.72-4.2c0.22-0.53,0.45-1.19,0.88-1.46c0.87-0.55,1.22-1.36,1.51-2.24
c0.72-2.13,2.11-4.03,2.17-6.4c0.01-0.58,0.2-1.23,0.51-1.7c0.98-1.45,1.25-3.12,1.35-4.76c0.11-1.77-0.2-3.57-0.35-5.64
C251.45,191.59,251.52,191.82,251.57,192.05z"/>
</g>
</g>
<g>
<g>
<path class="st1" d="M845.15,239.5c-0.26,0-0.66,0.11-0.92-0.03c-1.34-0.68-2.68-1.34-3.94-2.15c-0.68-0.45-1.08-1.3-1.73-1.79
c-1.02-0.79-2.15-1.39-3.23-2.1c-0.29-0.2-0.68-0.45-0.76-0.75c-0.39-1.81-1.92-2.8-3.05-4.01c-3.1-3.26-5.33-7.09-7.57-10.93
c-1.6-2.72-3.02-5.57-4.2-8.49c-0.79-1.93-1.13-4.07-1.52-6.13c-0.42-2.34-0.87-4.72-0.92-7.08c-0.03-2.36,0.29-4.75,0.63-7.1
c0.39-2.8,1.13-5.56,1.42-8.37c0.29-2.48,1.47-4.52,2.55-6.61c1.13-2.15,2.47-4.19,3.86-6.19c1-1.44,2.23-2.74,3.34-4.11
c0.81-1.02,1.55-2.14,2.44-3.08c1.1-1.12,2.31-2.11,3.52-3.12c1.31-1.12,2.57-2.35,4.05-3.27c4.33-2.71,8.77-5.22,13.95-6.12
c1.5-0.28,2.97-1.02,4.49-1.15c3.63-0.29,7.25-0.3,10.88-0.49c4.89-0.25,9.38,1.5,13.93,2.89c2.71,0.83,5.46,1.69,7.99,2.96
c2.99,1.52,5.86,3.39,8.64,5.31c1.47,1.03,2.76,2.41,4.02,3.75c1.84,1.99,3.78,3.96,5.36,6.17c1.18,1.67,1.87,3.68,2.73,5.58
c2.36,5.28,4.02,10.8,5.46,16.4c0.26,1.08,0.34,2.23,0.39,3.36c0.1,1.96,0.18,3.92,0.21,5.88c0,0.72-0.18,1.44-0.37,2.14
c-1.16,4.44-2.23,8.9-3.55,13.29c-1.31,4.3-3.89,7.95-6.62,11.43c-2.15,2.73-4.41,5.39-6.8,7.88c-1.05,1.09-2.63,1.66-3.89,2.55
c-2.81,2-5.94,3.39-8.99,4.87c-3.07,1.5-6.33,2.34-9.72,2.8c-1.58,0.22-3.1,0.67-4.68,0.88c-1.02,0.14-2.02,0.04-3.05,0.07
c-1.42,0.04-2.86,0.24-4.26,0.13c-1.97-0.16-3.89-0.56-5.86-0.79c-0.87-0.08-1.76,0.14-2.63,0c-1.05-0.18-2.08-0.6-3.1-0.92
c-1.39-0.43-2.84-0.78-4.15-1.34C848.01,241.1,846.62,240.27,845.15,239.5z M895.96,196.63c-0.11-0.02-0.21-0.05-0.32-0.07
c-0.08-0.41-0.21-0.81-0.24-1.23c0-0.35,0.18-0.72,0.18-1.08c-0.03-0.91-0.24-1.81-0.21-2.72c0.13-5.62-1.76-10.54-5.33-14.76
c-1.37-1.61-3.39-2.67-4.83-4.24c-2.18-2.36-5.1-3.31-7.88-4.28c-2.47-0.85-5.23-0.96-7.88-1.14
c-4.76-0.32-9.35,0.85-13.74,2.36c-2.81,0.97-5.33,2.96-7.75,4.8c-2.76,2.1-4.89,4.85-6.67,7.84c-1.63,2.76-3.52,5.44-3.65,8.76
c-0.08,2.06,0.26,4.15,0.6,6.21c0.79,5.18,2.34,10.07,5.91,14.11c1.84,2.1,3.47,4.44,5.6,6.21c2.78,2.33,5.91,4.16,9.62,4.85
c2.26,0.39,4.41,1.52,6.75,1.39c2.73-0.16,5.49-0.38,8.14-0.91c1.92-0.38,3.7-1.33,5.57-2c3.5-1.27,6.36-3.52,8.67-6.35
c1.31-1.6,3.07-3,3.31-5.29c2.15-2.42,2.5-5.57,3.42-8.49C895.64,199.34,895.72,197.96,895.96,196.63z"/>
</g>
</g>
<g>
<g>
<path class="st1" d="M423.38,243.44c0.43-1.23,0.66-2.1,1.01-2.92c1.04-2.47,2.17-4.89,3.19-7.36c1.37-3.31,2.61-6.67,4.01-9.97
c1.39-3.27,2.94-6.48,4.35-9.73c1.56-3.61,3.01-7.28,4.55-10.9c0.6-1.43,1.38-2.78,1.94-4.22c0.92-2.36,1.75-4.77,2.59-7.17
c1.98-5.67,4.22-11.22,7.09-16.51c1.11-2.03,1.87-4.25,2.77-6.4c1.75-4.16,3.46-8.35,5.21-12.51c1.09-2.59,2.25-5.15,3.3-7.75
c0.39-0.93,0.97-1.38,2-1.37c3.73,0.01,7.49-0.03,11.23,0c3.11,0.04,6.25,0.18,9.37,0.21c0.95,0.01,1.52,0.37,1.87,1.2
c0.97,2.36,1.89,4.73,2.86,7.08c0.97,2.35,1.97,4.69,2.99,7.02c1.55,3.49,3.1,7,4.76,10.46c1.05,2.23,2.36,4.33,3.42,6.57
c1.31,2.77,2.44,5.62,3.68,8.43c0.81,1.87,1.76,3.68,2.52,5.56c0.53,1.28,0.76,2.67,1.29,3.94c1.21,2.91,2.52,5.78,3.78,8.66
c0.16,0.3,0.29,0.57,0.47,0.85c0.76,1.27,1.68,2.36,1.89,4.03c0.18,1.6,1.21,3.08,1.81,4.63c0.95,2.46,1.84,4.93,2.81,7.37
c0.63,1.51,1.5,2.92,2.1,4.44c1.5,3.77,2.86,7.59,4.33,11.38c0.32,0.81,0.92,1.52,1.34,2.31c0.26,0.5,0.37,1.05,0.68,1.93
c-2.78,0-5.25-0.07-7.7,0.01c-5.15,0.14-10.27,0.39-15.4,0.53c-0.39,0-0.97-0.51-1.16-0.92c-0.95-2.14-1.79-4.34-2.68-6.49
c-1.23-2.96-2.5-5.88-3.81-8.8c-0.11-0.25-0.58-0.5-0.87-0.47c-2.23,0.13-4.47,0.47-6.7,0.51c-5.67,0.07-11.36,0.07-17.03,0.01
c-6.15-0.05-12.29-0.14-18.43-0.25c-0.76-0.01-1.16,0.22-1.44,0.93c-1.14,2.94-2.38,5.86-3.5,8.8
c-0.62,1.63-1.15,3.31-1.62,4.99c-0.32,1.16-1.09,1.72-2.79,1.75c-4.14,0.04-8.29,0.09-12.44,0.12
C429.95,243.46,426.83,243.44,423.38,243.44z M476.84,171.69c-0.17,0.02-0.35,0.04-0.53,0.06c-3.74,11.22-7.5,22.45-11.32,33.9
c4.09,0,8.21,0.05,12.32-0.01c4.17-0.07,8.35-0.23,12.84-0.35C485.66,193.95,481.24,182.81,476.84,171.69z"/>
</g>
</g>
<g>
<path class="st1" d="M386.15,222.87c-0.11,2.04-0.25,3.84-0.3,5.65c-0.11,4.01-0.16,8.01-0.25,12.03
c-0.01,0.63,0.06,1.29-0.11,1.88c-0.09,0.32-0.56,0.7-0.89,0.75c-1.41,0.16-2.84,0.2-4.26,0.26c-1.72,0.11-3.44,0.22-5.16,0.24
c-1.41,0-2.82-0.21-4.22-0.21c-2.37-0.03-4.75,0.07-7.12,0.08c-1.37,0-2.73-0.08-4.1-0.11c-2.76,0-5.52,0.03-8.28,0
c-2.65-0.04-5.29-0.18-7.93-0.18c-2.06,0-4.11,0.16-6.17,0.18c-1.29,0-2.58-0.21-3.87-0.21c-2.08,0-4.17,0.11-6.25,0.13
c-0.88,0-1.76-0.17-2.63-0.13c-3.34,0.13-6.69,0.34-10.02,0.45c-1.12,0.03-2.34,0.08-3.33-0.34c-0.45-0.18-0.53-1.47-0.63-2.26
c-0.11-0.79-0.04-1.6-0.05-2.42c-0.01-0.55-0.09-1.13,0-1.68c0.29-1.58,0.27-3.11-0.01-4.73c-0.26-1.55,0.01-3.19-0.02-4.78
c-0.04-1.87-0.2-3.7-0.19-5.54c0.01-1.6,0.19-3.23,0.3-4.89c0.04,0-0.17-0.03-0.32-0.03c0.08-0.89,0.16-1.76,0.25-2.67
c0.14,0.26,0.27,0.52,0.32,0.62c0-1.47,0.05-3.03-0.01-4.58c-0.08-1.92-0.6-3.89-0.29-5.73c0.46-2.75-0.3-5.37-0.2-8.05
c0.09-2.67,0.28-5.35,0.29-8.03c0.01-1.8-0.2-3.61-0.31-5.41c0.07,0.14,0.16,0.33,0.31,0.65c0-1.9,0-3.65,0-5.54
c0,0,0.19-0.02,0.42-0.05c-0.05-0.86,0.17-1.88-0.22-2.57c-0.61-1.11,0.05-2.14-0.24-3.22c-0.3-1.12-0.05-2.37-0.05-3.57
c0-2.29-0.05-4.58,0.01-6.86c0.04-1.55,0.22-3.11,0.33-4.67c0.16-2.16,0.35-4.33,0.45-6.49c0.03-0.83-0.05-1.69-0.3-2.48
c-0.33-1.04,0.34-1.16,0.98-1.21c2.06-0.21,4.14-0.45,6.21-0.49c3.75-0.08,7.51-0.02,11.26-0.02c1.49,0,1.87,0.37,1.9,1.83
c0.09,3.23,0.21,6.46,0.22,9.7c0.01,2.4-0.18,4.8-0.21,7.2c-0.03,3.18,0.05,6.36-0.03,9.54c-0.06,2.17-0.34,4.33-0.48,6.51
c-0.06,0.95-0.01,1.91,0.01,2.87c0.07,4.22,0.18,8.43,0.22,12.65c0.04,3.99,0.03,7.99,0.02,11.98c-0.01,3.11-0.02,6.21-0.07,9.32
c-0.01,1.1-0.15,2.19-0.12,3.28c0.01,0.7,0.32,1.21,1.2,1.2c3.64-0.03,7.27-0.01,10.91-0.01c7.51,0.01,15.03,0.03,22.53,0.03
c6.38,0,12.78-0.01,19.17-0.01C385.3,222.72,385.76,222.81,386.15,222.87z"/>
</g>
</g>
</g>
<g>
<g>
<g>
<path class="st1" d="M105.99,57.84c-0.99-1.05-1.84-2.02-2.77-2.9c-1.06-1-2.14-2.09-3.57-2.45c-1.2-0.3-2.5-0.2-3.74-0.31
c-0.77-0.06-1.53-0.25-2.3-0.29c-0.62-0.03-1.24,0.12-1.87,0.14c-1.07,0.04-2.13,0.06-3.21,0.05c-2.03-0.01-4.06-0.03-6.1-0.06
c-3.29-0.05-6.58-0.08-9.88-0.16c-2.53-0.07-5.06-0.26-7.59-0.26c-0.78-0.01-1.6,0.3-2.33,0.62c-0.83,0.37-0.85,1.02-0.1,1.55
c0.64,0.45,1.33,0.84,2.02,1.22c2.02,1.11,4.04,2.24,6.1,3.29c2.38,1.22,4.79,2.38,7.2,3.56c4.48,2.18,9.01,4.28,13.46,6.55
c3.82,1.94,7.58,4,11.3,6.12c2.17,1.24,4.26,2.63,6.28,4.12c1.3,0.95,2.12,2.39,2.61,3.95c1.16,3.73,1.32,7.56,0.99,11.39
c-0.25,2.93-1.12,5.69-2.89,8.08c-1.75,2.36-4.25,3.72-6.99,4.6c-0.84,0.27-1.82,0.1-2.73,0.11c-2.35,0-4.7-0.01-7.05-0.02
c-2.32,0-4.65,0.04-6.98-0.01c-1.92-0.03-3.83-0.21-5.74-0.23c-3.03-0.02-6.05,0.07-9.08,0.08c-2.2,0.01-4.4,0.09-6.59-0.02
c-2.23-0.1-4.46-0.35-6.69-0.6c-1.14-0.13-2.38-0.18-3.39-0.64c-1.38-0.65-2.67-1.56-3.87-2.52c-1.39-1.11-2.7-2.36-3.93-3.63
c-0.92-0.96-1.67-2.09-2.56-3.22c1.75-1.46,3.47-2.9,5.32-4.45c-0.07-0.02,0.11,0.04,0.3,0.08c-0.06-0.06-0.11-0.11-0.17-0.17
c0.44-0.52,0.82-1.11,1.33-1.54c1.05-0.86,2.18-1.61,3.26-2.43c0.29-0.22,0.47-0.58,0.76-0.81c0.65-0.53,1.3-0.46,1.76,0.25
c0.68,1.03,1.49,1.94,2.38,2.8c1.37,1.34,2.98,1.85,4.78,1.91c2,0.08,4.01,0.08,6.02,0.02c2.51-0.06,5.02-0.32,7.52-0.3
c2.29,0,4.59,0.28,6.88,0.41c1.22,0.07,2.45,0.11,3.67,0.13c2.97,0.04,5.94,0.07,8.9,0.11c0.96,0,1.92,0.06,2.87-0.02
c0.39-0.03,0.75-0.33,1.12-0.52c0.03-0.09,0.05-0.2,0.08-0.3c-1.21-0.75-2.39-1.56-3.64-2.24c-2.35-1.26-4.77-2.43-7.13-3.67
c-0.64-0.34-1.19-0.85-1.83-1.19c-1.12-0.59-2.29-1.1-3.42-1.67c-1.65-0.84-3.28-1.71-4.92-2.56c-1.76-0.91-3.53-1.82-5.29-2.74
c-1.92-1.01-3.8-2.13-5.77-3.03c-1.92-0.88-3.63-2.05-5.42-3.12c-1.54-0.92-3.22-1.59-4.78-2.47c-2.02-1.13-4.01-2.35-5.51-4.17
c-0.61-0.74-1.28-1.47-1.66-2.32c-0.7-1.53-1.44-3.06-1.47-4.83c-0.02-0.8-0.51-1.6-0.5-2.4c0.02-1.33,0.25-2.65,0.42-3.97
c0.16-1.22,0.3-2.45,0.56-3.64c0.12-0.53,0.51-1,0.81-1.48c0.37-0.59,0.75-1.17,1.16-1.73c0.39-0.54,0.75-1.12,1.21-1.59
c0.72-0.76,1.48-1.5,2.3-2.14c0.55-0.43,1.24-0.71,1.88-1.01c0.78-0.37,1.55-0.73,2.36-1.02c2.41-0.85,4.93-0.88,7.45-0.88
c2.45-0.01,4.91-0.16,7.36-0.14c2.06,0.02,4.12,0.26,6.18,0.3c2.05,0.03,4.1-0.09,6.16-0.1c0.92,0,1.84,0.17,2.76,0.16
c1.67,0,3.35-0.1,5.03-0.12c0.67-0.01,1.34,0.06,2.01,0.09c2.35,0.11,4.7,0.19,7.05,0.35c2.33,0.17,4.49,1.01,6.37,2.36
c1.34,0.95,2.46,2.21,3.64,3.37c1.04,1.04,2.03,2.14,3.04,3.21c0.56,0.58,0.48,0.93-0.2,1.47c-1.21,0.97-2.21,2.18-3.36,3.23
c-1.22,1.1-2.5,2.13-3.75,3.19c-0.62,0.53-1.22,1.07-1.84,1.59C107.35,56.74,106.67,57.29,105.99,57.84z"/>
</g>
<g>
<path class="st1" d="M318.6,91.41c1.24,0,2.2-0.01,3.17,0c4.04,0.05,8.08,0.11,12.12,0.17c3.89,0.06,7.78,0.15,11.67,0.16
c2.08,0.01,4.15-0.14,6.23-0.14c2.04,0,4.08,0.11,6.12,0.15c0.52,0.01,0.76,0.24,0.74,0.71c-0.02,2.19-0.06,4.37-0.11,6.56
c-0.06,1.63-0.11,3.28-0.22,4.91c-0.11,1.54-0.15,1.73-1.78,1.78c-0.67,0.02-1.36,0.12-2.04,0.16c-0.74,0.06-1.48,0.15-2.24,0.14
c-2.35-0.03-4.69-0.11-7.04-0.12c-1.32,0-2.65,0.09-3.98,0.15c-1.61,0.05-3.22,0.13-4.84,0.15c-0.89,0-1.8-0.16-2.69-0.13
c-1.91,0.05-3.8,0.2-5.71,0.28c-0.83,0.02-1.69-0.09-2.54-0.13c-1.43-0.05-2.85-0.14-4.28-0.16c-2.83-0.03-5.69-0.03-8.52-0.01
c-2.35,0.02-4.69,0.1-7.02,0.13c-1.91,0.03-3.82,0.04-5.73,0.02c-1.09,0-2.17-0.08-3.24-0.19c-0.22-0.02-0.52-0.32-0.59-0.55
c-0.19-0.59-0.33-1.21-0.33-1.82c-0.09-3.17-0.06-6.34-0.22-9.51c-0.09-1.79,0.85-2.96,1.98-4.02c1.82-1.69,3.69-3.29,5.56-4.91
c2.86-2.47,5.73-4.92,8.56-7.41c0.98-0.87,1.85-1.88,2.84-2.76c1.78-1.59,3.61-3.13,5.41-4.68c0.2-0.17,0.41-0.32,0.59-0.49
c1.78-1.66,3.54-3.3,5.3-4.98c1.35-1.3,2.67-2.68,4.02-3.99c1.21-1.16,2.48-2.24,3.71-3.4c1.13-1.1,2.24-2.25,3.37-3.39
c0.13-0.13,0.2-0.32,0.3-0.46c-3.37,0.1-6.71,0.22-10.04,0.26c-1.02,0.01-2.02-0.24-3.04-0.28c-1.19-0.05-2.37-0.01-3.56-0.01
c-0.68,0-1.39,0.01-2.09-0.01c-1.83-0.06-3.67-0.15-5.5-0.18c-2.8-0.05-5.6-0.09-8.39-0.1c-1.52,0-3.02,0.11-4.54,0.06
c-1.26-0.03-2.54-0.18-3.8-0.38c-0.24-0.04-0.61-0.54-0.59-0.81c0.17-2.64,0.47-5.27,0.63-7.91c0.09-1.69,0.04-3.4,0.04-5.1
c0-0.71,0.54-1.23,1.43-1.25c0.74,0,1.46,0.13,2.21,0.14c0.65,0,1.3-0.14,1.95-0.14c1.72,0.03,3.45,0.13,5.17,0.16
c0.7,0.01,1.41-0.16,2.11-0.16c5.37,0.04,10.77,0.11,16.14,0.16c2.3,0.02,4.58-0.02,6.88,0.02c1.42,0.01,2.85,0.17,4.26,0.15
c2.24-0.04,4.47-0.26,6.71-0.26c2.46,0,4.93,0.18,7.37,0.24c1.78,0.05,3.58,0.01,5.36,0.04c0.89,0.02,1.76,0.08,2.63,0.17
c0.83,0.09,0.61,0.81,0.65,1.27c0.15,2.45,0.26,4.92,0.33,7.37c0.02,1.18-0.05,2.36-0.05,3.54c-0.02,0.5-0.06,1.02,0.07,1.5
c0.39,1.65-0.46,2.61-1.65,3.58c-2.87,2.36-5.67,4.81-8.45,7.26c-2.69,2.34-5.32,4.72-7.95,7.1c-2,1.8-4,3.6-5.97,5.43
c-2.13,1.98-4.22,4-6.34,5.99c-1.76,1.67-3.54,3.32-5.32,4.99C322.12,88.06,320.45,89.64,318.6,91.41z"/>
</g>
<g>
<g>
<path class="st1" d="M429.99,103.42c-0.18,0-0.46,0.08-0.65-0.02c-0.94-0.48-1.89-0.95-2.78-1.52
c-0.48-0.31-0.76-0.92-1.22-1.26c-0.72-0.56-1.52-0.98-2.28-1.48c-0.2-0.14-0.48-0.31-0.54-0.53c-0.28-1.28-1.35-1.97-2.15-2.83
c-2.19-2.3-3.76-5-5.34-7.71c-1.13-1.92-2.13-3.93-2.97-5.99c-0.55-1.36-0.8-2.87-1.07-4.33c-0.3-1.66-0.61-3.33-0.65-4.99
c-0.02-1.67,0.2-3.35,0.45-5.01c0.28-1.98,0.8-3.93,1-5.9c0.2-1.75,1.04-3.19,1.8-4.66c0.8-1.52,1.74-2.96,2.72-4.37
c0.7-1.02,1.58-1.93,2.35-2.9c0.57-0.72,1.09-1.51,1.72-2.17c0.78-0.79,1.63-1.49,2.48-2.2c0.93-0.79,1.82-1.66,2.85-2.3
c3.06-1.91,6.19-3.68,9.84-4.32c1.06-0.19,2.09-0.72,3.17-0.81c2.56-0.2,5.11-0.21,7.67-0.34c3.45-0.17,6.61,1.06,9.82,2.04
c1.91,0.58,3.86,1.19,5.63,2.09c2.11,1.07,4.13,2.39,6.1,3.75c1.04,0.72,1.95,1.7,2.83,2.65c1.3,1.4,2.67,2.79,3.78,4.35
c0.83,1.18,1.31,2.6,1.93,3.93c1.67,3.72,2.84,7.61,3.85,11.57c0.19,0.77,0.24,1.57,0.28,2.37c0.07,1.38,0.13,2.77,0.15,4.14
c0,0.51-0.13,1.02-0.26,1.51c-0.82,3.13-1.58,6.28-2.5,9.37c-0.93,3.03-2.74,5.6-4.67,8.06c-1.52,1.93-3.11,3.8-4.8,5.56
c-0.74,0.77-1.85,1.17-2.74,1.8c-1.98,1.41-4.19,2.39-6.34,3.43c-2.17,1.06-4.47,1.65-6.86,1.98c-1.11,0.16-2.19,0.47-3.3,0.62
c-0.72,0.1-1.43,0.03-2.15,0.05c-1,0.03-2.02,0.17-3,0.09c-1.39-0.11-2.74-0.4-4.13-0.56c-0.61-0.05-1.24,0.1-1.85,0
c-0.74-0.13-1.46-0.42-2.19-0.65c-0.98-0.31-2-0.55-2.93-0.95C432.01,104.55,431.03,103.97,429.99,103.42z M465.83,73.18
c-0.07-0.01-0.15-0.03-0.22-0.05c-0.05-0.29-0.15-0.57-0.17-0.87c0-0.25,0.13-0.5,0.13-0.76c-0.02-0.64-0.17-1.28-0.15-1.92
c0.09-3.97-1.24-7.43-3.76-10.41c-0.96-1.14-2.39-1.88-3.41-2.99c-1.54-1.66-3.59-2.33-5.56-3.01c-1.74-0.6-3.69-0.68-5.56-0.8
c-3.35-0.22-6.6,0.6-9.69,1.67c-1.98,0.69-3.76,2.09-5.47,3.38c-1.95,1.48-3.45,3.42-4.71,5.53c-1.15,1.95-2.48,3.84-2.58,6.18
c-0.06,1.46,0.19,2.93,0.43,4.38c0.56,3.65,1.65,7.1,4.17,9.95c1.3,1.48,2.45,3.13,3.95,4.38c1.96,1.64,4.17,2.94,6.78,3.42
c1.59,0.28,3.11,1.07,4.76,0.98c1.93-0.11,3.87-0.27,5.74-0.64c1.35-0.27,2.61-0.93,3.93-1.41c2.47-0.9,4.49-2.48,6.12-4.48
c0.93-1.13,2.17-2.11,2.33-3.73c1.52-1.71,1.76-3.93,2.41-5.99C465.61,75.1,465.66,74.12,465.83,73.18z"/>
</g>
</g>
<g>
<g>
<path class="st1" d="M202.21,106.2c0.3-0.87,0.46-1.48,0.71-2.06c0.74-1.74,1.53-3.45,2.25-5.19c0.96-2.34,1.84-4.71,2.83-7.03
c0.98-2.31,2.08-4.56,3.07-6.86c1.1-2.54,2.13-5.13,3.21-7.69c0.43-1.01,0.97-1.96,1.37-2.97c0.65-1.67,1.24-3.37,1.83-5.06
c1.4-4,2.97-7.91,5-11.64c0.78-1.43,1.32-2.99,1.96-4.51c1.23-2.94,2.44-5.89,3.67-8.83c0.77-1.83,1.59-3.64,2.33-5.46
c0.28-0.66,0.69-0.97,1.41-0.97c2.63,0.01,5.28-0.02,7.92,0.01c2.2,0.02,4.41,0.13,6.61,0.14c0.67,0.01,1.07,0.26,1.32,0.84
c0.69,1.66,1.33,3.34,2.02,5c0.69,1.66,1.39,3.31,2.11,4.95c1.09,2.46,2.19,4.94,3.35,7.37c0.74,1.57,1.67,3.06,2.41,4.64
c0.93,1.95,1.72,3.97,2.59,5.94c0.57,1.32,1.24,2.59,1.78,3.92c0.37,0.9,0.54,1.88,0.91,2.78c0.85,2.05,1.78,4.08,2.67,6.11
c0.11,0.21,0.2,0.4,0.33,0.6c0.54,0.89,1.19,1.67,1.34,2.84c0.13,1.13,0.85,2.17,1.28,3.26c0.67,1.73,1.3,3.47,1.98,5.2
c0.44,1.06,1.06,2.06,1.48,3.13c1.06,2.66,2.02,5.36,3.06,8.02c0.22,0.57,0.65,1.07,0.94,1.63c0.19,0.35,0.26,0.74,0.48,1.36
c-1.96,0-3.71-0.05-5.43,0.01c-3.63,0.1-7.25,0.28-10.86,0.37c-0.28,0-0.69-0.36-0.82-0.65c-0.67-1.51-1.26-3.06-1.89-4.58
c-0.87-2.08-1.76-4.15-2.69-6.21c-0.07-0.18-0.41-0.35-0.61-0.33c-1.57,0.09-3.15,0.33-4.73,0.36c-4,0.04-8.01,0.04-12.01,0.01
c-4.34-0.03-8.67-0.1-13-0.18c-0.54-0.01-0.82,0.16-1.01,0.66c-0.81,2.08-1.68,4.13-2.47,6.21c-0.44,1.15-0.81,2.34-1.14,3.53
c-0.23,0.81-0.77,1.21-1.97,1.23c-2.92,0.03-5.85,0.07-8.77,0.08C206.84,106.22,204.65,106.2,202.21,106.2z M239.91,55.6
c-0.12,0.01-0.25,0.03-0.37,0.04c-2.64,7.92-5.29,15.83-7.99,23.91c2.88,0,5.79,0.04,8.69,0c2.94-0.05,5.89-0.16,9.06-0.25
C246.14,71.3,243.02,63.44,239.91,55.6z"/>
</g>
</g>
<g>
<path class="st1" d="M392.22,106.06c-1.37,0-1,0.07-2.56,0.09c-0.62,0-1.24-0.12-1.86-0.09c-2.36,0.09-4.72,0.24-7.07,0.31
c-0.79,0.02-1.65,0.06-2.35-0.24c-0.32-0.13-0.37-1.04-0.44-1.6c-0.07-0.55-0.03-1.13-0.04-1.71c-0.01-0.39-0.07-0.79,0-1.18
c0.2-1.11,0.19-2.19-0.01-3.34c-0.18-1.09,0.01-2.25-0.01-3.37c-0.03-1.32-0.14-2.61-0.13-3.91c0.01-1.13,0.13-2.28,0.21-3.45
c0.03,0-0.12-0.02-0.23-0.02c0.05-0.63,0.11-1.24,0.18-1.89c0.1,0.19,0.19,0.37,0.23,0.44c0-1.04,0.04-2.14-0.01-3.23
c-0.06-1.36-0.42-2.75-0.2-4.05c0.32-1.94-0.21-3.79-0.14-5.67c0.06-1.88,0.19-3.77,0.2-5.66c0.01-1.27-0.14-2.55-0.22-3.82
c0.05,0.1,0.11,0.23,0.22,0.46c0-1.34,0-2.58,0-3.91c0,0,0.13-0.01,0.3-0.03c-0.03-0.6,0.12-1.33-0.16-1.81
c-0.43-0.78,0.03-1.51-0.17-2.27c-0.21-0.79-0.03-1.67-0.03-2.52c0-1.61-0.03-3.23,0.01-4.84c0.03-1.09,0.15-2.19,0.23-3.29
c0.11-1.53,0.25-3.06,0.32-4.58c0.02-0.58-0.03-1.2-0.21-1.74c-0.23-0.73,0.24-0.81,0.69-0.86c1.46-0.15,2.92-0.32,4.38-0.35
c2.65-0.06,5.3-0.02,7.94-0.02c1.05,0,1.32,0.26,1.34,1.29c0.06,2.28,0.15,4.56,0.16,6.84c0,1.69-0.13,3.38-0.15,5.08
c-0.03,2.24,0.04,4.49-0.03,6.73c-0.04,1.53-0.24,3.05-0.34,4.59c-0.04,0.67-0.01,1.35,0.01,2.03c0.05,2.97,0.12,5.95,0.16,8.92
c0.03,2.82,0.02,5.64,0.01,8.45c0,2.19-0.01,4.39-0.05,6.58c-0.01,0.78-0.1,1.55-0.09,2.31L392.22,106.06z"/>
</g>
<g>
<g>
<path class="st1" d="M194.23,56.61c-0.17-0.7-0.29-1.4-0.52-2.07c-0.23-0.71-0.58-1.37-0.85-2.07
c-0.22-0.56-0.32-1.17-0.59-1.71c-0.45-0.9-0.95-1.78-1.51-2.62c-0.58-0.88-1.32-1.65-1.89-2.53c-0.74-1.15-1.54-2.22-2.74-2.92
c-0.96-0.55-1.91-1.11-2.88-1.63c-0.72-0.38-1.48-0.7-2.21-1.07c-0.3-0.15-0.55-0.41-0.87-0.5c-1.51-0.4-3.01-0.82-4.54-1.12
c-1.28-0.24-2.58-0.35-3.89-0.45c-0.04,0-0.09,0.01-0.13,0.01v-0.01h-20.53v0c-2.43,0-4.86-0.03-7.28,0.02
c-1.46,0.03-2.92,0.2-4.38,0.35c-0.45,0.04-0.92,0.13-0.69,0.86c0.18,0.55,0.23,1.16,0.21,1.74c-0.06,1.53-0.2,3.06-0.32,4.58
c-0.08,1.1-0.2,2.2-0.23,3.29c-0.04,1.61-0.01,3.23-0.01,4.84c0,0.84-0.18,1.72,0.03,2.52c0.2,0.76-0.26,1.49,0.17,2.27
c0.28,0.49,0.12,1.21,0.16,1.81c-0.16,0.02-0.3,0.03-0.3,0.03c0,1.33,0,2.57,0,3.91c-0.11-0.23-0.17-0.36-0.22-0.46
c0.08,1.27,0.23,2.55,0.22,3.82c-0.01,1.89-0.14,3.78-0.2,5.66c-0.07,1.89,0.47,3.74,0.14,5.67c-0.22,1.3,0.15,2.69,0.2,4.05
c0.05,1.09,0.01,2.19,0.01,3.23c-0.04-0.07-0.13-0.25-0.23-0.44c-0.06,0.64-0.12,1.26-0.18,1.89c0.11,0,0.26,0.02,0.23,0.02
c-0.08,1.17-0.2,2.31-0.21,3.45c-0.01,1.3,0.11,2.59,0.14,3.91c0.02,1.12-0.17,2.28,0.01,3.37c0.19,1.14,0.21,2.23,0,3.34
c-0.06,0.39,0,0.8,0,1.18c0.01,0.58-0.04,1.15,0.04,1.71c0.07,0.56,0.13,1.46,0.45,1.6c0.69,0.3,1.56,0.26,2.35,0.24
c2.35-0.07,4.71-0.22,7.07-0.31c0.62-0.03,1.24,0.09,1.86,0.09c1.56-0.02,1.19-0.09,2.56-0.09l0.1-15.31
c-0.02-0.77,0.08-1.54,0.09-2.31c0.02-1.1,0.02-2.2,0.02-3.3h18.69v-0.05c1.02,0.06,2.03,0.02,3.02-0.16
c1.59-0.28,3.16-0.78,4.67-1.37c1.68-0.66,3.31-1.45,4.74-2.59c0.45-0.35,0.82-0.79,1.25-1.17c0.72-0.62,1.56-1.13,2.14-1.84
c1.24-1.5,2.44-3.03,3.36-4.79c0.56-1.07,1.31-2.05,1.8-3.15c0.49-1.13,0.73-2.36,1.14-3.53c0.59-1.63,0.77-3.33,0.86-5.04
C194.65,59.82,194.62,58.2,194.23,56.61z M181.95,62.09c-0.04,0.65-0.15,1.32-0.54,1.9c-0.12,0.19-0.2,0.45-0.2,0.68
c-0.02,0.95-0.58,1.7-0.87,2.55c-0.12,0.35-0.25,0.67-0.6,0.89c-0.17,0.11-0.26,0.37-0.35,0.58c-0.37,0.85-1.17,1.23-1.88,1.67
c-0.82,0.51-1.73,0.88-2.6,1.29c-1.36,0.64-2.77,0.86-4.22,0.79l0.01,0.04h-17.81c-0.04-2.66-0.1-5.33-0.14-8
c-0.01-0.68-0.05-1.36-0.01-2.03c0.1-1.53,0.3-3.06,0.34-4.59c0.06-2.24,0-4.49,0.02-6.73c0-0.42,0.03-0.84,0.04-1.25h18.01
c0.6,0,1.21,0.04,1.81,0.16c0.69,0.14,1.38,0.24,2.09,0.32c1.23,0.14,2.21,0.78,3.14,1.54c1.37,1.12,2.4,2.5,3.01,4.16
c0.25,0.67,0.6,1.36,0.66,2.06c0.03,0.4-0.09,0.86-0.01,1.28c0.05,0.27,0.12,0.53,0.17,0.79c-0.04,0.01-0.07,0.02-0.11,0.02
c-0.02-0.09-0.05-0.18-0.11-0.38C181.87,60.67,181.99,61.38,181.95,62.09z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 55 KiB