commit
076270067d
@ -0,0 +1,2 @@ |
|||||||
|
node_modules |
||||||
|
repo/secret |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
stylesheet: |
||||||
|
npx tailwindcss --input css/source.css --output css/dist.css
|
||||||
@ -0,0 +1,367 @@ |
|||||||
|
const http = require('http'); |
||||||
|
const express = require('express'); |
||||||
|
const fs = require('fs'); |
||||||
|
const url = require('url'); |
||||||
|
const crypto = require('crypto'); |
||||||
|
const session = require('express-session') |
||||||
|
//const FileStore = require('session-file-store')(session)
|
||||||
|
|
||||||
|
const app = express(); |
||||||
|
|
||||||
|
if(!fs.existsSync('repo')) fs.mkdirSync('repo'); |
||||||
|
|
||||||
|
var secret; |
||||||
|
|
||||||
|
var logString = ""; |
||||||
|
|
||||||
|
var credString; |
||||||
|
var credentials; |
||||||
|
|
||||||
|
var activity = "none"; |
||||||
|
|
||||||
|
var voteText = "Sunteti de acord cu initiativa X?"; |
||||||
|
|
||||||
|
var yesVotes = 0; |
||||||
|
var noVotes = 0; |
||||||
|
|
||||||
|
if(!fs.existsSync('repo/secret')){ |
||||||
|
secret = crypto.randomBytes(35).toString('hex'); |
||||||
|
fs.writeFileSync('repo/secret', secret); |
||||||
|
}else{ |
||||||
|
secret = fs.readFileSync('repo/secret'); |
||||||
|
} |
||||||
|
|
||||||
|
if(fs.existsSync('repo/credentials')){ |
||||||
|
credString = fs.readFileSync('repo/credentials') |
||||||
|
credentials = JSON.parse(credString); |
||||||
|
} |
||||||
|
|
||||||
|
app.use(session({ |
||||||
|
secret: secret.toString(), |
||||||
|
saveUninitialized:false, |
||||||
|
resave:false, |
||||||
|
cookie: {maxAge: 120000} |
||||||
|
//store:new FileStore()
|
||||||
|
})); |
||||||
|
|
||||||
|
function report(str){ |
||||||
|
console.log(str); |
||||||
|
logString = logString.concat('\n', str); |
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
report("sha256 of secret string, check for persistance: 0x" + crypto.createHash('sha256').update(secret).digest('hex')); |
||||||
|
|
||||||
|
Object.keys(credentials).forEach(function(key) { |
||||||
|
credentials[key].votingRights = 0; |
||||||
|
credentials[key].loggedIn = 0; |
||||||
|
credentials[key].present = 0; |
||||||
|
}); |
||||||
|
|
||||||
|
function giveVotingRights(){ |
||||||
|
Object.keys(credentials).forEach(function(key) { |
||||||
|
credentials[key].votingRights = 1; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
function takeVotingRights(){ |
||||||
|
Object.keys(credentials).forEach(function(key) { |
||||||
|
credentials[key].votingRights = 0; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
app.get('/', (request, response) => { |
||||||
|
|
||||||
|
if(!request.session.user){ |
||||||
|
response.redirect('/login'); |
||||||
|
response.end(); |
||||||
|
|
||||||
|
}else{ |
||||||
|
response.redirect('/home'); |
||||||
|
response.end(); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/logout', (request, response) => { |
||||||
|
|
||||||
|
if(request.session.user){ |
||||||
|
report('LOGGED OUT: ' + request.session.user); |
||||||
|
credentials[request.session.user].loggedIn = 0; |
||||||
|
request.session.user = ''; |
||||||
|
response.redirect('/'); |
||||||
|
response.end(); |
||||||
|
return; |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/login', (request, response) => { |
||||||
|
fs.readFile('./webFiles/login.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(content); |
||||||
|
}); |
||||||
|
|
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/loginact', (request, response) => { |
||||||
|
|
||||||
|
|
||||||
|
if(request.query.user && request.query.pass){ |
||||||
|
|
||||||
|
if(activity === 'pass'){ |
||||||
|
credentials[request.query.user].pass = crypto.createHash('sha256').update(request.query.pass).digest('hex'); |
||||||
|
report(request.query.user + " RESET THEIR PASSWORD"); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if(credentials[request.query.user].pass === crypto.createHash('sha256').update(request.query.pass).digest('hex')){ |
||||||
|
|
||||||
|
if(credentials[request.query.user].loggedIn === 1){ |
||||||
|
response.writeHeader(200); |
||||||
|
response.end("ALREADY LOGGED IN"); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
request.session.user = request.query.user; |
||||||
|
credentials[request.query.user].loggedIn = 1; |
||||||
|
report("LOG IN: " + request.query.user); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
response.redirect('/home'); |
||||||
|
response.end(); |
||||||
|
|
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/home', (request, response) => { |
||||||
|
|
||||||
|
if(request.session.user === 'admin'){ |
||||||
|
response.redirect('/admin'); |
||||||
|
response.end(); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if(request.session.user){ |
||||||
|
if(activity === "none"){ |
||||||
|
fs.readFile('./webFiles/noactivity.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
contentx = content.toString().replace("$USER$" , request.session.user); |
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(contentx); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
if(activity === "vote" && credentials[request.session.user].votingRights === 1){ |
||||||
|
fs.readFile('./webFiles/vote.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
contentx = content.toString().replace("$VOTETEXT$" , voteText); |
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(contentx); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
if(activity === "vote" && credentials[request.session.user].votingRights === 0){ |
||||||
|
fs.readFile('./webFiles/alrvote.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(content); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
if(activity === "show"){ |
||||||
|
fs.readFile('./webFiles/show.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
contentx = content.toString().replace("$VOTETEXT$" , voteText); |
||||||
|
contentx = contentx.toString().replace("$YESVOTES$", yesVotes); |
||||||
|
contentx = contentx.toString().replace("$NOVOTES$", noVotes); |
||||||
|
|
||||||
|
if(yesVotes >= noVotes) |
||||||
|
contentx = contentx.toString().replace("$RESULT$", "Motiunea a trecut"); |
||||||
|
|
||||||
|
else |
||||||
|
contentx = contentx.toString().replace("$RESULT$", "Motiunea a picat"); |
||||||
|
|
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(contentx); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
}else{ |
||||||
|
response.redirect("/"); |
||||||
|
response.end(); |
||||||
|
} |
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/dashboard', (request, response) => { |
||||||
|
|
||||||
|
if(activity === "show"){ |
||||||
|
fs.readFile('./webFiles/show.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
contentx = content.toString().replace("$VOTETEXT$" , voteText); |
||||||
|
contentx = contentx.toString().replace("$YESVOTES$", yesVotes); |
||||||
|
contentx = contentx.toString().replace("$NOVOTES$", noVotes); |
||||||
|
|
||||||
|
if(yesVotes >= noVotes) |
||||||
|
contentx = contentx.toString().replace("$RESULT$", "Motiunea a trecut"); |
||||||
|
|
||||||
|
else |
||||||
|
contentx = contentx.toString().replace("$RESULT$", "Motiunea a picat"); |
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(contentx); |
||||||
|
}); |
||||||
|
}else{ |
||||||
|
fs.readFile('./webFiles/nodash.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
contentx = content.toString().replace("$USER$" , request.session.user); |
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(contentx); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/vote/yes', (request, response) => { |
||||||
|
|
||||||
|
if(request.session.user){ |
||||||
|
if(credentials[request.session.user].votingRights === 1){ |
||||||
|
credentials[request.session.user].votingRights = 0; |
||||||
|
yesVotes++; |
||||||
|
report(request.session.user + " - YES"); |
||||||
|
}else{ |
||||||
|
response.writeHead(200); |
||||||
|
response.end("ALREADY VOTED"); |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
response.redirect('/home'); |
||||||
|
response.end(); |
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/vote/no', (request, response) => { |
||||||
|
|
||||||
|
if(request.session.user){ |
||||||
|
if(credentials[request.session.user].votingRights === 1){ |
||||||
|
credentials[request.session.user].votingRights = 0; |
||||||
|
noVotes++; |
||||||
|
report(request.session.user + " - NO"); |
||||||
|
}else{ |
||||||
|
response.writeHead(200); |
||||||
|
response.end("ALREADY VOTED"); |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
response.redirect('/home'); |
||||||
|
response.end(); |
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/admin', (request, response) => { |
||||||
|
|
||||||
|
if(request.session.user === 'admin'){ |
||||||
|
fs.readFile('./webFiles/adminpanel.html', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
response.writeHead(200, {'Content-Type': 'text/html'}); |
||||||
|
response.end(content); |
||||||
|
return; |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/admindo', (request, response) => { |
||||||
|
|
||||||
|
if(request.session.user === 'admin'){ |
||||||
|
if(request.query.do === 'start-vot'){ |
||||||
|
activity = "vote"; |
||||||
|
voteText = request.query.text; |
||||||
|
giveVotingRights(); |
||||||
|
report("------------VOT: " + voteText + " ------------"); |
||||||
|
} |
||||||
|
|
||||||
|
if(request.query.do === 'clear'){ |
||||||
|
takeVotingRights(); |
||||||
|
activity = "none"; |
||||||
|
yesVotes = 0; |
||||||
|
noVotes = 0; |
||||||
|
report("------------CLEAR------------"); |
||||||
|
} |
||||||
|
|
||||||
|
if(request.query.do === 'show'){ |
||||||
|
takeVotingRights(); |
||||||
|
activity = "show"; |
||||||
|
report("------------"); |
||||||
|
report("DA - " + yesVotes.toString() + " | NU - " + noVotes.toString()); |
||||||
|
report("------------STOP VOT------------"); |
||||||
|
} |
||||||
|
|
||||||
|
if(request.query.do === 'pass'){ |
||||||
|
report("------------SETTING PASSWORDS------------"); |
||||||
|
activity = "pass"; |
||||||
|
} |
||||||
|
|
||||||
|
if(request.query.do === 'writerepo'){ |
||||||
|
report("------------STOP PASSWORD SETTING------------"); |
||||||
|
activity = "none"; |
||||||
|
fs.writeFileSync('repo/credentials', JSON.stringify(credentials)); |
||||||
|
} |
||||||
|
|
||||||
|
if(request.query.do === 'getaudit'){ |
||||||
|
response.writeHead(200); |
||||||
|
response.end(logString); |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
response.redirect('/admin'); |
||||||
|
response.end(); |
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/css/dist.css', (request, response) => { |
||||||
|
|
||||||
|
fs.readFile('./css/dist.css', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
response.writeHead(200, {'Content-Type': 'text/css'}); |
||||||
|
response.end(content); |
||||||
|
}); |
||||||
|
|
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
app.get('/css/manrope.ttf', (request, response) => { |
||||||
|
|
||||||
|
fs.readFile('./css/manrope.ttf', function(error, content){ |
||||||
|
if(error) report(error); |
||||||
|
|
||||||
|
response.writeHead(200, {'Content-Type': 'font/ttf'}); |
||||||
|
response.end(content); |
||||||
|
}); |
||||||
|
|
||||||
|
return; |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
const server = http.createServer(app); |
||||||
|
server.listen(8881); |
||||||
@ -0,0 +1,939 @@ |
|||||||
|
/* |
||||||
|
! tailwindcss v3.0.18 | MIT License | https://tailwindcss.com |
||||||
|
*/ |
||||||
|
|
||||||
|
/* |
||||||
|
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) |
||||||
|
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) |
||||||
|
*/ |
||||||
|
|
||||||
|
*, |
||||||
|
::before, |
||||||
|
::after { |
||||||
|
box-sizing: border-box; |
||||||
|
/* 1 */ |
||||||
|
border-width: 0; |
||||||
|
/* 2 */ |
||||||
|
border-style: solid; |
||||||
|
/* 2 */ |
||||||
|
border-color: #e5e7eb; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
::before, |
||||||
|
::after { |
||||||
|
--tw-content: ''; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Use a consistent sensible line-height in all browsers. |
||||||
|
2. Prevent adjustments of font size after orientation changes in iOS. |
||||||
|
3. Use a more readable tab size. |
||||||
|
4. Use the user's configured `sans` font-family by default. |
||||||
|
*/ |
||||||
|
|
||||||
|
html { |
||||||
|
line-height: 1.5; |
||||||
|
/* 1 */ |
||||||
|
-webkit-text-size-adjust: 100%; |
||||||
|
/* 2 */ |
||||||
|
-moz-tab-size: 4; |
||||||
|
/* 3 */ |
||||||
|
-o-tab-size: 4; |
||||||
|
tab-size: 4; |
||||||
|
/* 3 */ |
||||||
|
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; |
||||||
|
/* 4 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Remove the margin in all browsers. |
||||||
|
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. |
||||||
|
*/ |
||||||
|
|
||||||
|
body { |
||||||
|
margin: 0; |
||||||
|
/* 1 */ |
||||||
|
line-height: inherit; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Add the correct height in Firefox. |
||||||
|
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) |
||||||
|
3. Ensure horizontal rules are visible by default. |
||||||
|
*/ |
||||||
|
|
||||||
|
hr { |
||||||
|
height: 0; |
||||||
|
/* 1 */ |
||||||
|
color: inherit; |
||||||
|
/* 2 */ |
||||||
|
border-top-width: 1px; |
||||||
|
/* 3 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Add the correct text decoration in Chrome, Edge, and Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
abbr:where([title]) { |
||||||
|
-webkit-text-decoration: underline dotted; |
||||||
|
text-decoration: underline dotted; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Remove the default font size and weight for headings. |
||||||
|
*/ |
||||||
|
|
||||||
|
h1, |
||||||
|
h2, |
||||||
|
h3, |
||||||
|
h4, |
||||||
|
h5, |
||||||
|
h6 { |
||||||
|
font-size: inherit; |
||||||
|
font-weight: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Reset links to optimize for opt-in styling instead of opt-out. |
||||||
|
*/ |
||||||
|
|
||||||
|
a { |
||||||
|
color: inherit; |
||||||
|
text-decoration: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Add the correct font weight in Edge and Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
b, |
||||||
|
strong { |
||||||
|
font-weight: bolder; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Use the user's configured `mono` font family by default. |
||||||
|
2. Correct the odd `em` font sizing in all browsers. |
||||||
|
*/ |
||||||
|
|
||||||
|
code, |
||||||
|
kbd, |
||||||
|
samp, |
||||||
|
pre { |
||||||
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; |
||||||
|
/* 1 */ |
||||||
|
font-size: 1em; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Add the correct font size in all browsers. |
||||||
|
*/ |
||||||
|
|
||||||
|
small { |
||||||
|
font-size: 80%; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Prevent `sub` and `sup` elements from affecting the line height in all browsers. |
||||||
|
*/ |
||||||
|
|
||||||
|
sub, |
||||||
|
sup { |
||||||
|
font-size: 75%; |
||||||
|
line-height: 0; |
||||||
|
position: relative; |
||||||
|
vertical-align: baseline; |
||||||
|
} |
||||||
|
|
||||||
|
sub { |
||||||
|
bottom: -0.25em; |
||||||
|
} |
||||||
|
|
||||||
|
sup { |
||||||
|
top: -0.5em; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) |
||||||
|
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) |
||||||
|
3. Remove gaps between table borders by default. |
||||||
|
*/ |
||||||
|
|
||||||
|
table { |
||||||
|
text-indent: 0; |
||||||
|
/* 1 */ |
||||||
|
border-color: inherit; |
||||||
|
/* 2 */ |
||||||
|
border-collapse: collapse; |
||||||
|
/* 3 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Change the font styles in all browsers. |
||||||
|
2. Remove the margin in Firefox and Safari. |
||||||
|
3. Remove default padding in all browsers. |
||||||
|
*/ |
||||||
|
|
||||||
|
button, |
||||||
|
input, |
||||||
|
optgroup, |
||||||
|
select, |
||||||
|
textarea { |
||||||
|
font-family: inherit; |
||||||
|
/* 1 */ |
||||||
|
font-size: 100%; |
||||||
|
/* 1 */ |
||||||
|
line-height: inherit; |
||||||
|
/* 1 */ |
||||||
|
color: inherit; |
||||||
|
/* 1 */ |
||||||
|
margin: 0; |
||||||
|
/* 2 */ |
||||||
|
padding: 0; |
||||||
|
/* 3 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Remove the inheritance of text transform in Edge and Firefox. |
||||||
|
*/ |
||||||
|
|
||||||
|
button, |
||||||
|
select { |
||||||
|
text-transform: none; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Correct the inability to style clickable types in iOS and Safari. |
||||||
|
2. Remove default button styles. |
||||||
|
*/ |
||||||
|
|
||||||
|
button, |
||||||
|
[type='button'], |
||||||
|
[type='reset'], |
||||||
|
[type='submit'] { |
||||||
|
-webkit-appearance: button; |
||||||
|
/* 1 */ |
||||||
|
background-color: transparent; |
||||||
|
/* 2 */ |
||||||
|
background-image: none; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Use the modern Firefox focus style for all focusable elements. |
||||||
|
*/ |
||||||
|
|
||||||
|
:-moz-focusring { |
||||||
|
outline: auto; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) |
||||||
|
*/ |
||||||
|
|
||||||
|
:-moz-ui-invalid { |
||||||
|
box-shadow: none; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Add the correct vertical alignment in Chrome and Firefox. |
||||||
|
*/ |
||||||
|
|
||||||
|
progress { |
||||||
|
vertical-align: baseline; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Correct the cursor style of increment and decrement buttons in Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
::-webkit-inner-spin-button, |
||||||
|
::-webkit-outer-spin-button { |
||||||
|
height: auto; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Correct the odd appearance in Chrome and Safari. |
||||||
|
2. Correct the outline style in Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
[type='search'] { |
||||||
|
-webkit-appearance: textfield; |
||||||
|
/* 1 */ |
||||||
|
outline-offset: -2px; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Remove the inner padding in Chrome and Safari on macOS. |
||||||
|
*/ |
||||||
|
|
||||||
|
::-webkit-search-decoration { |
||||||
|
-webkit-appearance: none; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Correct the inability to style clickable types in iOS and Safari. |
||||||
|
2. Change font properties to `inherit` in Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
::-webkit-file-upload-button { |
||||||
|
-webkit-appearance: button; |
||||||
|
/* 1 */ |
||||||
|
font: inherit; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Add the correct display in Chrome and Safari. |
||||||
|
*/ |
||||||
|
|
||||||
|
summary { |
||||||
|
display: list-item; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Removes the default spacing and border for appropriate elements. |
||||||
|
*/ |
||||||
|
|
||||||
|
blockquote, |
||||||
|
dl, |
||||||
|
dd, |
||||||
|
h1, |
||||||
|
h2, |
||||||
|
h3, |
||||||
|
h4, |
||||||
|
h5, |
||||||
|
h6, |
||||||
|
hr, |
||||||
|
figure, |
||||||
|
p, |
||||||
|
pre { |
||||||
|
margin: 0; |
||||||
|
} |
||||||
|
|
||||||
|
fieldset { |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
|
||||||
|
legend { |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
|
||||||
|
ol, |
||||||
|
ul, |
||||||
|
menu { |
||||||
|
list-style: none; |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Prevent resizing textareas horizontally by default. |
||||||
|
*/ |
||||||
|
|
||||||
|
textarea { |
||||||
|
resize: vertical; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) |
||||||
|
2. Set the default placeholder color to the user's configured gray 400 color. |
||||||
|
*/ |
||||||
|
|
||||||
|
input::-moz-placeholder, textarea::-moz-placeholder { |
||||||
|
opacity: 1; |
||||||
|
/* 1 */ |
||||||
|
color: #9ca3af; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
input:-ms-input-placeholder, textarea:-ms-input-placeholder { |
||||||
|
opacity: 1; |
||||||
|
/* 1 */ |
||||||
|
color: #9ca3af; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
input::placeholder, |
||||||
|
textarea::placeholder { |
||||||
|
opacity: 1; |
||||||
|
/* 1 */ |
||||||
|
color: #9ca3af; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Set the default cursor for buttons. |
||||||
|
*/ |
||||||
|
|
||||||
|
button, |
||||||
|
[role="button"] { |
||||||
|
cursor: pointer; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Make sure disabled buttons don't get the pointer cursor. |
||||||
|
*/ |
||||||
|
|
||||||
|
:disabled { |
||||||
|
cursor: default; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) |
||||||
|
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) |
||||||
|
This can trigger a poorly considered lint error in some tools but is included by design. |
||||||
|
*/ |
||||||
|
|
||||||
|
img, |
||||||
|
svg, |
||||||
|
video, |
||||||
|
canvas, |
||||||
|
audio, |
||||||
|
iframe, |
||||||
|
embed, |
||||||
|
object { |
||||||
|
display: block; |
||||||
|
/* 1 */ |
||||||
|
vertical-align: middle; |
||||||
|
/* 2 */ |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) |
||||||
|
*/ |
||||||
|
|
||||||
|
img, |
||||||
|
video { |
||||||
|
max-width: 100%; |
||||||
|
height: auto; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
Ensure the default browser behavior of the `hidden` attribute. |
||||||
|
*/ |
||||||
|
|
||||||
|
[hidden] { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
|
||||||
|
*, ::before, ::after { |
||||||
|
--tw-translate-x: 0; |
||||||
|
--tw-translate-y: 0; |
||||||
|
--tw-rotate: 0; |
||||||
|
--tw-skew-x: 0; |
||||||
|
--tw-skew-y: 0; |
||||||
|
--tw-scale-x: 1; |
||||||
|
--tw-scale-y: 1; |
||||||
|
--tw-pan-x: ; |
||||||
|
--tw-pan-y: ; |
||||||
|
--tw-pinch-zoom: ; |
||||||
|
--tw-scroll-snap-strictness: proximity; |
||||||
|
--tw-ordinal: ; |
||||||
|
--tw-slashed-zero: ; |
||||||
|
--tw-numeric-figure: ; |
||||||
|
--tw-numeric-spacing: ; |
||||||
|
--tw-numeric-fraction: ; |
||||||
|
--tw-ring-inset: ; |
||||||
|
--tw-ring-offset-width: 0px; |
||||||
|
--tw-ring-offset-color: #fff; |
||||||
|
--tw-ring-color: rgb(59 130 246 / 0.5); |
||||||
|
--tw-ring-offset-shadow: 0 0 #0000; |
||||||
|
--tw-ring-shadow: 0 0 #0000; |
||||||
|
--tw-shadow: 0 0 #0000; |
||||||
|
--tw-shadow-colored: 0 0 #0000; |
||||||
|
--tw-blur: ; |
||||||
|
--tw-brightness: ; |
||||||
|
--tw-contrast: ; |
||||||
|
--tw-grayscale: ; |
||||||
|
--tw-hue-rotate: ; |
||||||
|
--tw-invert: ; |
||||||
|
--tw-saturate: ; |
||||||
|
--tw-sepia: ; |
||||||
|
--tw-drop-shadow: ; |
||||||
|
--tw-backdrop-blur: ; |
||||||
|
--tw-backdrop-brightness: ; |
||||||
|
--tw-backdrop-contrast: ; |
||||||
|
--tw-backdrop-grayscale: ; |
||||||
|
--tw-backdrop-hue-rotate: ; |
||||||
|
--tw-backdrop-invert: ; |
||||||
|
--tw-backdrop-opacity: ; |
||||||
|
--tw-backdrop-saturate: ; |
||||||
|
--tw-backdrop-sepia: ; |
||||||
|
} |
||||||
|
|
||||||
|
.fixed { |
||||||
|
position: fixed; |
||||||
|
} |
||||||
|
|
||||||
|
.bottom-4 { |
||||||
|
bottom: 1rem; |
||||||
|
} |
||||||
|
|
||||||
|
.my-5 { |
||||||
|
margin-top: 1.25rem; |
||||||
|
margin-bottom: 1.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.my-2 { |
||||||
|
margin-top: 0.5rem; |
||||||
|
margin-bottom: 0.5rem; |
||||||
|
} |
||||||
|
|
||||||
|
.mx-2 { |
||||||
|
margin-left: 0.5rem; |
||||||
|
margin-right: 0.5rem; |
||||||
|
} |
||||||
|
|
||||||
|
.ml-auto { |
||||||
|
margin-left: auto; |
||||||
|
} |
||||||
|
|
||||||
|
.mr-auto { |
||||||
|
margin-right: auto; |
||||||
|
} |
||||||
|
|
||||||
|
.flex { |
||||||
|
display: flex; |
||||||
|
} |
||||||
|
|
||||||
|
.min-h-\[100vh\] { |
||||||
|
min-height: 100vh; |
||||||
|
} |
||||||
|
|
||||||
|
.w-full { |
||||||
|
width: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
.w-5\/6 { |
||||||
|
width: 83.333333%; |
||||||
|
} |
||||||
|
|
||||||
|
.min-w-\[60vw\] { |
||||||
|
min-width: 60vw; |
||||||
|
} |
||||||
|
|
||||||
|
.flex-row { |
||||||
|
flex-direction: row; |
||||||
|
} |
||||||
|
|
||||||
|
.flex-wrap { |
||||||
|
flex-wrap: wrap; |
||||||
|
} |
||||||
|
|
||||||
|
.items-center { |
||||||
|
align-items: center; |
||||||
|
} |
||||||
|
|
||||||
|
.justify-center { |
||||||
|
justify-content: center; |
||||||
|
} |
||||||
|
|
||||||
|
.rounded-3xl { |
||||||
|
border-radius: 1.5rem; |
||||||
|
} |
||||||
|
|
||||||
|
.rounded-xl { |
||||||
|
border-radius: 0.75rem; |
||||||
|
} |
||||||
|
|
||||||
|
.rounded-md { |
||||||
|
border-radius: 0.375rem; |
||||||
|
} |
||||||
|
|
||||||
|
.bg-indigo-900 { |
||||||
|
--tw-bg-opacity: 1; |
||||||
|
background-color: rgb(49 46 129 / var(--tw-bg-opacity)); |
||||||
|
} |
||||||
|
|
||||||
|
.bg-mycol2 { |
||||||
|
--tw-bg-opacity: 1; |
||||||
|
background-color: rgb(22 21 36 / var(--tw-bg-opacity)); |
||||||
|
} |
||||||
|
|
||||||
|
.bg-\[\#0B5D1E\] { |
||||||
|
--tw-bg-opacity: 1; |
||||||
|
background-color: rgb(11 93 30 / var(--tw-bg-opacity)); |
||||||
|
} |
||||||
|
|
||||||
|
.bg-\[\#820933\] { |
||||||
|
--tw-bg-opacity: 1; |
||||||
|
background-color: rgb(130 9 51 / var(--tw-bg-opacity)); |
||||||
|
} |
||||||
|
|
||||||
|
.bg-\[url\(\'\.\.\/\.\.\/img\/bground1\.jpg\'\)\] { |
||||||
|
background-image: url('../../img/bground1.jpg'); |
||||||
|
} |
||||||
|
|
||||||
|
.py-10 { |
||||||
|
padding-top: 2.5rem; |
||||||
|
padding-bottom: 2.5rem; |
||||||
|
} |
||||||
|
|
||||||
|
.px-8 { |
||||||
|
padding-left: 2rem; |
||||||
|
padding-right: 2rem; |
||||||
|
} |
||||||
|
|
||||||
|
.py-3 { |
||||||
|
padding-top: 0.75rem; |
||||||
|
padding-bottom: 0.75rem; |
||||||
|
} |
||||||
|
|
||||||
|
.px-3 { |
||||||
|
padding-left: 0.75rem; |
||||||
|
padding-right: 0.75rem; |
||||||
|
} |
||||||
|
|
||||||
|
.py-5 { |
||||||
|
padding-top: 1.25rem; |
||||||
|
padding-bottom: 1.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.px-5 { |
||||||
|
padding-left: 1.25rem; |
||||||
|
padding-right: 1.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.px-2 { |
||||||
|
padding-left: 0.5rem; |
||||||
|
padding-right: 0.5rem; |
||||||
|
} |
||||||
|
|
||||||
|
.py-1 { |
||||||
|
padding-top: 0.25rem; |
||||||
|
padding-bottom: 0.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.pb-10 { |
||||||
|
padding-bottom: 2.5rem; |
||||||
|
} |
||||||
|
|
||||||
|
.pr-5 { |
||||||
|
padding-right: 1.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.pl-5 { |
||||||
|
padding-left: 1.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.text-center { |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.font-\[manrope\] { |
||||||
|
font-family: manrope; |
||||||
|
} |
||||||
|
|
||||||
|
.text-3xl { |
||||||
|
font-size: 1.875rem; |
||||||
|
line-height: 2.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.text-xl { |
||||||
|
font-size: 1.25rem; |
||||||
|
line-height: 1.75rem; |
||||||
|
} |
||||||
|
|
||||||
|
.text-sm { |
||||||
|
font-size: 0.875rem; |
||||||
|
line-height: 1.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.font-extrabold { |
||||||
|
font-weight: 800; |
||||||
|
} |
||||||
|
|
||||||
|
.font-bold { |
||||||
|
font-weight: 700; |
||||||
|
} |
||||||
|
|
||||||
|
.tracking-wide { |
||||||
|
letter-spacing: 0.025em; |
||||||
|
} |
||||||
|
|
||||||
|
.text-white { |
||||||
|
--tw-text-opacity: 1; |
||||||
|
color: rgb(255 255 255 / var(--tw-text-opacity)); |
||||||
|
} |
||||||
|
|
||||||
|
.text-black { |
||||||
|
--tw-text-opacity: 1; |
||||||
|
color: rgb(0 0 0 / var(--tw-text-opacity)); |
||||||
|
} |
||||||
|
|
||||||
|
.outline { |
||||||
|
outline-style: solid; |
||||||
|
} |
||||||
|
|
||||||
|
.outline-0 { |
||||||
|
outline-width: 0px; |
||||||
|
} |
||||||
|
|
||||||
|
.outline-white { |
||||||
|
outline-color: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
@font-face { |
||||||
|
font-family: 'manrope'; |
||||||
|
|
||||||
|
src: url('./manrope.ttf'); |
||||||
|
} |
||||||
|
|
||||||
|
body { |
||||||
|
padding: 0; |
||||||
|
margin: 0; |
||||||
|
font-family: 'manrope', 'MR', sans-serif; |
||||||
|
font-weight: 600; |
||||||
|
width: 100vw; |
||||||
|
height: 100vh; |
||||||
|
background: #0b001b; |
||||||
|
overflow-x: hidden; |
||||||
|
max-width: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
img.profile{ |
||||||
|
border-radius: 30px; |
||||||
|
height: 100px; |
||||||
|
aspect-ratio: 1 / 1; |
||||||
|
box-shadow: 6px 6px 15px #0b001b; |
||||||
|
} |
||||||
|
|
||||||
|
p{ |
||||||
|
} |
||||||
|
|
||||||
|
.kmscontainer { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 1fr 1fr; |
||||||
|
grid-template-rows: 1fr; |
||||||
|
gap: 0px 0px; |
||||||
|
grid-template-areas: |
||||||
|
"windows office"; |
||||||
|
} |
||||||
|
|
||||||
|
.windows { |
||||||
|
grid-area: windows; |
||||||
|
} |
||||||
|
|
||||||
|
.office { |
||||||
|
grid-area: office; |
||||||
|
} |
||||||
|
|
||||||
|
.winvercontainer { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 1fr 1fr 1fr 1fr; |
||||||
|
grid-template-rows: 1fr; |
||||||
|
gap: 0px 0px; |
||||||
|
grid-template-areas: |
||||||
|
"eleven ten eight seven"; |
||||||
|
} |
||||||
|
|
||||||
|
.eleven { |
||||||
|
grid-area: eleven; |
||||||
|
} |
||||||
|
|
||||||
|
.ten { |
||||||
|
grid-area: ten; |
||||||
|
} |
||||||
|
|
||||||
|
.eight { |
||||||
|
grid-area: eight; |
||||||
|
} |
||||||
|
|
||||||
|
.seven { |
||||||
|
grid-area: seven; |
||||||
|
} |
||||||
|
|
||||||
|
.officevercontainer { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 1fr 1fr 1fr; |
||||||
|
grid-template-rows: 1fr; |
||||||
|
gap: 0px 0px; |
||||||
|
grid-template-areas: |
||||||
|
"twentyone nineteen legacy"; |
||||||
|
} |
||||||
|
|
||||||
|
.twentyone { |
||||||
|
grid-area: twentyone; |
||||||
|
} |
||||||
|
|
||||||
|
.nineteen { |
||||||
|
grid-area: nineteen; |
||||||
|
} |
||||||
|
|
||||||
|
.legacy { |
||||||
|
grid-area: legacy; |
||||||
|
} |
||||||
|
|
||||||
|
.wave { |
||||||
|
-webkit-animation-name: wave-animation; |
||||||
|
animation-name: wave-animation; |
||||||
|
-webkit-animation-duration: 2.5s; |
||||||
|
animation-duration: 2.5s; |
||||||
|
-webkit-animation-iteration-count: infinite; |
||||||
|
animation-iteration-count: infinite; |
||||||
|
transform-origin: 70% 70%; |
||||||
|
display: inline-block; |
||||||
|
} |
||||||
|
|
||||||
|
.emohi:hover { |
||||||
|
-webkit-animation-name: wave-animation; |
||||||
|
animation-name: wave-animation; |
||||||
|
-webkit-animation-duration: 2.5s; |
||||||
|
animation-duration: 2.5s; |
||||||
|
-webkit-animation-iteration-count: 1; |
||||||
|
animation-iteration-count: 1; |
||||||
|
transform-origin: 70% 70%; |
||||||
|
display: inline-block; |
||||||
|
} |
||||||
|
|
||||||
|
@-webkit-keyframes wave-animation { |
||||||
|
0% { |
||||||
|
transform: rotate( 0.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
10% { |
||||||
|
transform: rotate(14.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
20% { |
||||||
|
transform: rotate(-8.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
30% { |
||||||
|
transform: rotate(14.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
40% { |
||||||
|
transform: rotate(-4.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
50% { |
||||||
|
transform: rotate(10.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
60% { |
||||||
|
transform: rotate( 0.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
100% { |
||||||
|
transform: rotate( 0.0deg) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@keyframes wave-animation { |
||||||
|
0% { |
||||||
|
transform: rotate( 0.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
10% { |
||||||
|
transform: rotate(14.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
20% { |
||||||
|
transform: rotate(-8.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
30% { |
||||||
|
transform: rotate(14.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
40% { |
||||||
|
transform: rotate(-4.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
50% { |
||||||
|
transform: rotate(10.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
60% { |
||||||
|
transform: rotate( 0.0deg) |
||||||
|
} |
||||||
|
|
||||||
|
100% { |
||||||
|
transform: rotate( 0.0deg) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.blurbg { |
||||||
|
width:100%; |
||||||
|
height:100%; |
||||||
|
background-size:cover; |
||||||
|
-moz-filter: blur(4px); |
||||||
|
-ms-filter: blur(4px); |
||||||
|
-o-filter: blur(4px); |
||||||
|
filter: blur(4px); |
||||||
|
} |
||||||
|
|
||||||
|
button{ |
||||||
|
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.45), 0 17px 50px 0 rgba(0,0,0,0.40); |
||||||
|
transition: transform .1s; |
||||||
|
outline: none; |
||||||
|
} |
||||||
|
|
||||||
|
button:hover{ |
||||||
|
transform: scale(1.06); |
||||||
|
} |
||||||
|
|
||||||
|
.modal{ |
||||||
|
display: block; |
||||||
|
position: fixed; |
||||||
|
z-index: 1; |
||||||
|
padding-top: 100px; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
background-color: rgba(0,0,0,0.9); |
||||||
|
} |
||||||
|
|
||||||
|
.modal-content{ |
||||||
|
margin: auto; |
||||||
|
display: block; |
||||||
|
width: 80%; |
||||||
|
max-width: 700px; |
||||||
|
} |
||||||
|
|
||||||
|
.hover\:bg-indigo-900:hover { |
||||||
|
--tw-bg-opacity: 1; |
||||||
|
background-color: rgb(49 46 129 / var(--tw-bg-opacity)); |
||||||
|
} |
||||||
|
|
||||||
|
@media (min-width: 640px) { |
||||||
|
.sm\:flex-nowrap { |
||||||
|
flex-wrap: nowrap; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@media (min-width: 768px) { |
||||||
|
.md\:w-2\/3 { |
||||||
|
width: 66.666667%; |
||||||
|
} |
||||||
|
|
||||||
|
.md\:max-w-\[70vw\] { |
||||||
|
max-width: 70vw; |
||||||
|
} |
||||||
|
|
||||||
|
.md\:bg-transparent { |
||||||
|
background-color: transparent; |
||||||
|
} |
||||||
|
|
||||||
|
.md\:py-3 { |
||||||
|
padding-top: 0.75rem; |
||||||
|
padding-bottom: 0.75rem; |
||||||
|
} |
||||||
|
|
||||||
|
.md\:px-7 { |
||||||
|
padding-left: 1.75rem; |
||||||
|
padding-right: 1.75rem; |
||||||
|
} |
||||||
|
|
||||||
|
.md\:text-xl { |
||||||
|
font-size: 1.25rem; |
||||||
|
line-height: 1.75rem; |
||||||
|
} |
||||||
|
} |
||||||
Binary file not shown.
@ -0,0 +1,144 @@ |
|||||||
|
@tailwind base; |
||||||
|
@tailwind components; |
||||||
|
@tailwind utilities; |
||||||
|
|
||||||
|
|
||||||
|
@font-face { |
||||||
|
|
||||||
|
font-family: 'manrope'; |
||||||
|
src: url('./manrope.ttf'); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
body { |
||||||
|
padding: 0; |
||||||
|
margin: 0; |
||||||
|
font-family: 'manrope', 'MR', sans-serif; |
||||||
|
font-weight: 600; |
||||||
|
width: 100vw; |
||||||
|
height: 100vh; |
||||||
|
background: #0b001b; |
||||||
|
overflow-x: hidden; |
||||||
|
max-width: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
img.profile{ |
||||||
|
border-radius: 30px; |
||||||
|
height: 100px; |
||||||
|
aspect-ratio: 1 / 1; |
||||||
|
box-shadow: 6px 6px 15px #0b001b; |
||||||
|
} |
||||||
|
|
||||||
|
p{ |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
.kmscontainer { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 1fr 1fr; |
||||||
|
grid-template-rows: 1fr; |
||||||
|
gap: 0px 0px; |
||||||
|
grid-template-areas: |
||||||
|
"windows office"; |
||||||
|
} |
||||||
|
|
||||||
|
.windows { grid-area: windows; } |
||||||
|
.office { grid-area: office; } |
||||||
|
|
||||||
|
.winvercontainer { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 1fr 1fr 1fr 1fr; |
||||||
|
grid-template-rows: 1fr; |
||||||
|
gap: 0px 0px; |
||||||
|
grid-template-areas: |
||||||
|
"eleven ten eight seven"; |
||||||
|
} |
||||||
|
|
||||||
|
.eleven { grid-area: eleven; } |
||||||
|
|
||||||
|
.ten { grid-area: ten; } |
||||||
|
|
||||||
|
.eight { grid-area: eight; } |
||||||
|
|
||||||
|
.seven { grid-area: seven; } |
||||||
|
|
||||||
|
.officevercontainer { |
||||||
|
display: grid; |
||||||
|
grid-template-columns: 1fr 1fr 1fr; |
||||||
|
grid-template-rows: 1fr; |
||||||
|
gap: 0px 0px; |
||||||
|
grid-template-areas: |
||||||
|
"twentyone nineteen legacy"; |
||||||
|
} |
||||||
|
|
||||||
|
.twentyone { grid-area: twentyone; } |
||||||
|
|
||||||
|
.nineteen { grid-area: nineteen; } |
||||||
|
|
||||||
|
.legacy { grid-area: legacy; } |
||||||
|
|
||||||
|
|
||||||
|
.wave { |
||||||
|
animation-name: wave-animation; |
||||||
|
animation-duration: 2.5s; |
||||||
|
animation-iteration-count: infinite; |
||||||
|
transform-origin: 70% 70%; |
||||||
|
display: inline-block; |
||||||
|
} |
||||||
|
.emohi:hover { |
||||||
|
animation-name: wave-animation; |
||||||
|
animation-duration: 2.5s; |
||||||
|
animation-iteration-count: 1; |
||||||
|
transform-origin: 70% 70%; |
||||||
|
display: inline-block; |
||||||
|
} |
||||||
|
|
||||||
|
@keyframes wave-animation { |
||||||
|
0% { transform: rotate( 0.0deg) } |
||||||
|
10% { transform: rotate(14.0deg) } |
||||||
|
20% { transform: rotate(-8.0deg) } |
||||||
|
30% { transform: rotate(14.0deg) } |
||||||
|
40% { transform: rotate(-4.0deg) } |
||||||
|
50% { transform: rotate(10.0deg) } |
||||||
|
60% { transform: rotate( 0.0deg) } |
||||||
|
100% { transform: rotate( 0.0deg) } |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
.blurbg { |
||||||
|
width:100%; |
||||||
|
height:100%; |
||||||
|
background-size:cover; |
||||||
|
-webkit-filter: blur(4px); |
||||||
|
-moz-filter: blur(4px); |
||||||
|
-ms-filter: blur(4px); |
||||||
|
-o-filter: blur(4px); |
||||||
|
filter: blur(4px); |
||||||
|
} |
||||||
|
|
||||||
|
button{ |
||||||
|
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.45), 0 17px 50px 0 rgba(0,0,0,0.40); |
||||||
|
transition: transform .1s; |
||||||
|
outline: none; |
||||||
|
} |
||||||
|
|
||||||
|
button:hover{ |
||||||
|
transform: scale(1.06); |
||||||
|
} |
||||||
|
|
||||||
|
.modal{ |
||||||
|
display: block; |
||||||
|
position: fixed; |
||||||
|
z-index: 1; |
||||||
|
padding-top: 100px; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
background-color: rgba(0,0,0,0.9); |
||||||
|
} |
||||||
|
|
||||||
|
.modal-content{ |
||||||
|
margin: auto; |
||||||
|
display: block; |
||||||
|
width: 80%; |
||||||
|
max-width: 700px; |
||||||
|
} |
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,17 @@ |
|||||||
|
{ |
||||||
|
"name": "csevote", |
||||||
|
"version": "1.0.0", |
||||||
|
"description": "CSE voting system", |
||||||
|
"main": "app.js", |
||||||
|
"scripts": { |
||||||
|
"test": "echo \"Error: no test specified\" && exit 1" |
||||||
|
}, |
||||||
|
"author": "Puly", |
||||||
|
"license": "0BSD", |
||||||
|
"dependencies": { |
||||||
|
"cookie-parser": "^1.4.6", |
||||||
|
"express": "^4.18.2", |
||||||
|
"express-session": "^1.17.3", |
||||||
|
"session-file-store": "^1.5.0" |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1 @@ |
|||||||
|
{"9a":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9b":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9c":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9d":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9e":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9f":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9g":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9h":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"9i":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10a":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10b":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10c":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10d":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10e":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10f":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10g":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10h":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"10i":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11a":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11b":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11c":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11d":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11e":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11f":{"pass":"2318b65f445747bfe10c682871f2b47ea17216ffa17534dafa8ddc9da5c32333","votingRights":0,"loggedIn":0,"present":0},"11g":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11h":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"11i":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12a":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12b":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12c":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12d":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12e":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12f":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12g":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12h":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"12i":{"pass":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","votingRights":0,"loggedIn":0,"present":0},"admin":{"pass":"1ffa7c52a148976b2bf75ca97382f91ed00e563a3019ff43e432fd744b50d168","votingRights":0,"loggedIn":1,"present":0}} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
{ |
||||||
|
"11f" : { |
||||||
|
"pass": "2d711642b726b04401627ca9fbac32f5c8530fb1903cc4db02258717921a4881", |
||||||
|
"votingRights": 0, |
||||||
|
"loggedIn": 0, |
||||||
|
"present": 0 |
||||||
|
}, |
||||||
|
"admin" : { |
||||||
|
"pass": "1ffa7c52a148976b2bf75ca97382f91ed00e563a3019ff43e432fd744b50d168", |
||||||
|
"votingRights": 0, |
||||||
|
"loggedIn": 0, |
||||||
|
"present": 0 |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
module.exports = { |
||||||
|
content: [ |
||||||
|
'./**/*.html', |
||||||
|
'./index.html', |
||||||
|
'./*.html' |
||||||
|
], |
||||||
|
darkMode: true, |
||||||
|
theme: { |
||||||
|
extend: { |
||||||
|
colors: { |
||||||
|
'mycol0': '#200f4c', |
||||||
|
//'mycol': '#8870ff',
|
||||||
|
'mycol': '#8a97ff', |
||||||
|
'mycol2': '#161524', |
||||||
|
}, |
||||||
|
backgroundImage: { |
||||||
|
'bground1': "url('/webPage/img/bground1.jpg')", |
||||||
|
}, |
||||||
|
animation: { |
||||||
|
wiggle: 'wiggle 1s ease-in-out infinite', |
||||||
|
}, |
||||||
|
}, |
||||||
|
}, |
||||||
|
plugins: [], |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,89 @@ |
|||||||
|
<!doctype html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="/css/dist.css" rel="stylesheet"> |
||||||
|
<title>ADMIN PANEL</title> |
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="flex min-h-[100vh] justify-center items-center text-white"> |
||||||
|
<div class="md:max-w-[70vw] ml-auto mr-auto"> |
||||||
|
|
||||||
|
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center"> |
||||||
|
<div class="my-5 md:w-2/3 items-center justify-center text-center"> |
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">ADMIN PANEL</p> |
||||||
|
|
||||||
|
<div class="text-center text-white"> |
||||||
|
<input type="url" id="text" class="text-xl rounded-xl text-black py-3 px-3 w-full" placeholder="PROPUNERE"> |
||||||
|
<p class="pb-10"> </p> |
||||||
|
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="startvot">STARTVOT</button> |
||||||
|
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="show">REZULTATE - STOP VOT</button> |
||||||
|
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="clear">STERGE TABLA</button> |
||||||
|
|
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">PAROLE</p> |
||||||
|
|
||||||
|
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="pass">SETEAZA PAROLELE</button> |
||||||
|
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="writerepo">SALVEAZA PAROLELE</button> |
||||||
|
|
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">AUDIT</p> |
||||||
|
|
||||||
|
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="audit">ARATA AUDIT</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
|
||||||
|
var propunere = document.getElementById("text"); |
||||||
|
|
||||||
|
var start = document.getElementById("startvot"); |
||||||
|
|
||||||
|
var show = document.getElementById("show"); |
||||||
|
|
||||||
|
var clear = document.getElementById("clear"); |
||||||
|
|
||||||
|
var pass = document.getElementById("pass"); |
||||||
|
|
||||||
|
var writerepo = document.getElementById("writerepo"); |
||||||
|
|
||||||
|
var audit = document.getElementById("audit"); |
||||||
|
|
||||||
|
|
||||||
|
start.addEventListener("click", function(){ |
||||||
|
var url= "/admindo?do=start-vot&text=" + text.value; |
||||||
|
location.href = url; |
||||||
|
}); |
||||||
|
show.addEventListener("click", function(){ |
||||||
|
var url= "/admindo?do=show"; |
||||||
|
location.href = url; |
||||||
|
}); |
||||||
|
clear.addEventListener("click", function(){ |
||||||
|
var url= "/admindo?do=clear"; |
||||||
|
location.href = url; |
||||||
|
}); |
||||||
|
pass.addEventListener("click", function(){ |
||||||
|
var url= "/admindo?do=pass"; |
||||||
|
location.href = url; |
||||||
|
}); |
||||||
|
writerepo.addEventListener("click", function(){ |
||||||
|
var url= "/admindo?do=writerepo"; |
||||||
|
location.href = url; |
||||||
|
}); |
||||||
|
|
||||||
|
audit.addEventListener("click", function(){ |
||||||
|
var url= "/admindo?do=getaudit"; |
||||||
|
location.href = url; |
||||||
|
}); |
||||||
|
|
||||||
|
</script> |
||||||
|
|
||||||
|
</html> |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
<!doctype html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="../../../css/dist.css" rel="stylesheet"> |
||||||
|
<title>CSE Vote</title> |
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="flex min-h-[100vh] justify-center items-center text-white"> |
||||||
|
<div class="ml-auto mr-auto"> |
||||||
|
|
||||||
|
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center"> |
||||||
|
<div class="my-5 w-5/6 items-center justify-center text-center"> |
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">Vot inregistrat, asteptati rezultatele!</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="text-white bold fixed bottom-4 flex flex-row flex-wrap sm:flex-nowrap items-center mx-50 justify-center ml-auto mr-auto mx-100 px-2 pt-100 text-md bg-purple md:bg-transparent"> |
||||||
|
|
||||||
|
<button type="button" class="redir outline rounded-md py-1 md:py-3 bg-mycol2 px-3 md:px-7 outline-0 outline-white hover:bg-indigo-900 mx-2" onclick="location.href = '/logout';"> |
||||||
|
<span>Logout</span> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
setTimeout(function(){ |
||||||
|
location.reload(false); |
||||||
|
}, 5000); |
||||||
|
</script> |
||||||
|
|
||||||
|
</html> |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
<!doctype html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="/css/dist.css" rel="stylesheet"> |
||||||
|
<title>CSE Vote</title> |
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="flex min-h-[100vh] justify-center items-center text-white"> |
||||||
|
<div class="md:max-w-[70vw] ml-auto mr-auto"> |
||||||
|
|
||||||
|
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center"> |
||||||
|
<div class="my-5 md:w-2/3 items-center justify-center text-center"> |
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">CSE Vote Login</p> |
||||||
|
|
||||||
|
<div class="text-center text-white"> |
||||||
|
<input type="url" id="user" class="text-xl rounded-xl text-black py-3 px-3 w-full" placeholder="Clasa"> |
||||||
|
<p class="pb-10"> </p> |
||||||
|
<input type="url" id="pass" class="text-xl rounded-xl text-black py-3 px-3 w-full" placeholder="Parola"> |
||||||
|
<p class="pb-10"> </p> |
||||||
|
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="ok">Login</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
|
||||||
|
var user = document.getElementById("user"); |
||||||
|
var pass = document.getElementById("pass"); |
||||||
|
|
||||||
|
var submit = document.getElementById("ok"); |
||||||
|
|
||||||
|
|
||||||
|
submit.addEventListener("click", function(){ |
||||||
|
var url= "/loginact?user=" + user.value + "&pass=" + pass.value; |
||||||
|
location.href = url; |
||||||
|
}); |
||||||
|
|
||||||
|
</script> |
||||||
|
|
||||||
|
</html> |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
<!doctype html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="../../../css/dist.css" rel="stylesheet"> |
||||||
|
<title>CSE Vote</title> |
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="flex min-h-[100vh] justify-center items-center text-white"> |
||||||
|
<div class="ml-auto mr-auto"> |
||||||
|
|
||||||
|
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center"> |
||||||
|
<div class="my-5 w-5/6 items-center justify-center text-center"> |
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">Buna $USER$, momentan nu se desfasoara niciun vot.</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="text-white bold fixed bottom-4 flex flex-row flex-wrap sm:flex-nowrap items-center mx-50 justify-center ml-auto mr-auto mx-100 px-2 pt-100 text-md bg-purple md:bg-transparent"> |
||||||
|
|
||||||
|
<button type="button" class="redir outline rounded-md py-1 md:py-3 bg-mycol2 px-3 md:px-7 outline-0 outline-white hover:bg-indigo-900 mx-2" onclick="location.href = '/logout';"> |
||||||
|
<span>Logout</span> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
setTimeout(function(){ |
||||||
|
location.reload(false); |
||||||
|
}, 9000); |
||||||
|
</script> |
||||||
|
|
||||||
|
</html> |
||||||
@ -0,0 +1,35 @@ |
|||||||
|
<!doctype html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="../../../css/dist.css" rel="stylesheet"> |
||||||
|
<title>CSE Vote</title> |
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="flex min-h-[100vh] justify-center items-center text-white"> |
||||||
|
<div class="ml-auto mr-auto"> |
||||||
|
|
||||||
|
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center"> |
||||||
|
<div class="my-5 w-5/6 items-center justify-center text-center"> |
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">CSE VOTE</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
setTimeout(function(){ |
||||||
|
location.reload(false); |
||||||
|
}, 9000); |
||||||
|
</script> |
||||||
|
|
||||||
|
</html> |
||||||
@ -0,0 +1,57 @@ |
|||||||
|
<!doctype html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="../../css/dist.css" rel="stylesheet"> |
||||||
|
<title>CSE Vote</title> |
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="flex min-h-[100vh] justify-center items-center text-white" bg-[url('../../img/bground1.jpg')]> |
||||||
|
<div class="md:max-w-[70vw] ml-auto mr-auto"> |
||||||
|
|
||||||
|
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center"> |
||||||
|
<div class="my-5 md:w-2/3 items-center justify-center text-center"> |
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">$VOTETEXT$</p> |
||||||
|
|
||||||
|
<div class="text-center text-white"> |
||||||
|
<div class="kmscontainer"> |
||||||
|
<div class="windows pr-5"> |
||||||
|
<button type="button" class="rounded-xl w-full bg-[#0B5D1E] my-2 py-5 my-2 px-5 py-5 text-3xl font-bold tracking-wide justify-center items-center font-[manrope]">$YESVOTES$</button> |
||||||
|
</div> |
||||||
|
<div class="office pl-5"> |
||||||
|
<button type="button" class="rounded-xl w-full bg-[#820933] my-2 py-5 px-5 py-5 text-3xl font-bold tracking-wide justify-center items-center font-[manrope]">$NOVOTES$</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">$RESULT$</p> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="text-white bold fixed bottom-4 flex flex-row flex-wrap sm:flex-nowrap items-center mx-50 justify-center ml-auto mr-auto mx-100 px-2 pt-100 text-md bg-purple md:bg-transparent"> |
||||||
|
|
||||||
|
<button type="button" class="redir outline rounded-md py-1 md:py-3 bg-mycol2 px-3 md:px-7 outline-0 outline-white hover:bg-indigo-900 mx-2" onclick="location.href = '/logout';"> |
||||||
|
<span>Logout</span> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
setTimeout(function(){ |
||||||
|
location.reload(false); |
||||||
|
}, 5000); |
||||||
|
</script> |
||||||
|
|
||||||
|
</html> |
||||||
@ -0,0 +1,54 @@ |
|||||||
|
<!doctype html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="../../css/dist.css" rel="stylesheet"> |
||||||
|
<title>CSE Vote</title> |
||||||
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="flex min-h-[100vh] justify-center items-center text-white" bg-[url('../../img/bground1.jpg')]> |
||||||
|
<div class="md:max-w-[70vw] ml-auto mr-auto"> |
||||||
|
|
||||||
|
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center"> |
||||||
|
<div class="my-5 md:w-2/3 items-center justify-center text-center"> |
||||||
|
<p class="text-3xl pb-10 font-extrabold tracking-wide">$VOTETEXT$</p> |
||||||
|
|
||||||
|
<div class="text-center text-white"> |
||||||
|
<div class="kmscontainer"> |
||||||
|
<div class="windows pr-5"> |
||||||
|
<button type="button" class="rounded-xl w-full bg-[#0B5D1E] my-2 py-5 my-2 px-5 py-5 text-3xl font-bold tracking-wide justify-center items-center font-[manrope]" onclick="location.href='/vote/yes';">DA</button> |
||||||
|
</div> |
||||||
|
<div class="office pl-5"> |
||||||
|
<button type="button" class="rounded-xl w-full bg-[#820933] my-2 py-5 px-5 py-5 text-3xl font-bold tracking-wide justify-center items-center font-[manrope]" onclick="location.href = '/vote/no';">NU</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="text-white bold fixed bottom-4 flex flex-row flex-wrap sm:flex-nowrap items-center mx-50 justify-center ml-auto mr-auto mx-100 px-2 pt-100 text-md bg-purple md:bg-transparent"> |
||||||
|
|
||||||
|
<button type="button" class="redir outline rounded-md py-1 md:py-3 bg-mycol2 px-3 md:px-7 outline-0 outline-white hover:bg-indigo-900 mx-2" onclick="location.href = '/logout';"> |
||||||
|
<span>Logout</span> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
<script> |
||||||
|
|
||||||
|
</script> |
||||||
|
|
||||||
|
</html> |
||||||
Loading…
Reference in new issue