diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..6f3a2913 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/README.md b/README.md index b5fb34b6..6f143c66 100644 --- a/README.md +++ b/README.md @@ -1,172 +1,73 @@ -# Phase 1 Project Guidelines +## wikiCap + ## By Daniel Sobit + ## Table of Content + - [Description](#description) + - [Features](#features) + - [Technology Used](#technology-Used) + - [Licence](#licence) + - [Authors Info](#Authors-Info) + ## Description -## Learning Goals +

This repository contains the wikiCap web application.

-- Design and architect features across a frontend -- Communicate and collaborate in a technical environment -- Integrate JavaScript and an external API -- Debug issues in small- to medium-sized projects -- Build and iterate on a project MVP +[Go Back to the top](#wikiCap) -## Introduction +## Features -Welcome to JavaScript Project Mode! +A cryptocurrency realtime market information using a public APIs to display market prices and news. +A User can see the cryptocurrency prices. +A User can see realtime cryptocurrency news +A User can store notes -You’ve worked so hard to get here and have learned a ton. Now it's time to bring -it all together! +[Go Back to the top](#wikiCap) + ### Requirements -For this project, you're going build a Single Page Application (**SPA**). -Building this application will be challenging because it will integrate -everything you've learned up to this point. Your frontend will be built with -HTML, CSS, and JavaScript and will communicate with a public API. + * Access to a computer or any other garget + * Access to internet + * visit the website on your browser + **** + [Go Back to the top](#wikiCap) -### Project Requirements +### Live Link -1. Your app must be a HTML/CSS/JS frontend that accesses data from a public API. - All interactions between the client and the API should be handled - asynchronously and use JSON as the communication format. +- Click this link to view the live application [https://sobitd.github.io/wikiCap/] -2. Your entire app must run on a single page. There should be NO redirects. In - other words, your project will contain a single HTML file. -3. Your app needs to incorporate at least 3 separate event listeners - (DOMContentLoaded, click, change, submit, etc). +### Technology Used -4. Some interactivity is required. This could be as simple as adding a "like" - button or adding comments. These interactions do not need to persist after - reloading the page. +* HTML - which was used to develope the structure off the pages. +* CSS - which was used to style the User Interface. +* JS - was used to add interactivity and functionality. +* JSON - a json file that has the product data. +* +[Go Back to the top](#wikiCap) -5. Follow good coding practices. Keep your code DRY (Do not repeat yourself) by - utilizing functions to abstract repetitive code. +## Known Bugs -### Stretch Goals +* display notes on the Pin Notes Here section -1. Use [json-server][] in your project to persist your app's interactivity. +## MIT License -## Strategy, Timeline, and Tips +Copyright (c) [2022] [wikiCap] -### Planning +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -- Plan out your features -- Develop user stories - - “As [ a user ], I want [ to perform this action ] so that - [ I can accomplish this goal ].” - - Features should not need you there to explain them to users -- Plan out the structure of your JSON requests +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -### Project Pitches +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -Before you start working on your project, you'll pitch your project idea to your -instructors for approval and feedback. +## Authors Info -For your project pitch, you should include: - -- The basic story of your application -- The core features of your MVP -- The API data you'll be using and how you'll use it -- Challenges you expect to face -- How you are meeting the requirements of the project - -Feel free to send this pitch to your instructor via slack asynchronously. - -### MVP ASAP - -- Build a Minimum Viable Product (MVP) as quickly as possible. - - Pick an API and explore it early on to ensure it will work for your need - -### Instructor Guidance - -You should strive to solve problems independently, but you also shouldn't waste -your time stuck on a problem. A good guideline for a small bug is the rule of -10s: - -- 10 minutes debugging the code -- 10 minutes using Google and StackOverflow to try to find an answer -- 10 minutes asking your fellow students for help -- Asking an instructor - -If you seek out instructor guidance on your design from the start, they might -help steer you into design and architectural decisions that will help you down -the road. That will also give the instructors context for what your app is -supposed to do, so you won't need to explain everything to them when asking for -help debugging. - -### Guidelines for Staying Organized - -**Write down** the decisions you make about your project. This will not only -help you think more clearly, it will also help you communicate your project to -instructors when asking for help. In addition to writing everything down, we -also recommend the following to help stay organized and on track: - -- Describe/sketch your ideas (use diagrams!). -- Start by creating a frontend directory with the basic files you'll need -- Next, build enough code to get some API data to work with. Don't worry about - building all of your async code yet, just get to the point where you can - access one endpoint on an API, then start working on getting that data - displayed. -- Then, continue to build additional async code and frontend features. -- Continue building features one by one. - -Check in with your instructors to make sure your scope and timeline are -manageable. - -### JSON Server Instructions - -> **Note**: Using `json-server` is a stretch goal, so make sure you have a -> working MVP before trying to set up `json-server`! - -You can use this [json-server template][] to generate your backend code. Using -this template will make it easier to deploy your backend later on. - -[json-server template]: https://github.com/learn-co-curriculum/json-server-template - -If you prefer, instead of using the template, you can create a `db.json` file -with a structure in the root of your project that looks like this: - -```json -{ - "toys": [ - { - "id": 1, - "name": "Woody", - "image": "http://www.pngmart.com/files/3/Toy-Story-Woody-PNG-Photos.png", - "likes": 8 - }, - { - "id": 2, - "name": "Buzz Lightyear", - "image": "http://www.pngmart.com/files/6/Buzz-Lightyear-PNG-Transparent-Picture.png", - "likes": 14 - } - ] -} -``` - -Then, assuming you have `json-server` installed globally, you can run this -command to run the server: - -```console -$ json-server --watch db.json -``` - -Whatever top-level keys exist in your `db.json` file will determine the routes -available. In the example above, since we have a key of `toys` pointing to an -array of toy objects, `json-server` will generate the following routes: - -- `GET /toys` -- `POST /toys` -- `GET /toys/:id` -- `PATCH /toys/:id` -- `DELETE /toys/:id` - -You can consult the [json-server docs][] for more information. - -[json-server docs]: https://www.npmjs.com/package/json-server - -## Resources - -- [Public APIs](https://github.com/public-apis/public-apis) -- [Fun APIs](https://apilist.fun/) -- [json-server][] - -[json-server]: https://www.npmjs.com/package/json-server +Gmail - [Daniel Sobit](daniel.sobit@student.moringaschool.com) diff --git a/db.json b/db.json new file mode 100644 index 00000000..b61838dc --- /dev/null +++ b/db.json @@ -0,0 +1,99 @@ +{ + "posts": [ + { + "id": 1, + "title": "json-server", + "author": "typicode" + }, + { + "text": "IOIOIO", + "id": 31 + }, + { + "text": "JUIIOIO", + "id": 32 + }, + { + "text": "KKKK", + "id": 33 + }, + { + "text": "jdkjd", + "id": 34 + }, + { + "text": "ccc", + "id": 35 + }, + { + "text": "ddd", + "id": 36 + }, + { + "text": "sss", + "id": 37 + }, + { + "text": "ddd", + "id": 38 + }, + { + "text": "ddd", + "id": 39 + }, + { + "text": "sobit", + "id": 40 + }, + { + "text": "a", + "id": 41 + }, + { + "text": "s", + "id": 42 + }, + { + "text": "g", + "id": 43 + }, + { + "text": "ddd", + "id": 44 + }, + { + "text": "fffd", + "id": 45 + }, + { + "text": "gggf", + "id": 46 + }, + { + "text": "dmjd", + "id": 47 + }, + { + "text": "dhd", + "id": 48 + }, + { + "text": "igjfkld", + "id": 49 + }, + { + "text": "jjkj", + "id": 50 + } + ], + "comments": [ + { + "id": 1, + "body": "some comment", + "postId": 1 + } + ], + "profile": { + "name": "typicode" + } +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..a874349b --- /dev/null +++ b/index.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + WikiCap - Home of Crypto + + + +
+ + + + +
+
+

The Simplest Way to track
Multiple Currencies

+

WikiCap allows you to explore the crypto world easily. Trust WikiCap to be your crypto market + partner +

+ +
+
+ satoshi_nft + satoshi_nft + satoshi_img +
+
+
+ + + +
+
+
+

Current market

+
+ + + + + + + + + + + + + + + +
MarketCoinLast price24 hour changeChartMarket capitalization
+
+
+ +
+
+
+

Global Business Headlines

+
+
+
    +
    +
    +
    + +
    +
    +
    +

    Services that we
    continue to improve

    +

    The best choice for crypto market information
    and news, with the various super friendly +
    services + we offer

    + +
    +
    +
    + security icon +
    +

    Security guarantee

    +

    Security is guaranteed, we always maintain privacy and maintain the quality of our products +

    +
    +
    +
    + +
    +

    Transparent

    +

    We provide transparent services, our systems and ecosystems can be monitored always

    +
    +
    +
    + love icon +
    +

    User Convenience

    +

    Any service we provide to users is our best experience or services for our beloved customers +

    +
    +
    +
    +
    +
    + + +
    +
    +

    Pin Notes Here

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

    Testimonials

    +
    +
    + + + + + + + +
    +
    +
    + client_image + +
    +
    +
    Kimani Ichung'wa
    +
    Kikuyu
    +
    +
    Being a wikiCap client has been great. Support is always + responsive and helpful, and best of all I've been able to help many new Bitcoin users + get some of their first Bitcoin. It`s always rewarding to be the first on-ramp to the + currency of the future +
    +
    +
    +
    + +
    +
    + client_image + +
    +
    +
    Saitemu Mark
    +
    Ngong
    +
    +
    WikiCap is my first Bitcoin experience. Started as your regular + newbie first time BTC buyer - asking legacy traders what is a wallet and why I need to + follow verification steps. Sold over 400+ Bitcoin to date and helped over 800 newbies + like myself to dive in to this new currency. +
    +
    +
    +
    + +
    +
    + client_image + +
    +
    Sobbo Daniel
    +
    Waiyaki Way
    +
    +
    + I absolutely love this app. It is the very best way to keep track of the alt coin markets. +
    +
    +
    + +
    +
    + client_image + +
    +
    Sumaiya Sumaiya
    +
    Kileleshwa
    +
    +
    + Very useful for everyone.. and trust site... this time they increase earning coins, + wonderful and thankyou so much for my every day withdrawal..😊 +
    +
    +
    + +
    +
    + client_image + +
    +
    Arnold Arnold
    +
    Mirema Drive
    +
    +
    + This website is useful for earning crypto coins.I like very much. +
    +
    +
    +
    +
    + +
    + + + + + + \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 00000000..9461e04b --- /dev/null +++ b/index.js @@ -0,0 +1,140 @@ +document.addEventListener('DOMContentLoaded', function () { + // // let requestOptions = { + // // method: 'GET', + // // redirect: 'follow' + // // }; + + // // dd086e9d-4f05-4e3f-b762-dc7d5a0a0fa3 + //api get request for crypto asset data to populate currency market section + fetch('https://api.coincap.io/v2/assets/?_limit=20') + .then(function (response) { + console.log(response) + return response.json() + }) + //the data will then be input into the function populateCryptoTable + .then(function (data) { + console.log(data) + populateCryptoTable(data) + }) + + //catch method to log errors + .catch(error => console.log(error)) + + + //function that populates the currency market section with data from the api + function populateCryptoTable(data) { + let market = []; + let coinName = []; + let lastPrice = []; + let TwentyFourHourChange = []; + let chart = []; + let marketCap = []; + + data['data'].forEach((coin) => { + market.push(coin.symbol); + coinName.push(coin.name); + lastPrice.push(coin.priceUsd); + TwentyFourHourChange.push(coin.changePercent24Hr); + chart.push(coin.vwap24Hr); + marketCap.push(coin.marketCapUsd); + }) + + let cryptoTable = document.querySelector('#crypto-table-body') + let add = ""; + + for (let i = 0; i < coinName.length; i++) { + add += "" + add += "" + market[i] + "" + add += "" + coinName[i] + "" + add += "$" + Math.round(lastPrice[i]).toFixed(3) + "" + add += "" + Math.round(TwentyFourHourChange[i]).toFixed(3) + "" + add += "" + Math.round(chart[i]).toFixed(3) + "" + add += "$" + Math.round(marketCap[i]) + "" + + // turn the 24hr price change price change either green or red + if (TwentyFourHourChange[i] > 0) { + add += + "" + TwentyFourHourChange[i] + "" + } else { + add += + "" + TwentyFourHourChange[i] + "" + } + add += "" + } + cryptoTable.innerHTML = add + + } + + + + + + //declare variables + let newsItems = [] + + //News API GET Request + fetch('https://newsdata.io/api/1/news?apikey=pub_85111e53b643cfda4841a1cccecbb8fa3f37&q=crypto&language=en&category=business ') + .then(function (response) { + return response.json() + }) + .then(function (data) { + console.log(data.results) + data.results.forEach(results => { + newsItems.push({ + title: results.title, + link: results.link + }) + appendNews(newsItems) + }) + + console.log(newsItems) + }) + .catch(err => console.log(err)) + console.log(newsItems) + + console.log(newsItems) + let newsList = document.querySelector("ul#newslist") + + function appendNews(newsItems) { + for (let i = 0; i < newsItems.length; i++) { + let li = document.createElement("li") + newsContent = ` ${newsItems[i].title}` + li.innerHTML = newsContent + newsList.appendChild(li) + } + } + + //Pin Notes Section + + //Declare Variables + const form = document.querySelector(".pin-notes") + const tasks = document.querySelector('#tasks') + + + form.addEventListener("submit", create) + + const input = document.querySelector("#input") + + function create(event) { + event.preventDefault() + fetch("http://localhost:3000/posts", { + method: 'POST', + body: JSON.stringify({ + text: input.value + }), + headers: { + "Content-type": "application/json; charset=UTF-8" + } + }).then(function (response) { + response.json().then(li) + }) + } + + + function li(input) { + let listItem = document.createElement("li") + listItem.innerHTML = input.text + tasks.appendChild(listItem) + } + +}) \ No newline at end of file diff --git a/src/style.css b/src/style.css new file mode 100644 index 00000000..24ea63bb --- /dev/null +++ b/src/style.css @@ -0,0 +1,544 @@ +* { + margin: 0px; + box-sizing: border-box; +} + +body { + background-image: linear-gradient(to right, #121117, #181820); + font-family: 'Nanum Gothic', sans-serif; + color: whitesmoke; +} + +/* Navigation Section */ + +nav { + position: relative; + height: 100px; + width: 100%; + font-size: 1.5rem; +} + +.nav-header { + display: inline; +} + +.nav>.nav-header>.nav-title { + font-size: 35px; + padding: 20px 80px; + display: inline-block; + font-weight: 1000; + color: #fc6a03; +} + +.nav>.navbar { + float: right; + display: inline; + font-size: 20px; + margin-right: 15%; +} + +.nav>.navbar li { + display: inline-block; + padding: 25px 0px; +} + +a { + text-decoration: none; + color: whitesmoke; + font-weight: 400; + padding: 10px; +} + +a:hover { + color: #fc6a03; + transition: all 0.4s ease; +} + +.container { + display: flex; + width: 100%; + align-items: center; + position: relative; + height: 100vh; +} + +.container>.landing-text { + position: relative; + height: 100vh; + width: 40%; + align-items: center; + margin-top: 25%; +} + +.container .landing-text p { + font-size: 1.3rem; + line-height: 1.5; + color: lightgrey; + padding: 0px 20px; + margin: 10px; + +} + +.container .landing-text p:first-child { + font-weight: 700; + font-family: 'Lato', sans-serif; +} + +.container .landing-text p:first-child span { + color: #fc6a03; + font-size: 2.5rem +} + +.container .landing-text button { + width: 200px; + height: 50px; + margin: 20px 50px; + border-radius: 20px; + border: 0px; + font-size: 1em; +} + +.container .landing-images { + display: flex; + width: 60%; + height: 100vh; + justify-content: flex-end; + padding-right: 50px; + margin-top: 50px; +} + + +.circle-image { + border-radius: 50%; + border: 5px solid #181820; + position: absolute; + width: 350px; + height: 350px; + top: 100px; + bottom: 100px; + left: 45%; +} + +.small-circle { + border: 5px solid #181820; + position: relative; + border-radius: 50%; + width: 150px; + height: 150px; +} + + +.bottom { + top: 250px; +} + +/* Markets Section */ +#markets .markets-container h2 { + padding: 30px; + font-size: 2.5rem; + color: #fc6a03; +} + +#markets .markets-container #crypto-table th { + padding: 0px 60px; +} + +#crypto-table { + border-collapse: separate; + border-spacing: 0 1em; + padding: 0 10px; + background: #181820; + border-radius: 5px; + position: relative; + margin: 2%; + align-items: center; + justify-content: center; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22); +} + +/* News Section */ +#news{ + align-items: center; + justify-content: center; + margin: 5%; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22); +} + +#news .news-card .news-card-header{ + font-size: 1.8rem; + color: #fc6a03; + padding: 10px 0; +} + +#newslist li{ + padding: 8px 0; + font-size: 1rem; + color: whitesmoke; +} + +/* Services Section */ +#services .services-container { + width: 95%; + height: 100vh; + margin: 0 2%; + background: #181820; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22); + display: flex; +} + +#services .services-container .wrapper h4 { + padding: 20% 2% 1%; + font-size: 2.5rem; +} + +#services .services-container .wrapper p { + padding: 10px; +} + +#services .services-container .wrapper button { + margin: 1% 4%; + width: 200px; + height: 50px; + border-radius: 10px; + border: 0px; + background: #fc6a03; + font-size: 1.3rem; + color: whitesmoke; + margin: 20px; + +} + + +#services .services-container .wrapper { + width: 50%; + margin: 7% 2% 0; +} + +#services .services-container .nested-container { + width: 50%; + display: table; + padding: 5px; + margin: 5px 0; +} + +#services .services-container .nested { + width: 50vw; +} + +#services .services-container .nested .nested-image { + width: 18%; + height: 100px; + display: inline-block; + margin: 10px; +} + +#services .services-container .nested .nested-text { + display: inline-block; + width: 50%; + margin: 4%; + height: 20vh; + font-size: 1.2rem; +} + +#services .services-container .nested .nested-text h4 { + padding-top: 10px; + font-size: 2rem; + padding: 10px 0; + color: #fc6a03; +} + +/* Pin Notes Section */ +.pin-todo{ + width: 90vw; + border-radius: 2em; + background: #121117; + padding: 10px; + margin:5% 5%; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22); +} + +.title{ + text-align: center; + margin-bottom: 1rem; +} + +.new-task{ + display: flex; + justify-content: center; + padding: 30px 20px; + position: relative; +} + +.new-task #input{ + flex: 1; + width: 75%; + height: 45px; + padding: 10px; + font-weight: 500; + font-size: 1rem; + border: 1px solid #181820; + outline: none; + border-radius: 0.5rem 0 0 0.5rem; +} + +.new-task #input:focus{ + outline: none; + border-color:#fc6a03; +} + +.submit-button,.cancel-button{ + font-size: 1rem; + font-weight: bold; + border: 1px solid #181820; + color: black; + padding: 0.5rem 0.8rem; + flex: 0 0 0.5rem; + cursor: pointer; + outline: none; + border-radius: 5px; +} + +.submit-button:hover, .cancel-button:hover{ + color: #fc6a03; + background-color: whitesmoke; + transition: all 0.5s; +} + +#tasks{ + border-radius: 10px; + width: 100%; + padding: 30px 20px; + margin-top: 10px; + position: relative; +} + +.task { + display: text; + padding: 10px 10px; + align-items: center; + justify-content: space-between; + cursor: pointer; + border-radius: 8px; + border: 1px solid #fc6a03; + height: 50px; + margin-bottom: 10px; +} + +.reset-button{ + border: none; + cursor: pointer; + outline: none; + border-radius: 5px; + width: 10%; + height: 30px; + font-size: 1rem; +} + +/* Testimonials Section */ + +h2 { + padding: 10px 10px 0; + font-size: 2.5rem; + color: whitesmoke; +} + +.slider { + width: 90vw; + text-align: center; + overflow: hidden; + height: 90vh; + margin: 10px 70px; +} + +.slides { + display: flex; + overflow-x: auto; + scroll-snap-type: x mandatory; + scroll-behavior: smooth; + -webkit-overflow-scrolling: touch; + margin: 10px; +} + +.slides::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +.slides::-webkit-scrollbar-thumb { + background: whitesmoke; + border-radius: 10px; +} + +.slides::-webkit-scrollbar-track { + background: transparent; +} + +.slides>div { + scroll-snap-align: start; + flex-shrink: 0; + width: 70vw; + height: 80vh; + margin-right: 50px; + border-radius: 10px; + background: #121117; + transform-origin: center center; + transform: scale(1); + transition: transform 0.8s; + position: relative; + display: flex; + justify-content: center; + align-items: center; + font-size: 100px; +} + +.wrapper { + height: 80vh; + width: 80vh; + justify-content: center; + align-items: center; +} + +.wrapper .testimonial-image { + width: 50%; + height: 40vh; + border-radius: 50%; +} + +.wrapper .testimonial-text .client-name { + font-size: 1.5rem; + font-weight: 600; + color: #fc6a03; +} + +.wrapper .testimonial-text .client-location { + font-size: 1.3rem; + font-weight: 600; +} + +.client-words { + font-size: 1.2rem; + font-weight: 500; + ; +} + +.wrapper .testimonial-text .client-name, +.wrapper .testimonial-text .client-location, +.client-words { + padding: 10px; +} + + +.author-info { + background: rgba(0, 0, 0, 0.75); + color: white; + padding: 0.75rem; + text-align: center; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + margin: 0; +} + +.author-info a { + color: white; +} + +.slider>a { + display: inline-flex; + width: 1.5rem; + height: 1.5rem; + background: #fc6a03; + text-decoration: none; + align-items: center; + justify-content: center; + border-radius: 50%; + margin: 0 0 0.5rem 0; + position: relative; +} + +.slider>a:active { + top: 1px; +} + +.slider>a:focus { + background: #000; +} + +/* Footer Section */ +.footer { + background: #121117; + padding: 0 20px; +} + +.footer-container { + width: 65%; + margin: auto; + padding: 70px 0; +} + +.col { + width: 30%; + padding: 0 20px; +} + +.col h4 { + font-size: 1.8rem; + color: #fc6a03; + font-weight: 600; + position: relative; + margin-bottom: 20px; +} + +.col h4::before { + position: absolute; + width: 50px; + height: 2px; + box-sizing: border-box; +} + +.col ul li:not(:last-child) { + margin-bottom: 10px; +} + +.col ul li a { + font-size: 16px; + text-decoration: none; + font-weight: 400; + display: block; + transition: all 0.3s ease; +} + +.col ul li a:hover { + padding-left: 10px; +} + +.col .social-links a { + display: inline-block; + height: 50px; + width: 50px; + margin: 0 10px 10px 0; + text-align: center; + line-height: 50px; + border-radius: 50%; +} + +.social-links { + border: #181820; + width: 5vw; +} + +.row { + display: flex; + flex-wrap: wrap; +} + +ul { + list-style-type: none; +} + +.copyright{ + padding: 20px; + color: whitesmoke; + font-weight: 500; +} \ No newline at end of file