├── .env.sample ├── .prettierrc.json ├── css ├── fonts │ ├── LineIcons.eot │ ├── LineIcons.ttf │ ├── LineIcons.woff │ └── LineIcons.woff2 ├── tiny-slider.min.css ├── lineicons.css └── main.css ├── public ├── images │ ├── team │ │ └── team-1.png │ ├── common-bg.svg │ └── testimonial │ │ └── testimonial-bg.svg └── favicon.svg ├── components ├── human-date.js ├── landing-page-sections │ ├── missing-section.js │ ├── testimonial.js │ ├── feature.js │ ├── features.js │ ├── hero.js │ ├── landing-page-section.js │ ├── testimonials.js │ └── two-column-with-image.js ├── main-menu │ ├── main-menu-link.js │ └── main-menu.js ├── author-card.js ├── blog │ ├── categories-widget.js │ ├── search-widget.js │ ├── posts-list.js │ ├── post-preview-condensed.js │ ├── blog.js │ └── post-preview.js ├── preloader.js ├── scroll-to-top-button.js ├── missing-token-section.js ├── header-section.js └── footer-section.js ├── pages ├── missing-token.js ├── _document.js ├── 404.js ├── blog │ ├── search.js │ ├── tag │ │ └── [slug].js │ ├── category │ │ └── [slug].js │ └── [slug].js ├── blog.js ├── landing-page │ └── [slug].js └── _app.js ├── jsconfig.json ├── .gitignore ├── app.json ├── .eslintrc.json ├── next.config.js ├── package.json ├── lib └── api.js └── README.md /.env.sample: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_BUTTER_CMS_API_KEY=your_auth_token -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "singleAttributePerLine": true 4 | } 5 | -------------------------------------------------------------------------------- /css/fonts/LineIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ButterCMS/nextjs-starter-buttercms/HEAD/css/fonts/LineIcons.eot -------------------------------------------------------------------------------- /css/fonts/LineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ButterCMS/nextjs-starter-buttercms/HEAD/css/fonts/LineIcons.ttf -------------------------------------------------------------------------------- /css/fonts/LineIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ButterCMS/nextjs-starter-buttercms/HEAD/css/fonts/LineIcons.woff -------------------------------------------------------------------------------- /css/fonts/LineIcons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ButterCMS/nextjs-starter-buttercms/HEAD/css/fonts/LineIcons.woff2 -------------------------------------------------------------------------------- /public/images/team/team-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ButterCMS/nextjs-starter-buttercms/HEAD/public/images/team/team-1.png -------------------------------------------------------------------------------- /components/human-date.js: -------------------------------------------------------------------------------- 1 | import { format, parseISO } from "date-fns"; 2 | 3 | export default function HumanDate({ dateString }) { 4 | const date = parseISO(dateString); 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /components/landing-page-sections/missing-section.js: -------------------------------------------------------------------------------- 1 | export default function MissingSection({ type }) { 2 | return ( 3 |
4 |

Missing a template for {type}

5 |

Check console for component details

6 |
7 | ); 8 | } 9 | -------------------------------------------------------------------------------- /pages/missing-token.js: -------------------------------------------------------------------------------- 1 | import MissingTokenSection from "@/components/missing-token-section"; 2 | 3 | export default function MissingToken() { 4 | return ; 5 | } 6 | 7 | export async function getStaticProps() { 8 | return { 9 | props: {}, 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "@/components/*": [ 6 | "components/*" 7 | ], 8 | "@/lib/*": [ 9 | "lib/*" 10 | ], 11 | "@/css/*": [ 12 | "css/*" 13 | ] 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /components/main-menu/main-menu-link.js: -------------------------------------------------------------------------------- 1 | export default function MainMenuLink({ active, callbackOnClick, label, url }) { 2 | return ( 3 |
  • 7 | 11 | {label} 12 | 13 |
  • 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /pages/_document.js: -------------------------------------------------------------------------------- 1 | import { Head, Html, Main, NextScript } from "next/document"; 2 | 3 | export default function Document() { 4 | return ( 5 | 6 | 7 | 11 | 12 | 13 |
    14 | 15 | 16 | 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /components/landing-page-sections/testimonial.js: -------------------------------------------------------------------------------- 1 | export default function Testimonial({ name, quote, title }) { 2 | return ( 3 |
    4 |
    5 | 6 |
    7 |
    8 |

    {quote}

    9 |
    10 |
    11 |
    {name}
    12 |

    {title}

    13 |
    14 |
    15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /components/author-card.js: -------------------------------------------------------------------------------- 1 | export default function AuthorCard({ author }) { 2 | const authorAvatar = author.profile_image 3 | ? author.profile_image 4 | : "/images/team/team-1.png"; 5 | return ( 6 | 7 | {/* eslint-disable-next-line @next/next/no-img-element */} 8 | {`Profile 12 | {author.first_name} {author.last_name} 13 | 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /public/images/common-bg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env 29 | .env.local 30 | .env.development.local 31 | .env.test.local 32 | .env.production.local 33 | 34 | # vercel 35 | .vercel 36 | 37 | .vscode -------------------------------------------------------------------------------- /components/blog/categories-widget.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | export default function CategoriesWidget({ categories }) { 4 | return ( 5 |
    6 |
    Categories
    7 |
      8 | {categories.map((category) => ( 9 |
    • 10 | 11 | {category.name} 12 | 13 |
    • 14 | ))} 15 |
    16 |
    17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /components/preloader.js: -------------------------------------------------------------------------------- 1 | export default function Preloader() { 2 | return ( 3 |
    4 |
    5 |
    6 |
    7 |
    8 |
    9 |
    10 |
    11 |
    12 |
    13 |
    14 |
    15 |
    16 |
    17 |
    18 |
    19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ButterCMS NextJS Starter Project ", 3 | "description": "Drop-in proof-of-concept NextJs app, fully integrated with your ButterCMS account.", 4 | "repository": "https://github.com/ButterCMS/nextjs-starter-buttercms", 5 | "logo": "https://cdn.buttercms.com/R3fbtvoRT2CqEQSmk8hb", 6 | "keywords": ["Next.js", "buttercms", "cms", "blog"], 7 | "buildpacks": [ 8 | { 9 | "url": "heroku/nodejs" 10 | } 11 | ], 12 | "env": { 13 | "NEXT_PUBLIC_BUTTER_CMS_API_KEY": { 14 | "description": "The API token of your ButterCMS account", 15 | "value": "" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "extends": [ 7 | "next/core-web-vitals", 8 | "eslint:recommended", 9 | "plugin:prettier/recommended" 10 | ], 11 | "rules": { 12 | "react/jsx-max-props-per-line": ["error", { "maximum": 1 }], 13 | "react/jsx-sort-props": ["error"], 14 | "sort-imports": [ 15 | "error", 16 | { 17 | "ignoreCase": false, 18 | "ignoreDeclarationSort": false, 19 | "ignoreMemberSort": false, 20 | "memberSyntaxSortOrder": ["none", "all", "multiple", "single"], 21 | "allowSeparatedGroups": true 22 | } 23 | ] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /components/blog/search-widget.js: -------------------------------------------------------------------------------- 1 | export default function SearchWidget() { 2 | return ( 3 |
    4 |
    5 |
    Search This Site
    6 |
    10 | 15 | 18 |
    19 |
    20 |
    21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /components/landing-page-sections/feature.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | export default function Feature({ description, headline, icon }) { 4 | return ( 5 |
    6 |
    7 |
    8 | {icon && ( 9 | 18 | )} 19 |
    20 |
    21 |

    {headline}

    22 |

    {description}

    23 |
    24 |
    25 |
    26 | ); 27 | } 28 | -------------------------------------------------------------------------------- /components/blog/posts-list.js: -------------------------------------------------------------------------------- 1 | import PostsPreview from "./post-preview"; 2 | 3 | export default function PostsList({ posts }) { 4 | return ( 5 |
    6 |
    7 | {posts.map((post) => ( 8 | 19 | ))} 20 | {!posts.length &&
    No blog posts found.
    } 21 |
    22 |
    23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /components/scroll-to-top-button.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | 3 | export default function ScrollToButtonButton() { 4 | const [hasScrollToTopButton, setHasScrollToTopButton] = useState(false); 5 | 6 | function toggleScrollTopButton() { 7 | setHasScrollToTopButton( 8 | document.body.scrollTop > 50 || document.documentElement.scrollTop > 50, 9 | ); 10 | } 11 | 12 | useEffect(() => { 13 | window.addEventListener("scroll", toggleScrollTopButton); 14 | 15 | return () => { 16 | window.removeEventListener("scroll", toggleScrollTopButton); 17 | }; 18 | }, []); 19 | 20 | return ( 21 | <> 22 | {hasScrollToTopButton && ( 23 | 27 | 28 | 29 | )} 30 | 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | trailingSlash: true, 3 | reactStrictMode: true, 4 | async rewrites() { 5 | return [ 6 | { 7 | source: "/", 8 | destination: "/landing-page/landing-page-with-components", 9 | } 10 | ]; 11 | }, 12 | redirects() { 13 | const sourcesRequiringAuthToken = [ 14 | "/", "/landing-page/:slug*", "/blog/:path*" 15 | ] 16 | 17 | return process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY ? [ 18 | { 19 | source: "/missing-token", 20 | destination: "/", 21 | permanent: false 22 | } 23 | ] : sourcesRequiringAuthToken.map(source => ({ 24 | source: source, 25 | destination: "/missing-token", 26 | permanent: false 27 | }) 28 | ) 29 | }, 30 | images: { 31 | remotePatterns: [ 32 | { 33 | protocol: 'https', 34 | hostname: 'cdn.buttercms.com', 35 | pathname: '**', 36 | }, 37 | ], 38 | dangerouslyAllowSVG: true, 39 | }, 40 | }; 41 | 42 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nextjs-starter-buttercms", 3 | "private": true, 4 | "scripts": { 5 | "dev": "next dev", 6 | "build": "next build", 7 | "start": "next start", 8 | "lint": "next lint", 9 | "lint:fix": "next lint --fix" 10 | }, 11 | "dependencies": { 12 | "@popperjs/core": "^2.11.8", 13 | "acorn": "^8.11.3", 14 | "bootstrap": "^5.3.2", 15 | "buttercms": "^3.0.0", 16 | "camelcase-keys": "^9.1.2", 17 | "date-fns": "^3.3.1", 18 | "next": "^14.1.0", 19 | "react": "^18.2.0", 20 | "react-dom": "^18.2.0", 21 | "sharp": "^0.33.2", 22 | "tiny-slider": "^2.9.4", 23 | "typescript": "^5.3.3" 24 | }, 25 | "devDependencies": { 26 | "eslint": "^8.57.0", 27 | "eslint-config-next": "^14.1.0", 28 | "eslint-config-prettier": "^10.1.5", 29 | "eslint-plugin-prettier": "^5.5.1", 30 | "glob": "^10.3.10", 31 | "prettier": "^3.6.1", 32 | "rimraf": "^5.0.5" 33 | }, 34 | "engines": { 35 | "node": ">=20.18.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /public/images/testimonial/testimonial-bg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /components/landing-page-sections/features.js: -------------------------------------------------------------------------------- 1 | import Feature from "./feature"; 2 | 3 | export default function Features({ 4 | features, 5 | headline, 6 | scrollAnchorId, 7 | subheadline, 8 | }) { 9 | return ( 10 |
    14 |
    15 |
    16 |
    17 |
    18 |

    {headline}

    19 |

    {subheadline}

    20 |
    21 |
    22 | 23 |
    24 |
    25 | {features.map((feature, index) => ( 26 | 32 | ))} 33 |
    34 |
    35 |
    36 |
    37 |
    38 | ); 39 | } 40 | -------------------------------------------------------------------------------- /components/blog/post-preview-condensed.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | 4 | export default function PostPreviewCondensed({ 5 | coverImage, 6 | coverImageAlt, 7 | excerpt, 8 | slug, 9 | title, 10 | }) { 11 | return ( 12 |
    13 |
    14 | {coverImage && ( 15 |
    16 | {coverImageAlt} 25 |
    26 | )} 27 |
    28 |
    29 | {title} 30 |
    31 |

    {excerpt}

    32 |
    33 |
    34 | 38 | Read More 39 | 40 |
    41 |
    42 |
    43 | ); 44 | } 45 | -------------------------------------------------------------------------------- /public/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/404.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | export default function Custom404() { 4 | console.error( 5 | "Your Butter token might be set to an invalid value. Please verify your token is correct.", 6 | ); 7 | 8 | return ( 9 |
    13 |
    14 |
    15 |
    16 |
    17 |

    404 Page not found

    18 |

    19 | Check that your API token is correct or that the requested URL 20 | is valid. 21 |

    22 |
    23 |
    24 |
    25 | Logo 35 |
    36 |
    37 |
    38 |
    39 |
    40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /components/missing-token-section.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | export default function MissingTokenSection() { 4 | return ( 5 |
    9 |
    10 |
    11 |
    12 |
    13 |

    Configure your ButterCMS API Token

    14 |

    15 | Please add your API token to .env file as{" "} 16 | NEXT_PUBLIC_BUTTER_CMS_API_KEY. 17 |

    18 | 24 | Get your free API token 25 | 26 |
    27 |
    28 |
    29 | 39 |
    40 |
    41 |
    42 |
    43 |
    44 | ); 45 | } 46 | -------------------------------------------------------------------------------- /components/landing-page-sections/hero.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | export default function Hero({ 4 | buttonLabel, 5 | buttonUrl, 6 | headline, 7 | image, 8 | scrollAnchorId, 9 | subheadline, 10 | }) { 11 | return ( 12 |
    16 |
    17 |
    18 |
    19 |
    20 |

    {headline}

    21 |

    {subheadline}

    22 | 23 | 27 | {buttonLabel} 28 | 29 | Need an account? 30 |
    31 |
    32 | {image && ( 33 |
    34 |
    35 | 46 |
    47 |
    48 | )} 49 |
    50 |
    51 |
    52 | ); 53 | } 54 | -------------------------------------------------------------------------------- /components/blog/blog.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | import PostPreviewCondensed from "./post-preview-condensed"; 4 | 5 | export default function Blog({ posts }) { 6 | return ( 7 |
    11 |
    12 |
    13 |
    14 |
    15 |

    Latest Blog Posts

    16 |

    17 | Butter also has a built in blog engine which makes it dead 18 | simple to launch a new company blog. 19 |

    20 |

    21 | 25 | View All Blog Posts 26 | 27 |

    28 |
    29 |
    30 |
    31 |
    32 | {posts.map((post) => ( 33 | 43 | ))} 44 |
    45 |
    46 |
    47 | ); 48 | } 49 | -------------------------------------------------------------------------------- /components/landing-page-sections/landing-page-section.js: -------------------------------------------------------------------------------- 1 | import camelcaseKeys from "camelcase-keys"; 2 | import dynamic from "next/dynamic"; 3 | 4 | import Preloader from "@/components/preloader"; 5 | 6 | import MissingSection from "./missing-section"; 7 | 8 | export default function LandingPageSection({ sectionData, type }) { 9 | const sectionsComponentPaths = () => ({ 10 | features: dynamic( 11 | () => 12 | import("@/components/landing-page-sections/features").catch( 13 | () => () => MissingSection, 14 | ), 15 | { 16 | loading: Preloader, 17 | }, 18 | ), 19 | hero: dynamic( 20 | () => 21 | import("@/components/landing-page-sections/hero").catch( 22 | () => () => MissingSection, 23 | ), 24 | { 25 | loading: Preloader, 26 | }, 27 | ), 28 | testimonials: dynamic( 29 | () => 30 | import("@/components/landing-page-sections/testimonials").catch( 31 | () => () => MissingSection, 32 | ), 33 | { 34 | loading: Preloader, 35 | }, 36 | ), 37 | two_column_with_image: dynamic( 38 | () => 39 | import( 40 | "@/components/landing-page-sections/two-column-with-image" 41 | ).catch(() => () => MissingSection), 42 | { 43 | loading: Preloader, 44 | }, 45 | ), 46 | }); 47 | const SectionComponent = sectionsComponentPaths()[type] || MissingSection; 48 | 49 | return ( 50 | 54 | ); 55 | } 56 | -------------------------------------------------------------------------------- /components/header-section.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | import { useEffect, useRef, useState } from "react"; 4 | 5 | import MainMenu from "./main-menu/main-menu"; 6 | 7 | export default function HeaderSection({ mainMenu }) { 8 | const [isNavbarSticky, setIsNavbarSticky] = useState(false); 9 | const navbarAreaEl = useRef(null); 10 | 11 | function fixNavBar() { 12 | if (navbarAreaEl.current) { 13 | setIsNavbarSticky(window.scrollY > navbarAreaEl.current.offsetTop); 14 | } 15 | } 16 | 17 | useEffect(() => { 18 | window.addEventListener("scroll", fixNavBar); 19 | 20 | return () => { 21 | window.removeEventListener("scroll", fixNavBar); 22 | }; 23 | }, []); 24 | 25 | return ( 26 |
    27 |
    31 |
    32 |
    33 |
    34 | 52 |
    53 |
    54 |
    55 |
    56 |
    57 | ); 58 | } 59 | -------------------------------------------------------------------------------- /components/landing-page-sections/testimonials.js: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | 3 | import Testimonial from "./testimonial"; 4 | 5 | export default function Testimonials({ 6 | headline, 7 | scrollAnchorId, 8 | testimonial: testimonials, 9 | }) { 10 | useEffect(() => { 11 | import("tiny-slider").then(({ tns }) => { 12 | tns({ 13 | autoplay: true, 14 | autoplayButtonOutput: false, 15 | autoplayTimeout: 5000, 16 | container: ".testimonial-active", 17 | controls: true, 18 | controlsText: [ 19 | '', 20 | '', 21 | ], 22 | gutter: 0, 23 | items: 1, 24 | mouseDrag: true, 25 | nav: false, 26 | navPosition: "bottom", 27 | }); 28 | }); 29 | }); 30 | 31 | return ( 32 |
    36 |
    37 |
    38 |
    39 |
    40 |
    41 |

    {headline}

    42 |
    43 | 44 |
    45 | {testimonials.map((testimonial, index) => ( 46 | 52 | ))} 53 |
    54 |
    55 |
    56 |
    57 |
    58 |
    59 | ); 60 | } 61 | -------------------------------------------------------------------------------- /css/tiny-slider.min.css: -------------------------------------------------------------------------------- 1 | .tns-outer{padding:0!important}.tns-outer [hidden]{display:none!important}.tns-outer [aria-controls],.tns-outer [data-action]{cursor:pointer}.tns-slider{-webkit-transition:all 0s;-moz-transition:all 0s;transition:all 0s}.tns-slider>.tns-item{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tns-horizontal.tns-subpixel{white-space:nowrap}.tns-horizontal.tns-subpixel>.tns-item{display:inline-block;vertical-align:top;white-space:normal}.tns-horizontal.tns-no-subpixel:after{content:'';display:table;clear:both}.tns-horizontal.tns-no-subpixel>.tns-item{float:left}.tns-horizontal.tns-carousel.tns-no-subpixel>.tns-item{margin-right:-100%}.tns-no-calc{position:relative;left:0}.tns-gallery{position:relative;left:0;min-height:1px}.tns-gallery>.tns-item{position:absolute;left:-100%;-webkit-transition:transform 0s,opacity 0s;-moz-transition:transform 0s,opacity 0s;transition:transform 0s,opacity 0s}.tns-gallery>.tns-slide-active{position:relative;left:auto!important}.tns-gallery>.tns-moving{-webkit-transition:all .25s;-moz-transition:all .25s;transition:all .25s}.tns-autowidth{display:inline-block}.tns-lazy-img{-webkit-transition:opacity .6s;-moz-transition:opacity .6s;transition:opacity .6s;opacity:.6}.tns-lazy-img.tns-complete{opacity:1}.tns-ah{-webkit-transition:height 0s;-moz-transition:height 0s;transition:height 0s}.tns-ovh{overflow:hidden}.tns-visually-hidden{position:absolute;left:-10000em}.tns-transparent{opacity:0;visibility:hidden}.tns-fadeIn{opacity:1;z-index:0}.tns-fadeOut,.tns-normal{opacity:0;z-index:-1}.tns-vpfix{white-space:nowrap}.tns-vpfix>div,.tns-vpfix>li{display:inline-block}.tns-t-subp2{margin:0 auto;width:310px;position:relative;height:10px;overflow:hidden}.tns-t-ct{width:2333.3333333%;width:-webkit-calc(100% * 70 / 3);width:-moz-calc(100% * 70 / 3);width:calc(100% * 70 / 3);position:absolute;right:0}.tns-t-ct:after{content:'';display:table;clear:both}.tns-t-ct>div{width:1.4285714%;width:-webkit-calc(100% / 70);width:-moz-calc(100% / 70);width:calc(100% / 70);height:10px;float:left} -------------------------------------------------------------------------------- /pages/blog/search.js: -------------------------------------------------------------------------------- 1 | import camelcaseKeys from "camelcase-keys"; 2 | 3 | import Link from "next/link"; 4 | 5 | import { getCategories, searchPosts } from "@/lib/api"; 6 | 7 | import CategoriesWidget from "@/components/blog/categories-widget"; 8 | import PostsList from "@/components/blog/posts-list"; 9 | import SearchWidget from "@/components/blog/search-widget"; 10 | 11 | export default function Search({ categories, posts, query }) { 12 | return ( 13 | <> 14 |
    18 |
    19 |
    20 |
    21 |
    22 |

    Search Results

    23 |
      24 |
    • 25 | Home 26 |
    • 27 |
    • 28 | Blog 29 |
    • 30 |
    • Search: "{query}"
    • 31 |
    32 |
    33 |
    34 |
    35 |
    36 |
    37 | 38 |
    39 |
    40 |
    41 | 42 | 46 |
    47 |
    48 |
    49 | 50 | ); 51 | } 52 | 53 | export async function getServerSideProps({ query: { query } }) { 54 | const [blogPosts, categories] = await Promise.all([ 55 | searchPosts({ query }), 56 | getCategories(), 57 | ]); 58 | 59 | return { 60 | props: { categories, posts: camelcaseKeys(blogPosts), query }, 61 | }; 62 | } 63 | -------------------------------------------------------------------------------- /components/blog/post-preview.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | 4 | import AuthorCard from "@/components/author-card"; 5 | import HumanDate from "@/components/human-date"; 6 | 7 | export default function PostsPreview({ 8 | author, 9 | coverImage, 10 | coverImageAlt, 11 | date, 12 | excerpt, 13 | slug, 14 | tags, 15 | title, 16 | }) { 17 | return ( 18 |
    19 |
    20 |
    21 |

    22 | {title} 23 |

    24 |
      25 |
    • 26 | 27 |
    • 28 |
    • 29 | {" "} 30 | 31 |
    • 32 | {tags.map((tag) => ( 33 |
    • 34 | 35 | {tag.name} 36 | 37 |
    • 38 | ))} 39 |
    40 |
    41 | {coverImage && ( 42 |
    43 | {coverImageAlt} 52 |
    53 | )} 54 |
    58 |
    59 | 63 | Read More 64 | 65 |
    66 |
    67 |
    68 | ); 69 | } 70 | -------------------------------------------------------------------------------- /pages/blog.js: -------------------------------------------------------------------------------- 1 | import camelcaseKeys from "camelcase-keys"; 2 | 3 | import Link from "next/link"; 4 | 5 | import { getCategories, getPostsData } from "@/lib/api"; 6 | 7 | import CategoriesWidget from "@/components/blog/categories-widget"; 8 | import PostsList from "@/components/blog/posts-list"; 9 | import SearchWidget from "@/components/blog/search-widget"; 10 | 11 | export default function Blog({ categories, posts }) { 12 | return ( 13 | <> 14 |
    18 |
    19 |
    20 |
    21 |
    22 |

    All Blog Posts

    23 |
      24 |
    • 25 | Home 26 |
    • 27 |
    • All blog posts
    • 28 |
    29 |
    30 |
    31 |
    32 |
    33 |
    34 | 35 |
    36 |
    37 |
    38 | 39 | 43 |
    44 |
    45 |
    46 | 47 | ); 48 | } 49 | 50 | export async function getStaticProps() { 51 | const butterToken = process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY; 52 | 53 | if (butterToken) { 54 | try { 55 | const [blogPosts, categories] = await Promise.all([ 56 | getPostsData(), 57 | getCategories(), 58 | ]); 59 | return { props: { categories, posts: camelcaseKeys(blogPosts.posts) } }; 60 | } catch (e) { 61 | console.log("Could not get posts", e); 62 | 63 | return { 64 | props: { categories: [], posts: [] }, 65 | }; 66 | } 67 | } 68 | 69 | return { props: { categories: [], posts: [] } }; 70 | } 71 | -------------------------------------------------------------------------------- /components/landing-page-sections/two-column-with-image.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | 4 | export default function TwoColumnWithImage({ 5 | buttonLabel, 6 | buttonUrl, 7 | headline, 8 | image, 9 | imagePosition, 10 | scrollAnchorId, 11 | subheadline, 12 | }) { 13 | return ( 14 |
    18 |
    19 |
    20 | {image && imagePosition === "left" && ( 21 |
    22 |
    23 | 34 |
    35 |
    36 | )} 37 |
    38 |
    39 |
    40 |

    {headline}

    41 |
    42 |
    43 | 47 | {buttonLabel} 48 | 49 |
    50 |
    51 | {image && imagePosition === "right" && ( 52 |
    53 |
    54 | 65 |
    66 |
    67 | )} 68 |
    69 |
    70 |
    71 | ); 72 | } 73 | -------------------------------------------------------------------------------- /pages/blog/tag/[slug].js: -------------------------------------------------------------------------------- 1 | import camelcaseKeys from "camelcase-keys"; 2 | 3 | import Link from "next/link"; 4 | 5 | import { getCategories, getPostsData, getTags } from "@/lib/api"; 6 | 7 | import CategoriesWidget from "@/components/blog/categories-widget"; 8 | import PostsList from "@/components/blog/posts-list"; 9 | import SearchWidget from "@/components/blog/search-widget"; 10 | 11 | export default function Tag({ categories, posts, slug }) { 12 | return ( 13 | <> 14 |
    18 |
    19 |
    20 |
    21 |
    22 |

    Blog Posts by Tag

    23 |
      24 |
    • 25 | Home 26 |
    • 27 |
    • 28 | Blog 29 |
    • 30 |
    • Tag: {slug}
    • 31 |
    32 |
    33 |
    34 |
    35 |
    36 |
    37 | 38 |
    39 |
    40 |
    41 | 42 | 46 |
    47 |
    48 |
    49 | 50 | ); 51 | } 52 | 53 | export async function getStaticProps({ params: { slug } }) { 54 | try { 55 | const blogPosts = (await getPostsData({ tag: slug })).posts; 56 | const categories = await getCategories(); 57 | 58 | return { 59 | props: { categories, posts: camelcaseKeys(blogPosts), slug }, 60 | revalidate: 1, 61 | }; 62 | } catch (e) { 63 | return { 64 | notFound: true, 65 | }; 66 | } 67 | } 68 | 69 | export async function getStaticPaths() { 70 | const butterToken = process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY; 71 | if (butterToken) { 72 | try { 73 | const tags = await getTags(); 74 | 75 | return { 76 | fallback: true, 77 | paths: tags.map((tag) => `/blog/tag/${tag.slug}`), 78 | }; 79 | } catch (e) { 80 | console.error("Couldn't load tags.", e); 81 | 82 | return { 83 | fallback: false, 84 | paths: [], 85 | }; 86 | } 87 | } 88 | 89 | return { 90 | fallback: false, 91 | paths: [], 92 | }; 93 | } 94 | -------------------------------------------------------------------------------- /pages/landing-page/[slug].js: -------------------------------------------------------------------------------- 1 | import camelcaseKeys from "camelcase-keys"; 2 | 3 | import ErrorPage from "next/error"; 4 | import Head from "next/head"; 5 | import { useRouter } from "next/router"; 6 | 7 | import { getLandingPage, getLandingPages, getPostsData } from "@/lib/api"; 8 | 9 | import Blog from "@/components/blog/blog"; 10 | import LandingPageSection from "@/components/landing-page-sections/landing-page-section"; 11 | import Preloader from "@/components/preloader"; 12 | 13 | export default function LandingPage({ blogPosts, page }) { 14 | const router = useRouter(); 15 | if (router.isFallback) { 16 | return ; 17 | } 18 | 19 | if (!page) { 20 | return ; 21 | } 22 | 23 | return ( 24 | <> 25 | 26 | 27 | 31 | {page.fields.seo.title} 32 | 36 | 40 | 45 | 46 | 47 | {page.fields.body.map(({ fields: sectionData, type }, index) => ( 48 | 53 | ))} 54 | 55 | 56 | ); 57 | } 58 | 59 | export async function getStaticProps({ params }) { 60 | try { 61 | const page = await getLandingPage(params.slug); 62 | const blogPosts = (await getPostsData({ page: 1, pageSize: 2 })).posts; 63 | 64 | return { 65 | props: { blogPosts: camelcaseKeys(blogPosts), page: camelcaseKeys(page) }, 66 | }; 67 | } catch (e) { 68 | console.error(`Couldn't load content for Landing page ${params.slug}.`, e); 69 | 70 | return { 71 | notFound: true, 72 | }; 73 | } 74 | } 75 | 76 | export async function getStaticPaths() { 77 | const butterToken = process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY; 78 | 79 | if (butterToken) { 80 | try { 81 | const landingPages = await getLandingPages(); 82 | 83 | return { 84 | fallback: true, 85 | paths: landingPages.map((page) => `/landing-page/${page.slug}`), 86 | }; 87 | } catch (e) { 88 | console.error("Couldn't load content for Landing pages.", e); 89 | } 90 | 91 | return { 92 | fallback: "blocking", 93 | paths: [], 94 | }; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /pages/blog/category/[slug].js: -------------------------------------------------------------------------------- 1 | import camelcaseKeys from "camelcase-keys"; 2 | 3 | import Link from "next/link"; 4 | 5 | import { getCategories, getPostsData } from "@/lib/api"; 6 | 7 | import CategoriesWidget from "@/components/blog/categories-widget"; 8 | import PostsList from "@/components/blog/posts-list"; 9 | import SearchWidget from "@/components/blog/search-widget"; 10 | 11 | export default function Category({ categories, posts, slug }) { 12 | return ( 13 | <> 14 |
    18 |
    19 |
    20 |
    21 |
    22 |

    Blog Posts by Category

    23 |
      24 |
    • 25 | Home 26 |
    • 27 |
    • 28 | Blog 29 |
    • 30 |
    • Category: {slug}
    • 31 |
    32 |
    33 |
    34 |
    35 |
    36 |
    37 | 38 |
    39 |
    40 |
    41 | 42 | 46 |
    47 |
    48 |
    49 | 50 | ); 51 | } 52 | 53 | export async function getStaticProps({ params: { slug } }) { 54 | try { 55 | const [blogPosts, categories] = await Promise.all([ 56 | getPostsData({ category: slug }), 57 | getCategories(), 58 | ]); 59 | 60 | return { 61 | props: { categories, posts: camelcaseKeys(blogPosts.posts), slug }, 62 | revalidate: 1, 63 | }; 64 | } catch (e) { 65 | return { 66 | notFound: true, 67 | }; 68 | } 69 | } 70 | 71 | export async function getStaticPaths() { 72 | const butterToken = process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY; 73 | 74 | if (butterToken) { 75 | try { 76 | const categories = await getCategories(); 77 | 78 | return { 79 | fallback: true, 80 | paths: categories.map((category) => `/blog/category/${category.slug}`), 81 | }; 82 | } catch (e) { 83 | console.error("Couldn't load categories.", e); 84 | 85 | return { 86 | fallback: false, 87 | paths: [], 88 | }; 89 | } 90 | } 91 | 92 | return { 93 | fallback: false, 94 | paths: [], 95 | }; 96 | } 97 | -------------------------------------------------------------------------------- /components/footer-section.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | export default function FooterSection({ mainMenu }) { 4 | const links = mainMenu.map((link) => ({ 5 | ...link, 6 | url: link.url[0] === "#" ? `/${link.url}` : link.url, 7 | })); 8 | 9 | return ( 10 |
    11 |
    12 |
    13 |
    14 |
    15 |
    16 | 17 | logo 27 | 28 |
    29 |

    30 | ButterCMS is your content backend. Build better with Butter. 31 |

    32 | 54 |
    55 |
    56 |
    57 |
    58 |

    About Us

    59 |
      60 | {links.map((navLink) => ( 61 |
    • 62 | {navLink.label} 63 |
    • 64 | ))} 65 |
    66 |
    67 |
    68 | 69 |
    70 |
    71 |

    Subscribe Newsletter

    72 |
    73 | 77 | 78 |
    79 |
    80 |
    81 |
    82 |
    83 |
    84 | ); 85 | } 86 | -------------------------------------------------------------------------------- /components/main-menu/main-menu.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef, useState } from "react"; 2 | 3 | import MainMenuLink from "./main-menu-link"; 4 | 5 | export default function ManiMenu({ mainMenuLinks }) { 6 | const [activeMenuLink, setActiveMenuLink] = useState( 7 | mainMenuLinks.length ? mainMenuLinks[0].url : "", 8 | ); 9 | 10 | function highlightLinks() { 11 | const sections = document.querySelectorAll(".page-scroll"); 12 | const scrollPos = 13 | window.scrollY || 14 | document.documentElement.scrollTop || 15 | document.body.scrollTop; 16 | 17 | sections.forEach((currLink) => { 18 | const val = currLink.getAttribute("href").slice(1); 19 | if (val[0] !== "#") { 20 | return; 21 | } 22 | const refElement = document.querySelector(val); 23 | 24 | if (!refElement) { 25 | return; 26 | } 27 | 28 | const scrollTopMinus = scrollPos + 73; 29 | 30 | if ( 31 | refElement.offsetTop <= scrollTopMinus && 32 | refElement.offsetTop + refElement.offsetHeight > scrollTopMinus 33 | ) { 34 | setActiveMenuLink(val); 35 | } 36 | }); 37 | } 38 | 39 | useEffect(() => { 40 | window.addEventListener("scroll", highlightLinks); 41 | 42 | return () => { 43 | window.removeEventListener("scroll", highlightLinks); 44 | }; 45 | }, []); 46 | 47 | const [isMenuActive, setMenuActive] = useState(false); 48 | const menuLinksEl = useRef(null); 49 | 50 | function inactivateMenu() { 51 | setMenuActive(false); 52 | if (menuLinksEl.current) { 53 | menuLinksEl.current.classList.remove("show"); 54 | } 55 | } 56 | 57 | return ( 58 | <> 59 | 73 | 74 | 96 | 97 | ); 98 | } 99 | -------------------------------------------------------------------------------- /pages/_app.js: -------------------------------------------------------------------------------- 1 | import App from "next/app"; 2 | import Head from "next/head"; 3 | import Router from "next/router"; 4 | 5 | import { useEffect, useState } from "react"; 6 | import { useRouter } from "next/router"; 7 | 8 | import FooterSection from "@/components/footer-section"; 9 | import HeaderSection from "@/components/header-section"; 10 | import Preloader from "@/components/preloader"; 11 | import ScrollToButtonButton from "@/components/scroll-to-top-button"; 12 | import { getMainMenu } from "@/lib/api"; 13 | 14 | import "bootstrap/dist/css/bootstrap.css"; 15 | 16 | import "@/css/lineicons.css"; 17 | import "@/css/tiny-slider.min.css"; 18 | import "@/css/main.css"; 19 | 20 | function MyApp({ Component, mainMenu, pageProps }) { 21 | const [isLoading, setIsLoading] = useState(false); 22 | const router = useRouter(); 23 | const authToken = process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY; 24 | 25 | useEffect(() => { 26 | import("bootstrap/dist/js/bootstrap.js"); 27 | 28 | const showLoader = () => { 29 | setIsLoading(true); 30 | }; 31 | 32 | const removeLoader = () => { 33 | setIsLoading(false); 34 | }; 35 | 36 | Router.events.on("routeChangeStart", showLoader); 37 | Router.events.on("routeChangeComplete", removeLoader); 38 | Router.events.on("routeChangeError", removeLoader); 39 | 40 | return () => { 41 | Router.events.off("routeChangeStart", showLoader); 42 | Router.events.off("routeChangeComplete", removeLoader); 43 | Router.events.off("routeChangeError", removeLoader); 44 | }; 45 | }, [authToken, router]); 46 | 47 | const pageLayout = authToken ? ( 48 | <> 49 | 50 | 51 | 52 | 53 | 54 | ) : ( 55 | 56 | ); 57 | 58 | return ( 59 | <> 60 | 61 | 62 | 66 | 67 | Sample Landing Page with Components - powered by ButterCMS 68 | 69 | 73 | 77 | 82 | 83 | 84 | {isLoading && } 85 | 86 | {!isLoading && pageLayout} 87 | 88 | ); 89 | } 90 | 91 | MyApp.getInitialProps = async (appContext) => { 92 | const appProps = await App.getInitialProps(appContext); 93 | const authToken = process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY; 94 | let mainMenu = []; 95 | 96 | if (authToken) { 97 | try { 98 | mainMenu = await getMainMenu(); 99 | } catch (e) { 100 | console.error("Couldn't load main menu links.", e); 101 | } 102 | } 103 | 104 | return { ...appProps, mainMenu }; 105 | }; 106 | 107 | export default MyApp; 108 | -------------------------------------------------------------------------------- /lib/api.js: -------------------------------------------------------------------------------- 1 | import Butter from "buttercms"; 2 | 3 | let butter; 4 | 5 | const previewSetting = process.env.PREVIEW; 6 | // make preview mode by default 7 | // eslint-disable-next-line prettier/prettier 8 | const preview = previewSetting === "true" || previewSetting === undefined ? 1 : 0; 9 | 10 | try { 11 | // Updated initialization with proper typing 12 | butter = Butter(process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY, { preview }); 13 | } catch (err) { 14 | console.log(err); 15 | } 16 | 17 | const defaultPageSize = 100; 18 | const defaultPostCount = 10; 19 | 20 | function getErrorMessage(err) { 21 | return err?.cause?.data?.detail || "Unexpected error occurred"; 22 | } 23 | 24 | export async function getLandingPage(slug) { 25 | try { 26 | const page = await butter.page.retrieve("landing-page", slug); 27 | 28 | return page?.data?.data; 29 | } catch (err) { 30 | throw getErrorMessage(err); 31 | } 32 | } 33 | 34 | export async function getLandingPages() { 35 | let paginatedLandingPages = []; 36 | let currentPage = 1; 37 | while (currentPage) { 38 | const landingPagesData = await getLandingPagesData(currentPage); 39 | paginatedLandingPages.push(...landingPagesData.pages); 40 | currentPage = landingPagesData.nextPage; 41 | } 42 | 43 | return paginatedLandingPages; 44 | } 45 | 46 | async function getLandingPagesData(page, pageSize = defaultPageSize) { 47 | try { 48 | const params = { 49 | page, 50 | page_size: pageSize, 51 | }; 52 | const response = await butter.page.list("landing-page", params); 53 | 54 | return { 55 | nextPage: response?.data?.meta.next_page, 56 | pages: response?.data?.data, 57 | prevPage: response?.data?.meta.previous_page, 58 | }; 59 | } catch (err) { 60 | throw getErrorMessage(err); 61 | } 62 | } 63 | 64 | export async function getPostsData( 65 | { category, page, pageSize, tag } = { page: 1, pageSize: defaultPostCount }, 66 | ) { 67 | try { 68 | // https://buttercms.com/docs/api/node?javascript#get-your-blog-posts 69 | const params = { 70 | page: page || 1, 71 | page_size: pageSize || defaultPostCount, 72 | }; 73 | 74 | if (tag) { 75 | params.tag_slug = tag; 76 | } 77 | 78 | if (category) { 79 | params.category_slug = category; 80 | } 81 | const response = await butter.post.list(params); 82 | 83 | return { 84 | nextPage: response?.data?.meta.next_page, 85 | posts: response?.data?.data, 86 | prevPage: response?.data?.meta.previous_page, 87 | }; 88 | } catch (err) { 89 | throw getErrorMessage(err); 90 | } 91 | } 92 | 93 | export async function getPost(slug) { 94 | try { 95 | const response = await butter.post.retrieve(slug); 96 | 97 | return response?.data?.data; 98 | } catch (err) { 99 | throw getErrorMessage(err); 100 | } 101 | } 102 | 103 | export async function getMainMenu() { 104 | try { 105 | const response = await butter.content.retrieve(["navigation_menu"]); 106 | 107 | const mainMenu = response?.data?.data?.navigation_menu.find( 108 | (menu) => menu.name == "Main menu", 109 | ); 110 | 111 | return mainMenu ? mainMenu.menu_items : []; 112 | } catch (err) { 113 | throw getErrorMessage(err); 114 | } 115 | } 116 | 117 | export async function getCategories() { 118 | try { 119 | const response = await butter.category.list(); 120 | 121 | return response?.data?.data; 122 | } catch (err) { 123 | throw getErrorMessage(err); 124 | } 125 | } 126 | 127 | export async function getTags() { 128 | try { 129 | const response = await butter.tag.list(); 130 | 131 | return response?.data?.data; 132 | } catch (err) { 133 | throw getErrorMessage(err); 134 | } 135 | } 136 | 137 | export async function searchPosts({ query }) { 138 | try { 139 | const response = await butter.post.search(query); 140 | 141 | return response?.data?.data; 142 | } catch (err) { 143 | throw getErrorMessage(err); 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Next.js + ButterCMS Starter Project 2 | ![recommended node version](https://img.shields.io/badge/node-v20-green) 3 | 4 | Live Demo: https://nextjs-starter-buttercms.vercel.app/ 5 | 6 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FButterCMS%2Fnextjs-starter-buttercms&env=NEXT_PUBLIC_BUTTER_CMS_API_KEY&envDescription=Your%20ButterCMS%20API%20Token&envLink=https%3A%2F%2Fbuttercms.com%2Fsettings%2F&project-name=nextjs-starter-buttercms&repo-name=nextjs-starter-buttercms&redirect-url=https%3A%2F%2Fbuttercms.com%2Fonboarding%2Fvercel-starter-deploy-callback%2F&production-deploy-hook=Deploy%20Triggered%20from%20ButterCMS&demo-title=ButterCMS%20Next.js%20Starter&demo-description=Fully%20integrated%20with%20your%20ButterCMS%20account&demo-url=https%3A%2F%2Fnextjs-starter-buttercms.vercel.app%2F&demo-image=https://cdn.buttercms.com/r0tGK8xFRti2iRKBJ0eY&repository-name=nextjs-starter-buttercms) 7 | 8 | [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/ButterCMS/nextjs-starter-buttercms&env%5BNEXT_PUBLIC_BUTTER_CMS_API_KEY%5D=check%20https://buttercms.com/settings) 9 | 10 | This Next.js starter project fully integrates with dynamic sample content from your ButterCMS account, including main menu, pages, blog posts, categories, and tags, all with a beautiful, custom theme with already-implemented search functionality. All of the included sample content is automatically created in your account dashboard when you sign up for a free trial of ButterCMS. 11 | 12 | A copy of this starter project can be easily and quickly deployed to Vercel or Heroku with the click of a button. 13 | ## 1) Installation 14 | 15 | First, install the dependencies by cloning the repo and running one of the following commands, depending on your current setup: 16 | ```bash 17 | git clone https://github.com/ButterCMS/nextjs-starter-buttercms.git 18 | cd nextjs-starter-buttercms 19 | npm install # or yarn install 20 | ``` 21 | 22 | ## 2) Set API Token 23 | 24 | To fetch your ButterCMS content, add your API token as an environment variable. 25 | 26 | ```bash 27 | $ echo 'NEXT_PUBLIC_BUTTER_CMS_API_KEY=' >> .env 28 | ``` 29 | 30 | ## 3) Run the local server 31 | 32 | To view the app in a browser, you'll need to run the local development server: 33 | 34 | ```bash 35 | npm run dev # or yarn dev 36 | ``` 37 | 38 | Congratulations! Your starter project is now live: [http://localhost:3000](http://localhost:3000). 39 | 40 | ## 4) Deploy 41 | 42 | Deploy your Butterized proof of concept app and spread your love of Butter, to either 43 | Vercel, the creators of Next.js, or to Heroku. With the click of a button, you'll create a copy of our starter project in your Git provider account, instantly deploy it, and institute a full content workflow connected to your ButterCMS account. Smooth. 44 | 45 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FButterCMS%2Fnextjs-starter-buttercms&env=NEXT_PUBLIC_BUTTER_CMS_API_KEY&envDescription=Your%20ButterCMS%20API%20Token&envLink=https%3A%2F%2Fbuttercms.com%2Fsettings%2F&project-name=nextjs-starter-buttercms&repo-name=nextjs-starter-buttercms&redirect-url=https%3A%2F%2Fbuttercms.com%2Fonboarding%2Fvercel-starter-deploy-callback%2F&production-deploy-hook=Deploy%20Triggered%20from%20ButterCMS&demo-title=ButterCMS%20Next.js%20Starter&demo-description=Fully%20integrated%20with%20your%20ButterCMS%20account&demo-url=https%3A%2F%2Fnextjs-starter-buttercms.vercel.app%2F&demo-image=https://cdn.buttercms.com/r0tGK8xFRti2iRKBJ0eY&repository-name=nextjs-starter-buttercms) 46 | 47 | [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/ButterCMS/nextjs-starter-buttercms&env%5BNEXT_PUBLIC_BUTTER_CMS_API_KEY%5D=check%20https://buttercms.com/settings) 48 | 49 | ## 5) Previewing 50 | 51 | Your starter project is automatically configured to show draft changes saved in your Butter account when run locally or deployed to a hosting provider. To disable this behavior, set the following value in your .env file: PREVIEW=false. 52 | -------------------------------------------------------------------------------- /pages/blog/[slug].js: -------------------------------------------------------------------------------- 1 | import camelcaseKeys from "camelcase-keys"; 2 | 3 | import ErrorPage from "next/error"; 4 | import Head from "next/head"; 5 | import Image from "next/image"; 6 | import Link from "next/link"; 7 | 8 | import { getCategories, getPost, getPostsData } from "@/lib/api"; 9 | 10 | import { useRouter } from "next/router"; 11 | 12 | import AuthorCard from "@/components/author-card"; 13 | import CategoriesWidget from "@/components/blog/categories-widget"; 14 | import HumanDate from "@/components/human-date"; 15 | import Preloader from "@/components/preloader"; 16 | import SearchWidget from "@/components/blog/search-widget"; 17 | 18 | export default function BlogPost({ categories, post }) { 19 | const router = useRouter(); 20 | if (router.isFallback) { 21 | return ; 22 | } 23 | 24 | if (!post) { 25 | return ; 26 | } 27 | 28 | return ( 29 | <> 30 | 31 | 32 | 36 | {post.seoTitle} 37 | 41 | 45 | 50 | 51 | 55 | 59 | 63 | 67 | 71 | 75 | 79 | 83 | 87 | 88 |
    92 |
    93 |
    94 |
    95 |
    96 |

    {post.title}

    97 |
      98 |
    • 99 | Home 100 |
    • 101 |
    • 102 | Blog 103 |
    • 104 |
    • {post.title}
    • 105 |
    106 |
    107 |
    108 |
    109 |
    110 |
    111 | 112 |
    113 |
    114 |
    115 |
    116 |
    117 |
    118 |

    {post.title}

    119 |
      120 |
    • 121 | 122 |
    • 123 |
    • 124 | 125 | {" "} 126 | 127 | 128 |
    • 129 | {post.tags.map((tag) => ( 130 |
    • 131 | 132 | {tag.name} 133 | 134 |
    • 135 | ))} 136 |
    137 |
    138 | {post.featuredImage && ( 139 |
    140 | {post.featuredImageAlt} 149 |
    150 | )} 151 |
    155 |
    156 |
    157 | 158 | 162 |
    163 |
    164 |
    165 | 166 | ); 167 | } 168 | 169 | export async function getStaticProps({ params }) { 170 | try { 171 | const [post, categories] = await Promise.all([ 172 | getPost(params.slug), 173 | getCategories(), 174 | ]); 175 | return { props: { categories, post: camelcaseKeys(post) } }; 176 | } catch (e) { 177 | console.error("Couldn't load post or categories data.", e); 178 | 179 | return { 180 | notFound: true, 181 | }; 182 | } 183 | } 184 | 185 | export async function getStaticPaths() { 186 | const butterToken = process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY; 187 | 188 | if (butterToken) { 189 | try { 190 | const posts = (await getPostsData()).posts; 191 | 192 | return { 193 | fallback: true, 194 | paths: posts.map((post) => `/blog/${post.slug}`), 195 | }; 196 | } catch (e) { 197 | console.error("Couldn't load posts.", e); 198 | } 199 | } 200 | 201 | return { 202 | fallback: false, 203 | paths: [], 204 | }; 205 | } 206 | -------------------------------------------------------------------------------- /css/lineicons.css: -------------------------------------------------------------------------------- 1 | /*-------------------------------- 2 | 3 | LineIcons Web Font 4 | Author: lineicons.com 5 | 6 | -------------------------------- */ 7 | @font-face { 8 | font-family: 'LineIcons'; 9 | src: url('fonts/LineIcons.eot'); 10 | src: url('fonts/LineIcons.eot') format('embedded-opentype'), url('fonts/LineIcons.woff2') format('woff2'), url('fonts/LineIcons.woff') format('woff'), url('fonts/LineIcons.ttf') format('truetype'), url('fonts/LineIcons.svg') format('svg'); 11 | font-weight: normal; 12 | font-style: normal; 13 | } 14 | /*------------------------ 15 | base class definition 16 | -------------------------*/ 17 | .lni { 18 | display: inline-block; 19 | font: normal normal normal 1em/1 'LineIcons'; 20 | color: inherit; 21 | flex-shrink: 0; 22 | speak: none; 23 | text-transform: none; 24 | line-height: 1; 25 | vertical-align: -.125em; 26 | /* Better Font Rendering */ 27 | -webkit-font-smoothing: antialiased; 28 | -moz-osx-font-smoothing: grayscale; 29 | } 30 | /*------------------------ 31 | change icon size 32 | -------------------------*/ 33 | /* relative units */ 34 | .lni-sm { 35 | font-size: 0.8em; 36 | } 37 | .lni-lg { 38 | font-size: 1.2em; 39 | } 40 | /* absolute units */ 41 | .lni-16 { 42 | font-size: 16px; 43 | } 44 | .lni-32 { 45 | font-size: 32px; 46 | } 47 | 48 | /*------------------------ 49 | spinning icons 50 | -------------------------*/ 51 | .lni-is-spinning { 52 | animation: lni-spin 1s infinite linear; 53 | } 54 | @keyframes lni-spin { 55 | 0% { 56 | transform: rotate(0deg); 57 | } 58 | 100% { 59 | transform: rotate(360deg); 60 | } 61 | } 62 | /*------------------------ 63 | rotated/flipped icons 64 | -------------------------*/ 65 | .lni-rotate-90 { 66 | transform: rotate(90deg); 67 | } 68 | .lni-rotate-180 { 69 | transform: rotate(180deg); 70 | } 71 | .lni-rotate-270 { 72 | transform: rotate(270deg); 73 | } 74 | .lni-flip-y { 75 | transform: scaleY(-1); 76 | } 77 | .lni-flip-x { 78 | transform: scaleX(-1); 79 | } 80 | /*------------------------ 81 | icons 82 | -------------------------*/ 83 | 84 | .lni-500px::before { 85 | content: "\ea03"; 86 | } 87 | 88 | .lni-add-files::before { 89 | content: "\ea01"; 90 | } 91 | 92 | .lni-adobe::before { 93 | content: "\ea06"; 94 | } 95 | 96 | .lni-agenda::before { 97 | content: "\ea02"; 98 | } 99 | 100 | .lni-airbnb::before { 101 | content: "\ea07"; 102 | } 103 | 104 | .lni-alarm-clock::before { 105 | content: "\ea08"; 106 | } 107 | 108 | .lni-alarm::before { 109 | content: "\ea04"; 110 | } 111 | 112 | .lni-amazon-original::before { 113 | content: "\ea05"; 114 | } 115 | 116 | .lni-amazon-pay::before { 117 | content: "\ea09"; 118 | } 119 | 120 | .lni-amazon::before { 121 | content: "\ea0a"; 122 | } 123 | 124 | .lni-ambulance::before { 125 | content: "\ea0b"; 126 | } 127 | 128 | .lni-amex::before { 129 | content: "\ea0c"; 130 | } 131 | 132 | .lni-anchor::before { 133 | content: "\ea0d"; 134 | } 135 | 136 | .lni-android-original::before { 137 | content: "\ea0e"; 138 | } 139 | 140 | .lni-android::before { 141 | content: "\ea0f"; 142 | } 143 | 144 | .lni-angellist::before { 145 | content: "\ea10"; 146 | } 147 | 148 | .lni-angle-double-down::before { 149 | content: "\ea11"; 150 | } 151 | 152 | .lni-angle-double-left::before { 153 | content: "\ea12"; 154 | } 155 | 156 | .lni-angle-double-right::before { 157 | content: "\ea13"; 158 | } 159 | 160 | .lni-angle-double-up::before { 161 | content: "\ea14"; 162 | } 163 | 164 | .lni-angular::before { 165 | content: "\ea15"; 166 | } 167 | 168 | .lni-apartment::before { 169 | content: "\ea16"; 170 | } 171 | 172 | .lni-app-store::before { 173 | content: "\ea17"; 174 | } 175 | 176 | .lni-apple-music::before { 177 | content: "\ea18"; 178 | } 179 | 180 | .lni-apple-pay::before { 181 | content: "\ea19"; 182 | } 183 | 184 | .lni-apple::before { 185 | content: "\ea1a"; 186 | } 187 | 188 | .lni-archive::before { 189 | content: "\ea1f"; 190 | } 191 | 192 | .lni-arrow-down-circle::before { 193 | content: "\ea1b"; 194 | } 195 | 196 | .lni-arrow-down::before { 197 | content: "\ea1c"; 198 | } 199 | 200 | .lni-arrow-left-circle::before { 201 | content: "\ea1d"; 202 | } 203 | 204 | .lni-arrow-left::before { 205 | content: "\ea1e"; 206 | } 207 | 208 | .lni-arrow-right-circle::before { 209 | content: "\ea20"; 210 | } 211 | 212 | .lni-arrow-right::before { 213 | content: "\ea21"; 214 | } 215 | 216 | .lni-arrow-top-left::before { 217 | content: "\ea22"; 218 | } 219 | 220 | .lni-arrow-top-right::before { 221 | content: "\ea23"; 222 | } 223 | 224 | .lni-arrow-up-circle::before { 225 | content: "\ea24"; 226 | } 227 | 228 | .lni-arrow-up::before { 229 | content: "\ea25"; 230 | } 231 | 232 | .lni-arrows-horizontal::before { 233 | content: "\ea26"; 234 | } 235 | 236 | .lni-arrows-vertical::before { 237 | content: "\ea27"; 238 | } 239 | 240 | .lni-atlassian::before { 241 | content: "\ea28"; 242 | } 243 | 244 | .lni-aws::before { 245 | content: "\ea29"; 246 | } 247 | 248 | .lni-azure::before { 249 | content: "\ea2a"; 250 | } 251 | 252 | .lni-backward::before { 253 | content: "\ea2b"; 254 | } 255 | 256 | .lni-baloon::before { 257 | content: "\ea2c"; 258 | } 259 | 260 | .lni-ban::before { 261 | content: "\ea2d"; 262 | } 263 | 264 | .lni-bar-chart::before { 265 | content: "\ea2e"; 266 | } 267 | 268 | .lni-basketball::before { 269 | content: "\ea2f"; 270 | } 271 | 272 | .lni-behance-original::before { 273 | content: "\ea30"; 274 | } 275 | 276 | .lni-behance::before { 277 | content: "\ea31"; 278 | } 279 | 280 | .lni-bi-cycle::before { 281 | content: "\ea32"; 282 | } 283 | 284 | .lni-bitbucket::before { 285 | content: "\ea33"; 286 | } 287 | 288 | .lni-bitcoin::before { 289 | content: "\ea34"; 290 | } 291 | 292 | .lni-blackboard::before { 293 | content: "\ea35"; 294 | } 295 | 296 | .lni-blogger::before { 297 | content: "\ea36"; 298 | } 299 | 300 | .lni-bluetooth-original::before { 301 | content: "\ea37"; 302 | } 303 | 304 | .lni-bluetooth::before { 305 | content: "\ea38"; 306 | } 307 | 308 | .lni-bold::before { 309 | content: "\ea39"; 310 | } 311 | 312 | .lni-bolt-alt::before { 313 | content: "\ea3a"; 314 | } 315 | 316 | .lni-bolt::before { 317 | content: "\ea40"; 318 | } 319 | 320 | .lni-book::before { 321 | content: "\ea3b"; 322 | } 323 | 324 | .lni-bookmark-alt::before { 325 | content: "\ea3c"; 326 | } 327 | 328 | .lni-bookmark::before { 329 | content: "\ea3d"; 330 | } 331 | 332 | .lni-bootstrap::before { 333 | content: "\ea3e"; 334 | } 335 | 336 | .lni-bricks::before { 337 | content: "\ea3f"; 338 | } 339 | 340 | .lni-bridge::before { 341 | content: "\ea41"; 342 | } 343 | 344 | .lni-briefcase::before { 345 | content: "\ea42"; 346 | } 347 | 348 | .lni-brush-alt::before { 349 | content: "\ea43"; 350 | } 351 | 352 | .lni-brush::before { 353 | content: "\ea44"; 354 | } 355 | 356 | .lni-btc::before { 357 | content: "\ea45"; 358 | } 359 | 360 | .lni-bubble::before { 361 | content: "\ea46"; 362 | } 363 | 364 | .lni-bug::before { 365 | content: "\ea47"; 366 | } 367 | 368 | .lni-bulb::before { 369 | content: "\ea48"; 370 | } 371 | 372 | .lni-bullhorn::before { 373 | content: "\ea49"; 374 | } 375 | 376 | .lni-burger::before { 377 | content: "\ea4a"; 378 | } 379 | 380 | .lni-bus::before { 381 | content: "\ea4b"; 382 | } 383 | 384 | .lni-cake::before { 385 | content: "\ea4c"; 386 | } 387 | 388 | .lni-calculator::before { 389 | content: "\ea4d"; 390 | } 391 | 392 | .lni-calendar::before { 393 | content: "\ea4e"; 394 | } 395 | 396 | .lni-camera::before { 397 | content: "\ea4f"; 398 | } 399 | 400 | .lni-candy-cane::before { 401 | content: "\ea50"; 402 | } 403 | 404 | .lni-candy::before { 405 | content: "\ea51"; 406 | } 407 | 408 | .lni-capsule::before { 409 | content: "\ea52"; 410 | } 411 | 412 | .lni-car-alt::before { 413 | content: "\ea53"; 414 | } 415 | 416 | .lni-car::before { 417 | content: "\ea54"; 418 | } 419 | 420 | .lni-caravan::before { 421 | content: "\ea55"; 422 | } 423 | 424 | .lni-cart-full::before { 425 | content: "\ea56"; 426 | } 427 | 428 | .lni-cart::before { 429 | content: "\ea57"; 430 | } 431 | 432 | .lni-certificate::before { 433 | content: "\ea58"; 434 | } 435 | 436 | .lni-check-box::before { 437 | content: "\ea59"; 438 | } 439 | 440 | .lni-checkmark-circle::before { 441 | content: "\ea5a"; 442 | } 443 | 444 | .lni-checkmark::before { 445 | content: "\ea5b"; 446 | } 447 | 448 | .lni-chef-hat::before { 449 | content: "\ea5c"; 450 | } 451 | 452 | .lni-chevron-down-circle::before { 453 | content: "\ea5d"; 454 | } 455 | 456 | .lni-chevron-down::before { 457 | content: "\ea5e"; 458 | } 459 | 460 | .lni-chevron-left-circle::before { 461 | content: "\ea5f"; 462 | } 463 | 464 | .lni-chevron-left::before { 465 | content: "\ea60"; 466 | } 467 | 468 | .lni-chevron-right-circle::before { 469 | content: "\ea61"; 470 | } 471 | 472 | .lni-chevron-right::before { 473 | content: "\ea62"; 474 | } 475 | 476 | .lni-chevron-up-circle::before { 477 | content: "\ea63"; 478 | } 479 | 480 | .lni-chevron-up::before { 481 | content: "\ea64"; 482 | } 483 | 484 | .lni-chrome::before { 485 | content: "\ea65"; 486 | } 487 | 488 | .lni-chromecast::before { 489 | content: "\ea66"; 490 | } 491 | 492 | .lni-circle-minus::before { 493 | content: "\ea67"; 494 | } 495 | 496 | .lni-circle-plus::before { 497 | content: "\ea68"; 498 | } 499 | 500 | .lni-clipboard::before { 501 | content: "\ea69"; 502 | } 503 | 504 | .lni-close::before { 505 | content: "\ea6a"; 506 | } 507 | 508 | .lni-cloud-check::before { 509 | content: "\ea6b"; 510 | } 511 | 512 | .lni-cloud-download::before { 513 | content: "\ea6c"; 514 | } 515 | 516 | .lni-cloud-network::before { 517 | content: "\ea6d"; 518 | } 519 | 520 | .lni-cloud-sync::before { 521 | content: "\ea6e"; 522 | } 523 | 524 | .lni-cloud-upload::before { 525 | content: "\ea6f"; 526 | } 527 | 528 | .lni-cloud::before { 529 | content: "\ea70"; 530 | } 531 | 532 | .lni-cloudflare::before { 533 | content: "\ea71"; 534 | } 535 | 536 | .lni-cloudy-sun::before { 537 | content: "\ea72"; 538 | } 539 | 540 | .lni-code-alt::before { 541 | content: "\ea73"; 542 | } 543 | 544 | .lni-code::before { 545 | content: "\ea74"; 546 | } 547 | 548 | .lni-codepen::before { 549 | content: "\ea75"; 550 | } 551 | 552 | .lni-coffee-cup::before { 553 | content: "\ea76"; 554 | } 555 | 556 | .lni-cog::before { 557 | content: "\ea77"; 558 | } 559 | 560 | .lni-cogs::before { 561 | content: "\ea78"; 562 | } 563 | 564 | .lni-coin::before { 565 | content: "\ea79"; 566 | } 567 | 568 | .lni-comments-alt::before { 569 | content: "\ea7a"; 570 | } 571 | 572 | .lni-comments-reply::before { 573 | content: "\ea7b"; 574 | } 575 | 576 | .lni-comments::before { 577 | content: "\ea7c"; 578 | } 579 | 580 | .lni-compass::before { 581 | content: "\ea7d"; 582 | } 583 | 584 | .lni-connectdevelop::before { 585 | content: "\ea7e"; 586 | } 587 | 588 | .lni-construction-hammer::before { 589 | content: "\ea7f"; 590 | } 591 | 592 | .lni-construction::before { 593 | content: "\ea80"; 594 | } 595 | 596 | .lni-consulting::before { 597 | content: "\ea81"; 598 | } 599 | 600 | .lni-control-panel::before { 601 | content: "\ea82"; 602 | } 603 | 604 | .lni-cool::before { 605 | content: "\ea83"; 606 | } 607 | 608 | .lni-cpanel::before { 609 | content: "\ea84"; 610 | } 611 | 612 | .lni-creative-commons::before { 613 | content: "\ea85"; 614 | } 615 | 616 | .lni-credit-cards::before { 617 | content: "\ea86"; 618 | } 619 | 620 | .lni-crop::before { 621 | content: "\ea87"; 622 | } 623 | 624 | .lni-cross-circle::before { 625 | content: "\ea88"; 626 | } 627 | 628 | .lni-crown::before { 629 | content: "\ea89"; 630 | } 631 | 632 | .lni-css3::before { 633 | content: "\ea8a"; 634 | } 635 | 636 | .lni-cup::before { 637 | content: "\ea8b"; 638 | } 639 | 640 | .lni-customer::before { 641 | content: "\ea8c"; 642 | } 643 | 644 | .lni-cut::before { 645 | content: "\ea8d"; 646 | } 647 | 648 | .lni-dashboard::before { 649 | content: "\ea8e"; 650 | } 651 | 652 | .lni-database::before { 653 | content: "\ea8f"; 654 | } 655 | 656 | .lni-delivery::before { 657 | content: "\ea90"; 658 | } 659 | 660 | .lni-dev::before { 661 | content: "\ea91"; 662 | } 663 | 664 | .lni-diamond-alt::before { 665 | content: "\ea92"; 666 | } 667 | 668 | .lni-diamond::before { 669 | content: "\ea93"; 670 | } 671 | 672 | .lni-digitalocean::before { 673 | content: "\ea94"; 674 | } 675 | 676 | .lni-diners-club::before { 677 | content: "\ea95"; 678 | } 679 | 680 | .lni-dinner::before { 681 | content: "\ea96"; 682 | } 683 | 684 | .lni-direction-alt::before { 685 | content: "\ea97"; 686 | } 687 | 688 | .lni-direction-ltr::before { 689 | content: "\ea98"; 690 | } 691 | 692 | .lni-direction-rtl::before { 693 | content: "\ea99"; 694 | } 695 | 696 | .lni-direction::before { 697 | content: "\ea9a"; 698 | } 699 | 700 | .lni-discord::before { 701 | content: "\ea9b"; 702 | } 703 | 704 | .lni-discover::before { 705 | content: "\ea9c"; 706 | } 707 | 708 | .lni-display-alt::before { 709 | content: "\ea9d"; 710 | } 711 | 712 | .lni-display::before { 713 | content: "\ea9e"; 714 | } 715 | 716 | .lni-docker::before { 717 | content: "\ea9f"; 718 | } 719 | 720 | .lni-dollar::before { 721 | content: "\eaa0"; 722 | } 723 | 724 | .lni-domain::before { 725 | content: "\eaa1"; 726 | } 727 | 728 | .lni-download::before { 729 | content: "\eaa2"; 730 | } 731 | 732 | .lni-dribbble::before { 733 | content: "\eaa3"; 734 | } 735 | 736 | .lni-drop::before { 737 | content: "\eaa4"; 738 | } 739 | 740 | .lni-dropbox-original::before { 741 | content: "\eaa5"; 742 | } 743 | 744 | .lni-dropbox::before { 745 | content: "\eaa6"; 746 | } 747 | 748 | .lni-drupal-original::before { 749 | content: "\eaa7"; 750 | } 751 | 752 | .lni-drupal::before { 753 | content: "\eaa8"; 754 | } 755 | 756 | .lni-dumbbell::before { 757 | content: "\eaa9"; 758 | } 759 | 760 | .lni-edge::before { 761 | content: "\eaaa"; 762 | } 763 | 764 | .lni-empty-file::before { 765 | content: "\eaab"; 766 | } 767 | 768 | .lni-enter::before { 769 | content: "\eaac"; 770 | } 771 | 772 | .lni-envato::before { 773 | content: "\eaad"; 774 | } 775 | 776 | .lni-envelope::before { 777 | content: "\eaae"; 778 | } 779 | 780 | .lni-eraser::before { 781 | content: "\eaaf"; 782 | } 783 | 784 | .lni-euro::before { 785 | content: "\eab0"; 786 | } 787 | 788 | .lni-exit-down::before { 789 | content: "\eab1"; 790 | } 791 | 792 | .lni-exit-up::before { 793 | content: "\eab2"; 794 | } 795 | 796 | .lni-exit::before { 797 | content: "\eab3"; 798 | } 799 | 800 | .lni-eye::before { 801 | content: "\eab4"; 802 | } 803 | 804 | .lni-facebook-filled::before { 805 | content: "\eab5"; 806 | } 807 | 808 | .lni-facebook-messenger::before { 809 | content: "\eab6"; 810 | } 811 | 812 | .lni-facebook-original::before { 813 | content: "\eab7"; 814 | } 815 | 816 | .lni-facebook-oval::before { 817 | content: "\eab8"; 818 | } 819 | 820 | .lni-facebook::before { 821 | content: "\eab9"; 822 | } 823 | 824 | .lni-figma::before { 825 | content: "\eaba"; 826 | } 827 | 828 | .lni-files::before { 829 | content: "\eabb"; 830 | } 831 | 832 | .lni-firefox-original::before { 833 | content: "\eabc"; 834 | } 835 | 836 | .lni-firefox::before { 837 | content: "\eabd"; 838 | } 839 | 840 | .lni-fireworks::before { 841 | content: "\eabe"; 842 | } 843 | 844 | .lni-first-aid::before { 845 | content: "\eabf"; 846 | } 847 | 848 | .lni-flag-alt::before { 849 | content: "\eac0"; 850 | } 851 | 852 | .lni-flag::before { 853 | content: "\eac1"; 854 | } 855 | 856 | .lni-flags::before { 857 | content: "\eac2"; 858 | } 859 | 860 | .lni-flickr::before { 861 | content: "\eac3"; 862 | } 863 | 864 | .lni-flower::before { 865 | content: "\eac4"; 866 | } 867 | 868 | .lni-folder::before { 869 | content: "\eac5"; 870 | } 871 | 872 | .lni-forward::before { 873 | content: "\eac6"; 874 | } 875 | 876 | .lni-frame-expand::before { 877 | content: "\eac7"; 878 | } 879 | 880 | .lni-fresh-juice::before { 881 | content: "\eac8"; 882 | } 883 | 884 | .lni-friendly::before { 885 | content: "\eac9"; 886 | } 887 | 888 | .lni-full-screen::before { 889 | content: "\eaca"; 890 | } 891 | 892 | .lni-funnel::before { 893 | content: "\eacb"; 894 | } 895 | 896 | .lni-gallery::before { 897 | content: "\eacc"; 898 | } 899 | 900 | .lni-game::before { 901 | content: "\eacd"; 902 | } 903 | 904 | .lni-gatsby::before { 905 | content: "\eace"; 906 | } 907 | 908 | .lni-gift::before { 909 | content: "\eacf"; 910 | } 911 | 912 | .lni-git::before { 913 | content: "\ead0"; 914 | } 915 | 916 | .lni-github-original::before { 917 | content: "\ead1"; 918 | } 919 | 920 | .lni-github::before { 921 | content: "\ead2"; 922 | } 923 | 924 | .lni-goodreads::before { 925 | content: "\ead3"; 926 | } 927 | 928 | .lni-google-drive::before { 929 | content: "\ead4"; 930 | } 931 | 932 | .lni-google-pay::before { 933 | content: "\ead5"; 934 | } 935 | 936 | .lni-google-wallet::before { 937 | content: "\ead6"; 938 | } 939 | 940 | .lni-google::before { 941 | content: "\ead7"; 942 | } 943 | 944 | .lni-graduation::before { 945 | content: "\ead8"; 946 | } 947 | 948 | .lni-graph::before { 949 | content: "\ead9"; 950 | } 951 | 952 | .lni-grid-alt::before { 953 | content: "\eada"; 954 | } 955 | 956 | .lni-grid::before { 957 | content: "\eadb"; 958 | } 959 | 960 | .lni-grow::before { 961 | content: "\eadc"; 962 | } 963 | 964 | .lni-hacker-news::before { 965 | content: "\eadd"; 966 | } 967 | 968 | .lni-hammer::before { 969 | content: "\eade"; 970 | } 971 | 972 | .lni-hand::before { 973 | content: "\eadf"; 974 | } 975 | 976 | .lni-handshake::before { 977 | content: "\eae0"; 978 | } 979 | 980 | .lni-happy::before { 981 | content: "\eae1"; 982 | } 983 | 984 | .lni-harddrive::before { 985 | content: "\eae2"; 986 | } 987 | 988 | .lni-headphone-alt::before { 989 | content: "\eae3"; 990 | } 991 | 992 | .lni-headphone::before { 993 | content: "\eae4"; 994 | } 995 | 996 | .lni-heart-filled::before { 997 | content: "\eae5"; 998 | } 999 | 1000 | .lni-heart-monitor::before { 1001 | content: "\eae6"; 1002 | } 1003 | 1004 | .lni-heart::before { 1005 | content: "\eae7"; 1006 | } 1007 | 1008 | .lni-helicopter::before { 1009 | content: "\eae8"; 1010 | } 1011 | 1012 | .lni-helmet::before { 1013 | content: "\eae9"; 1014 | } 1015 | 1016 | .lni-help::before { 1017 | content: "\eaea"; 1018 | } 1019 | 1020 | .lni-highlight-alt::before { 1021 | content: "\eaeb"; 1022 | } 1023 | 1024 | .lni-highlight::before { 1025 | content: "\eaec"; 1026 | } 1027 | 1028 | .lni-home::before { 1029 | content: "\eaed"; 1030 | } 1031 | 1032 | .lni-hospital::before { 1033 | content: "\eaee"; 1034 | } 1035 | 1036 | .lni-hourglass::before { 1037 | content: "\eaef"; 1038 | } 1039 | 1040 | .lni-html5::before { 1041 | content: "\eaf0"; 1042 | } 1043 | 1044 | .lni-image::before { 1045 | content: "\eaf1"; 1046 | } 1047 | 1048 | .lni-imdb::before { 1049 | content: "\eaf2"; 1050 | } 1051 | 1052 | .lni-inbox::before { 1053 | content: "\eaf3"; 1054 | } 1055 | 1056 | .lni-indent-decrease::before { 1057 | content: "\eaf4"; 1058 | } 1059 | 1060 | .lni-indent-increase::before { 1061 | content: "\eaf5"; 1062 | } 1063 | 1064 | .lni-infinite::before { 1065 | content: "\eaf6"; 1066 | } 1067 | 1068 | .lni-information::before { 1069 | content: "\eaf7"; 1070 | } 1071 | 1072 | .lni-instagram-filled::before { 1073 | content: "\eaf8"; 1074 | } 1075 | 1076 | .lni-instagram-original::before { 1077 | content: "\eaf9"; 1078 | } 1079 | 1080 | .lni-instagram::before { 1081 | content: "\eafa"; 1082 | } 1083 | 1084 | .lni-invention::before { 1085 | content: "\eafb"; 1086 | } 1087 | 1088 | .lni-invest-monitor::before { 1089 | content: "\eafc"; 1090 | } 1091 | 1092 | .lni-investment::before { 1093 | content: "\eafd"; 1094 | } 1095 | 1096 | .lni-island::before { 1097 | content: "\eafe"; 1098 | } 1099 | 1100 | .lni-italic::before { 1101 | content: "\eaff"; 1102 | } 1103 | 1104 | .lni-java::before { 1105 | content: "\eb00"; 1106 | } 1107 | 1108 | .lni-javascript::before { 1109 | content: "\eb01"; 1110 | } 1111 | 1112 | .lni-jcb::before { 1113 | content: "\eb02"; 1114 | } 1115 | 1116 | .lni-joomla-original::before { 1117 | content: "\eb03"; 1118 | } 1119 | 1120 | .lni-joomla::before { 1121 | content: "\eb04"; 1122 | } 1123 | 1124 | .lni-jsfiddle::before { 1125 | content: "\eb05"; 1126 | } 1127 | 1128 | .lni-juice::before { 1129 | content: "\eb06"; 1130 | } 1131 | 1132 | .lni-key::before { 1133 | content: "\eb07"; 1134 | } 1135 | 1136 | .lni-keyboard::before { 1137 | content: "\eb08"; 1138 | } 1139 | 1140 | .lni-keyword-research::before { 1141 | content: "\eb09"; 1142 | } 1143 | 1144 | .lni-laptop-phone::before { 1145 | content: "\eb0a"; 1146 | } 1147 | 1148 | .lni-laptop::before { 1149 | content: "\eb0b"; 1150 | } 1151 | 1152 | .lni-laravel::before { 1153 | content: "\eb0c"; 1154 | } 1155 | 1156 | .lni-layers::before { 1157 | content: "\eb0d"; 1158 | } 1159 | 1160 | .lni-layout::before { 1161 | content: "\eb0e"; 1162 | } 1163 | 1164 | .lni-leaf::before { 1165 | content: "\eb0f"; 1166 | } 1167 | 1168 | .lni-library::before { 1169 | content: "\eb10"; 1170 | } 1171 | 1172 | .lni-license::before { 1173 | content: "\eb11"; 1174 | } 1175 | 1176 | .lni-lifering::before { 1177 | content: "\eb12"; 1178 | } 1179 | 1180 | .lni-line-dashed::before { 1181 | content: "\eb13"; 1182 | } 1183 | 1184 | .lni-line-dotted::before { 1185 | content: "\eb14"; 1186 | } 1187 | 1188 | .lni-line-double::before { 1189 | content: "\eb15"; 1190 | } 1191 | 1192 | .lni-line-spacing::before { 1193 | content: "\eb16"; 1194 | } 1195 | 1196 | .lni-line::before { 1197 | content: "\eb17"; 1198 | } 1199 | 1200 | .lni-lineicons-alt::before { 1201 | content: "\eb18"; 1202 | } 1203 | 1204 | .lni-lineicons::before { 1205 | content: "\eb19"; 1206 | } 1207 | 1208 | .lni-link::before { 1209 | content: "\eb1a"; 1210 | } 1211 | 1212 | .lni-linkedin-original::before { 1213 | content: "\eb1b"; 1214 | } 1215 | 1216 | .lni-linkedin::before { 1217 | content: "\eb1c"; 1218 | } 1219 | 1220 | .lni-list::before { 1221 | content: "\eb1d"; 1222 | } 1223 | 1224 | .lni-lock-alt::before { 1225 | content: "\eb1e"; 1226 | } 1227 | 1228 | .lni-lock::before { 1229 | content: "\eb1f"; 1230 | } 1231 | 1232 | .lni-magento::before { 1233 | content: "\eb20"; 1234 | } 1235 | 1236 | .lni-magnet::before { 1237 | content: "\eb21"; 1238 | } 1239 | 1240 | .lni-magnifier::before { 1241 | content: "\eb22"; 1242 | } 1243 | 1244 | .lni-mailchimp::before { 1245 | content: "\eb23"; 1246 | } 1247 | 1248 | .lni-map-marker::before { 1249 | content: "\eb24"; 1250 | } 1251 | 1252 | .lni-map::before { 1253 | content: "\eb25"; 1254 | } 1255 | 1256 | .lni-markdown::before { 1257 | content: "\eb26"; 1258 | } 1259 | 1260 | .lni-mashroom::before { 1261 | content: "\eb27"; 1262 | } 1263 | 1264 | .lni-mastercard::before { 1265 | content: "\eb28"; 1266 | } 1267 | 1268 | .lni-medium::before { 1269 | content: "\eb29"; 1270 | } 1271 | 1272 | .lni-menu::before { 1273 | content: "\eb2a"; 1274 | } 1275 | 1276 | .lni-mic::before { 1277 | content: "\eb2b"; 1278 | } 1279 | 1280 | .lni-microphone::before { 1281 | content: "\eb2c"; 1282 | } 1283 | 1284 | .lni-microscope::before { 1285 | content: "\eb2d"; 1286 | } 1287 | 1288 | .lni-microsoft-edge::before { 1289 | content: "\eb2e"; 1290 | } 1291 | 1292 | .lni-microsoft::before { 1293 | content: "\eb2f"; 1294 | } 1295 | 1296 | .lni-minus::before { 1297 | content: "\eb30"; 1298 | } 1299 | 1300 | .lni-mobile::before { 1301 | content: "\eb31"; 1302 | } 1303 | 1304 | .lni-money-location::before { 1305 | content: "\eb32"; 1306 | } 1307 | 1308 | .lni-money-protection::before { 1309 | content: "\eb33"; 1310 | } 1311 | 1312 | .lni-more-alt::before { 1313 | content: "\eb34"; 1314 | } 1315 | 1316 | .lni-more::before { 1317 | content: "\eb35"; 1318 | } 1319 | 1320 | .lni-mouse::before { 1321 | content: "\eb36"; 1322 | } 1323 | 1324 | .lni-move::before { 1325 | content: "\eb37"; 1326 | } 1327 | 1328 | .lni-music::before { 1329 | content: "\eb38"; 1330 | } 1331 | 1332 | .lni-netlify::before { 1333 | content: "\eb39"; 1334 | } 1335 | 1336 | .lni-network::before { 1337 | content: "\eb3a"; 1338 | } 1339 | 1340 | .lni-night::before { 1341 | content: "\eb3b"; 1342 | } 1343 | 1344 | .lni-nodejs-alt::before { 1345 | content: "\eb3c"; 1346 | } 1347 | 1348 | .lni-nodejs::before { 1349 | content: "\eb3d"; 1350 | } 1351 | 1352 | .lni-notepad::before { 1353 | content: "\eb3e"; 1354 | } 1355 | 1356 | .lni-npm::before { 1357 | content: "\eb3f"; 1358 | } 1359 | 1360 | .lni-offer::before { 1361 | content: "\eb40"; 1362 | } 1363 | 1364 | .lni-opera::before { 1365 | content: "\eb41"; 1366 | } 1367 | 1368 | .lni-package::before { 1369 | content: "\eb42"; 1370 | } 1371 | 1372 | .lni-page-break::before { 1373 | content: "\eb43"; 1374 | } 1375 | 1376 | .lni-pagination::before { 1377 | content: "\eb44"; 1378 | } 1379 | 1380 | .lni-paint-bucket::before { 1381 | content: "\eb45"; 1382 | } 1383 | 1384 | .lni-paint-roller::before { 1385 | content: "\eb46"; 1386 | } 1387 | 1388 | .lni-pallet::before { 1389 | content: "\eb47"; 1390 | } 1391 | 1392 | .lni-paperclip::before { 1393 | content: "\eb48"; 1394 | } 1395 | 1396 | .lni-patreon::before { 1397 | content: "\eb49"; 1398 | } 1399 | 1400 | .lni-pause::before { 1401 | content: "\eb4a"; 1402 | } 1403 | 1404 | .lni-paypal-original::before { 1405 | content: "\eb4b"; 1406 | } 1407 | 1408 | .lni-paypal::before { 1409 | content: "\eb4c"; 1410 | } 1411 | 1412 | .lni-pencil-alt::before { 1413 | content: "\eb4d"; 1414 | } 1415 | 1416 | .lni-pencil::before { 1417 | content: "\eb4e"; 1418 | } 1419 | 1420 | .lni-phone-set::before { 1421 | content: "\eb4f"; 1422 | } 1423 | 1424 | .lni-phone::before { 1425 | content: "\eb50"; 1426 | } 1427 | 1428 | .lni-php::before { 1429 | content: "\eb51"; 1430 | } 1431 | 1432 | .lni-pie-chart::before { 1433 | content: "\eb52"; 1434 | } 1435 | 1436 | .lni-pilcrow::before { 1437 | content: "\eb53"; 1438 | } 1439 | 1440 | .lni-pin::before { 1441 | content: "\eb54"; 1442 | } 1443 | 1444 | .lni-pinterest::before { 1445 | content: "\eb55"; 1446 | } 1447 | 1448 | .lni-pizza::before { 1449 | content: "\eb56"; 1450 | } 1451 | 1452 | .lni-plane::before { 1453 | content: "\eb57"; 1454 | } 1455 | 1456 | .lni-play-store::before { 1457 | content: "\eb58"; 1458 | } 1459 | 1460 | .lni-play::before { 1461 | content: "\eb59"; 1462 | } 1463 | 1464 | .lni-playstation::before { 1465 | content: "\eb5a"; 1466 | } 1467 | 1468 | .lni-plug::before { 1469 | content: "\eb5b"; 1470 | } 1471 | 1472 | .lni-plus::before { 1473 | content: "\eb5c"; 1474 | } 1475 | 1476 | .lni-pointer-down::before { 1477 | content: "\eb5d"; 1478 | } 1479 | 1480 | .lni-pointer-left::before { 1481 | content: "\eb5e"; 1482 | } 1483 | 1484 | .lni-pointer-right::before { 1485 | content: "\eb5f"; 1486 | } 1487 | 1488 | .lni-pointer-top::before { 1489 | content: "\eb60"; 1490 | } 1491 | 1492 | .lni-pointer::before { 1493 | content: "\eb61"; 1494 | } 1495 | 1496 | .lni-popup::before { 1497 | content: "\eb62"; 1498 | } 1499 | 1500 | .lni-postcard::before { 1501 | content: "\eb63"; 1502 | } 1503 | 1504 | .lni-pound::before { 1505 | content: "\eb64"; 1506 | } 1507 | 1508 | .lni-power-switch::before { 1509 | content: "\eb65"; 1510 | } 1511 | 1512 | .lni-printer::before { 1513 | content: "\eb66"; 1514 | } 1515 | 1516 | .lni-producthunt::before { 1517 | content: "\eb67"; 1518 | } 1519 | 1520 | .lni-protection::before { 1521 | content: "\eb68"; 1522 | } 1523 | 1524 | .lni-pulse::before { 1525 | content: "\eb69"; 1526 | } 1527 | 1528 | .lni-pyramids::before { 1529 | content: "\eb6a"; 1530 | } 1531 | 1532 | .lni-python::before { 1533 | content: "\eb6b"; 1534 | } 1535 | 1536 | .lni-question-circle::before { 1537 | content: "\eb6c"; 1538 | } 1539 | 1540 | .lni-quora::before { 1541 | content: "\eb6d"; 1542 | } 1543 | 1544 | .lni-quotation::before { 1545 | content: "\eb6e"; 1546 | } 1547 | 1548 | .lni-radio-button::before { 1549 | content: "\eb6f"; 1550 | } 1551 | 1552 | .lni-rain::before { 1553 | content: "\eb70"; 1554 | } 1555 | 1556 | .lni-react::before { 1557 | content: "\eb73"; 1558 | } 1559 | 1560 | .lni-reddit::before { 1561 | content: "\eb71"; 1562 | } 1563 | 1564 | .lni-reload::before { 1565 | content: "\eb72"; 1566 | } 1567 | 1568 | .lni-remove-file::before { 1569 | content: "\eb74"; 1570 | } 1571 | 1572 | .lni-reply::before { 1573 | content: "\eb75"; 1574 | } 1575 | 1576 | .lni-restaurant::before { 1577 | content: "\eb76"; 1578 | } 1579 | 1580 | .lni-revenue::before { 1581 | content: "\eb77"; 1582 | } 1583 | 1584 | .lni-road::before { 1585 | content: "\eb78"; 1586 | } 1587 | 1588 | .lni-rocket::before { 1589 | content: "\eb79"; 1590 | } 1591 | 1592 | .lni-rss-feed::before { 1593 | content: "\eb7a"; 1594 | } 1595 | 1596 | .lni-ruler-alt::before { 1597 | content: "\eb7b"; 1598 | } 1599 | 1600 | .lni-ruler-pencil::before { 1601 | content: "\eb7c"; 1602 | } 1603 | 1604 | .lni-ruler::before { 1605 | content: "\eb7d"; 1606 | } 1607 | 1608 | .lni-rupee::before { 1609 | content: "\eb7e"; 1610 | } 1611 | 1612 | .lni-sad::before { 1613 | content: "\eb7f"; 1614 | } 1615 | 1616 | .lni-save::before { 1617 | content: "\eb80"; 1618 | } 1619 | 1620 | .lni-school-bench-alt::before { 1621 | content: "\eb81"; 1622 | } 1623 | 1624 | .lni-school-bench::before { 1625 | content: "\eb82"; 1626 | } 1627 | 1628 | .lni-scooter::before { 1629 | content: "\eb83"; 1630 | } 1631 | 1632 | .lni-scroll-down::before { 1633 | content: "\eb84"; 1634 | } 1635 | 1636 | .lni-search-alt::before { 1637 | content: "\eb85"; 1638 | } 1639 | 1640 | .lni-search::before { 1641 | content: "\eb86"; 1642 | } 1643 | 1644 | .lni-select::before { 1645 | content: "\eb87"; 1646 | } 1647 | 1648 | .lni-seo::before { 1649 | content: "\eb88"; 1650 | } 1651 | 1652 | .lni-service::before { 1653 | content: "\eb89"; 1654 | } 1655 | 1656 | .lni-share-alt-1::before { 1657 | content: "\eb8a"; 1658 | } 1659 | 1660 | .lni-share-alt::before { 1661 | content: "\eb8b"; 1662 | } 1663 | 1664 | .lni-share::before { 1665 | content: "\eb8c"; 1666 | } 1667 | 1668 | .lni-shield::before { 1669 | content: "\eb8d"; 1670 | } 1671 | 1672 | .lni-shift-left::before { 1673 | content: "\eb8e"; 1674 | } 1675 | 1676 | .lni-shift-right::before { 1677 | content: "\eb8f"; 1678 | } 1679 | 1680 | .lni-ship::before { 1681 | content: "\eb90"; 1682 | } 1683 | 1684 | .lni-shopify::before { 1685 | content: "\eb91"; 1686 | } 1687 | 1688 | .lni-shopping-basket::before { 1689 | content: "\eb92"; 1690 | } 1691 | 1692 | .lni-shortcode::before { 1693 | content: "\eb93"; 1694 | } 1695 | 1696 | .lni-shovel::before { 1697 | content: "\eb94"; 1698 | } 1699 | 1700 | .lni-shuffle::before { 1701 | content: "\eb95"; 1702 | } 1703 | 1704 | .lni-signal::before { 1705 | content: "\eb96"; 1706 | } 1707 | 1708 | .lni-sketch::before { 1709 | content: "\eb97"; 1710 | } 1711 | 1712 | .lni-skipping-rope::before { 1713 | content: "\eb98"; 1714 | } 1715 | 1716 | .lni-skype::before { 1717 | content: "\eb99"; 1718 | } 1719 | 1720 | .lni-slack-line::before { 1721 | content: "\eb9a"; 1722 | } 1723 | 1724 | .lni-slack::before { 1725 | content: "\eb9b"; 1726 | } 1727 | 1728 | .lni-slice::before { 1729 | content: "\eb9c"; 1730 | } 1731 | 1732 | .lni-slideshare::before { 1733 | content: "\eb9d"; 1734 | } 1735 | 1736 | .lni-slim::before { 1737 | content: "\eb9e"; 1738 | } 1739 | 1740 | .lni-smile::before { 1741 | content: "\eb9f"; 1742 | } 1743 | 1744 | .lni-snapchat::before { 1745 | content: "\eba0"; 1746 | } 1747 | 1748 | .lni-sort-alpha-asc::before { 1749 | content: "\eba1"; 1750 | } 1751 | 1752 | .lni-sort-amount-asc::before { 1753 | content: "\eba2"; 1754 | } 1755 | 1756 | .lni-sort-amount-dsc::before { 1757 | content: "\eba3"; 1758 | } 1759 | 1760 | .lni-soundcloud-original::before { 1761 | content: "\eba4"; 1762 | } 1763 | 1764 | .lni-soundcloud::before { 1765 | content: "\eba5"; 1766 | } 1767 | 1768 | .lni-speechless::before { 1769 | content: "\eba6"; 1770 | } 1771 | 1772 | .lni-spellcheck::before { 1773 | content: "\eba7"; 1774 | } 1775 | 1776 | .lni-spinner-arrow::before { 1777 | content: "\eba8"; 1778 | } 1779 | 1780 | .lni-spinner-solid::before { 1781 | content: "\eba9"; 1782 | } 1783 | 1784 | .lni-spinner::before { 1785 | content: "\ebaa"; 1786 | } 1787 | 1788 | .lni-spotify-original::before { 1789 | content: "\ebab"; 1790 | } 1791 | 1792 | .lni-spotify::before { 1793 | content: "\ebac"; 1794 | } 1795 | 1796 | .lni-spray::before { 1797 | content: "\ebad"; 1798 | } 1799 | 1800 | .lni-sprout::before { 1801 | content: "\ebae"; 1802 | } 1803 | 1804 | .lni-squarespace::before { 1805 | content: "\ebaf"; 1806 | } 1807 | 1808 | .lni-stackoverflow::before { 1809 | content: "\ebb0"; 1810 | } 1811 | 1812 | .lni-stamp::before { 1813 | content: "\ebb1"; 1814 | } 1815 | 1816 | .lni-star-empty::before { 1817 | content: "\ebb2"; 1818 | } 1819 | 1820 | .lni-star-filled::before { 1821 | content: "\ebb3"; 1822 | } 1823 | 1824 | .lni-star-half::before { 1825 | content: "\ebb4"; 1826 | } 1827 | 1828 | .lni-star::before { 1829 | content: "\ebb5"; 1830 | } 1831 | 1832 | .lni-stats-down::before { 1833 | content: "\ebb6"; 1834 | } 1835 | 1836 | .lni-stats-up::before { 1837 | content: "\ebb7"; 1838 | } 1839 | 1840 | .lni-steam::before { 1841 | content: "\ebb8"; 1842 | } 1843 | 1844 | .lni-sthethoscope::before { 1845 | content: "\ebb9"; 1846 | } 1847 | 1848 | .lni-stop::before { 1849 | content: "\ebba"; 1850 | } 1851 | 1852 | .lni-strikethrough::before { 1853 | content: "\ebbb"; 1854 | } 1855 | 1856 | .lni-stripe::before { 1857 | content: "\ebbc"; 1858 | } 1859 | 1860 | .lni-stumbleupon::before { 1861 | content: "\ebbd"; 1862 | } 1863 | 1864 | .lni-sun::before { 1865 | content: "\ebbe"; 1866 | } 1867 | 1868 | .lni-support::before { 1869 | content: "\ebbf"; 1870 | } 1871 | 1872 | .lni-surf-board::before { 1873 | content: "\ebc0"; 1874 | } 1875 | 1876 | .lni-suspect::before { 1877 | content: "\ebc1"; 1878 | } 1879 | 1880 | .lni-swift::before { 1881 | content: "\ebc2"; 1882 | } 1883 | 1884 | .lni-syringe::before { 1885 | content: "\ebc3"; 1886 | } 1887 | 1888 | .lni-tab::before { 1889 | content: "\ebc4"; 1890 | } 1891 | 1892 | .lni-tag::before { 1893 | content: "\ebc5"; 1894 | } 1895 | 1896 | .lni-target-customer::before { 1897 | content: "\ebc6"; 1898 | } 1899 | 1900 | .lni-target-revenue::before { 1901 | content: "\ebc7"; 1902 | } 1903 | 1904 | .lni-target::before { 1905 | content: "\ebc8"; 1906 | } 1907 | 1908 | .lni-taxi::before { 1909 | content: "\ebc9"; 1910 | } 1911 | 1912 | .lni-teabag::before { 1913 | content: "\ebca"; 1914 | } 1915 | 1916 | .lni-telegram-original::before { 1917 | content: "\ebcb"; 1918 | } 1919 | 1920 | .lni-telegram::before { 1921 | content: "\ebcc"; 1922 | } 1923 | 1924 | .lni-text-align-center::before { 1925 | content: "\ebcd"; 1926 | } 1927 | 1928 | .lni-text-align-justify::before { 1929 | content: "\ebce"; 1930 | } 1931 | 1932 | .lni-text-align-left::before { 1933 | content: "\ebcf"; 1934 | } 1935 | 1936 | .lni-text-align-right::before { 1937 | content: "\ebd0"; 1938 | } 1939 | 1940 | .lni-text-format-remove::before { 1941 | content: "\ebd4"; 1942 | } 1943 | 1944 | .lni-text-format::before { 1945 | content: "\ebd1"; 1946 | } 1947 | 1948 | .lni-thought::before { 1949 | content: "\ebd2"; 1950 | } 1951 | 1952 | .lni-thumbs-down::before { 1953 | content: "\ebd3"; 1954 | } 1955 | 1956 | .lni-thumbs-up::before { 1957 | content: "\ebd5"; 1958 | } 1959 | 1960 | .lni-thunder-alt::before { 1961 | content: "\ebd6"; 1962 | } 1963 | 1964 | .lni-thunder::before { 1965 | content: "\ebd7"; 1966 | } 1967 | 1968 | .lni-ticket-alt::before { 1969 | content: "\ebd8"; 1970 | } 1971 | 1972 | .lni-ticket::before { 1973 | content: "\ebd9"; 1974 | } 1975 | 1976 | .lni-tiktok::before { 1977 | content: "\ebda"; 1978 | } 1979 | 1980 | .lni-timer::before { 1981 | content: "\ebdb"; 1982 | } 1983 | 1984 | .lni-tounge::before { 1985 | content: "\ebdc"; 1986 | } 1987 | 1988 | .lni-train-alt::before { 1989 | content: "\ebdd"; 1990 | } 1991 | 1992 | .lni-train::before { 1993 | content: "\ebde"; 1994 | } 1995 | 1996 | .lni-trash-can::before { 1997 | content: "\ebdf"; 1998 | } 1999 | 2000 | .lni-travel::before { 2001 | content: "\ebe0"; 2002 | } 2003 | 2004 | .lni-tree::before { 2005 | content: "\ebe1"; 2006 | } 2007 | 2008 | .lni-trees::before { 2009 | content: "\ebe2"; 2010 | } 2011 | 2012 | .lni-trello::before { 2013 | content: "\ebe3"; 2014 | } 2015 | 2016 | .lni-trowel::before { 2017 | content: "\ebe4"; 2018 | } 2019 | 2020 | .lni-tshirt::before { 2021 | content: "\ebe5"; 2022 | } 2023 | 2024 | .lni-tumblr::before { 2025 | content: "\ebe6"; 2026 | } 2027 | 2028 | .lni-twitch::before { 2029 | content: "\ebe7"; 2030 | } 2031 | 2032 | .lni-twitter-filled::before { 2033 | content: "\ebe8"; 2034 | } 2035 | 2036 | .lni-twitter-original::before { 2037 | content: "\ebe9"; 2038 | } 2039 | 2040 | .lni-twitter::before { 2041 | content: "\ebea"; 2042 | } 2043 | 2044 | .lni-ubuntu::before { 2045 | content: "\ebeb"; 2046 | } 2047 | 2048 | .lni-underline::before { 2049 | content: "\ebec"; 2050 | } 2051 | 2052 | .lni-unlink::before { 2053 | content: "\ebed"; 2054 | } 2055 | 2056 | .lni-unlock::before { 2057 | content: "\ebee"; 2058 | } 2059 | 2060 | .lni-unsplash::before { 2061 | content: "\ebef"; 2062 | } 2063 | 2064 | .lni-upload::before { 2065 | content: "\ebf0"; 2066 | } 2067 | 2068 | .lni-user::before { 2069 | content: "\ebf1"; 2070 | } 2071 | 2072 | .lni-users::before { 2073 | content: "\ebf6"; 2074 | } 2075 | 2076 | .lni-ux::before { 2077 | content: "\ebf2"; 2078 | } 2079 | 2080 | .lni-vector::before { 2081 | content: "\ebf3"; 2082 | } 2083 | 2084 | .lni-video::before { 2085 | content: "\ebf4"; 2086 | } 2087 | 2088 | .lni-vimeo::before { 2089 | content: "\ebf5"; 2090 | } 2091 | 2092 | .lni-visa::before { 2093 | content: "\ebf7"; 2094 | } 2095 | 2096 | .lni-vk::before { 2097 | content: "\ebf8"; 2098 | } 2099 | 2100 | .lni-volume-high::before { 2101 | content: "\ebf9"; 2102 | } 2103 | 2104 | .lni-volume-low::before { 2105 | content: "\ebfa"; 2106 | } 2107 | 2108 | .lni-volume-medium::before { 2109 | content: "\ebfb"; 2110 | } 2111 | 2112 | .lni-volume-mute::before { 2113 | content: "\ebfc"; 2114 | } 2115 | 2116 | .lni-volume::before { 2117 | content: "\ebfd"; 2118 | } 2119 | 2120 | .lni-wallet::before { 2121 | content: "\ebfe"; 2122 | } 2123 | 2124 | .lni-warning::before { 2125 | content: "\ebff"; 2126 | } 2127 | 2128 | .lni-website-alt::before { 2129 | content: "\ec00"; 2130 | } 2131 | 2132 | .lni-website::before { 2133 | content: "\ec01"; 2134 | } 2135 | 2136 | .lni-wechat::before { 2137 | content: "\ec02"; 2138 | } 2139 | 2140 | .lni-weight::before { 2141 | content: "\ec03"; 2142 | } 2143 | 2144 | .lni-whatsapp::before { 2145 | content: "\ec04"; 2146 | } 2147 | 2148 | .lni-wheelbarrow::before { 2149 | content: "\ec05"; 2150 | } 2151 | 2152 | .lni-wheelchair::before { 2153 | content: "\ec06"; 2154 | } 2155 | 2156 | .lni-windows::before { 2157 | content: "\ec07"; 2158 | } 2159 | 2160 | .lni-wordpress-filled::before { 2161 | content: "\ec08"; 2162 | } 2163 | 2164 | .lni-wordpress::before { 2165 | content: "\ec09"; 2166 | } 2167 | 2168 | .lni-world-alt::before { 2169 | content: "\ec0a"; 2170 | } 2171 | 2172 | .lni-world::before { 2173 | content: "\ec0c"; 2174 | } 2175 | 2176 | .lni-write::before { 2177 | content: "\ec0b"; 2178 | } 2179 | 2180 | .lni-xbox::before { 2181 | content: "\ec0d"; 2182 | } 2183 | 2184 | .lni-yahoo::before { 2185 | content: "\ec0e"; 2186 | } 2187 | 2188 | .lni-ycombinator::before { 2189 | content: "\ec0f"; 2190 | } 2191 | 2192 | .lni-yen::before { 2193 | content: "\ec10"; 2194 | } 2195 | 2196 | .lni-youtube::before { 2197 | content: "\ec13"; 2198 | } 2199 | 2200 | .lni-zip::before { 2201 | content: "\ec11"; 2202 | } 2203 | 2204 | .lni-zoom-in::before { 2205 | content: "\ec12"; 2206 | } 2207 | 2208 | .lni-zoom-out::before { 2209 | content: "\ec14"; 2210 | } 2211 | 2212 | -------------------------------------------------------------------------------- /css/main.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | html { 4 | scroll-behavior: smooth; 5 | } 6 | 7 | body { 8 | font-family: "Sen", sans-serif; 9 | font-weight: normal; 10 | font-style: normal; 11 | color: rgba(0, 0, 0, 0.7); 12 | overflow-x: hidden; 13 | } 14 | 15 | * { 16 | margin: 0; 17 | padding: 0; 18 | -webkit-box-sizing: border-box; 19 | -moz-box-sizing: border-box; 20 | box-sizing: border-box; 21 | } 22 | 23 | a:focus, 24 | input:focus, 25 | textarea:focus, 26 | button:focus, 27 | .btn:focus, 28 | .btn.focus, 29 | .btn:not(:disabled):not(.disabled).active, 30 | .btn:not(:disabled):not(.disabled):active { 31 | text-decoration: none; 32 | outline: none; 33 | -webkit-box-shadow: none; 34 | -moz-box-shadow: none; 35 | box-shadow: none; 36 | } 37 | 38 | a:hover { 39 | color: #37C2CC; 40 | } 41 | 42 | a { 43 | -webkit-transition: all 0.3s ease-out 0s; 44 | -moz-transition: all 0.3s ease-out 0s; 45 | -ms-transition: all 0.3s ease-out 0s; 46 | -o-transition: all 0.3s ease-out 0s; 47 | transition: all 0.3s ease-out 0s; 48 | } 49 | 50 | a, 51 | a:focus, 52 | a:hover { 53 | text-decoration: none; 54 | } 55 | 56 | i, 57 | span, 58 | a { 59 | display: inline-block; 60 | } 61 | 62 | audio, 63 | canvas, 64 | iframe, 65 | img, 66 | svg, 67 | video { 68 | vertical-align: middle; 69 | } 70 | 71 | h1, 72 | h2, 73 | h3, 74 | .single-post-header, 75 | .blog-roll-card-header, 76 | h4, 77 | h5, 78 | h6 { 79 | font-weight: 700; 80 | margin: 0px; 81 | } 82 | 83 | h1 a, 84 | h2 a, 85 | h3 a, 86 | .single-post-header a, 87 | .blog-roll-card-header a, 88 | h4 a, 89 | h5 a, 90 | h6 a { 91 | color: inherit; 92 | } 93 | 94 | h1 { 95 | font-size: 55px; 96 | } 97 | 98 | h2 { 99 | font-size: 45px; 100 | } 101 | 102 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 103 | .section-title h2 { 104 | font-size: 38px; 105 | } 106 | } 107 | 108 | @media (max-width: 767px) { 109 | .section-title h2 { 110 | font-size: 38px; 111 | } 112 | } 113 | 114 | h3, .single-post-header, .blog-roll-card-header { 115 | font-size: 25px; 116 | } 117 | 118 | h4 { 119 | font-size: 20px; 120 | } 121 | 122 | h5 { 123 | font-size: 18px; 124 | } 125 | 126 | h6 { 127 | font-size: 16px; 128 | } 129 | 130 | ul, 131 | ol { 132 | margin: 0px; 133 | padding: 0px; 134 | list-style-type: none; 135 | } 136 | 137 | p { 138 | font-size: 16px; 139 | font-weight: 400; 140 | line-height: 25px; 141 | margin: 0px; 142 | } 143 | 144 | .img-bg { 145 | background-position: center center; 146 | background-size: cover; 147 | background-repeat: no-repeat; 148 | width: 100%; 149 | height: 100%; 150 | } 151 | 152 | .gray-bg-1 { 153 | background-color: #fafafa; 154 | } 155 | 156 | .gray-bg-2 { 157 | background-color: #f2f2f2; 158 | } 159 | 160 | .error { 161 | color: orangered; 162 | } 163 | 164 | .success { 165 | color: green; 166 | } 167 | 168 | @media (max-width: 767px) { 169 | .container { 170 | padding: 0 30px; 171 | } 172 | } 173 | 174 | /*===== All Button Style =====*/ 175 | .main-btn { 176 | display: inline-block; 177 | font-weight: 400; 178 | text-align: center; 179 | white-space: nowrap; 180 | vertical-align: middle; 181 | -webkit-user-select: none; 182 | -moz-user-select: none; 183 | -ms-user-select: none; 184 | user-select: none; 185 | padding: 18px 28px; 186 | font-size: 18px; 187 | line-height: 1; 188 | border-radius: 10px; 189 | color: #fff; 190 | cursor: pointer; 191 | z-index: 5; 192 | transition: all 0.4s ease-in-out; 193 | border: 2px solid transparent; 194 | background: #37C2CC; 195 | overflow: hidden; 196 | } 197 | 198 | .main-btn:hover { 199 | color: #fff; 200 | } 201 | 202 | .main-btn.border-btn { 203 | border: 2px solid #37C2CC; 204 | background: transparent; 205 | color: #37C2CC; 206 | } 207 | 208 | .main-btn.border-btn:hover::after { 209 | background-color: rgba(55, 194, 204, 0.15); 210 | } 211 | 212 | .btn-hover { 213 | position: relative; 214 | overflow: hidden; 215 | } 216 | 217 | .btn-hover::after { 218 | content: ""; 219 | position: absolute; 220 | width: 0%; 221 | height: 0%; 222 | border-radius: 50%; 223 | background: rgba(0, 0, 0, 0.05); 224 | top: 50%; 225 | left: 50%; 226 | padding: 50%; 227 | z-index: -1; 228 | -webkit-transition: all 0.3s ease-out 0s; 229 | -moz-transition: all 0.3s ease-out 0s; 230 | -ms-transition: all 0.3s ease-out 0s; 231 | -o-transition: all 0.3s ease-out 0s; 232 | transition: all 0.3s ease-out 0s; 233 | -webkit-transform: translate3d(-50%, -50%, 0) scale(0); 234 | -moz-transform: translate3d(-50%, -50%, 0) scale(0); 235 | -ms-transform: translate3d(-50%, -50%, 0) scale(0); 236 | -o-transform: translate3d(-50%, -50%, 0) scale(0); 237 | transform: translate3d(-50%, -50%, 0) scale(0); 238 | } 239 | 240 | .btn-hover:hover::after { 241 | -webkit-transform: translate3d(-50%, -50%, 0) scale(1.3); 242 | -moz-transform: translate3d(-50%, -50%, 0) scale(1.3); 243 | -ms-transform: translate3d(-50%, -50%, 0) scale(1.3); 244 | -o-transform: translate3d(-50%, -50%, 0) scale(1.3); 245 | transform: translate3d(-50%, -50%, 0) scale(1.3); 246 | } 247 | 248 | .scroll-top { 249 | width: 45px; 250 | height: 45px; 251 | background: #37C2CC; 252 | display: flex; 253 | justify-content: center; 254 | align-items: center; 255 | font-size: 18px; 256 | color: #fff; 257 | border-radius: 5px; 258 | position: fixed; 259 | bottom: 30px; 260 | right: 30px; 261 | z-index: 9; 262 | cursor: pointer; 263 | -webkit-transition: all 0.3s ease-out 0s; 264 | -moz-transition: all 0.3s ease-out 0s; 265 | -ms-transition: all 0.3s ease-out 0s; 266 | -o-transition: all 0.3s ease-out 0s; 267 | transition: all 0.3s ease-out 0s; 268 | } 269 | 270 | .scroll-top:hover { 271 | color: #fff; 272 | background: rgba(55, 194, 204, 0.8); 273 | } 274 | 275 | @keyframes animation1 { 276 | 0% { 277 | -webkit-transform: translateY(30px); 278 | -moz-transform: translateY(30px); 279 | -ms-transform: translateY(30px); 280 | -o-transform: translateY(30px); 281 | transform: translateY(30px); 282 | } 283 | 284 | 50% { 285 | -webkit-transform: translateY(-30px); 286 | -moz-transform: translateY(-30px); 287 | -ms-transform: translateY(-30px); 288 | -o-transform: translateY(-30px); 289 | transform: translateY(-30px); 290 | } 291 | 292 | 100% { 293 | -webkit-transform: translateY(30px); 294 | -moz-transform: translateY(30px); 295 | -ms-transform: translateY(30px); 296 | -o-transform: translateY(30px); 297 | transform: translateY(30px); 298 | } 299 | } 300 | 301 | @-webkit-keyframes animation1 { 302 | 0% { 303 | -webkit-transform: translateY(30px); 304 | -moz-transform: translateY(30px); 305 | -ms-transform: translateY(30px); 306 | -o-transform: translateY(30px); 307 | transform: translateY(30px); 308 | } 309 | 310 | 50% { 311 | -webkit-transform: translateY(-30px); 312 | -moz-transform: translateY(-30px); 313 | -ms-transform: translateY(-30px); 314 | -o-transform: translateY(-30px); 315 | transform: translateY(-30px); 316 | } 317 | 318 | 100% { 319 | -webkit-transform: translateY(30px); 320 | -moz-transform: translateY(30px); 321 | -ms-transform: translateY(30px); 322 | -o-transform: translateY(30px); 323 | transform: translateY(30px); 324 | } 325 | } 326 | 327 | /*===== All Preloader Style =====*/ 328 | .preloader { 329 | /* Body Overlay */ 330 | position: fixed; 331 | top: 0; 332 | left: 0; 333 | display: table; 334 | height: 100%; 335 | width: 100%; 336 | /* Change Background Color */ 337 | background: #fff; 338 | z-index: 99999; 339 | } 340 | 341 | .preloader .loader { 342 | display: table-cell; 343 | vertical-align: middle; 344 | text-align: center; 345 | } 346 | 347 | .preloader .loader .spinner { 348 | position: absolute; 349 | left: 50%; 350 | top: 50%; 351 | width: 64px; 352 | margin-left: -32px; 353 | z-index: 18; 354 | pointer-events: none; 355 | } 356 | 357 | .preloader .loader .spinner .spinner-container { 358 | pointer-events: none; 359 | position: absolute; 360 | width: 100%; 361 | padding-bottom: 100%; 362 | top: 50%; 363 | left: 50%; 364 | margin-top: -50%; 365 | margin-left: -50%; 366 | -webkit-animation: spinner-linspin 1568.23529647ms linear infinite; 367 | -moz-animation: spinner-linspin 1568.23529647ms linear infinite; 368 | -o-animation: spinner-linspin 1568.23529647ms linear infinite; 369 | animation: spinner-linspin 1568.23529647ms linear infinite; 370 | } 371 | 372 | .preloader .loader .spinner .spinner-container .spinner-rotator { 373 | position: absolute; 374 | width: 100%; 375 | height: 100%; 376 | -webkit-animation: spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 377 | -moz-animation: spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 378 | -o-animation: spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 379 | animation: spinner-easespin 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 380 | } 381 | 382 | .preloader .loader .spinner .spinner-container .spinner-rotator .spinner-left { 383 | position: absolute; 384 | top: 0; 385 | left: 0; 386 | bottom: 0; 387 | overflow: hidden; 388 | right: 50%; 389 | } 390 | 391 | .preloader .loader .spinner .spinner-container .spinner-rotator .spinner-right { 392 | position: absolute; 393 | top: 0; 394 | right: 0; 395 | bottom: 0; 396 | overflow: hidden; 397 | left: 50%; 398 | } 399 | 400 | .preloader .loader .spinner-circle { 401 | box-sizing: border-box; 402 | position: absolute; 403 | width: 200%; 404 | height: 100%; 405 | border-style: solid; 406 | /* Spinner Color */ 407 | border-color: #37C2CC #37C2CC rgba(0, 0, 0, 0.1); 408 | border-radius: 50%; 409 | border-width: 6px; 410 | } 411 | 412 | .preloader .loader .spinner-left .spinner-circle { 413 | left: 0; 414 | right: -100%; 415 | border-right-color: rgba(0, 0, 0, 0.1); 416 | -webkit-animation: spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 417 | -moz-animation: spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 418 | -o-animation: spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 419 | animation: spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 420 | } 421 | 422 | .preloader .loader .spinner-right .spinner-circle { 423 | left: -100%; 424 | right: 0; 425 | border-left-color: rgba(0, 0, 0, 0.1); 426 | -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 427 | -moz-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 428 | -o-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 429 | animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; 430 | } 431 | 432 | /* Preloader Animations */ 433 | @-webkit-keyframes spinner-linspin { 434 | to { 435 | -webkit-transform: rotate(360deg); 436 | -moz-transform: rotate(360deg); 437 | -ms-transform: rotate(360deg); 438 | -o-transform: rotate(360deg); 439 | transform: rotate(360deg); 440 | } 441 | } 442 | 443 | @keyframes spinner-linspin { 444 | to { 445 | -webkit-transform: rotate(360deg); 446 | -moz-transform: rotate(360deg); 447 | -ms-transform: rotate(360deg); 448 | -o-transform: rotate(360deg); 449 | transform: rotate(360deg); 450 | } 451 | } 452 | 453 | @-webkit-keyframes spinner-easespin { 454 | 12.5% { 455 | -webkit-transform: rotate(135deg); 456 | -moz-transform: rotate(135deg); 457 | -ms-transform: rotate(135deg); 458 | -o-transform: rotate(135deg); 459 | transform: rotate(135deg); 460 | } 461 | 462 | 25% { 463 | -webkit-transform: rotate(270deg); 464 | -moz-transform: rotate(270deg); 465 | -ms-transform: rotate(270deg); 466 | -o-transform: rotate(270deg); 467 | transform: rotate(270deg); 468 | } 469 | 470 | 37.5% { 471 | -webkit-transform: rotate(405deg); 472 | -moz-transform: rotate(405deg); 473 | -ms-transform: rotate(405deg); 474 | -o-transform: rotate(405deg); 475 | transform: rotate(405deg); 476 | } 477 | 478 | 50% { 479 | -webkit-transform: rotate(540deg); 480 | -moz-transform: rotate(540deg); 481 | -ms-transform: rotate(540deg); 482 | -o-transform: rotate(540deg); 483 | transform: rotate(540deg); 484 | } 485 | 486 | 62.5% { 487 | -webkit-transform: rotate(675deg); 488 | -moz-transform: rotate(675deg); 489 | -ms-transform: rotate(675deg); 490 | -o-transform: rotate(675deg); 491 | transform: rotate(675deg); 492 | } 493 | 494 | 75% { 495 | -webkit-transform: rotate(810deg); 496 | -moz-transform: rotate(810deg); 497 | -ms-transform: rotate(810deg); 498 | -o-transform: rotate(810deg); 499 | transform: rotate(810deg); 500 | } 501 | 502 | 87.5% { 503 | -webkit-transform: rotate(945deg); 504 | -moz-transform: rotate(945deg); 505 | -ms-transform: rotate(945deg); 506 | -o-transform: rotate(945deg); 507 | transform: rotate(945deg); 508 | } 509 | 510 | to { 511 | -webkit-transform: rotate(1080deg); 512 | -moz-transform: rotate(1080deg); 513 | -ms-transform: rotate(1080deg); 514 | -o-transform: rotate(1080deg); 515 | transform: rotate(1080deg); 516 | } 517 | } 518 | 519 | @keyframes spinner-easespin { 520 | 12.5% { 521 | -webkit-transform: rotate(135deg); 522 | -moz-transform: rotate(135deg); 523 | -ms-transform: rotate(135deg); 524 | -o-transform: rotate(135deg); 525 | transform: rotate(135deg); 526 | } 527 | 528 | 25% { 529 | -webkit-transform: rotate(270deg); 530 | -moz-transform: rotate(270deg); 531 | -ms-transform: rotate(270deg); 532 | -o-transform: rotate(270deg); 533 | transform: rotate(270deg); 534 | } 535 | 536 | 37.5% { 537 | -webkit-transform: rotate(405deg); 538 | -moz-transform: rotate(405deg); 539 | -ms-transform: rotate(405deg); 540 | -o-transform: rotate(405deg); 541 | transform: rotate(405deg); 542 | } 543 | 544 | 50% { 545 | -webkit-transform: rotate(540deg); 546 | -moz-transform: rotate(540deg); 547 | -ms-transform: rotate(540deg); 548 | -o-transform: rotate(540deg); 549 | transform: rotate(540deg); 550 | } 551 | 552 | 62.5% { 553 | -webkit-transform: rotate(675deg); 554 | -moz-transform: rotate(675deg); 555 | -ms-transform: rotate(675deg); 556 | -o-transform: rotate(675deg); 557 | transform: rotate(675deg); 558 | } 559 | 560 | 75% { 561 | -webkit-transform: rotate(810deg); 562 | -moz-transform: rotate(810deg); 563 | -ms-transform: rotate(810deg); 564 | -o-transform: rotate(810deg); 565 | transform: rotate(810deg); 566 | } 567 | 568 | 87.5% { 569 | -webkit-transform: rotate(945deg); 570 | -moz-transform: rotate(945deg); 571 | -ms-transform: rotate(945deg); 572 | -o-transform: rotate(945deg); 573 | transform: rotate(945deg); 574 | } 575 | 576 | to { 577 | -webkit-transform: rotate(1080deg); 578 | -moz-transform: rotate(1080deg); 579 | -ms-transform: rotate(1080deg); 580 | -o-transform: rotate(1080deg); 581 | transform: rotate(1080deg); 582 | } 583 | } 584 | 585 | @-webkit-keyframes spinner-left-spin { 586 | 0% { 587 | -webkit-transform: rotate(130deg); 588 | -moz-transform: rotate(130deg); 589 | -ms-transform: rotate(130deg); 590 | -o-transform: rotate(130deg); 591 | transform: rotate(130deg); 592 | } 593 | 594 | 50% { 595 | -webkit-transform: rotate(-5deg); 596 | -moz-transform: rotate(-5deg); 597 | -ms-transform: rotate(-5deg); 598 | -o-transform: rotate(-5deg); 599 | transform: rotate(-5deg); 600 | } 601 | 602 | to { 603 | -webkit-transform: rotate(130deg); 604 | -moz-transform: rotate(130deg); 605 | -ms-transform: rotate(130deg); 606 | -o-transform: rotate(130deg); 607 | transform: rotate(130deg); 608 | } 609 | } 610 | 611 | @keyframes spinner-left-spin { 612 | 0% { 613 | -webkit-transform: rotate(130deg); 614 | -moz-transform: rotate(130deg); 615 | -ms-transform: rotate(130deg); 616 | -o-transform: rotate(130deg); 617 | transform: rotate(130deg); 618 | } 619 | 620 | 50% { 621 | -webkit-transform: rotate(-5deg); 622 | -moz-transform: rotate(-5deg); 623 | -ms-transform: rotate(-5deg); 624 | -o-transform: rotate(-5deg); 625 | transform: rotate(-5deg); 626 | } 627 | 628 | to { 629 | -webkit-transform: rotate(130deg); 630 | -moz-transform: rotate(130deg); 631 | -ms-transform: rotate(130deg); 632 | -o-transform: rotate(130deg); 633 | transform: rotate(130deg); 634 | } 635 | } 636 | 637 | @-webkit-keyframes right-spin { 638 | 0% { 639 | -webkit-transform: rotate(-130deg); 640 | -moz-transform: rotate(-130deg); 641 | -ms-transform: rotate(-130deg); 642 | -o-transform: rotate(-130deg); 643 | transform: rotate(-130deg); 644 | } 645 | 646 | 50% { 647 | -webkit-transform: rotate(5deg); 648 | -moz-transform: rotate(5deg); 649 | -ms-transform: rotate(5deg); 650 | -o-transform: rotate(5deg); 651 | transform: rotate(5deg); 652 | } 653 | 654 | to { 655 | -webkit-transform: rotate(-130deg); 656 | -moz-transform: rotate(-130deg); 657 | -ms-transform: rotate(-130deg); 658 | -o-transform: rotate(-130deg); 659 | transform: rotate(-130deg); 660 | } 661 | } 662 | 663 | @keyframes right-spin { 664 | 0% { 665 | -webkit-transform: rotate(-130deg); 666 | -moz-transform: rotate(-130deg); 667 | -ms-transform: rotate(-130deg); 668 | -o-transform: rotate(-130deg); 669 | transform: rotate(-130deg); 670 | } 671 | 672 | 50% { 673 | -webkit-transform: rotate(5deg); 674 | -moz-transform: rotate(5deg); 675 | -ms-transform: rotate(5deg); 676 | -o-transform: rotate(5deg); 677 | transform: rotate(5deg); 678 | } 679 | 680 | to { 681 | -webkit-transform: rotate(-130deg); 682 | -moz-transform: rotate(-130deg); 683 | -ms-transform: rotate(-130deg); 684 | -o-transform: rotate(-130deg); 685 | transform: rotate(-130deg); 686 | } 687 | } 688 | 689 | /*=========================== 690 | NAVBAR CSS 691 | ============================= */ 692 | .navbar-area { 693 | position: absolute; 694 | top: 0; 695 | left: 0; 696 | width: 100%; 697 | z-index: 99; 698 | -webkit-transition: all 0.3s ease-out 0s; 699 | -moz-transition: all 0.3s ease-out 0s; 700 | -ms-transition: all 0.3s ease-out 0s; 701 | -o-transition: all 0.3s ease-out 0s; 702 | transition: all 0.3s ease-out 0s; 703 | } 704 | 705 | .sticky { 706 | position: fixed; 707 | z-index: 99; 708 | background-color: #fff; 709 | -webkit-box-shadow: 0px 20px 50px 0px rgba(0, 0, 0, 0.05); 710 | -moz-box-shadow: 0px 20px 50px 0px rgba(0, 0, 0, 0.05); 711 | box-shadow: 0px 20px 50px 0px rgba(0, 0, 0, 0.05); 712 | -webkit-transition: all 0.3s ease-out 0s; 713 | -moz-transition: all 0.3s ease-out 0s; 714 | -ms-transition: all 0.3s ease-out 0s; 715 | -o-transition: all 0.3s ease-out 0s; 716 | transition: all 0.3s ease-out 0s; 717 | } 718 | 719 | .sticky .navbar .navbar-nav .nav-item a { 720 | color: rgba(0, 0, 0, 0.9); 721 | } 722 | 723 | .sticky .navbar .navbar-nav .nav-item a.active, .sticky .navbar .navbar-nav .nav-item a:hover { 724 | color: #37C2CC; 725 | } 726 | 727 | .sticky .navbar .navbar-nav .nav-item a.active::before, .sticky .navbar .navbar-nav .nav-item a:hover::before { 728 | background: #37C2CC; 729 | } 730 | 731 | .sticky .navbar .header-btn .main-btn { 732 | color: #fff; 733 | } 734 | 735 | .sticky .navbar .navbar-toggler .toggler-icon { 736 | background: rgba(0, 0, 0, 0.9); 737 | } 738 | 739 | .navbar { 740 | border-radius: 5px; 741 | position: relative; 742 | -webkit-transition: all 0.3s ease-out 0s; 743 | -moz-transition: all 0.3s ease-out 0s; 744 | -ms-transition: all 0.3s ease-out 0s; 745 | -o-transition: all 0.3s ease-out 0s; 746 | transition: all 0.3s ease-out 0s; 747 | padding: 10px 0; 748 | } 749 | 750 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 751 | .navbar { 752 | padding: 15px 0; 753 | } 754 | } 755 | 756 | .navbar-brand { 757 | padding: 0; 758 | display: flex; 759 | } 760 | 761 | .navbar-brand img { 762 | max-width: 180px; 763 | } 764 | 765 | .navbar-toggler { 766 | padding: 0; 767 | } 768 | 769 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 770 | .navbar-toggler { 771 | position: absolute; 772 | right: 0; 773 | top: 22px; 774 | } 775 | } 776 | 777 | .navbar-toggler:focus { 778 | outline: none; 779 | -webkit-box-shadow: none; 780 | -moz-box-shadow: none; 781 | box-shadow: none; 782 | } 783 | 784 | .navbar-toggler .toggler-icon { 785 | width: 30px; 786 | height: 2px; 787 | background-color: rgba(0, 0, 0, 0.9); 788 | display: block; 789 | margin: 5px 0; 790 | position: relative; 791 | -webkit-transition: all 0.3s ease-out 0s; 792 | -moz-transition: all 0.3s ease-out 0s; 793 | -ms-transition: all 0.3s ease-out 0s; 794 | -o-transition: all 0.3s ease-out 0s; 795 | transition: all 0.3s ease-out 0s; 796 | } 797 | 798 | .navbar-toggler.active .toggler-icon:nth-of-type(1) { 799 | -webkit-transform: rotate(45deg); 800 | -moz-transform: rotate(45deg); 801 | -ms-transform: rotate(45deg); 802 | -o-transform: rotate(45deg); 803 | transform: rotate(45deg); 804 | top: 7px; 805 | } 806 | 807 | .navbar-toggler.active .toggler-icon:nth-of-type(2) { 808 | opacity: 0; 809 | } 810 | 811 | .navbar-toggler.active .toggler-icon:nth-of-type(3) { 812 | -webkit-transform: rotate(135deg); 813 | -moz-transform: rotate(135deg); 814 | -ms-transform: rotate(135deg); 815 | -o-transform: rotate(135deg); 816 | transform: rotate(135deg); 817 | top: -7px; 818 | } 819 | 820 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 821 | .navbar-collapse { 822 | position: absolute; 823 | top: 100%; 824 | left: 0; 825 | width: 100%; 826 | background-color: #fff; 827 | z-index: 9; 828 | -webkit-box-shadow: 0px 15px 20px 0px rgba(0, 0, 0, 0.1); 829 | -moz-box-shadow: 0px 15px 20px 0px rgba(0, 0, 0, 0.1); 830 | box-shadow: 0px 15px 20px 0px rgba(0, 0, 0, 0.1); 831 | padding: 5px 12px; 832 | } 833 | } 834 | 835 | .navbar-nav .nav-item { 836 | position: relative; 837 | padding: 8px 0; 838 | } 839 | 840 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 841 | .navbar-nav .nav-item { 842 | padding: 0px; 843 | margin-left: 20px; 844 | } 845 | } 846 | 847 | @media (max-width: 767px) { 848 | .navbar-nav .nav-item:first-child { 849 | margin-top: 20px; 850 | } 851 | } 852 | 853 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 854 | .navbar-nav .nav-item:last-child { 855 | margin-bottom: 20px; 856 | } 857 | } 858 | 859 | .navbar-nav .nav-item a { 860 | color: rgba(0, 0, 0, 0.9); 861 | -webkit-transition: all 0.3s ease-out 0s; 862 | -moz-transition: all 0.3s ease-out 0s; 863 | -ms-transition: all 0.3s ease-out 0s; 864 | -o-transition: all 0.3s ease-out 0s; 865 | transition: all 0.3s ease-out 0s; 866 | padding: 8px 17px; 867 | position: relative; 868 | font-weight: 500; 869 | font-size: 18px; 870 | text-align: center; 871 | } 872 | 873 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 874 | .navbar-nav .nav-item a { 875 | display: inline-block; 876 | padding: 6px 0px; 877 | color: rgba(0, 0, 0, 0.9); 878 | } 879 | } 880 | 881 | .navbar-nav .nav-item a:hover, .navbar-nav .nav-item a.active { 882 | color: #37C2CC; 883 | } 884 | 885 | @media (max-width: 767px) { 886 | .header-btn { 887 | display: none; 888 | } 889 | } 890 | 891 | @media only screen and (min-width: 550px) and (max-width: 767px) { 892 | .header-btn { 893 | display: flex; 894 | } 895 | } 896 | 897 | .header-btn .main-btn { 898 | color: #fff; 899 | background: #37C2CC; 900 | padding: 12px 22px; 901 | margin-left: 15px; 902 | } 903 | 904 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 905 | .header-btn .main-btn { 906 | padding: 8px 20px; 907 | margin-right: 60px; 908 | margin-left: 0px; 909 | } 910 | } 911 | 912 | /* ==================== 913 | HERO CSS 914 | ======================= */ 915 | .hero-section { 916 | position: relative; 917 | overflow: hidden; 918 | height: 780px; 919 | display: flex; 920 | align-items: center; 921 | background: linear-gradient(180deg, #C2FBFF 0%, rgba(255, 255, 255, 0) 93.47%); 922 | z-index: 1; 923 | } 924 | 925 | @media only screen and (min-width: 1200px) and (max-width: 1399px) { 926 | .hero-section { 927 | height: 650px; 928 | } 929 | } 930 | 931 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 932 | .hero-section { 933 | height: 640px; 934 | } 935 | } 936 | 937 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 938 | .hero-section { 939 | height: auto; 940 | padding: 100px 0; 941 | } 942 | } 943 | 944 | .hero-section::after { 945 | content: ""; 946 | position: absolute; 947 | width: 862px; 948 | height: 862px; 949 | border-radius: 50%; 950 | right: -150px; 951 | top: -150px; 952 | background: #99ECF2; 953 | z-index: -1; 954 | } 955 | 956 | @media only screen and (min-width: 1200px) and (max-width: 1399px) { 957 | .hero-section::after { 958 | width: 780px; 959 | height: 780px; 960 | } 961 | } 962 | 963 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 964 | .hero-section::after { 965 | width: 750px; 966 | height: 750px; 967 | } 968 | } 969 | 970 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 971 | .hero-section::after { 972 | display: none; 973 | } 974 | } 975 | 976 | @media only screen and (min-width: 768px) and (max-width: 991px) { 977 | .hero-section .hero-content { 978 | padding-top: 50px; 979 | } 980 | } 981 | 982 | .hero-section .hero-content h1 { 983 | margin-bottom: 15px; 984 | } 985 | 986 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 987 | .hero-section .hero-content h1 { 988 | font-size: 50px; 989 | } 990 | } 991 | 992 | @media (max-width: 767px) { 993 | .hero-section .hero-content h1 { 994 | font-size: 45px; 995 | } 996 | } 997 | 998 | .hero-section .hero-content p { 999 | margin-bottom: 30px; 1000 | color: rgba(0, 0, 0, 0.6); 1001 | font-size: 18px; 1002 | } 1003 | 1004 | @media only screen and (min-width: 1400px), only screen and (min-width: 1200px) and (max-width: 1399px) { 1005 | .hero-section .hero-content p { 1006 | padding-right: 115px; 1007 | } 1008 | } 1009 | 1010 | .hero-section .hero-image { 1011 | padding-top: 50px; 1012 | } 1013 | 1014 | @media only screen and (min-width: 992px) and (max-width: 1199px), only screen and (min-width: 1200px) and (max-width: 1399px) { 1015 | .hero-section .hero-image img { 1016 | width: 100%; 1017 | } 1018 | } 1019 | 1020 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 1021 | .hero-section .hero-image img { 1022 | max-width: 100%; 1023 | margin: auto; 1024 | } 1025 | } 1026 | 1027 | /* =============================== 1028 | FEATURE SECTION ONE CSS 1029 | ================================== */ 1030 | .feature-section { 1031 | position: relative; 1032 | background-image: url("../public/images/common-bg.svg"); 1033 | background-size: cover; 1034 | background-position: bottom center; 1035 | padding-top: 180px; 1036 | padding-bottom: 55px; 1037 | } 1038 | 1039 | .single-feature { 1040 | margin-bottom: 65px; 1041 | } 1042 | 1043 | @media only screen and (min-width: 1400px) { 1044 | .single-feature { 1045 | padding-right: 65px; 1046 | } 1047 | } 1048 | 1049 | .single-feature:hover .feature-icon::before { 1050 | background: #37C2CC; 1051 | } 1052 | 1053 | .single-feature:hover .feature-icon i { 1054 | color: #fff; 1055 | } 1056 | 1057 | .single-feature .feature-icon { 1058 | width: 62px; 1059 | height: 66px; 1060 | position: relative; 1061 | z-index: 3; 1062 | display: flex; 1063 | align-items: center; 1064 | justify-content: center; 1065 | margin-bottom: 40px; 1066 | } 1067 | 1068 | .single-feature .feature-icon img { 1069 | width: 100%; 1070 | height: auto; 1071 | } 1072 | 1073 | .single-feature .feature-icon::before, .single-feature .feature-icon::after { 1074 | content: ""; 1075 | position: absolute; 1076 | width: 100%; 1077 | height: 100%; 1078 | border-radius: 8px; 1079 | -webkit-transform: skew(-3deg); 1080 | -moz-transform: skew(-3deg); 1081 | -ms-transform: skew(-3deg); 1082 | -o-transform: skew(-3deg); 1083 | transform: skew(-3deg); 1084 | } 1085 | 1086 | .single-feature .feature-icon::before { 1087 | background: #D5F1F3; 1088 | -webkit-transition: all 0.3s ease-out 0s; 1089 | -moz-transition: all 0.3s ease-out 0s; 1090 | -ms-transition: all 0.3s ease-out 0s; 1091 | -o-transition: all 0.3s ease-out 0s; 1092 | transition: all 0.3s ease-out 0s; 1093 | z-index: -1; 1094 | } 1095 | 1096 | .single-feature .feature-icon::after { 1097 | background: transparent; 1098 | border: 2px solid #D5F1F3; 1099 | top: 8px; 1100 | left: -8px; 1101 | z-index: -2; 1102 | } 1103 | 1104 | .single-feature .feature-icon i { 1105 | font-size: 40px; 1106 | color: black; 1107 | -webkit-transition: all 0.3s ease-out 0s; 1108 | -moz-transition: all 0.3s ease-out 0s; 1109 | -ms-transition: all 0.3s ease-out 0s; 1110 | -o-transition: all 0.3s ease-out 0s; 1111 | transition: all 0.3s ease-out 0s; 1112 | } 1113 | 1114 | .single-feature .feature-content h4 { 1115 | margin-bottom: 15px; 1116 | } 1117 | 1118 | /* ======================== 1119 | CTA SECTION CSS 1120 | =========================== */ 1121 | .cta-section { 1122 | position: relative; 1123 | z-index: 1; 1124 | padding-top: 220px; 1125 | } 1126 | 1127 | @media only screen and (min-width: 1200px) and (max-width: 1399px) { 1128 | .cta-section { 1129 | padding-top: 150px; 1130 | } 1131 | } 1132 | 1133 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 1134 | .cta-section { 1135 | padding-top: 130px; 1136 | } 1137 | } 1138 | 1139 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 1140 | .cta-section { 1141 | padding-top: 0px; 1142 | } 1143 | } 1144 | 1145 | .cta-section .left-image { 1146 | left: 0px; 1147 | bottom: 0; 1148 | } 1149 | 1150 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 1151 | .cta-section .left-image { 1152 | position: static; 1153 | width: 100%; 1154 | margin-top: 50px; 1155 | } 1156 | } 1157 | 1158 | .cta-section .left-image img { 1159 | max-width: 100%; 1160 | } 1161 | 1162 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 1163 | .cta-section .left-image img { 1164 | max-width: 100%; 1165 | margin: auto; 1166 | } 1167 | } 1168 | 1169 | @media only screen and (min-width: 1400px) { 1170 | .cta-section .cta-content-wrapper { 1171 | padding-right: 100px; 1172 | } 1173 | } 1174 | 1175 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 1176 | .cta-section .cta-image { 1177 | margin-top: 50px; 1178 | } 1179 | } 1180 | 1181 | .cta-section .cta-image img { 1182 | width: 100%; 1183 | } 1184 | 1185 | /* ===================== 1186 | BLOG CSS 1187 | ======================== */ 1188 | .blog-section { 1189 | padding-top: 160px; 1190 | background-image: url("../public/images/common-bg.svg"); 1191 | background-size: cover; 1192 | background-position: bottom-center; 1193 | } 1194 | 1195 | .blog-section .section-title { 1196 | margin-bottom: 60px; 1197 | } 1198 | 1199 | @media only screen and (min-width: 1400px), only screen and (min-width: 1200px) and (max-width: 1399px) { 1200 | .blog-section .section-title { 1201 | padding: 0px 40px; 1202 | } 1203 | } 1204 | 1205 | .blog-section .section-title h2 { 1206 | margin-bottom: 15px; 1207 | } 1208 | 1209 | .single-blog, .single-post, .blog-roll-card { 1210 | background: #fff; 1211 | box-shadow: 0px 0px 50px rgba(183, 199, 240, 0.25); 1212 | border-radius: 14px; 1213 | padding: 52px 30px; 1214 | margin-bottom: 50px; 1215 | position: relative; 1216 | overflow: hidden; 1217 | z-index: 1; 1218 | } 1219 | 1220 | .single-blog .populer, .single-post .populer, .blog-roll-card .populer { 1221 | position: absolute; 1222 | right: 10px; 1223 | top: 18px; 1224 | color: #fff; 1225 | z-index: 2; 1226 | font-size: 16px; 1227 | font-weight: 700; 1228 | } 1229 | 1230 | .single-blog .blog-header, .single-post .blog-header, .blog-roll-card .blog-header { 1231 | border-bottom: 1px solid rgba(0, 0, 0, 0.1); 1232 | /* changes for Image tag */ 1233 | width: 100%; 1234 | height: 200px; 1235 | position: relative; 1236 | /* end of changes for Image tag */ 1237 | } 1238 | 1239 | .single-blog .blog-header h5, .single-post .blog-header h5, .blog-roll-card .blog-header h5 { 1240 | font-size: 18px; 1241 | margin-bottom: 20px; 1242 | } 1243 | 1244 | .single-blog .blog-header h2, .single-post .blog-header h2, .blog-roll-card .blog-header h2 { 1245 | font-size: 40px; 1246 | margin-bottom: 30px; 1247 | } 1248 | 1249 | .single-blog .blog-header h2 span, .single-post .blog-header h2 span, .blog-roll-card .blog-header h2 span { 1250 | font-size: 16px; 1251 | color: rgba(0, 0, 0, 0.5); 1252 | font-weight: 400; 1253 | } 1254 | 1255 | .single-blog .blog-body, .single-post .blog-body, .blog-roll-card .blog-body { 1256 | padding-top: 30px; 1257 | padding-bottom: 25px; 1258 | } 1259 | 1260 | .single-blog .blog-body ul li, .single-post .blog-body ul li, .blog-roll-card .blog-body ul li { 1261 | display: flex; 1262 | align-items: center; 1263 | margin-bottom: 12px; 1264 | } 1265 | 1266 | .single-blog .blog-body ul li span.bolet, .single-post .blog-body ul li span.bolet, .blog-roll-card .blog-body ul li span.bolet { 1267 | width: 8px; 1268 | height: 8px; 1269 | border-radius: 50%; 1270 | margin-right: 13px; 1271 | background: rgba(0, 0, 0, 0.2); 1272 | } 1273 | 1274 | .single-blog .blog-body ul li span.bolet.active, .single-post .blog-body ul li span.bolet.active, .blog-roll-card .blog-body ul li span.bolet.active { 1275 | background: #37C2CC; 1276 | } 1277 | 1278 | .single-blog .blog-body ul li p, .single-post .blog-body ul li p, .blog-roll-card .blog-body ul li p { 1279 | margin-bottom: 0px; 1280 | } 1281 | 1282 | .single-blog .blog-footer .main-btn, .single-blog .blog-roll-card-footer .main-btn, .single-post .blog-footer .main-btn, .single-post .blog-roll-card-footer .main-btn, .blog-roll-card .blog-footer .main-btn, .blog-roll-card .blog-roll-card-footer .main-btn { 1283 | color: #37C2CC; 1284 | background: #E3FDFF; 1285 | } 1286 | 1287 | .single-blog .blog-footer .main-btn:hover, .single-blog .blog-roll-card-footer .main-btn:hover, .single-post .blog-footer .main-btn:hover, .single-post .blog-roll-card-footer .main-btn:hover, .blog-roll-card .blog-footer .main-btn:hover, .blog-roll-card .blog-roll-card-footer .main-btn:hover { 1288 | color: #fff; 1289 | } 1290 | 1291 | .single-blog .blog-footer .main-btn:hover::after, .single-blog .blog-roll-card-footer .main-btn:hover::after, .single-post .blog-footer .main-btn:hover::after, .single-post .blog-roll-card-footer .main-btn:hover::after, .blog-roll-card .blog-footer .main-btn:hover::after, .blog-roll-card .blog-roll-card-footer .main-btn:hover::after { 1292 | background: #37C2CC; 1293 | } 1294 | 1295 | .single-blog.standard::after, .standard.single-post::after, .standard.blog-roll-card::after { 1296 | content: ""; 1297 | position: absolute; 1298 | background: #37C2CC; 1299 | border-radius: 50%; 1300 | z-index: -1; 1301 | width: 150px; 1302 | height: 150px; 1303 | top: -70px; 1304 | right: -50px; 1305 | } 1306 | 1307 | .single-blog.standard .blog-footer .main-btn, .single-blog.standard .blog-roll-card-footer .main-btn, .standard.single-post .blog-footer .main-btn, .standard.single-post .blog-roll-card-footer .main-btn, .standard.blog-roll-card .blog-footer .main-btn, .standard.blog-roll-card .blog-roll-card-footer .main-btn { 1308 | color: #fff; 1309 | background: #37C2CC; 1310 | } 1311 | 1312 | .single-blog.standard .blog-footer .main-btn:hover::after, .single-blog.standard .blog-roll-card-footer .main-btn:hover::after, .standard.single-post .blog-footer .main-btn:hover::after, .standard.single-post .blog-roll-card-footer .main-btn:hover::after, .standard.blog-roll-card .blog-footer .main-btn:hover::after, .standard.blog-roll-card .blog-roll-card-footer .main-btn:hover::after { 1313 | background: rgba(0, 0, 0, 0.05); 1314 | } 1315 | 1316 | .single-blog div:first-of-type, .single-post div:first-of-type, .blog-roll-card div:first-of-type { 1317 | padding-top: 0; 1318 | } 1319 | 1320 | .single-post-nav, .blog-roll-nav { 1321 | align-items: center; 1322 | background: linear-gradient(180deg, #C2FBFF 0%, rgba(255, 255, 255, 0) 93.47%); 1323 | display: flex; 1324 | height: 400px; 1325 | overflow: hidden; 1326 | position: relative; 1327 | z-index: 1; 1328 | } 1329 | 1330 | @media only screen and (min-width: 550px) { 1331 | .single-post-nav, .blog-roll-nav { 1332 | height: 350px; 1333 | } 1334 | } 1335 | 1336 | @media only screen and (min-width: 768px) { 1337 | .single-post-nav, .blog-roll-nav { 1338 | height: 430px; 1339 | } 1340 | } 1341 | 1342 | .breadcrumb-nav { 1343 | display: flex; 1344 | flex-direction: column; 1345 | justify-content: center; 1346 | margin-top: 1em; 1347 | } 1348 | 1349 | @media only screen and (min-width: 550px) { 1350 | .breadcrumb-nav { 1351 | flex-direction: row; 1352 | } 1353 | } 1354 | 1355 | .breadcrumb-nav li a { 1356 | color: #37C2CC; 1357 | font-weight: 500; 1358 | display: inline-block; 1359 | position: relative; 1360 | padding-right: 15px; 1361 | margin-right: 15px; 1362 | text-transform: capitalize; 1363 | } 1364 | 1365 | .breadcrumb-nav li::after { 1366 | content: ""; 1367 | font-size: 10px; 1368 | position: relative; 1369 | font-family: lineIcons; 1370 | right: 11px; 1371 | } 1372 | 1373 | .breadcrumb-nav li:last-child::after { 1374 | content: ""; 1375 | } 1376 | 1377 | .single-post, .blog-roll-card { 1378 | padding: 0px; 1379 | } 1380 | 1381 | .single-post div:first-of-type, .blog-roll-card div:first-of-type { 1382 | padding-top: 30px; 1383 | } 1384 | 1385 | .single-post-meta, .blog-roll-card-meta { 1386 | padding: 30px 16px 0 16px; 1387 | } 1388 | 1389 | @media only screen and (min-width: 550px) { 1390 | .single-post-meta, .blog-roll-card-meta { 1391 | padding: 42px 24px 0 24px; 1392 | } 1393 | } 1394 | 1395 | @media only screen and (min-width: 768px) { 1396 | .single-post-meta, .blog-roll-card-meta { 1397 | padding: 52px 30px 0 30px; 1398 | } 1399 | } 1400 | 1401 | .single-post-header, .blog-roll-card-header { 1402 | margin-bottom: 20px; 1403 | } 1404 | 1405 | .single-post-meta-info, .blog-roll-card-meta-info { 1406 | font-size: 14px; 1407 | display: inline-block; 1408 | position: relative; 1409 | } 1410 | 1411 | .single-post-meta-info li, .blog-roll-card-meta-info li { 1412 | font-size: 14px; 1413 | display: inline-block; 1414 | margin-right: 15px; 1415 | padding-right: 15px; 1416 | position: relative; 1417 | } 1418 | 1419 | .single-post-meta-info li a, .blog-roll-card-meta-info li a { 1420 | color: #888; 1421 | font-size: 14px; 1422 | font-weight: 500; 1423 | } 1424 | 1425 | .single-post-meta-info li a img, .blog-roll-card-meta-info li a img { 1426 | height: 35px; 1427 | width: 35px; 1428 | border-radius: 50%; 1429 | display: inline-block; 1430 | margin-right: 12px; 1431 | } 1432 | 1433 | @media only screen and (min-width: 550px) { 1434 | .single-post-meta-info li a img, .blog-roll-card-meta-info li a img { 1435 | height: 35px; 1436 | width: 35px; 1437 | } 1438 | } 1439 | 1440 | @media only screen and (min-width: 768px) { 1441 | .single-post-meta-info li a img, .blog-roll-card-meta-info li a img { 1442 | height: 50px; 1443 | width: 50px; 1444 | } 1445 | } 1446 | 1447 | @media only screen and (min-width: 768px) { 1448 | .single-post-meta-info li::before, .blog-roll-card-meta-info li::before { 1449 | position: absolute; 1450 | content: ""; 1451 | right: -5px; 1452 | top: 50%; 1453 | background-color: #d2d2d2; 1454 | height: 5px; 1455 | width: 5px; 1456 | border-radius: 50%; 1457 | -webkit-transform: translateY(-50%); 1458 | transform: translateY(-50%); 1459 | } 1460 | } 1461 | 1462 | @media only screen and (min-width: 768px) { 1463 | .single-post-meta-info li:last-of-type::before, .blog-roll-card-meta-info li:last-of-type::before { 1464 | content: none; 1465 | } 1466 | } 1467 | 1468 | .single-post-thumbnail { 1469 | position: relative; 1470 | overflow: hidden; 1471 | border-radius: 0; 1472 | width: 100%; 1473 | margin-top: 15px; 1474 | /* changes for Image tag */ 1475 | height: 300px; 1476 | /* end of changes for Image tag */ 1477 | } 1478 | 1479 | .single-post-thumbnail img { 1480 | width: 100%; 1481 | } 1482 | 1483 | @media only screen and (min-width: 550px) { 1484 | .single-post-thumbnail { 1485 | margin-top: 42px; 1486 | } 1487 | } 1488 | 1489 | @media only screen and (min-width: 768px) { 1490 | .single-post-thumbnail { 1491 | margin-top: 52px; 1492 | } 1493 | } 1494 | 1495 | .single-post-body, .blog-roll-card-body { 1496 | padding: 30px 16px; 1497 | } 1498 | 1499 | @media only screen and (min-width: 550px) { 1500 | .single-post-body, .blog-roll-card-body { 1501 | padding: 42px 24px; 1502 | } 1503 | } 1504 | 1505 | @media only screen and (min-width: 768px) { 1506 | .single-post-body, .blog-roll-card-body { 1507 | padding: 52px 30px; 1508 | } 1509 | } 1510 | 1511 | .single-post-body h3, .blog-roll-card-body h3, .single-post-body .single-post-header, .blog-roll-card-body .single-post-header, .single-post-body .blog-roll-card-header, .blog-roll-card-body .blog-roll-card-header { 1512 | margin-top: 10px; 1513 | margin-bottom: 20px; 1514 | } 1515 | 1516 | .single-post-body p, .blog-roll-card-body p { 1517 | margin-bottom: 20px; 1518 | } 1519 | 1520 | .single-post-body figure img, .blog-roll-card-body figure img { 1521 | max-width: 100%; 1522 | } 1523 | 1524 | @media only screen and (min-width: 768px) { 1525 | .blog-roll-card .single-post-thumbnail { 1526 | margin-top: 30px; 1527 | } 1528 | } 1529 | 1530 | .blog-roll-card-meta { 1531 | padding: 15px 15px 0 15px; 1532 | } 1533 | 1534 | @media only screen and (min-width: 768px) { 1535 | .blog-roll-card-meta { 1536 | padding: 30px 30px 0 30px; 1537 | } 1538 | } 1539 | 1540 | .blog-roll-card-header a { 1541 | color: rgba(0, 0, 0, 0.7); 1542 | } 1543 | 1544 | .blog-roll-card-header a:hover { 1545 | color: #37C2CC; 1546 | } 1547 | 1548 | .blog-roll-card-body { 1549 | padding: 15px 15px 5px; 1550 | } 1551 | 1552 | @media only screen and (min-width: 768px) { 1553 | .blog-roll-card-body { 1554 | padding: 30px 30px 10px; 1555 | } 1556 | } 1557 | 1558 | .blog-roll-card-footer { 1559 | padding: 0px 15px 15px; 1560 | } 1561 | 1562 | @media only screen and (min-width: 768px) { 1563 | .blog-roll-card-footer { 1564 | padding: 0 30px 30px; 1565 | } 1566 | } 1567 | 1568 | /* ===================== 1569 | TEAM SECTION CSS 1570 | ======================== */ 1571 | .team-section .single-team { 1572 | position: relative; 1573 | margin-bottom: 50px; 1574 | } 1575 | 1576 | .team-section .single-team .team-image { 1577 | max-width: 313px; 1578 | width: 100%; 1579 | border-radius: 50%; 1580 | } 1581 | 1582 | .team-section .single-team .team-image img { 1583 | width: 100%; 1584 | } 1585 | 1586 | .team-section .single-team .team-info { 1587 | position: absolute; 1588 | bottom: 30px; 1589 | right: 0; 1590 | background: #fff; 1591 | -webkit-box-shadow: 0px 8px 25px rgba(211, 211, 211, 0.25); 1592 | -moz-box-shadow: 0px 8px 25px rgba(211, 211, 211, 0.25); 1593 | box-shadow: 0px 8px 25px rgba(211, 211, 211, 0.25); 1594 | padding: 20px 30px; 1595 | min-width: 210px; 1596 | text-align: center; 1597 | } 1598 | 1599 | .team-section .single-team .team-info h4 { 1600 | font-size: 20px; 1601 | margin-bottom: 5px; 1602 | } 1603 | 1604 | .team-section .single-team .team-info p { 1605 | font-size: 14px; 1606 | } 1607 | 1608 | /* ======================== 1609 | TESTIMONIAL CSS 1610 | =========================== */ 1611 | .testimonial-section { 1612 | background-image: url("../public/images/testimonial/testimonial-bg.svg"); 1613 | background-size: cover; 1614 | background-position: bottom center; 1615 | padding-top: 75px; 1616 | padding-bottom: 130px; 1617 | border-radius: 333px 0px; 1618 | position: relative; 1619 | z-index: 1; 1620 | } 1621 | 1622 | @media only screen and (min-width: 1200px) and (max-width: 1399px) { 1623 | .testimonial-section { 1624 | border-radius: 200px 0px; 1625 | } 1626 | } 1627 | 1628 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 1629 | .testimonial-section { 1630 | border-radius: 100px 0px; 1631 | } 1632 | } 1633 | 1634 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 1635 | .testimonial-section { 1636 | border-radius: 70px 0px; 1637 | } 1638 | } 1639 | 1640 | .testimonial-section .testimonial-active-wrapper { 1641 | position: relative; 1642 | } 1643 | 1644 | @media (max-width: 767px) { 1645 | .testimonial-section .testimonial-active-wrapper { 1646 | padding-bottom: 80px; 1647 | } 1648 | } 1649 | 1650 | .testimonial-section .testimonial-active-wrapper .tns-controls { 1651 | position: absolute; 1652 | right: 0; 1653 | bottom: 0; 1654 | width: 100%; 1655 | z-index: 2; 1656 | display: flex; 1657 | align-items: center; 1658 | justify-content: flex-end; 1659 | } 1660 | 1661 | @media (max-width: 767px) { 1662 | .testimonial-section .testimonial-active-wrapper .tns-controls { 1663 | justify-content: center; 1664 | } 1665 | } 1666 | 1667 | .testimonial-section .testimonial-active-wrapper .tns-controls button { 1668 | width: 55px; 1669 | height: 55px; 1670 | display: flex; 1671 | align-items: center; 1672 | justify-content: center; 1673 | border-radius: 50%; 1674 | background: #fff; 1675 | color: rgba(0, 0, 0, 0.9); 1676 | border: 1px solid #37C2CC; 1677 | -webkit-transition: all 0.3s ease-out 0s; 1678 | -moz-transition: all 0.3s ease-out 0s; 1679 | -ms-transition: all 0.3s ease-out 0s; 1680 | -o-transition: all 0.3s ease-out 0s; 1681 | transition: all 0.3s ease-out 0s; 1682 | margin: 0 5px; 1683 | } 1684 | 1685 | .testimonial-section .testimonial-active-wrapper .tns-controls button:hover { 1686 | background: #37C2CC; 1687 | color: #fff; 1688 | } 1689 | 1690 | .testimonial-section .testimonial-active-wrapper .single-testimonial { 1691 | text-align: center; 1692 | } 1693 | 1694 | .testimonial-section .testimonial-active-wrapper .single-testimonial .quote { 1695 | font-size: 55px; 1696 | line-height: 1; 1697 | color: #37C2CC; 1698 | margin-bottom: 20px; 1699 | } 1700 | 1701 | .testimonial-section .testimonial-active-wrapper .single-testimonial .content { 1702 | margin-bottom: 30px; 1703 | } 1704 | 1705 | .testimonial-section .testimonial-active-wrapper .single-testimonial .content p { 1706 | font-size: 22px; 1707 | line-height: 35px; 1708 | color: rgba(0, 0, 0, 0.7); 1709 | padding: 0 15px; 1710 | } 1711 | 1712 | @media (max-width: 767px) { 1713 | .testimonial-section .testimonial-active-wrapper .single-testimonial .content p { 1714 | font-size: 18px; 1715 | line-height: 28px; 1716 | padding: 0px; 1717 | } 1718 | } 1719 | 1720 | .testimonial-section .testimonial-active-wrapper .single-testimonial .info h6 { 1721 | font-size: 16px; 1722 | font-weight: 700; 1723 | margin-bottom: 10px; 1724 | } 1725 | 1726 | .testimonial-section .testimonial-active-wrapper .single-testimonial .info p { 1727 | font-size: 15px; 1728 | } 1729 | 1730 | .testimonial-section .testimonial-images .testimonial-image { 1731 | position: absolute; 1732 | z-index: -1; 1733 | max-width: 100%; 1734 | } 1735 | 1736 | @media only screen and (min-width: 768px) and (max-width: 991px), (max-width: 767px) { 1737 | .testimonial-section .testimonial-images .testimonial-image { 1738 | display: none; 1739 | } 1740 | } 1741 | 1742 | .testimonial-section .testimonial-images .testimonial-image.image-1 { 1743 | left: 10%; 1744 | top: 30%; 1745 | } 1746 | 1747 | .testimonial-section .testimonial-images .testimonial-image.image-2 { 1748 | bottom: 5%; 1749 | left: 15%; 1750 | } 1751 | 1752 | .testimonial-section .testimonial-images .testimonial-image.image-3 { 1753 | top: 5%; 1754 | right: 10%; 1755 | } 1756 | 1757 | .testimonial-section .testimonial-images .testimonial-image.image-4 { 1758 | top: 40%; 1759 | right: 12%; 1760 | } 1761 | 1762 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 1763 | .testimonial-section .testimonial-images .testimonial-image.image-4 { 1764 | right: 8%; 1765 | } 1766 | } 1767 | 1768 | /* ========================== 1769 | FOOTER CSS 1770 | ============================= */ 1771 | .footer .footer-widget { 1772 | margin-bottom: 50px; 1773 | } 1774 | 1775 | .footer .footer-widget .logo { 1776 | margin-bottom: 30px; 1777 | } 1778 | 1779 | .footer .footer-widget .desc { 1780 | margin-bottom: 25px; 1781 | } 1782 | 1783 | .footer .footer-widget .social-links { 1784 | display: flex; 1785 | align-items: center; 1786 | } 1787 | 1788 | .footer .footer-widget .social-links li a { 1789 | width: 44px; 1790 | height: 44px; 1791 | border-radius: 50%; 1792 | background: #E3FDFF; 1793 | color: rgba(0, 0, 0, 0.9); 1794 | display: flex; 1795 | align-items: center; 1796 | justify-content: center; 1797 | margin-right: 18px; 1798 | font-size: 22px; 1799 | } 1800 | 1801 | .footer .footer-widget .social-links li a:hover { 1802 | background: #37C2CC; 1803 | color: #fff; 1804 | } 1805 | 1806 | .footer .footer-widget h3, .footer .footer-widget .single-post-header, .footer .footer-widget .blog-roll-card-header { 1807 | margin-bottom: 30px; 1808 | margin-top: 10px; 1809 | } 1810 | 1811 | .footer .footer-widget .links li a { 1812 | font-size: 16px; 1813 | line-height: 30px; 1814 | color: rgba(0, 0, 0, 0.7); 1815 | } 1816 | 1817 | .footer .footer-widget .links li a:hover { 1818 | padding-left: 8px; 1819 | color: #37C2CC; 1820 | } 1821 | 1822 | .footer .footer-widget form { 1823 | display: flex; 1824 | flex-direction: column; 1825 | align-items: flex-end; 1826 | } 1827 | 1828 | .footer .footer-widget form input { 1829 | width: 100%; 1830 | background: #F1FEFF; 1831 | border: 1px solid #37C2CC; 1832 | box-sizing: border-box; 1833 | border-radius: 10px; 1834 | margin-bottom: 20px; 1835 | padding: 15px 20px; 1836 | } 1837 | 1838 | .footer .footer-widget form button { 1839 | text-align: right; 1840 | } 1841 | 1842 | /* ====================== 1843 | DEFAULT CSS 1844 | ========================= */ 1845 | .mt-5 { 1846 | margin-top: 5px; 1847 | } 1848 | 1849 | .mt-10 { 1850 | margin-top: 10px; 1851 | } 1852 | 1853 | .mt-15 { 1854 | margin-top: 15px; 1855 | } 1856 | 1857 | .mt-20 { 1858 | margin-top: 20px; 1859 | } 1860 | 1861 | .mt-25 { 1862 | margin-top: 25px; 1863 | } 1864 | 1865 | .mt-30 { 1866 | margin-top: 30px; 1867 | } 1868 | 1869 | .mt-35 { 1870 | margin-top: 35px; 1871 | } 1872 | 1873 | .mt-40 { 1874 | margin-top: 40px; 1875 | } 1876 | 1877 | .mt-45 { 1878 | margin-top: 45px; 1879 | } 1880 | 1881 | .mt-50 { 1882 | margin-top: 50px; 1883 | } 1884 | 1885 | .mt-55 { 1886 | margin-top: 55px; 1887 | } 1888 | 1889 | .mt-60 { 1890 | margin-top: 60px; 1891 | } 1892 | 1893 | .mt-65 { 1894 | margin-top: 65px; 1895 | } 1896 | 1897 | .mt-70 { 1898 | margin-top: 70px; 1899 | } 1900 | 1901 | .mt-75 { 1902 | margin-top: 75px; 1903 | } 1904 | 1905 | .mt-80 { 1906 | margin-top: 80px; 1907 | } 1908 | 1909 | .mt-85 { 1910 | margin-top: 85px; 1911 | } 1912 | 1913 | .mt-90 { 1914 | margin-top: 90px; 1915 | } 1916 | 1917 | .mt-95 { 1918 | margin-top: 95px; 1919 | } 1920 | 1921 | .mt-100 { 1922 | margin-top: 100px; 1923 | } 1924 | 1925 | .mt-105 { 1926 | margin-top: 105px; 1927 | } 1928 | 1929 | .mt-110 { 1930 | margin-top: 110px; 1931 | } 1932 | 1933 | .mt-115 { 1934 | margin-top: 115px; 1935 | } 1936 | 1937 | .mt-120 { 1938 | margin-top: 120px; 1939 | } 1940 | 1941 | .mt-125 { 1942 | margin-top: 125px; 1943 | } 1944 | 1945 | .mt-130 { 1946 | margin-top: 130px; 1947 | } 1948 | 1949 | .mt-135 { 1950 | margin-top: 135px; 1951 | } 1952 | 1953 | .mt-140 { 1954 | margin-top: 140px; 1955 | } 1956 | 1957 | .mt-145 { 1958 | margin-top: 145px; 1959 | } 1960 | 1961 | .mt-150 { 1962 | margin-top: 150px; 1963 | } 1964 | 1965 | .mt-155 { 1966 | margin-top: 155px; 1967 | } 1968 | 1969 | .mt-160 { 1970 | margin-top: 160px; 1971 | } 1972 | 1973 | .mt-165 { 1974 | margin-top: 165px; 1975 | } 1976 | 1977 | .mt-170 { 1978 | margin-top: 170px; 1979 | } 1980 | 1981 | .mt-175 { 1982 | margin-top: 175px; 1983 | } 1984 | 1985 | .mt-180 { 1986 | margin-top: 180px; 1987 | } 1988 | 1989 | .mt-185 { 1990 | margin-top: 185px; 1991 | } 1992 | 1993 | .mt-190 { 1994 | margin-top: 190px; 1995 | } 1996 | 1997 | .mt-195 { 1998 | margin-top: 195px; 1999 | } 2000 | 2001 | .mt-200 { 2002 | margin-top: 200px; 2003 | } 2004 | 2005 | .mt-205 { 2006 | margin-top: 205px; 2007 | } 2008 | 2009 | .mt-210 { 2010 | margin-top: 210px; 2011 | } 2012 | 2013 | .mt-215 { 2014 | margin-top: 215px; 2015 | } 2016 | 2017 | .mt-220 { 2018 | margin-top: 220px; 2019 | } 2020 | 2021 | .mt-225 { 2022 | margin-top: 225px; 2023 | } 2024 | 2025 | .mb-5 { 2026 | margin-bottom: 5px; 2027 | } 2028 | 2029 | .mb-10 { 2030 | margin-bottom: 10px; 2031 | } 2032 | 2033 | .mb-15 { 2034 | margin-bottom: 15px; 2035 | } 2036 | 2037 | .mb-20 { 2038 | margin-bottom: 20px; 2039 | } 2040 | 2041 | .mb-25 { 2042 | margin-bottom: 25px; 2043 | } 2044 | 2045 | .mb-30 { 2046 | margin-bottom: 30px; 2047 | } 2048 | 2049 | .mb-35 { 2050 | margin-bottom: 35px; 2051 | } 2052 | 2053 | .mb-40 { 2054 | margin-bottom: 40px; 2055 | } 2056 | 2057 | .mb-45 { 2058 | margin-bottom: 45px; 2059 | } 2060 | 2061 | .mb-50 { 2062 | margin-bottom: 50px; 2063 | } 2064 | 2065 | .mb-55 { 2066 | margin-bottom: 55px; 2067 | } 2068 | 2069 | .mb-60 { 2070 | margin-bottom: 60px; 2071 | } 2072 | 2073 | .mb-65 { 2074 | margin-bottom: 65px; 2075 | } 2076 | 2077 | .mb-70 { 2078 | margin-bottom: 70px; 2079 | } 2080 | 2081 | .mb-75 { 2082 | margin-bottom: 75px; 2083 | } 2084 | 2085 | .mb-80 { 2086 | margin-bottom: 80px; 2087 | } 2088 | 2089 | .mb-85 { 2090 | margin-bottom: 85px; 2091 | } 2092 | 2093 | .mb-90 { 2094 | margin-bottom: 90px; 2095 | } 2096 | 2097 | .mb-95 { 2098 | margin-bottom: 95px; 2099 | } 2100 | 2101 | .mb-100 { 2102 | margin-bottom: 100px; 2103 | } 2104 | 2105 | .mb-105 { 2106 | margin-bottom: 105px; 2107 | } 2108 | 2109 | .mb-110 { 2110 | margin-bottom: 110px; 2111 | } 2112 | 2113 | .mb-115 { 2114 | margin-bottom: 115px; 2115 | } 2116 | 2117 | .mb-120 { 2118 | margin-bottom: 120px; 2119 | } 2120 | 2121 | .mb-125 { 2122 | margin-bottom: 125px; 2123 | } 2124 | 2125 | .mb-130 { 2126 | margin-bottom: 130px; 2127 | } 2128 | 2129 | .mb-135 { 2130 | margin-bottom: 135px; 2131 | } 2132 | 2133 | .mb-140 { 2134 | margin-bottom: 140px; 2135 | } 2136 | 2137 | .mb-145 { 2138 | margin-bottom: 145px; 2139 | } 2140 | 2141 | .mb-150 { 2142 | margin-bottom: 150px; 2143 | } 2144 | 2145 | .mb-155 { 2146 | margin-bottom: 155px; 2147 | } 2148 | 2149 | .mb-160 { 2150 | margin-bottom: 160px; 2151 | } 2152 | 2153 | .mb-165 { 2154 | margin-bottom: 165px; 2155 | } 2156 | 2157 | .mb-170 { 2158 | margin-bottom: 170px; 2159 | } 2160 | 2161 | .mb-175 { 2162 | margin-bottom: 175px; 2163 | } 2164 | 2165 | .mb-180 { 2166 | margin-bottom: 180px; 2167 | } 2168 | 2169 | .mb-185 { 2170 | margin-bottom: 185px; 2171 | } 2172 | 2173 | .mb-190 { 2174 | margin-bottom: 190px; 2175 | } 2176 | 2177 | .mb-195 { 2178 | margin-bottom: 195px; 2179 | } 2180 | 2181 | .mb-200 { 2182 | margin-bottom: 200px; 2183 | } 2184 | 2185 | .mb-205 { 2186 | margin-bottom: 205px; 2187 | } 2188 | 2189 | .mb-210 { 2190 | margin-bottom: 210px; 2191 | } 2192 | 2193 | .mb-215 { 2194 | margin-bottom: 215px; 2195 | } 2196 | 2197 | .mb-220 { 2198 | margin-bottom: 220px; 2199 | } 2200 | 2201 | .mb-225 { 2202 | margin-bottom: 225px; 2203 | } 2204 | 2205 | .pt-5 { 2206 | padding-top: 5px; 2207 | } 2208 | 2209 | .pt-10 { 2210 | padding-top: 10px; 2211 | } 2212 | 2213 | .pt-15 { 2214 | padding-top: 15px; 2215 | } 2216 | 2217 | .pt-20 { 2218 | padding-top: 20px; 2219 | } 2220 | 2221 | .pt-25 { 2222 | padding-top: 25px; 2223 | } 2224 | 2225 | .pt-30 { 2226 | padding-top: 30px; 2227 | } 2228 | 2229 | .pt-35 { 2230 | padding-top: 35px; 2231 | } 2232 | 2233 | .pt-40 { 2234 | padding-top: 40px; 2235 | } 2236 | 2237 | .pt-45 { 2238 | padding-top: 45px; 2239 | } 2240 | 2241 | .pt-50 { 2242 | padding-top: 50px; 2243 | } 2244 | 2245 | .pt-55 { 2246 | padding-top: 55px; 2247 | } 2248 | 2249 | .pt-60 { 2250 | padding-top: 60px; 2251 | } 2252 | 2253 | .pt-65 { 2254 | padding-top: 65px; 2255 | } 2256 | 2257 | .pt-70 { 2258 | padding-top: 70px; 2259 | } 2260 | 2261 | .pt-75 { 2262 | padding-top: 75px; 2263 | } 2264 | 2265 | .pt-80 { 2266 | padding-top: 80px; 2267 | } 2268 | 2269 | .pt-85 { 2270 | padding-top: 85px; 2271 | } 2272 | 2273 | .pt-90 { 2274 | padding-top: 90px; 2275 | } 2276 | 2277 | .pt-95 { 2278 | padding-top: 95px; 2279 | } 2280 | 2281 | .pt-100 { 2282 | padding-top: 100px; 2283 | } 2284 | 2285 | .pt-105 { 2286 | padding-top: 105px; 2287 | } 2288 | 2289 | .pt-110 { 2290 | padding-top: 110px; 2291 | } 2292 | 2293 | .pt-115 { 2294 | padding-top: 115px; 2295 | } 2296 | 2297 | .pt-120 { 2298 | padding-top: 120px; 2299 | } 2300 | 2301 | .pt-125 { 2302 | padding-top: 125px; 2303 | } 2304 | 2305 | .pt-130 { 2306 | padding-top: 130px; 2307 | } 2308 | 2309 | .pt-135 { 2310 | padding-top: 135px; 2311 | } 2312 | 2313 | .pt-140 { 2314 | padding-top: 140px; 2315 | } 2316 | 2317 | .pt-145 { 2318 | padding-top: 145px; 2319 | } 2320 | 2321 | .pt-150 { 2322 | padding-top: 150px; 2323 | } 2324 | 2325 | .pt-155 { 2326 | padding-top: 155px; 2327 | } 2328 | 2329 | .pt-160 { 2330 | padding-top: 160px; 2331 | } 2332 | 2333 | .pt-165 { 2334 | padding-top: 165px; 2335 | } 2336 | 2337 | .pt-170 { 2338 | padding-top: 170px; 2339 | } 2340 | 2341 | .pt-175 { 2342 | padding-top: 175px; 2343 | } 2344 | 2345 | .pt-180 { 2346 | padding-top: 180px; 2347 | } 2348 | 2349 | .pt-185 { 2350 | padding-top: 185px; 2351 | } 2352 | 2353 | .pt-190 { 2354 | padding-top: 190px; 2355 | } 2356 | 2357 | .pt-195 { 2358 | padding-top: 195px; 2359 | } 2360 | 2361 | .pt-200 { 2362 | padding-top: 200px; 2363 | } 2364 | 2365 | .pt-205 { 2366 | padding-top: 205px; 2367 | } 2368 | 2369 | .pt-210 { 2370 | padding-top: 210px; 2371 | } 2372 | 2373 | .pt-215 { 2374 | padding-top: 215px; 2375 | } 2376 | 2377 | .pt-220 { 2378 | padding-top: 220px; 2379 | } 2380 | 2381 | .pt-225 { 2382 | padding-top: 225px; 2383 | } 2384 | 2385 | .pb-5 { 2386 | padding-bottom: 5px; 2387 | } 2388 | 2389 | .pb-10 { 2390 | padding-bottom: 10px; 2391 | } 2392 | 2393 | .pb-15 { 2394 | padding-bottom: 15px; 2395 | } 2396 | 2397 | .pb-20 { 2398 | padding-bottom: 20px; 2399 | } 2400 | 2401 | .pb-25 { 2402 | padding-bottom: 25px; 2403 | } 2404 | 2405 | .pb-30 { 2406 | padding-bottom: 30px; 2407 | } 2408 | 2409 | .pb-35 { 2410 | padding-bottom: 35px; 2411 | } 2412 | 2413 | .pb-40 { 2414 | padding-bottom: 40px; 2415 | } 2416 | 2417 | .pb-45 { 2418 | padding-bottom: 45px; 2419 | } 2420 | 2421 | .pb-50 { 2422 | padding-bottom: 50px; 2423 | } 2424 | 2425 | .pb-55 { 2426 | padding-bottom: 55px; 2427 | } 2428 | 2429 | .pb-60 { 2430 | padding-bottom: 60px; 2431 | } 2432 | 2433 | .pb-65 { 2434 | padding-bottom: 65px; 2435 | } 2436 | 2437 | .pb-70 { 2438 | padding-bottom: 70px; 2439 | } 2440 | 2441 | .pb-75 { 2442 | padding-bottom: 75px; 2443 | } 2444 | 2445 | .pb-80 { 2446 | padding-bottom: 80px; 2447 | } 2448 | 2449 | .pb-85 { 2450 | padding-bottom: 85px; 2451 | } 2452 | 2453 | .pb-90 { 2454 | padding-bottom: 90px; 2455 | } 2456 | 2457 | .pb-95 { 2458 | padding-bottom: 95px; 2459 | } 2460 | 2461 | .pb-100 { 2462 | padding-bottom: 100px; 2463 | } 2464 | 2465 | .pb-105 { 2466 | padding-bottom: 105px; 2467 | } 2468 | 2469 | .pb-110 { 2470 | padding-bottom: 110px; 2471 | } 2472 | 2473 | .pb-115 { 2474 | padding-bottom: 115px; 2475 | } 2476 | 2477 | .pb-120 { 2478 | padding-bottom: 120px; 2479 | } 2480 | 2481 | .pb-125 { 2482 | padding-bottom: 125px; 2483 | } 2484 | 2485 | .pb-130 { 2486 | padding-bottom: 130px; 2487 | } 2488 | 2489 | .pb-135 { 2490 | padding-bottom: 135px; 2491 | } 2492 | 2493 | .pb-140 { 2494 | padding-bottom: 140px; 2495 | } 2496 | 2497 | .pb-145 { 2498 | padding-bottom: 145px; 2499 | } 2500 | 2501 | .pb-150 { 2502 | padding-bottom: 150px; 2503 | } 2504 | 2505 | .pb-155 { 2506 | padding-bottom: 155px; 2507 | } 2508 | 2509 | .pb-160 { 2510 | padding-bottom: 160px; 2511 | } 2512 | 2513 | .pb-165 { 2514 | padding-bottom: 165px; 2515 | } 2516 | 2517 | .pb-170 { 2518 | padding-bottom: 170px; 2519 | } 2520 | 2521 | .pb-175 { 2522 | padding-bottom: 175px; 2523 | } 2524 | 2525 | .pb-180 { 2526 | padding-bottom: 180px; 2527 | } 2528 | 2529 | .pb-185 { 2530 | padding-bottom: 185px; 2531 | } 2532 | 2533 | .pb-190 { 2534 | padding-bottom: 190px; 2535 | } 2536 | 2537 | .pb-195 { 2538 | padding-bottom: 195px; 2539 | } 2540 | 2541 | .pb-200 { 2542 | padding-bottom: 200px; 2543 | } 2544 | 2545 | .pb-205 { 2546 | padding-bottom: 205px; 2547 | } 2548 | 2549 | .pb-210 { 2550 | padding-bottom: 210px; 2551 | } 2552 | 2553 | .pb-215 { 2554 | padding-bottom: 215px; 2555 | } 2556 | 2557 | .pb-220 { 2558 | padding-bottom: 220px; 2559 | } 2560 | 2561 | .pb-225 { 2562 | padding-bottom: 225px; 2563 | } 2564 | 2565 | .widget { 2566 | background: #fff; 2567 | box-shadow: 0px 0px 50px rgba(183, 199, 240, 0.25); 2568 | border-radius: 14px; 2569 | padding: 30px; 2570 | margin-bottom: 30px; 2571 | position: relative; 2572 | overflow: hidden; 2573 | z-index: 1; 2574 | } 2575 | 2576 | .widget form { 2577 | position: relative; 2578 | } 2579 | 2580 | .widget form input { 2581 | background-color: transparent; 2582 | border-radius: 5px; 2583 | border: 1px solid #37C2CC; 2584 | font-size: 14px; 2585 | font-weight: 400; 2586 | height: 55px; 2587 | padding: 0 70px 0 30px; 2588 | width: 100%; 2589 | } 2590 | 2591 | .widget form button { 2592 | border: none; 2593 | position: absolute; 2594 | right: 7px; 2595 | top: 6px; 2596 | width: 42px; 2597 | height: 42px; 2598 | z-index: 1; 2599 | color: #fff !important; 2600 | font-size: 13px; 2601 | -webkit-transition: all 0.3s ease-out 0s; 2602 | transition: all 0.3s ease-out 0s; 2603 | color: #fff; 2604 | border-radius: 5px; 2605 | padding: 0 !important; 2606 | border: none; 2607 | background: #37C2CC; 2608 | } 2609 | 2610 | .widget-title { 2611 | font-size: 22px; 2612 | margin-bottom: 30px; 2613 | position: relative; 2614 | font-weight: 600; 2615 | line-height: 28px; 2616 | z-index: 1; 2617 | } 2618 | 2619 | .categories-widget .categories-list li { 2620 | display: inline; 2621 | } 2622 | 2623 | .categories-widget .categories-list li>a { 2624 | -ms-flex-pack: center; 2625 | -webkit-box-pack: center; 2626 | background: 0 0; 2627 | border-radius: 5px; 2628 | border: 1px solid #37C2CC; 2629 | color: rgba(0, 0, 0, 0.7); 2630 | display: -ms-inline-flexbox; 2631 | display: -webkit-inline-box; 2632 | display: inline-flex; 2633 | font-size: 14px; 2634 | font-weight: 400; 2635 | justify-content: center; 2636 | margin-bottom: 10px; 2637 | margin-right: 5px; 2638 | padding: 7px 15px; 2639 | text-transform: capitalize; 2640 | } 2641 | 2642 | .categories-widget .categories-list li>a:hover { 2643 | background-color: #37C2CC; 2644 | color: #fff; 2645 | border-color: transparent; 2646 | } 2647 | 2648 | /*# sourceMappingURL=main.css.map */ --------------------------------------------------------------------------------