diff --git a/.gitlab/issue_templates/Feature.md b/.gitlab/issue_templates/Feature.md new file mode 100644 index 00000000..7505c0a1 --- /dev/null +++ b/.gitlab/issue_templates/Feature.md @@ -0,0 +1,19 @@ +Feature Request +=============== +Summary +------- +[//]: # (Please write a concise description of the feature you would like implemented.) + +Prerequisites +------------- +[//]: # (Include links to other feature requests or problems that would need to be handled before implementing this.) + +Proposed Implementation +----------------------- +[//]: # (If you have an idea of how the feature should be implemented please write it down here.) + +References +---------- +[//]: # (Please provide links to projects which implement something similar, or projects that could be used to implement this feature.) + +/label ~feature diff --git a/INSTALL/centos.sh b/INSTALL/centos.sh index d1225541..9c8511d4 100644 --- a/INSTALL/centos.sh +++ b/INSTALL/centos.sh @@ -44,7 +44,7 @@ if [ "$ffmpeginstall" = "y" ] || [ "$ffmpeginstall" = "Y" ]; then sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm sudo yum install ffmpeg ffmpeg-devel -y else - sudo npm install ffmpeg-static + sudo npm install ffmpeg-static@2.2.1 fi fi echo "Shinobi - Do you want to Install Node.js?" diff --git a/INSTALL/ubuntu.sh b/INSTALL/ubuntu.sh index 2e1ef468..5299374a 100644 --- a/INSTALL/ubuntu.sh +++ b/INSTALL/ubuntu.sh @@ -62,7 +62,7 @@ if [ "$ffmpeginstall" = "y" ] || [ "$ffmpeginstall" = "Y" ]; then echo "=============" fi else - sudo npm install ffmpeg-static + sudo npm install ffmpeg-static@2.2.1 fi fi echo "=============" diff --git a/LICENSE b/LICENSE deleted file mode 100644 index bfa6bfe2..00000000 --- a/LICENSE +++ /dev/null @@ -1,76 +0,0 @@ - SHINOBI OPEN SOURCE SOFTWARE LICENSE AGREEMENT - Version 1, 04 June 2018 - - Copyright (C) 2018 Shinobi Systems - - We'll try to keep it simple. Thanks for using Shinobi Software! - -Defintions. - - In this End User Licence Agreement, - "EULA" shall mean this End User Licence Agreement - "Licenser" shall mean SHINOBI SYSTEMS - "Licensee" shall mean YOU, or the organisation (if any) on whose behalf YOU are taking the EULA. - - "SOFTWARE PRODUCTS" or "SOFTWARE" or "PRODUCTS" shall mean the Software Product this License is included with and any additional modules or add-ons delivered by Shinobi Systems. The term "SOFTWARE" includes, to the extent provided by SHINOBI SYSTEMS: 1) any revisions, updates and/or upgrades thereto; 2) any data, image or executable files, databases, data engines, computer software, or similar items customarily used or distributed with computer software products; 3) anything in any form whatsoever intended to be used with or in conjunction with the SOFTWARE; and 4) any associated media, documentation (including physical, electronic and on-line) and printed materials (the "Documentation"). - -Purpose of the Agreement. - - The Short : Protect the rights of this Software Product and the Licenser. - - The Long : The LICENSER grants the LICENSEE a non-exclusive, non-transferable and perpetual licence to use the SOFTWARE PRODUCTS listed therein and under the terms thereof. By accepting the terms and conditions established in this agreement, the LICENSEE does not acquire any ownership of copyright or other intellectual property rights in any part of the SOFTWARE PRODUCTS. The LICENSEE is only entitled to use the SOFTWARE PRODUCTS in accordance with the terms and conditions set forth by Shinobi Systems. By using the SOFTWARE PRODUCTS, the LICENSEE agrees to accept the terms and conditions presented. - - LICENSEE must purchase the applicable subscription in any other use case unless otherwise granted. If the use case does not have a subscription applicable please contact a representative at support@shinobi.systems. - -Conditions for Free (Unpaid) use. - - - Use in a non commercial area for non commercial purposes - - Educational use - - Testing Purposes - - Use in a School like a elementary school, college, or university - -Support Services. - - The Maintenance and Support Service shall be contracted and provided as per selected plan agreement, taxes will be included in all prices for Support Services. - - Support Services will only provide support services as per the selected agreement. - - This is not the entire agreement on support services. You must also review all agreements provided with subscription plans provided. - -Software Product Ownership. - - This software is property of Shinobi Systems. LICENSEE must keep all copyright notices unchanged. - -Modification of this Software Product. - - LICENSEE may modify the code but LICENSEE must provide the source code if asked by law enforcement or an authorized Shinobi representative. LICENSEE must keep all copyright notices unchanged. - -Software Product Rebranding or "White-Labelling". - - LICENSEE can remove the Shinobi branding from the front end but all copyright notices must remain unchanged. - -Software Product Contributions. - - All contributed code becomes the property of Shinobi Systems. All contributors give permission to Shinobi and Shinobi developers to use the code however it is seen fit. - -Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -Limitation of Liability. - - LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM SHINOBI SYSTEMS AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO $5.00 CAD. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. - This limitation applies to: - - - anything related to the software, services, content (including code) on third-party Internet sites, or third-party programs; and - - claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. - - It also applies even if Shinobi Systems knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. - -Changes to the Agreement. - - Shinobi Systems reserves the right to change the license and set of terms at any time. Continued use is agreement to those possible changes. Changes to this license will be provided in the commit history of the repository it is located in. - -Legal Proceedings - - All lawsuits must be filed in the city in which the current headquarters is based at the time of the filing. \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..9e331858 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,138 @@ +SHINOBI OPEN SOURCE SOFTWARE LICENSE AGREEMENT +============================================== + Version 1, 04 June 2018 + + Copyright (C) 2018 [Shinobi Systems](https://shinobi.systems) + + *We'll try to keep it simple. Thanks for using Shinobi Software!* + +Defintions. +----------- +This license, which also serves as a general End User License Agreement [EULA], the following terms shall be interpreted by these definitions: + * "EULA" shall mean this End User Licence Agreement + * "Licensor" shall mean SHINOBI SYSTEMS + * "Licensee" shall mean YOU, or the organisation (if any) on whose behalf YOU are taking the EULA. + +"SOFTWARE PRODUCTS" or "SOFTWARE" or "PRODUCTS" shall mean the Software Product this License is +included with and any additional modules or add-ons delivered by Shinobi Systems. The term +"SOFTWARE" includes, to the extent provided by SHINOBI SYSTEMS: + 1) any revisions, updates and/or upgrades thereto; + 2) any data, image or executable files, databases, data engines, computer software, or similar + items customarily used or distributed with computer software products; + 3) anything in any form whatsoever intended to be used with or in conjunction with the SOFTWARE; + 4) any associated media, documentation (including physical, electronic and on-line) and printed + materials (the "Documentation"). + +Purpose of the Agreement. +------------------------- +**The Short**: Protect the rights of this Software Product and the Licensor. + +**The Long**: The Licensor grants the LICENSEE a non-exclusive, non-transferable and perpetual +licence to use the SOFTWARE PRODUCTS listed therein and under the terms thereof. By accepting +the terms and conditions established in this agreement, the LICENSEE does not acquire any +ownership of copyright or other intellectual property rights in any part of the SOFTWARE +PRODUCTS. The LICENSEE is only entitled to use the SOFTWARE PRODUCTS in accordance with the +terms and conditions set forth by Shinobi Systems. By using the SOFTWARE PRODUCTS, the +LICENSEE agrees to accept the terms and conditions presented. + +LICENSEE must purchase the applicable subscription in any other use case unless otherwise +granted. If the use case does not have a subscription applicable please contact a +representative at support@shinobi.systems. + +#### Commercial Uses +- Selling usage of the software +- Using the software in locations that engage in the buying and selling of goods and services + +#### Conditions for Free (Unpaid) use. +- Use in a non commercial area +- Used for non commercial purposes +- When used for research or educational purposes +- Testing Purposes +- Usage by Educational institutions +- Use for Emergency Services and facilties associated like Search and Rescue Services or Ambulance Services +- Use in Health Care facility like a hospital or walk-in clinic + +#### Support Services. +The Maintenance and Support Service shall be contracted and provided as per selected plan +agreement, taxes will be included in all prices for Support Services. + +Support Services will only provide support services as per the selected agreement. + +This is not the entire agreement on support services. You must also review all agreements +provided with subscription plans provided. + +#### Software Product Ownership. +This software is property of Shinobi Systems. LICENSEE must keep all copyright notices +unchanged. + +#### Modification of this Software Product. +LICENSEE may modify code for personal use but must provide these changes upon request from Shinobi Systems or an authorized Shinobi representative. LICENSEE may not alter or change copyright notices. All code changes by LICENSEE shall fall under the copyright of Shinobi Systems in the case code modified by LICENSEE is integrated into the official Shinobi code base. + +#### Software Product Rebranding or "White-Labelling". +LICENSEE can remove the Shinobi branding from the front end but all copyright notices must +remain unchanged. + +#### Software Product Contributions. +All contributed code becomes the property of Shinobi Systems. All contributors give permission +to Shinobi and Shinobi developers to use the code however it is seen fit. + +#### Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK +AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +#### Changes to the Agreement. +Shinobi Systems reserves the right to change the license and set of terms at any time. +Continued use is agreement to those possible changes. Changes to this license will be provided +in the commit history of the repository it is located in. + +#### Legal Proceedings. +All lawsuits must be filed at the Vancouver Court House. + +Courthouse Vancouver Robson Square +800 Hornby St, Vancouver, BC V6Z 2C5 + +#### List of Included Software + + This list is completed to best of our knowledge. + + Node.js - https://nodejs.org/en/ + MariaDB - https://mariadb.org/ + FFmpeg - https://www.ffmpeg.org/ + Express (npm) - https://expressjs.com/ https://www.npmjs.com/package/express + EJS (npm) - http://ejs.co/ https://www.npmjs.com/package/ejs + pam-diff (npm) (Motion Detector) - https://github.com/kevinGodell/pam-diff + pipe2pam (npm) (for pam-diff) - https://github.com/kevinGodell/pipe2pam + mp4frag (npm) (Poseidon's main engine) - https://github.com/kevinGodell/mp4frag + mse-live-player (for mp4frag) - https://github.com/kevinGodell/mse-live-player + pipe2jpeg (npm) - https://github.com/kevinGodell/pipe2jpeg + webdav (npm) - https://www.npmjs.com/package/webdav + jsonfile (npm) - https://www.npmjs.com/package/jsonfile + connectionTester (npm) - https://www.npmjs.com/package/connectionTester + node-onvif (npm) - https://www.npmjs.com/package/node-onvif + knex (npm) - https://www.npmjs.com/package/knex + nodemailer (npm) - https://www.npmjs.com/package/nodemailer + mysql (npm) - https://www.npmjs.com/package/mysql + sqlite3 (npm) - https://www.npmjs.com/package/sqlite3 + ldapauth-fork (npm) - https://www.npmjs.com/package/ldapauth-fork + http-proxy (npm) - https://www.npmjs.com/package/http-proxy + hls.js - https://github.com/video-dev/hls.js/ + flv.js - https://github.com/Bilibili/flv.js/ + Material Design Lite - https://getmdl.io/ + socket.io - https://socket.io/ + fullcalendar - https://fullcalendar.io/ + jQuery & jQuery UI - http://jquery.com + Bootstrap - https://getbootstrap.com/ + PNotify - https://sciactive.com/pnotify/ + Font Awesome - https://fontawesome.com/ + Gridstack.js - http://gridstackjs.com/ + Date Range Picker (daterangepicker.js) - http://www.daterangepicker.com/ + Hero Pattern CSS Backgrounds - http://www.heropatterns.com/ + Bootstrap Table - https://github.com/wenzhixin/bootstrap-table + placeholder.js - https://jamesallardice.github.io/Placeholders.js/ + Moment.js - https://momentjs.com/ + Livestamp.js - https://mattbradley.github.io/livestampjs/ + Lodash - https://lodash.com/ \ No newline at end of file diff --git a/UPDATE.sh b/UPDATE.sh index 04b7a302..c2c48faa 100644 --- a/UPDATE.sh +++ b/UPDATE.sh @@ -1,24 +1,83 @@ #!/bin/bash -distro=$1 -repo=$2 -if [ -z "$distro" ]; then - distro='master' -fi -if [ -z "$repo" ]; then - repo='ShinobiCCTV' -fi -if [ "$repo" = "ShinobiCCTV" ]; then - productName="Shinobi Professional (Pro)" + +gitURL="$(git remote get-url origin)" +branch="$(git name-rev --name-only HEAD)" +productName="Shinobi Pro" +reqsubstr="Not a git repository" +if [ -z "${gitURL##*$reqsubstr*}" ]; then + echo "This is not a Git folder" + gitURL="https://gitlab.com/Shinobi-Systems/Shinobi" + branch='master' else - productName="Shinobi Community Editon (CE)" + echo "This is a Git folder" fi -git reset --hard -git pull -gitURL="https://github.com/$repo/Shinobi" +reqsubstr="/ShinobiCE" +if [ -z "${gitURL##*$reqsubstr*}" ]; then + echo "This is Shinobi CE" + productName="Shinobi CE" + gitURL="https://gitlab.com/Shinobi-Systems/ShinobiCE" +else + echo "This is Shinobi Pro" +fi +echo $branch +echo $gitURL +echo "Shinobi - Stopping All Processes" +pm2 stop all + +# open working directory (default is /home) +cd .. + +# delete the old backup +if [ -e "./ShinobiOld" ]; then + echo "Remove old backup" + rm -rf ShinobiOld +fi + +# back up old install +echo "Shinobi - Backup old files" +mv Shinobi ShinobiOld + +# clone the new files +echo "Shinobi - Download new files" +git clone $gitURL -b $branch Shinobi + +# set permissions +chmod -R 777 Shinobi + +# move videos, videos2, conf.json, and super.json +echo "Shinobi - Move videos, videos2, conf.json, and super.json" +mv ShinobiOld/videos Shinobi/videos +mv ShinobiOld/videos2 Shinobi/videos2 +cp ShinobiOld/conf.json Shinobi/conf.json +if [ -e "./ShinobiOld/super.json" ]; then + cp ShinobiOld/super.json Shinobi/super.json +fi + +# merge new plugin files but keep configs (added files) +echo "Shinobi - merge new plugin files but keep configs (added files)" +cp -R Shinobi/plugins Shinobi/pluginsTemp +rm -rf Shinobi/plugins +cp -R ShinobiOld/plugins Shinobi/plugins +rm -rf ShinobiOld/plugins +cp -R Shinobi/pluginsTemp/* Shinobi/plugins/ +rm -rf Shinobi/pluginsTemp + +# move node modules and install updates +echo "Shinobi - Move node modules and install updates" +mv ShinobiOld/node_modules Shinobi/node_modules +cd Shinobi +chmod -R 777 node_modules +npm install + +# write version info gitVersionNumber=$(git rev-parse HEAD) theDateRightNow=$(date) -rm version.json touch version.json -chmod 755 version.json -echo '{"Product" : "'"$productName"'" , "Branch" : "'"$distro"'" , "Version" : "'"$gitVersionNumber"'" , "Date" : "'"$theDateRightNow"'" , "Repository" : "'"$gitURL"'"}' > version.json -echo "Restart Shinobi for updates to take effect." \ No newline at end of file +chmod 666 version.json +versionJson='{"Product" : "'"$productName"'" , "Branch" : "'"$branch"'" , "Version" : "'"$gitVersionNumber"'" , "Date" : "'"$theDateRightNow"'" , "Repository" : "'"$gitURL"'"}' +echo $versionJson > version.json +echo $versionJson + +# start processes +echo "Shinobi - Starting All Processes" +pm2 start all \ No newline at end of file diff --git a/camera.js b/camera.js index fc3c331c..2f5be48c 100644 --- a/camera.js +++ b/camera.js @@ -116,6 +116,7 @@ if(config.databaseType===undefined){config.databaseType='mysql'} if(config.pluginKeys===undefined)config.pluginKeys={}; if(config.databaseLogs===undefined){config.databaseLogs=false} if(config.useUTC===undefined){config.useUTC=false} +if(config.strictDatabase===undefined){config.strictDatabase=false} if(config.pipeAddition===undefined){config.pipeAddition=7}else{config.pipeAddition=parseInt(config.pipeAddition)} //Web Paths if(config.webPaths===undefined){config.webPaths={}} @@ -326,8 +327,13 @@ s.ocvTx=function(data){ } } //send data to socket client function -s.tx=function(z,y,x){if(x){return x.broadcast.to(y).emit('f',z)};io.to(y).emit('f',z);} -s.txWithSubPermissions=function(z,y,permissionChoices){ +s.tx = function(z,y,x){if(x){return x.broadcast.to(y).emit('f',z)};io.to(y).emit('f',z);} +s.txToDashcamUsers = function(data,groupKey){ + Object.keys(s.group[groupKey].dashcamUsers).forEach(function(auth){ + s.tx(data,s.group[groupKey].dashcamUsers[auth].cnid) + }) +} +s.txWithSubPermissions = function(z,y,permissionChoices){ if(typeof permissionChoices==='string'){ permissionChoices=[permissionChoices] } @@ -488,6 +494,12 @@ s.getRequest = function(url,callback){ s.kill=function(x,e,p){ if(s.group[e.ke]&&s.group[e.ke].mon[e.id]&&s.group[e.ke].mon[e.id].spawn !== undefined){ if(s.group[e.ke].mon[e.id].spawn){ + s.group[e.ke].mon[e.mid].allowStdinWrite = false + s.txToDashcamUsers({ + f : 'disable_stream', + ke : e.ke, + mid : e.id + },e.ke) s.group[e.ke].mon[e.id].spawn.stdio[3].unpipe(); // if(s.group[e.ke].mon[e.id].p2pStream){s.group[e.ke].mon[e.id].p2pStream.unpipe();} if(s.group[e.ke].mon[e.id].p2p){s.group[e.ke].mon[e.id].p2p.unpipe();} @@ -517,7 +529,7 @@ s.kill=function(x,e,p){ if(!x||x===1){return}; p=x.pid; if(s.group[e.ke].mon_conf[e.id].type===('dashcam'||'socket'||'jpeg'||'pipe')){ - x.stdin.pause();setTimeout(function(){x.kill('SIGTERM');delete(x);},500) + x.stdin.pause();setTimeout(function(){x.kill('SIGTERM');},500) }else{ try{ x.stdin.setEncoding('utf8');x.stdin.write('q'); @@ -592,7 +604,7 @@ s.ffmpegVersion=execSync(config.ffmpegDir+" -version").toString().split('Copyrig console.log('FFMPEG version : '+s.ffmpegVersion) if(s.ffmpegVersion.indexOf(': 2.')>-1){ s.systemLog('FFMPEG is too old : '+s.ffmpegVersion+', Needed : 3.2+',err) - return + throw (new Error()) } //directories s.group={}; @@ -652,6 +664,7 @@ s.init=function(x,e,k,fn){ if(!s.group[e.ke].sizeChangeQueue){s.group[e.ke].sizeChangeQueue=[]} if(!s.group[e.ke].sizePurgeQueue){s.group[e.ke].sizePurgeQueue=[]} if(!s.group[e.ke].users){s.group[e.ke].users={}} + if(!s.group[e.ke].dashcamUsers){s.group[e.ke].dashcamUsers={}} if(!s.group[e.ke].mon[e.mid]){s.group[e.ke].mon[e.mid]={}} if(!s.group[e.ke].mon[e.mid].streamIn){s.group[e.ke].mon[e.mid].streamIn={}}; if(!s.group[e.ke].mon[e.mid].emitterChannel){s.group[e.ke].mon[e.mid].emitterChannel={}}; @@ -791,6 +804,10 @@ s.init=function(x,e,k,fn){ checkQueue() } break; + case'monitorStatus': + s.group[e.ke].mon[e.id].monitorStatus = e.status + s.tx(Object.assign(e,{f:'monitor_status'}),'GRP_'+e.ke) + break; } if(typeof e.callback==='function'){setTimeout(function(){e.callback()},500);} } @@ -884,30 +901,32 @@ s.video=function(x,e,k){ }) }); break; - case'archive': - if(!e.filename&&e.time){e.filename=s.formattedTime(e.time)} - if(!e.status){e.status=0} - e.details.archived="1" - e.save=[JSON.stringify(e.details),e.id,e.ke,s.nameToTime(e.filename)]; - s.sqlQuery('UPDATE Videos SET details=? WHERE `mid`=? AND `ke`=? AND `time`=?',e.save,function(err,r){ - s.tx({f:'video_edit',status:3,filename:e.filename+'.'+e.ext,mid:e.mid,ke:e.ke,time:s.nameToTime(e.filename)},'GRP_'+e.ke); - }); - break; case'delete': - if(!e.filename&&e.time){e.filename=s.formattedTime(e.time)} - var filename + if(!e.filename && e.time){ + e.filename = s.formattedTime(e.time) + } + var filename, + time if(e.filename.indexOf('.')>-1){ filename = e.filename }else{ filename = e.filename+'.'+e.ext } - if(!e.status){e.status=0} - e.save=[e.id,e.ke,s.nameToTime(filename)]; - s.sqlQuery('SELECT * FROM Videos WHERE `mid`=? AND `ke`=? AND `time`=?',e.save,function(err,r){ + if(e.filename && !e.time){ + time = s.nameToTime(filename) + }else{ + time = e.time + } + time = new Date(time) + if(config.databaseType !== 'sqlite'){ + time = moment(time).format('YYYY-MM-DD HH:mm:ss') + } + e.save=[e.id,e.ke,time]; + s.sqlQuery('SELECT * FROM Videos WHERE `mid`=? AND `ke`=? AND `time`=? LIMIT 1',e.save,function(err,r){ if(r&&r[0]){ r=r[0] var dir=s.video('getDir',r) - s.sqlQuery('DELETE FROM Videos WHERE `mid`=? AND `ke`=? AND `time`=?',e.save,function(){ + s.sqlQuery('DELETE FROM Videos WHERE `mid`=? AND `ke`=? AND `time`=? LIMIT 1',e.save,function(){ fs.stat(dir+filename,function(err,file){ if(err){ s.systemLog('File Delete Error : '+e.ke+' : '+' : '+e.mid,err) @@ -917,6 +936,9 @@ s.video=function(x,e,k){ s.tx({f:'video_delete',filename:filename,mid:e.mid,ke:e.ke,time:s.nameToTime(filename),end:s.formattedTime(new Date,'YYYY-MM-DD HH:mm:ss')},'GRP_'+e.ke); s.file('delete',dir+filename) }) + }else{ +// console.log('Delete Failed',e) +// console.error(err) } }) break; @@ -1028,7 +1050,8 @@ s.video=function(x,e,k){ }else{ queryString = '' } - v.href = '/'+k+'/videos/'+v.ke+'/'+v.mid+'/'+s.formattedTime(v.time)+'.'+v.ext; + v.filename = s.formattedTime(v.time)+'.'+v.ext; + v.href = '/'+k+'/videos/'+v.ke+'/'+v.mid+'/'+v.filename; v.links = { deleteVideo : v.href+'/delete' + queryString, changeToUnread : v.href+'/status/1' + queryString, @@ -1067,6 +1090,7 @@ s.video=function(x,e,k){ if(s.group[e.ke].usedSpace>(s.group[e.ke].sizeLimit*config.cron.deleteOverMaxOffset)){ s.sqlQuery('SELECT * FROM Videos WHERE status != 0 AND details NOT LIKE \'%"archived":"1"%\' AND ke=? ORDER BY `time` ASC LIMIT 2',[e.ke],function(err,evs){ k.del=[];k.ar=[e.ke]; + if(!evs)return console.log(err) evs.forEach(function(ev){ ev.dir=s.video('getDir',ev)+s.formattedTime(ev.time)+'.'+ev.ext; k.del.push('(mid=? AND time=?)'); @@ -1130,8 +1154,8 @@ s.video=function(x,e,k){ }); k.filename = s.formattedTime(e.startTime)+'.'+e.ext }else{ - e.startTime = s.utcToLocal(e.startTime) - e.endTime = s.utcToLocal(e.endTime) +// e.startTime = s.utcToLocal(e.startTime) +// e.endTime = s.utcToLocal(e.endTime) k.filename = k.file } if(!e.ext){e.ext = k.filename.split('.')[1]} @@ -1174,9 +1198,9 @@ s.video=function(x,e,k){ filename:k.filename, mid:e.mid, ke:e.ke, - time:s.timeObject(e.startTime).format(), + time:e.startTime, size:e.filesize, - end:s.timeObject(e.endTime).format() + end:e.endTime },'GRP_'+e.ke,'video_view'); } //cloud auto savers @@ -1213,7 +1237,11 @@ s.video=function(x,e,k){ if(e.details&&e.details.dir&&e.details.dir!==''){ k.details.dir = e.details.dir } - if(config.useUTC)k.details.isUTC = config.useUTC; + if(config.useUTC === true)k.details.isUTC = config.useUTC; + if(config.strictDatabase === true){ + e.startTime = s.formattedTime(e.startTime) + e.endTime = s.formattedTime(e.endTime) + } var save = [ e.mid, e.ke, @@ -1515,11 +1543,11 @@ s.ffmpeg=function(e){ //input - stream loop (good for static files/lists) if(e.details.stream_loop==='1'){x.cust_input+=' -stream_loop -1'}; //input + if(e.details.cust_input.indexOf('-fflags') === -1){x.cust_input+=' -fflags +igndts'} switch(e.type){ case'h264': switch(e.protocol){ case'rtsp': - if(e.details.cust_input.indexOf('-fflags') === -1){x.cust_input+=' -fflags +igndts'} if(e.details.rtsp_transport&&e.details.rtsp_transport!==''&&e.details.rtsp_transport!=='no'){x.cust_input+=' -rtsp_transport '+e.details.rtsp_transport;} break; } @@ -1908,19 +1936,19 @@ s.ffmpeg=function(e){ } switch(e.type){ case'dashcam': - x.ffmpegCommandString += ' -i -'; + x.ffmpegCommandString += x.cust_input+x.hwaccel+' -i -'; break; case'socket':case'jpeg':case'pipe': - x.ffmpegCommandString += ' -pattern_type glob -f image2pipe'+x.record_fps+' -vcodec mjpeg'+x.cust_input+' -i -'; + x.ffmpegCommandString += ' -pattern_type glob -f image2pipe'+x.record_fps+' -vcodec mjpeg'+x.cust_input+x.hwaccel+' -i -'; break; case'mjpeg': - x.ffmpegCommandString += ' -reconnect 1 -f mjpeg'+x.cust_input+' -i "'+e.url+'"'; + x.ffmpegCommandString += ' -reconnect 1 -f mjpeg'+x.cust_input+x.hwaccel+' -i "'+e.url+'"'; break; case'h264':case'hls':case'mp4': x.ffmpegCommandString += x.cust_input+x.hwaccel+' -i "'+e.url+'"'; break; case'local': - x.ffmpegCommandString += x.cust_input+' -i "'+e.path+'"'; + x.ffmpegCommandString += x.cust_input+x.hwaccel+' -i "'+e.path+'"'; break; } //add extra input maps @@ -2281,6 +2309,7 @@ s.camera=function(x,e,cn,tx){ s.tx({viewers:e.ob,ke:e.ke,id:e.id},'MON_'+e.id); break; case'restart'://restart monitor + s.init('monitorStatus',{id:e.id,ke:e.ke,status:'Restarting'}); s.camera('stop',e) setTimeout(function(){ s.camera(e.mode,e) @@ -2335,6 +2364,11 @@ s.camera=function(x,e,cn,tx){ s.log(e,{type:lang['Monitor Idling'],msg:lang.MonitorIdlingText}); } } + var wantedStatus = lang.Stopped + if(x==='idle'){ + var wantedStatus = lang.Idle + } + s.init('monitorStatus',{id:e.id,ke:e.ke,status:wantedStatus}); break; case'start':case'record'://watch or record monitor url s.init(0,{ke:e.ke,mid:e.id}) @@ -2345,6 +2379,7 @@ s.camera=function(x,e,cn,tx){ return } //lock this function + s.init('monitorStatus',{id:e.id,ke:e.ke,status:lang.Starting}); s.group[e.ke].mon[e.id].started = 1; //create host string without username and password e.hosty = e.host.split('@'); @@ -2356,7 +2391,9 @@ s.camera=function(x,e,cn,tx){ e.hosty = e.hosty[0] } //set recording status + var wantedStatus = lang.Watching if(x==='record'){ + var wantedStatus = lang.Recording s.group[e.ke].mon[e.id].record.yes=1; }else{ s.group[e.ke].mon[e.mid].record.yes=0; @@ -2421,19 +2458,26 @@ s.camera=function(x,e,cn,tx){ }else{ s.kill(s.group[e.ke].mon[e.id].spawn,e); } + s.init('monitorStatus',{id:e.id,ke:e.ke,status:lang.Died}); } - errorFatalCount = 0; + var errorFatalCount = 0; + //cutoff time and recording check interval + if(!e.details.cutoff||e.details.cutoff===''){e.cutoff=15}else{e.cutoff=parseFloat(e.details.cutoff)}; + if(isNaN(e.cutoff)===true){e.cutoff=15} //set master based process launcher - launchMonitorProcesses = function(){ + var launchMonitorProcesses = function(){ + s.group[e.ke].mon[e.id].allowStdinWrite = false + s.txToDashcamUsers({ + f : 'disable_stream', + ke : e.ke, + mid : e.id + },e.ke) if(e.details.detector_trigger=='1'){ s.group[e.ke].mon[e.id].motion_lock=setTimeout(function(){ clearTimeout(s.group[e.ke].mon[e.id].motion_lock); delete(s.group[e.ke].mon[e.id].motion_lock); },30000) } - //cutoff time and recording check interval - if(!e.details.cutoff||e.details.cutoff===''){e.cutoff=15}else{e.cutoff=parseFloat(e.details.cutoff)}; - if(isNaN(e.cutoff)===true){e.cutoff=15} //start "no motion" checker if(e.details.detector=='1'&&e.details.detector_notrigger=='1'){ if(!e.details.detector_notrigger_timeout||e.details.detector_notrigger_timeout===''){ @@ -2466,9 +2510,24 @@ s.camera=function(x,e,cn,tx){ s.group[e.ke].mon[e.id].detector_notrigger_timeout=setInterval(s.group[e.ke].mon[e.id].detector_notrigger_timeout_function,s.group[e.ke].mon[e.id].detector_notrigger_timeout) }) } + var resetRecordingCheck = function(){ + clearTimeout(s.group[e.ke].mon[e.id].checker) + clearTimeout(s.group[e.ke].mon[e.id].checkStream) + var cutoff = e.cutoff + 0 + if(e.type === 'dashcam'){ + cutoff *= 100 + } + s.group[e.ke].mon[e.id].checker=setTimeout(function(){ + if(s.group[e.ke].mon[e.id].started === 1){ + launchMonitorProcesses(); + s.init('monitorStatus',{id:e.id,ke:e.ke,status:lang.Restarting}); + s.log(e,{type:lang['Camera is not recording'],msg:{msg:lang['Restarting Process']}}); + } + },60000 * cutoff * 1.1); + } var resetStreamCheck=function(){ clearTimeout(s.group[e.ke].mon[e.id].checkStream) - s.group[e.ke].mon[e.id].checkStream=setTimeout(function(){ + s.group[e.ke].mon[e.id].checkStream = setTimeout(function(){ if(s.group[e.ke].mon[e.id].started===1){ launchMonitorProcesses(); s.log(e,{type:lang['Camera is not streaming'],msg:{msg:lang['Restarting Process']}}); @@ -2483,14 +2542,7 @@ s.camera=function(x,e,cn,tx){ s.group[e.ke].mon[e.id].open = filename.split('.')[0] break; case'change': - clearTimeout(s.group[e.ke].mon[e.id].checker) - clearTimeout(s.group[e.ke].mon[e.id].checkStream) - s.group[e.ke].mon[e.id].checker=setTimeout(function(){ - if(s.group[e.ke].mon[e.id].started===1){ - launchMonitorProcesses(); - s.log(e,{type:lang['Camera is not recording'],msg:{msg:lang['Restarting Process']}}); - } - },60000 * e.cutoff * 1.1); + resetRecordingCheck() break; } }); @@ -2521,6 +2573,17 @@ s.camera=function(x,e,cn,tx){ if(!s.group[e.ke].mon[e.id].record){s.group[e.ke].mon[e.id].record={yes:1}}; //launch ffmpeg (main) s.group[e.ke].mon[e.id].spawn = s.ffmpeg(e); + if(e.type === 'dashcam'){ + setTimeout(function(){ + s.group[e.ke].mon[e.id].allowStdinWrite = true + s.txToDashcamUsers({ + f : 'enable_stream', + ke : e.ke, + mid : e.id + },e.ke) + },30000) + } + s.init('monitorStatus',{id:e.id,ke:e.ke,status:wantedStatus}); //on unexpected exit restart s.group[e.ke].mon[e.id].spawn_exit=function(){ if(s.group[e.ke].mon[e.id].started===1){ @@ -2836,6 +2899,12 @@ s.camera=function(x,e,cn,tx){ d=d.toString(); e.chk=function(x){return d.indexOf(x)>-1;} switch(true){ + case e.chk('Non-monotonous DTS'): + case e.chk('NULL @'): + case e.chk('RTP: missed'): + case e.chk('deprecated pixel format used, make sure you did set range correctly'): + return + break; //mp4 output with webm encoder chosen case e.chk('Could not find tag for vp8'): case e.chk('Only VP8 or VP9 Video'): @@ -2857,11 +2926,6 @@ s.camera=function(x,e,cn,tx){ // s.camera('restart',e) return s.log(e,{type:lang['Incorrect Settings Chosen'],msg:{msg:d}}) break; - case e.chk('NULL @'): - case e.chk('RTP: missed'): - case e.chk('deprecated pixel format used, make sure you did set range correctly'): - return - break; // case e.chk('av_interleaved_write_frame'): case e.chk('Connection refused'): case e.chk('Connection timed out'): @@ -2875,14 +2939,14 @@ s.camera=function(x,e,cn,tx){ // case e.chk('Unable to open RTSP for listening'): // case e.chk('timed out'): // case e.chk('Invalid data found when processing input'): -// case e.chk('Immediate exit requested'): // case e.chk('reset by peer'): // if(e.frames===0&&x==='record'){s.video('delete',e)}; // setTimeout(function(){ // if(!s.group[e.ke].mon[e.id].spawn){launchMonitorProcesses()} // },2000) // break; - case e.chk('mjpeg_decode_dc'): + case e.chk('Immediate exit requested'): + case e.chk('mjpeg_decode_dc'): case e.chk('bad vlc'): case e.chk('error dc'): launchMonitorProcesses() @@ -2911,6 +2975,7 @@ s.camera=function(x,e,cn,tx){ }) } s.group[e.ke].mon[e.id].detector_motion_count = 0 + resetRecordingCheck() return; break; } @@ -4193,8 +4258,11 @@ var tx; switch(d.ff){ case'update': s.ffmpegKill() - s.systemLog('Shinobi ordered to update',{by:cn.mail,ip:cn.ip,distro:d.distro}) - var updateProcess = spawn('sh',(__dirname+'/UPDATE.sh '+d.distro).split(' '),{detached: true}) + s.systemLog('Shinobi ordered to update',{ + by:cn.mail, + ip:cn.ip + }) + var updateProcess = spawn('sh',(__dirname+'/UPDATE.sh').split(' '),{detached: true}) updateProcess.stderr.on('data',function(data){ s.systemLog('Update Info',data.toString()) }) @@ -4360,21 +4428,59 @@ var tx; cn.ke=d.ke,cn.uid=d.uid,cn.auth=d.auth; if(!s.group[d.ke])s.group[d.ke]={}; if(!s.group[d.ke].users)s.group[d.ke].users={}; - s.group[d.ke].users[d.auth]={cnid:cn.id,uid:r.uid,mail:r.mail,details:JSON.parse(r.details),logged_in_at:s.timeObject(new Date).format(),login_type:'Streamer'} + if(!s.group[d.ke].dashcamUsers)s.group[d.ke].dashcamUsers={}; + s.group[d.ke].users[d.auth]={ + cnid:cn.id, + ke : d.ke, + uid:r.uid, + mail:r.mail, + details:JSON.parse(r.details), + logged_in_at:s.timeObject(new Date).format(), + login_type:'Streamer' + } + s.group[d.ke].dashcamUsers[d.auth] = s.group[d.ke].users[d.auth] + if(s.group[d.ke].mon){ + Object.keys(s.group[d.ke].mon).forEach(function(monitorId){ + var dataToClient = { + f : 'disable_stream', + mid : monitorId, + ke : d.ke + } + var mon = s.group[d.ke].mon[monitorId] + if(s.group[d.ke].mon_conf[monitorId].type === 'dashcam'){ + if(mon.allowStdinWrite === true){ + dataToClient.f = 'enable_stream' + } + s.tx(dataToClient,cn.id) + } + }) + } } }) }else{ - switch(d.f){ - case'monitor_chunk': - if(!s.group[d.ke]||!s.group[d.ke].mon[d.mid]){return} - if(s.group[d.ke].mon[d.mid].started!==1){s.tx({error:'Not Started'},cn.id);return false}; - s.group[d.ke].mon[d.mid].spawn.stdin.write(new Buffer(d.chunk, "binary")); - break; - case'monitor_frame': - if(!s.group[d.ke]||!s.group[d.ke].mon[d.mid]){return} - if(s.group[d.ke].mon[d.mid].started!==1){s.tx({error:'Not Started'},cn.id);return false}; - s.group[d.ke].mon[d.mid].spawn.stdin.write(d.frame); - break; + if(s.group[d.ke] && s.group[d.ke].mon[d.mid]){ + if(s.group[d.ke].mon[d.mid].allowStdinWrite === true){ + switch(d.f){ + case'monitor_chunk': + if(s.group[d.ke].mon[d.mid].started!==1 || !s.group[d.ke].mon[d.mid].spawn || !s.group[d.ke].mon[d.mid].spawn.stdin){ + s.tx({error:'Not Started'},cn.id); + return false + }; + s.group[d.ke].mon[d.mid].spawn.stdin.write(new Buffer(d.chunk, "binary")); + break; + case'monitor_frame': + if(s.group[d.ke].mon[d.mid].started!==1){ + s.tx({error:'Not Started'},cn.id); + return false + }; + s.group[d.ke].mon[d.mid].spawn.stdin.write(d.frame); + break; + } + }else{ + s.tx({error:'Cannot Write Yet'},cn.id) + } + }else{ + s.tx({error:'Non Existant Monitor'},cn.id) } } }) @@ -4407,6 +4513,43 @@ var tx; break; } }) + //functions for retrieving cron announcements + cn.on('cron',function(d){ + if(d.f==='init'){ + if(config.cron.key){ + if(config.cron.key===d.cronKey){ + s.cron={started:moment(),last_run:moment(),id:cn.id}; + }else{ + cn.disconnect() + } + }else{ + s.cron={started:moment(),last_run:moment(),id:cn.id}; + } + }else{ + if(s.cron&&cn.id===s.cron.id){ + delete(d.cronKey) + switch(d.f){ + case'filters': + s.filterEvents(d.ff,d); + break; + case's.tx': + s.tx(d.data,d.to) + break; + case's.video': + s.video(d.data,d.file) + break; + case'start':case'end': + d.mid='_cron';s.log(d,{type:'cron',msg:d.msg}) + break; + default: + s.systemLog('CRON : ',d) + break; + } + }else{ + cn.disconnect() + } + } + }) cn.on('disconnect', function () { if(cn.socketVideoStream){ cn.closeSocketVideoStream() @@ -4426,6 +4569,7 @@ var tx; } s.log({ke:cn.ke,mid:'$USER'},{type:lang['Websocket Disconnected'],msg:{mail:s.group[cn.ke].users[cn.auth].mail,id:cn.uid,ip:cn.ip}}) delete(s.group[cn.ke].users[cn.auth]); + delete(s.group[cn.ke].dashcamUsers[cn.auth]); } } if(cn.pluginEngine){ @@ -4433,6 +4577,9 @@ var tx; s.tx({f:'plugin_engine_unplugged',plug:cn.pluginEngine},'CPU') delete(s.api[cn.pluginEngine]) } + if(cn.cron){ + delete(s.cron); + } if(cn.ocv){ s.tx({f:'detector_unplugged',plug:s.ocv.plug},'CPU') delete(s.ocv); @@ -5049,7 +5196,7 @@ app.get('/:auth/jpeg/:ke/:id/s.jpg', function(req,res){ 'Cache-Control': 'no-cache', 'Pragma': 'no-cache' }); - res.on('finish',function(){res.end();delete(res)}); + res.on('finish',function(){res.end();}); if (fs.existsSync(req.dir)){ fs.createReadStream(req.dir).pipe(res); }else{ @@ -5432,6 +5579,9 @@ app.get(['/:auth/monitor/:ke','/:auth/monitor/:ke/:id'], function (req,res){ if(s.group[v.ke]&&s.group[v.ke].mon[v.mid]&&s.group[v.ke].mon[v.mid].watch){ r[n].currentlyWatching=Object.keys(s.group[v.ke].mon[v.mid].watch).length } + if(s.group[v.ke]&&s.group[v.ke].mon[v.mid]&&s.group[v.ke].mon[v.mid].watch){ + r[n].status = s.group[v.ke].mon[v.mid].monitorStatus + } var buildStreamURL = function(type,channelNumber){ var streamURL if(channelNumber){channelNumber = '/'+channelNumber}else{channelNumber=''} @@ -5660,6 +5810,25 @@ app.get(['/:auth/logs/:ke','/:auth/logs/:ke/:id'], function (req,res){ return; } } + if(req.query.start||req.query.end){ + if(!req.query.startOperator||req.query.startOperator==''){ + req.query.startOperator='>=' + } + if(!req.query.endOperator||req.query.endOperator==''){ + req.query.endOperator='<=' + } + if(req.query.start && req.query.start !== '' && req.query.end && req.query.end !== ''){ + req.query.start=req.query.start.replace('T',' ') + req.query.end=req.query.end.replace('T',' ') + req.sql+=' AND `time` '+req.query.startOperator+' ? AND `time` '+req.query.endOperator+' ?'; + req.ar.push(req.query.start) + req.ar.push(req.query.end) + }else if(req.query.start && req.query.start !== ''){ + req.query.start=req.query.start.replace('T',' ') + req.sql+=' AND `time` '+req.query.startOperator+' ?'; + req.ar.push(req.query.start) + } + } if(!req.query.limit||req.query.limit==''){req.query.limit=50} req.sql+=' ORDER BY `time` DESC LIMIT '+req.query.limit+''; s.sqlQuery(req.sql,req.ar,function(err,r){ @@ -5986,11 +6155,12 @@ app.get('/:auth/videos/:ke/:id/:file', function (req,res){ res.end(user.lang['Not Permitted']) return } - var filename = s.nameToTime(req.params.file) + var time = s.nameToTime(req.params.file) if(req.query.isUTC === 'true'){ - filename = s.utcToLocal(filename) + time = s.utcToLocal(time) } - s.sqlQuery('SELECT * FROM Videos WHERE ke=? AND mid=? AND time=?',[req.params.ke,req.params.id,filename],function(err,r){ + time = new Date(time) + s.sqlQuery('SELECT * FROM Videos WHERE ke=? AND mid=? AND time=?',[req.params.ke,req.params.id,time],function(err,r){ if(r&&r[0]){ req.dir=s.video('getDir',r[0])+req.params.file if (fs.existsSync(req.dir)){ @@ -6081,12 +6251,13 @@ app.get(['/:auth/videos/:ke/:id/:file/:mode','/:auth/videos/:ke/:id/:file/:mode/ res.end(user.lang['Not Permitted']) return } - var filename = s.nameToTime(req.params.file) + var time = s.nameToTime(req.params.file) if(req.query.isUTC === 'true'){ - filename = s.utcToLocal(filename) + time = s.utcToLocal(time) } + time = new Date(time) req.sql='SELECT * FROM Videos WHERE ke=? AND mid=? AND time=?'; - req.ar=[req.params.ke,req.params.id,filename]; + req.ar=[req.params.ke,req.params.id,time]; s.sqlQuery(req.sql,req.ar,function(err,r){ if(r&&r[0]){ r=r[0];r.filename=s.formattedTime(r.time)+'.'+r.ext; @@ -6096,13 +6267,14 @@ app.get(['/:auth/videos/:ke/:id/:file/:mode','/:auth/videos/:ke/:id/:file/:mode/ s.video('fix',r) break; case'status': - req.params.f=parseInt(req.params.f) + r.f = 'video_edit' + r.status = parseInt(req.params.f) if(isNaN(req.params.f)||req.params.f===0){ req.ret.msg='Not a valid value.'; }else{ req.ret.ok=true; - s.sqlQuery('UPDATE Videos SET status=? WHERE ke=? AND mid=? AND time=?',[req.params.f,req.params.ke,req.params.id,filename]) - s.tx({f:'video_edit',status:req.params.f,filename:r.filename,mid:r.mid,ke:r.ke,time:s.nameToTime(r.filename),end:s.formattedTime(new Date,'YYYY-MM-DD HH:mm:ss')},'GRP_'+r.ke); + s.sqlQuery('UPDATE Videos SET status=? WHERE ke=? AND mid=? AND time=?',[req.params.f,req.params.ke,req.params.id,time]) + s.tx(r,'GRP_'+r.ke); } break; case'delete': @@ -6541,9 +6713,9 @@ if(config.childNodes.enabled === true && config.childNodes.mode === 'master'){ filename:d.filename, mid:d.mid, ke:d.ke, - time:s.timeObject(d.startTime).format(), + time:d.startTime, size:d.filesize, - end:s.timeObject(d.endTime).format() + end:d.endTime },'GRP_'+d.ke,'video_view'); clearTimeout(s.group[d.ke].mon[d.mid].checker) clearTimeout(s.group[d.ke].mon[d.mid].checkStream) diff --git a/cron.js b/cron.js index b2578507..c8ad615c 100644 --- a/cron.js +++ b/cron.js @@ -64,6 +64,7 @@ s.sqlDate = function(value){ return dateQueryFunction } s.sqlQuery = function(query,values,onMoveOn,hideLog){ + s.debugLog(query,values) if(!values){values=[]} var valuesNotFunction = true; if(typeof values === 'function'){ @@ -176,9 +177,9 @@ s.checkFilterRules=function(v,callback){ } //delete old videos with filter if(config.cron.deleteOld===true){ - v.d.filters.deleteOldByCron={ - "id":"deleteOldByCron", - "name":"deleteOldByCron", + v.d.filters.deleteOldVideosByCron={ + "id":"deleteOldVideosByCron", + "name":"deleteOldVideosByCron", "sort_by":"time", "sort_by_direction":"ASC", "limit":"", @@ -195,10 +196,13 @@ s.checkFilterRules=function(v,callback){ }] }; } + s.debugLog('Filters') var keys = Object.keys(v.d.filters) if(keys.length>0){ keys.forEach(function(m,current){ - var b=v.d.filters[m]; + // b = filter + var b = v.d.filters[m]; + s.debugLog(b) if(b.enabled==="1"){ b.ar=[v.ke]; b.sql=[]; @@ -223,6 +227,9 @@ s.checkFilterRules=function(v,callback){ } s.sqlQuery('SELECT * FROM Videos '+b.sql,b.ar,function(err,r){ if(r&&r[0]){ + if(r.length > 0 || config.debugLog === true){ + s.cx({f:'filterMatch',msg:r.length+' SQL rows match "'+m+'"',ke:v.ke,time:moment()}) + } b.cx={ f:'filters', name:b.name, @@ -233,10 +240,8 @@ s.checkFilterRules=function(v,callback){ }; if(b.archive==="1"){ s.cx({f:'filters',ff:'archive',videos:r,time:moment(),ke:v.ke,id:b.id}); - }else{ - if(b.delete==="1"){ - s.cx({f:'filters',ff:'delete',videos:r,time:moment(),ke:v.ke,id:b.id}); - } + }else if(b.delete==="1"){ + s.cx({f:'filters',ff:'delete',videos:r,time:moment(),ke:v.ke,id:b.id}); } if(b.email==="1"){ b.cx.ff='email'; @@ -277,21 +282,30 @@ s.deleteRowsWithNoVideo=function(v,callback){ if(evs&&evs[0]){ es.del=[];es.ar=[v.ke]; evs.forEach(function(ev){ - var details = JSON.parse(ev.details) - var filename = ev.time - var dir = s.getVideoDirectory(ev)+s.moment(filename)+'.'+ev.ext; - var fileExists = fs.existsSync(dir) - if(details.isUTC === true){ - filename = s.localToUtc(filename).format('YYYY-MM-DDTHH-mm-ss') - dir = s.getVideoDirectory(ev)+filename+'.'+ev.ext; - fileExists = fs.existsSync(dir) + var filename + var details + try{ + details = JSON.parse(ev.details) + }catch(err){ + if(details instanceof Object){ + details = ev.details + }else{ + details = {} + } } + var dir = s.getVideoDirectory(ev) + if(details.isUTC === true){ + filename = s.localToUtc(ev.time).format('YYYY-MM-DDTHH-mm-ss')+'.'+ev.ext + }else{ + filename = s.moment(ev.time)+'.'+ev.ext + } + fileExists = fs.existsSync(dir+filename) if(fileExists !== true){ s.video('delete',ev) s.tx({f:'video_delete',filename:filename+'.'+ev.ext,mid:ev.mid,ke:ev.ke,time:ev.time,end:s.moment(new Date,'YYYY-MM-DD HH:mm:ss')},'GRP_'+ev.ke); } }); - if(es.del.length>0){ + if(es.del.length>0 || config.debugLog === true){ s.cx({f:'deleteNoVideo',msg:es.del.length+' SQL rows with no file deleted',ke:v.ke,time:moment()}) } } @@ -310,8 +324,8 @@ s.deleteOldLogs=function(v,callback){ s.sqlQuery("DELETE FROM Logs WHERE ke=? AND `time` < "+s.sqlDate('? DAYS'),[v.ke,v.d.log_days],function(err,rrr){ callback() if(err)return console.error(err); - if(rrr.affectedRows && rrr.affectedRows.length>0){ - s.cx({f:'deleteLogs',msg:rrr.affectedRows+' SQL rows older than '+v.d.log_days+' days deleted',ke:v.ke,time:moment()}) + if(rrr.affectedRows && rrr.affectedRows.length>0 || config.debugLog === true){ + s.cx({f:'deleteLogs',msg:(rrr.affectedRows || 0)+' SQL rows older than '+v.d.log_days+' days deleted',ke:v.ke,time:moment()}) } }) }else{ @@ -325,8 +339,8 @@ s.deleteOldEvents=function(v,callback){ s.sqlQuery("DELETE FROM Events WHERE ke=? AND `time` < "+s.sqlDate('? DAYS'),[v.ke,v.d.event_days],function(err,rrr){ callback() if(err)return console.error(err); - if(rrr.affectedRows && rrr.affectedRows.length>0){ - s.cx({f:'deleteEvents',msg:rrr.affectedRows+' SQL rows older than '+v.d.event_days+' days deleted',ke:v.ke,time:moment()}) + if(rrr.affectedRows && rrr.affectedRows.length>0 || config.debugLog === true){ + s.cx({f:'deleteEvents',msg:(rrr.affectedRows || 0)+' SQL rows older than '+v.d.event_days+' days deleted',ke:v.ke,time:moment()}) } }) }else{ @@ -350,8 +364,8 @@ s.deleteOldFileBins=function(v,callback){ s.sqlQuery("DELETE"+fileBinQuery,[v.ke,v.d.fileBin_days],function(err,rrr){ callback() if(err)return console.error(err); - if(rrr.affectedRows && rrr.affectedRows.length>0){ - s.cx({f:'deleteFileBins',msg:rrr.affectedRows+' files older than '+v.d.fileBin_days+' days deleted',ke:v.ke,time:moment()}) + if(rrr.affectedRows && rrr.affectedRows.length>0 || config.debugLog === true){ + s.cx({f:'deleteFileBins',msg:(rrr.affectedRows || 0)+' files older than '+v.d.fileBin_days+' days deleted',ke:v.ke,time:moment()}) } }) }else{ @@ -366,7 +380,7 @@ s.deleteOldFileBins=function(v,callback){ s.checkForOrphanedFiles=function(v,callback){ if(config.cron.deleteOrphans===true){ var finish=function(count){ - if(count>0){ + if(count>0 || config.debugLog === true){ s.cx({f:'deleteOrphanedFiles',msg:count+' SQL rows with no database row deleted',ke:v.ke,time:moment()}) } callback() @@ -445,9 +459,9 @@ s.processUser = function(number,rows){ rr.forEach(function(b,m){ b.details=JSON.parse(b.details); if(b.details.max_keep_days&&b.details.max_keep_days!==''){ - v.d.filters['deleteOldByCron'+b.mid]={ - "id":'deleteOldByCron'+b.mid, - "name":'deleteOldByCron'+b.mid, + v.d.filters['deleteOldVideosByCron'+b.mid]={ + "id":'deleteOldVideosByCron'+b.mid, + "name":'deleteOldVideosByCron'+b.mid, "sort_by":"time", "sort_by_direction":"ASC", "limit":"", @@ -470,16 +484,17 @@ s.processUser = function(number,rows){ } }) s.deleteOldLogs(v,function(){ - s.debugLog('deleteOldLogs') + s.debugLog('--- deleteOldLogs Complete') s.deleteOldFileBins(v,function(){ - s.debugLog('deleteOldFileBins') + s.debugLog('--- deleteOldFileBins Complete') s.deleteOldEvents(v,function(){ - s.debugLog('deleteOldEvents') + s.debugLog('--- deleteOldEvents Complete') s.checkFilterRules(v,function(){ - s.debugLog('checkFilterRules') + s.debugLog('--- checkFilterRules Complete') s.deleteRowsWithNoVideo(v,function(){ - s.debugLog('deleteRowsWithNoVideo') + s.debugLog('--- deleteRowsWithNoVideo Complete') s.checkForOrphanedFiles(v,function(){ + s.debugLog('--- checkForOrphanedFiles Complete') //done user, unlock current, and do next s.overlapLock[v.ke]=false; s.processUser(number+1,rows) diff --git a/languages/en_CA.json b/languages/en_CA.json index 5fed55e7..fac04d2f 100644 --- a/languages/en_CA.json +++ b/languages/en_CA.json @@ -185,6 +185,7 @@ "Force Monitors Per Row": "Force Monitors Per Row", "Monitors per row": "Monitors per row for Montage", "Browser Console Log": "Browser Console Log", + "Log Stream": "Log Stream", "All Monitors and Privileges": "All Monitors and Privileges", "Permissions": "Permissions", "Time-lapse Tool": "Time-lapse Tool", @@ -493,6 +494,12 @@ "Camera is not recording": "Camera is not recording", "Camera is not streaming": "Camera is not streaming", "Restarting Process": "Restarting Process", + "Restarting": "Restarting", + "Starting": "Starting", + "Watching": "Watching", + "Recording": "Recording", + "Stopped": "Stopped", + "Died": "Died", "Restart": "Restart", "Monitor Stopped": "Monitor Stopped", "MonitorStoppedText": "Monitor session has been ordered to stop.", diff --git a/plugins/dnnCoco/.gitignore b/plugins/dnnCoco/.gitignore new file mode 100644 index 00000000..342a4b13 --- /dev/null +++ b/plugins/dnnCoco/.gitignore @@ -0,0 +1,2 @@ +conf.json +data \ No newline at end of file diff --git a/plugins/dnnCoco/INSTALL.sh b/plugins/dnnCoco/INSTALL.sh new file mode 100644 index 00000000..476b40b1 --- /dev/null +++ b/plugins/dnnCoco/INSTALL.sh @@ -0,0 +1,19 @@ +#!/bin/bash +mkdir data +chmod -R 777 data +wget https://cdn.shinobi.video/weights/dnnCocoData.zip -O dnnCocoData.zip +unzip dnnCocoData.zip -d data +if [ $(dpkg-query -W -f='${Status}' opencv_version 2>/dev/null | grep -c "ok installed") -eq 0 ]; then + echo "Shinobi - Do ypu want to let the `opencv4nodejs` npm package install OpenCV? " + echo "Only do this if you do not have OpenCV already or will not use a GPU (Hardware Acceleration)." + echo "(y)es or (N)o" + read nodejsinstall + if [ "$nodejsinstall" = "y" ] || [ "$nodejsinstall" = "Y" ]; then + export OPENCV4NODEJS_DISABLE_AUTOBUILD=0 + else + export OPENCV4NODEJS_DISABLE_AUTOBUILD=1 + fi +else + export OPENCV4NODEJS_DISABLE_AUTOBUILD=1 +fi +npm install opencv4nodejs moment express canvas@1.6 --unsafe-perm \ No newline at end of file diff --git a/plugins/dnnCoco/conf.sample.json b/plugins/dnnCoco/conf.sample.json new file mode 100644 index 00000000..831ea794 --- /dev/null +++ b/plugins/dnnCoco/conf.sample.json @@ -0,0 +1,9 @@ +{ + "plug":"Coco", + "host":"localhost", + "port":8080, + "hostPort":8082, + "key":"change_this_to_something_very_random____make_sure_to_match__/plugins/opencv/conf.json", + "mode":"client", + "type":"detector" +} \ No newline at end of file diff --git a/plugins/dnnCoco/dnnCocoClassNames.js b/plugins/dnnCoco/dnnCocoClassNames.js new file mode 100644 index 00000000..6c0e980c --- /dev/null +++ b/plugins/dnnCoco/dnnCocoClassNames.js @@ -0,0 +1,83 @@ +module.exports = [ + 'background', + 'person', + 'bicycle', + 'car', + 'motorcycle', + 'airplane', + 'bus', + 'train', + 'truck', + 'boat', + 'traffic light', + 'fire hydrant', + 'stop sign', + 'parking meter', + 'bench', + 'bird', + 'cat', + 'dog', + 'horse', + 'sheep', + 'cow', + 'elephant', + 'bear', + 'zebra', + 'giraffe', + 'backpack', + 'umbrella', + 'handbag', + 'tie', + 'suitcase', + 'frisbee', + 'skis', + 'snowboard', + 'sports ball', + 'kite', + 'baseball bat', + 'baseball glove', + 'skateboard', + 'surfboard', + 'tennis racket', + 'bottle', + 'wine glass', + 'cup', + 'fork', + 'knife', + 'spoon', + 'bowl', + 'banana', + 'apple', + 'sandwich', + 'orange', + 'broccoli', + 'carrot', + 'hot dog', + 'pizza', + 'donut', + 'cake', + 'chair', + 'couch', + 'potted plant', + 'bed', + 'dining table', + 'toilet', + 'tv', + 'laptop', + 'mouse', + 'remote', + 'keyboard', + 'cell phone', + 'microwave', + 'oven', + 'toaster', + 'sink', + 'refrigerator', + 'book', + 'clock', + 'vase', + 'scissors', + 'teddy bear', + 'hair drier', + 'toothbrush' +]; diff --git a/plugins/dnnCoco/openalpr.conf b/plugins/dnnCoco/openalpr.conf new file mode 100644 index 00000000..070752b1 --- /dev/null +++ b/plugins/dnnCoco/openalpr.conf @@ -0,0 +1,94 @@ + +; Specify the path to the runtime data directory +runtime_dir = ${CMAKE_INSTALL_PREFIX}/share/openalpr/runtime_data + + +ocr_img_size_percent = 1.33333333 +state_id_img_size_percent = 2.0 + +; Calibrating your camera improves detection accuracy in cases where vehicle plates are captured at a steep angle +; Use the openalpr-utils-calibrate utility to calibrate your fixed camera to adjust for an angle +; Once done, update the prewarp config with the values obtained from the tool +prewarp = + +; detection will ignore plates that are too large. This is a good efficiency technique to use if the +; plates are going to be a fixed distance away from the camera (e.g., you will never see plates that fill +; up the entire image +max_plate_width_percent = 100 +max_plate_height_percent = 100 + +; detection_iteration_increase is the percentage that the LBP frame increases each iteration. +; It must be greater than 1.0. A value of 1.01 means increase by 1%, 1.10 increases it by 10% each time. +; So a 1% increase would be ~10x slower than 10% to process, but it has a higher chance of landing +; directly on the plate and getting a strong detection +detection_iteration_increase = 1.1 + +; The minimum detection strength determines how sure the detection algorithm must be before signaling that +; a plate region exists. Technically this corresponds to LBP nearest neighbors (e.g., how many detections +; are clustered around the same area). For example, 2 = very lenient, 9 = very strict. +detection_strictness = 3 + +; The detection doesn't necessarily need an extremely high resolution image in order to detect plates +; Using a smaller input image should still find the plates and will do it faster +; Tweaking the max_detection_input values will resize the input image if it is larger than these sizes +; max_detection_input_width/height are specified in pixels +max_detection_input_width = 1280 +max_detection_input_height = 720 + +; detector is the technique used to find license plate regions in an image. Value can be set to +; lbpcpu - default LBP-based detector uses the system CPU +; lbpgpu - LBP-based detector that uses Nvidia GPU to increase recognition speed. +; lbpopencl - LBP-based detector that uses OpenCL GPU to increase recognition speed. Requires OpenCV 3.0 +; morphcpu - Experimental detector that detects white rectangles in an image. Does not require training. +detector = lbpgpu + +; If set to true, all results must match a postprocess text pattern if a pattern is available. +; If not, the result is disqualified. +must_match_pattern = 0 + +; Bypasses plate detection. If this is set to 1, the library assumes that each region provided is a likely plate area. +skip_detection = 0 + +; Specifies the full path to an image file that constrains the detection area. Only the plate regions allowed through the mask +; will be analyzed. The mask image must match the resolution of your image to be analyzed. The mask is black and white. +; Black areas will be ignored, white areas will be searched. An empty value means no mask (scan the entire image) +detection_mask_image = + +; OpenALPR can scan the same image multiple times with different randomization. Setting this to a value larger than +; 1 may increase accuracy, but will increase processing time linearly (e.g., analysis_count = 3 is 3x slower) +analysis_count = 1 + +; OpenALPR detects high-contrast plate crops and uses an alternative edge detection technique. Setting this to 0.0 +; would classify ALL images as high-contrast, setting it to 1.0 would classify no images as high-contrast. +contrast_detection_threshold = 0.3 + +max_plate_angle_degrees = 15 + +ocr_min_font_point = 6 + +; Minimum OCR confidence percent to consider. +postprocess_min_confidence = 65 + +; Any OCR character lower than this will also add an equally likely +; chance that the character is incorrect and will be skipped. Value is a confidence percent +postprocess_confidence_skip_level = 80 + + +debug_general = 0 +debug_timing = 0 +debug_detector = 0 +debug_prewarp = 0 +debug_state_id = 0 +debug_plate_lines = 0 +debug_plate_corners = 0 +debug_char_segment = 0 +debug_char_analysis = 0 +debug_color_filter = 0 +debug_ocr = 0 +debug_postprocess = 0 +debug_show_images = 0 +debug_pause_on_frame = 0 + + + + diff --git a/plugins/dnnCoco/shinobi-coco.js b/plugins/dnnCoco/shinobi-coco.js new file mode 100644 index 00000000..0bb440cd --- /dev/null +++ b/plugins/dnnCoco/shinobi-coco.js @@ -0,0 +1,525 @@ +// +// Shinobi - OpenCV Plugin +// Copyright (C) 2016-2025 Moe Alam, moeiscool +// +// # Donate +// +// If you like what I am doing here and want me to continue please consider donating :) +// PayPal : paypal@m03.ca +// +process.on('uncaughtException', function (err) { + console.error('uncaughtException',err); +}); +var fs=require('fs'); +var cv=require('opencv4nodejs'); +var exec = require('child_process').exec; +var moment = require('moment'); +var Canvas = require('canvas'); +var express = require('express'); +const path = require('path'); +var http = require('http'), + app = express(), + server = http.createServer(app); +var config=require('./conf.json'); +if(!config.port){config.port=8080} +if(!config.hostPort){config.hostPort=8082} +if(config.systemLog===undefined){config.systemLog=true} +if(config.cascadesDir===undefined){config.cascadesDir=__dirname+'/cascades/'} +if(config.alprConfig===undefined){config.alprConfig=__dirname+'/openalpr.conf'} + + +const classNames = require(__dirname+'/dnnCocoClassNames.js'); +const extractResults = function (outputBlob, imgDimensions) { + return Array(outputBlob.rows).fill(0) + .map((res, i) => { + const classLabel = outputBlob.at(i, 1); + const confidence = outputBlob.at(i, 2); + const bottomLeft = new cv.Point( + outputBlob.at(i, 3) * imgDimensions.cols, + outputBlob.at(i, 6) * imgDimensions.rows + ); + const topRight = new cv.Point( + outputBlob.at(i, 5) * imgDimensions.cols, + outputBlob.at(i, 4) * imgDimensions.rows + ); + const rect = new cv.Rect( + bottomLeft.x, + topRight.y, + topRight.x - bottomLeft.x, + bottomLeft.y - topRight.y + ); + + return ({ + classLabel, + confidence, + rect + }); + }); +}; +// replace with path where you unzipped inception model +const ssdcocoModelPath = __dirname+'/data'; + +const prototxt = path.resolve(ssdcocoModelPath, 'deploy.prototxt'); +const modelFile = path.resolve(ssdcocoModelPath, 'VGG_coco_SSD_300x300_iter_400000.caffemodel'); + +if (!fs.existsSync(prototxt) || !fs.existsSync(modelFile)) { + console.log('could not find ssdcoco model'); + console.log('download the model from: https://cdn.shinobi.video/weights/dnnCocoData.zip'); + throw new Error('exiting: could not find ssdcoco model'); +} + +// initialize ssdcoco model from prototxt and modelFile +const net = cv.readNetFromCaffe(prototxt, modelFile); + +function classifyImg(img) { + // ssdcoco model works with 300 x 300 images + const imgResized = img.resize(300, 300); + + // network accepts blobs as input + const inputBlob = cv.blobFromImage(imgResized); + net.setInput(inputBlob); + + // forward pass input through entire network, will return + // classification result as 1x1xNxM Mat + let outputBlob = net.forward(); + // extract NxM Mat + outputBlob = outputBlob.flattenFloat(outputBlob.sizes[2], outputBlob.sizes[3]); + + return extractResults(outputBlob, img) + .map(r => Object.assign({}, r.rect, { confidence : r.confidence, tag: classNames[r.classLabel] })); +} + +const makeDrawClassDetections = predictions => (drawImg, className, getColor, thickness = 2) => { + predictions + .filter(p => classNames[p.classLabel] === className) + .forEach(p => console.log(p)); +}; + + +s={ + group:{}, + dir:{ + cascades : config.cascadesDir + }, + isWin:(process.platform==='win32'), + foundCascades : { + + } +} +//default stream folder check +if(!config.streamDir){ + if(s.isWin===false){ + config.streamDir='/dev/shm' + }else{ + config.streamDir=config.windowsTempDir + } + if(!fs.existsSync(config.streamDir)){ + config.streamDir=__dirname+'/streams/' + }else{ + config.streamDir+='/streams/' + } +} +s.dir.streams=config.streamDir; +//streams dir +if(!fs.existsSync(s.dir.streams)){ + fs.mkdirSync(s.dir.streams); +} +//streams dir +if(!fs.existsSync(s.dir.cascades)){ + fs.mkdirSync(s.dir.cascades); +} +s.gid=function(x){ + if(!x){x=10};var t = "";var p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for( var i=0; i < x; i++ ) + t += p.charAt(Math.floor(Math.random() * p.length)); + return t; +}; +s.findCascades=function(callback){ + var tmp={}; + tmp.foundCascades=[]; + fs.readdir(s.dir.cascades,function(err,files){ + files.forEach(function(cascade,n){ + if(cascade.indexOf('.xml')>-1){ + tmp.foundCascades.push(cascade.replace('.xml','')) + } + }) + s.cascadesInDir=tmp.foundCascades; + callback(tmp.foundCascades) + }) +} +s.findCascades(function(){ + //get cascades +}) +s.detectLicensePlate=function(buffer,d,tx){ + if(!d.mon.detector_lisence_plate_country||d.mon.detector_lisence_plate_country===''){ + d.mon.detector_lisence_plate_country='us' + } + d.tmpFile=s.gid(5)+'.jpg' + if(!fs.existsSync(s.dir.streams)){ + fs.mkdirSync(s.dir.streams); + } + d.dir=s.dir.streams+d.ke+'/' + if(!fs.existsSync(d.dir)){ + fs.mkdirSync(d.dir); + } + d.dir=s.dir.streams+d.ke+'/'+d.id+'/' + if(!fs.existsSync(d.dir)){ + fs.mkdirSync(d.dir); + } + fs.writeFile(d.dir+d.tmpFile,buffer,function(err){ + if(err) return s.systemLog(err); + exec('alpr -j --config '+config.alprConfig+' -c '+d.mon.detector_lisence_plate_country+' '+d.dir+d.tmpFile,{encoding:'utf8'},(err, scan, stderr) => { + if(err){ + s.systemLog(err); + }else{ + try{ + scan=JSON.parse(scan.replace('--(!)Loaded CUDA classifier','').trim()) + }catch(err){ + if(!scan||!scan.results){ + return s.systemLog(scan,err); + } + } + if(scan.results.length>0){ + scan.plates=[] + scan.mats=[] + scan.results.forEach(function(v){ + v.candidates.forEach(function(g,n){ + if(v.candidates[n].matches_template) + delete(v.candidates[n].matches_template) + }) + scan.plates.push({coordinates:v.coordinates,candidates:v.candidates,confidence:v.confidence,plate:v.plate}) + var width = Math.sqrt( Math.pow(v.coordinates[1].x - v.coordinates[0].x, 2) + Math.pow(v.coordinates[1].y - v.coordinates[0].y, 2)); + var height = Math.sqrt( Math.pow(v.coordinates[2].x - v.coordinates[1].x, 2) + Math.pow(v.coordinates[2].y - v.coordinates[1].y, 2)) + scan.mats.push({ + x:v.coordinates[0].x, + y:v.coordinates[0].y, + width:width, + height:height, + tag:v.plate + }) + }) + tx({f:'trigger',id:d.id,ke:d.ke,details:{split:true,plug:config.plug,name:'licensePlate',reason:'object',matrices:scan.mats,imgHeight:d.mon.detector_scale_y,imgWidth:d.mon.detector_scale_x,frame:d.base64}}) + } + } + exec('rm -rf '+d.dir+d.tmpFile,{encoding:'utf8'}) + }) + }) +} +s.detectObject=function(buffer,d,tx){ + //detect license plate? + if(d.mon.detector_lisence_plate==="1"){ + s.detectLicensePlate(buffer,d,tx) + } + cv.imdecodeAsync(buffer,(err,im) => { + if(err){ + console.log(err) + return + } + + if (!cv.xmodules.dnn) { + throw new Error('exiting: opencv4nodejs compiled without dnn module'); + } + + + const minConfidence = 0.5; + + const predictions = classifyImg(im).filter(res => res.confidence > minConfidence); +// console.log(predictions) + if(predictions.length > 0) { + s.cx({ + f:'trigger', + id:d.id, + ke:d.ke, + name:'coco', + details:{ + plug:'coco', + name:'coco', + reason:'object', + matrices : predictions + // confidence:d.average + }, + imgHeight:d.mon.detector_scale_y, + imgWidth:d.mon.detector_scale_x + }) + } + }) +} +s.systemLog=function(q,w,e){ + if(!w){w=''} + if(!e){e=''} + if(config.systemLog===true){ + return console.log(moment().format(),q,w,e) + } +} + +s.blenderRegion=function(d,cord,tx){ + d.width = d.image.width; + d.height = d.image.height; + if(!s.group[d.ke][d.id].canvas[cord.name]){ + if(!cord.sensitivity||isNaN(cord.sensitivity)){ + cord.sensitivity=d.mon.detector_sensitivity; + } + s.group[d.ke][d.id].canvas[cord.name] = new Canvas(d.width,d.height); + s.group[d.ke][d.id].canvasContext[cord.name] = s.group[d.ke][d.id].canvas[cord.name].getContext('2d'); + s.group[d.ke][d.id].canvasContext[cord.name].fillStyle = '#000'; + s.group[d.ke][d.id].canvasContext[cord.name].fillRect( 0, 0,d.width,d.height); + if(cord.points&&cord.points.length>0){ + s.group[d.ke][d.id].canvasContext[cord.name].beginPath(); + for (var b = 0; b < cord.points.length; b++){ + cord.points[b][0]=parseFloat(cord.points[b][0]); + cord.points[b][1]=parseFloat(cord.points[b][1]); + if(b===0){ + s.group[d.ke][d.id].canvasContext[cord.name].moveTo(cord.points[b][0],cord.points[b][1]); + }else{ + s.group[d.ke][d.id].canvasContext[cord.name].lineTo(cord.points[b][0],cord.points[b][1]); + } + } + s.group[d.ke][d.id].canvasContext[cord.name].clip(); + } + } + if(!s.group[d.ke][d.id].canvasContext[cord.name]){ + return + } + s.group[d.ke][d.id].canvasContext[cord.name].drawImage(d.image, 0, 0, d.width, d.height); + if(!s.group[d.ke][d.id].blendRegion[cord.name]){ + s.group[d.ke][d.id].blendRegion[cord.name] = new Canvas(d.width, d.height); + s.group[d.ke][d.id].blendRegionContext[cord.name] = s.group[d.ke][d.id].blendRegion[cord.name].getContext('2d'); + } + var sourceData = s.group[d.ke][d.id].canvasContext[cord.name].getImageData(0, 0, d.width, d.height); + // create an image if the previous image doesn�t exist + if (!s.group[d.ke][d.id].lastRegionImageData[cord.name]) s.group[d.ke][d.id].lastRegionImageData[cord.name] = s.group[d.ke][d.id].canvasContext[cord.name].getImageData(0, 0, d.width, d.height); + // create a ImageData instance to receive the blended result + var blendedData = s.group[d.ke][d.id].canvasContext[cord.name].createImageData(d.width, d.height); + // blend the 2 images + s.differenceAccuracy(blendedData.data,sourceData.data,s.group[d.ke][d.id].lastRegionImageData[cord.name].data); + // draw the result in a canvas + s.group[d.ke][d.id].blendRegionContext[cord.name].putImageData(blendedData, 0, 0); + // store the current webcam image + s.group[d.ke][d.id].lastRegionImageData[cord.name] = sourceData; + blendedData = s.group[d.ke][d.id].blendRegionContext[cord.name].getImageData(0, 0, d.width, d.height); + var i = 0; + d.average = 0; + while (i < (blendedData.data.length * 0.25)) { + d.average += (blendedData.data[i * 4] + blendedData.data[i * 4 + 1] + blendedData.data[i * 4 + 2]); + ++i; + } + d.average = (d.average / (blendedData.data.length * 0.25))*10; + if (d.average > parseFloat(cord.sensitivity)){ + if(d.mon.detector_use_detect_object==="1"&&d.mon.detector_second!=='1'){ + var buffer=s.group[d.ke][d.id].canvas[cord.name].toBuffer(); + s.detectObject(buffer,d,tx) + }else{ + tx({f:'trigger',id:d.id,ke:d.ke,details:{split:true,plug:config.plug,name:cord.name,reason:'motion',confidence:d.average,frame:d.base64}}) + } + } + s.group[d.ke][d.id].canvasContext[cord.name].clearRect(0, 0, d.width, d.height); + s.group[d.ke][d.id].blendRegionContext[cord.name].clearRect(0, 0, d.width, d.height); +} +function blobToBuffer (blob, cb) { + if (typeof Blob === 'undefined' || !(blob instanceof Blob)) { + throw new Error('first argument must be a Blob') + } + if (typeof cb !== 'function') { + throw new Error('second argument must be a function') + } + + var reader = new FileReader() + + function onLoadEnd (e) { + reader.removeEventListener('loadend', onLoadEnd, false) + if (e.error) cb(e.error) + else cb(null, Buffer.from(reader.result)) + } + + reader.addEventListener('loadend', onLoadEnd, false) + reader.readAsArrayBuffer(blob) +} +function fastAbs(value) { + return (value ^ (value >> 31)) - (value >> 31); +} + +function threshold(value) { + return (value > 0x15) ? 0xFF : 0; +} +s.differenceAccuracy=function(target, data1, data2) { + if (data1.length != data2.length) return null; + var i = 0; + while (i < (data1.length * 0.25)) { + var average1 = (data1[4 * i] + data1[4 * i + 1] + data1[4 * i + 2]) / 3; + var average2 = (data2[4 * i] + data2[4 * i + 1] + data2[4 * i + 2]) / 3; + var diff = threshold(fastAbs(average1 - average2)); + target[4 * i] = diff; + target[4 * i + 1] = diff; + target[4 * i + 2] = diff; + target[4 * i + 3] = 0xFF; + ++i; + } +} +s.checkAreas=function(d,tx){ + if(!s.group[d.ke][d.id].cords){ + if(!d.mon.cords){d.mon.cords={}} + s.group[d.ke][d.id].cords=Object.values(d.mon.cords); + } + if(d.mon.detector_frame==='1'){ + d.mon.cords.frame={name:'FULL_FRAME',s:d.mon.detector_sensitivity,points:[[0,0],[0,d.image.height],[d.image.width,d.image.height],[d.image.width,0]]}; + s.group[d.ke][d.id].cords.push(d.mon.cords.frame); + } + for (var b = 0; b < s.group[d.ke][d.id].cords.length; b++){ + if(!s.group[d.ke][d.id].cords[b]){return} + s.blenderRegion(d,s.group[d.ke][d.id].cords[b],tx) + } + delete(d.image) +} + +s.MainEventController=function(d,cn,tx){ + switch(d.f){ + case'refreshPlugins': + s.findCascades(function(cascades){ + s.cx({f:'s.tx',data:{f:'detector_cascade_list',cascades:cascades},to:'GRP_'+d.ke}) + }) + break; + case'readPlugins': + s.cx({f:'s.tx',data:{f:'detector_cascade_list',cascades:s.cascadesInDir},to:'GRP_'+d.ke}) + break; + case'init_plugin_as_host': + if(!cn){ + console.log('No CN',d) + return + } + if(d.key!==config.key){ + console.log(new Date(),'Plugin Key Mismatch',cn.request.connection.remoteAddress,d) + cn.emit('init',{ok:false}) + cn.disconnect() + }else{ + console.log(new Date(),'Plugin Connected to Client',cn.request.connection.remoteAddress) + cn.emit('init',{ok:true,plug:config.plug,notice:config.notice,type:config.type}) + } + break; + case'init_monitor': + if(s.group[d.ke]&&s.group[d.ke][d.id]){ + s.group[d.ke][d.id].canvas={} + s.group[d.ke][d.id].canvasContext={} + s.group[d.ke][d.id].blendRegion={} + s.group[d.ke][d.id].blendRegionContext={} + s.group[d.ke][d.id].lastRegionImageData={} + s.group[d.ke][d.id].numberOfTriggers=0 + delete(s.group[d.ke][d.id].cords) + delete(s.group[d.ke][d.id].buffer) + } + break; + case'init_aws_push': +// console.log('init_aws') + s.group[d.ke][d.id].aws={links:[],complete:0,total:d.total,videos:[],tx:tx} + break; + case'frame': + try{ + if(!s.group[d.ke]){ + s.group[d.ke]={} + } + if(!s.group[d.ke][d.id]){ + s.group[d.ke][d.id]={ + canvas:{}, + canvasContext:{}, + lastRegionImageData:{}, + blendRegion:{}, + blendRegionContext:{}, + } + } + if(!s.group[d.ke][d.id].buffer){ + s.group[d.ke][d.id].buffer=[d.frame]; + }else{ + s.group[d.ke][d.id].buffer.push(d.frame) + } + if(d.frame[d.frame.length-2] === 0xFF && d.frame[d.frame.length-1] === 0xD9){ + s.group[d.ke][d.id].buffer=Buffer.concat(s.group[d.ke][d.id].buffer); + try{ + d.mon.detector_cascades=JSON.parse(d.mon.detector_cascades) + }catch(err){ + + } + if(d.mon.detector_frame_save==="1"){ + d.base64=s.group[d.ke][d.id].buffer.toString('base64') + } + if(d.mon.detector_second==='1'&&d.objectOnly===true){ + s.detectObject(s.group[d.ke][d.id].buffer,d,tx) + }else{ + if((d.mon.detector_pam !== '1' && d.mon.detector_use_motion === "1") || d.mon.detector_use_detect_object !== "1"){ + if((typeof d.mon.cords ==='string')&&d.mon.cords.trim()===''){ + d.mon.cords=[] + }else{ + try{ + d.mon.cords=JSON.parse(d.mon.cords) + }catch(err){ + // console.log('d.mon.cords',err,d) + } + } + s.group[d.ke][d.id].cords=Object.values(d.mon.cords); + d.mon.cords=d.mon.cords; + d.image = new Canvas.Image; + if(d.mon.detector_scale_x===''||d.mon.detector_scale_y===''){ + s.systemLog('Must set detector image size') + return + }else{ + d.image.width=d.mon.detector_scale_x; + d.image.height=d.mon.detector_scale_y; + } + d.width=d.image.width; + d.height=d.image.height; + d.image.onload = function() { + s.checkAreas(d,tx); + } + d.image.src = s.group[d.ke][d.id].buffer; + }else{ + s.detectObject(s.group[d.ke][d.id].buffer,d,tx) + } + } + s.group[d.ke][d.id].buffer=null; + } + }catch(err){ + if(err){ + s.systemLog(err) + delete(s.group[d.ke][d.id].buffer) + } + } + break; + } +} +server.listen(config.hostPort); +//web pages and plugin api +app.get('/', function (req, res) { + res.end(''+config.plug+' for Shinobi is running') +}); +//Conector to Shinobi +if(config.mode==='host'){ + //start plugin as host + var io = require('socket.io')(server); + io.attach(server); + s.connectedClients={}; + io.on('connection', function (cn) { + s.connectedClients[cn.id]={id:cn.id} + s.connectedClients[cn.id].tx = function(data){ + data.pluginKey=config.key;data.plug=config.plug; + return io.to(cn.id).emit('ocv',data); + } + cn.on('f',function(d){ + s.MainEventController(d,cn,s.connectedClients[cn.id].tx) + }); + cn.on('disconnect',function(d){ + delete(s.connectedClients[cn.id]) + }) + }); +}else{ + //start plugin as client + if(!config.host){config.host='localhost'} + var io = require('socket.io-client')('ws://'+config.host+':'+config.port);//connect to master + s.cx=function(x){x.pluginKey=config.key;x.plug=config.plug;return io.emit('ocv',x)} + io.on('connect',function(d){ + s.cx({f:'init',plug:config.plug,notice:config.notice,type:config.type}); + }) + io.on('disconnect',function(d){ + io.connect(); + }) + io.on('f',function(d){ + s.MainEventController(d,null,s.cx) + }) +} diff --git a/plugins/microsoft/conf.sample.json b/plugins/microsoft/conf.sample.json deleted file mode 100644 index 5f9b9dca..00000000 --- a/plugins/microsoft/conf.sample.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "plug":"ComputerVision", - "host":"localhost", - "port":8080, - "key":"UNIQUE KEY HERE", - "computerVision":{ - "apiKey":"YOUR_KEY", - "endpoint":"http://YOUR_ENDPOINT/analyze", - "params":{ - "visualFeatures": "Categories,Description,Color", - "details": "", - "language": "en" - } - }, - "EmotionAPI":{ - "apiKey":"YOUR_KEY", - "endpoint":"http://YOUR_ENDPOINT/recognize", - "params":{} - }, - "FaceAPI":{ - "apiKey":"YOUR_KEY", - "endpoint":"http://YOUR_ENDPOINT/detect", - "params":{ - "returnFaceId": "true", - "returnFaceLandmarks": "false", - "returnFaceAttributes": "age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,occlusion,accessories,blur,exposure,noise" - } - } -} \ No newline at end of file diff --git a/plugins/microsoft/shinobi-ms-vision.js b/plugins/microsoft/shinobi-ms-vision.js deleted file mode 100644 index 938e7874..00000000 --- a/plugins/microsoft/shinobi-ms-vision.js +++ /dev/null @@ -1,170 +0,0 @@ -// -// Shinobi - Microsoft Computer Vision Plugin -// Copyright (C) 2016-2025 Moe Alam, moeiscool -// -process.on('uncaughtException', function (err) { - console.error('uncaughtException',err); -}); -var fs=require('fs'); -var exec = require('child_process').exec; -//var http = require('http'); -var request = require('request'); -var moment = require('moment'); -var cognitive = require('cognitive-services'); -var config=require('./conf.json'); -if(config.systemLog===undefined){config.systemLog=true} -s={ - group:{}, - dir:{ - cascades:__dirname+'/cascades/' - }, - isWin:(process.platform==='win32') -} -//default stream folder check -if(!config.streamDir){ - if(s.isWin===false){ - config.streamDir='/dev/shm' - }else{ - config.streamDir=config.windowsTempDir - } - if(!fs.existsSync(config.streamDir)){ - config.streamDir=__dirname+'/streams/' - }else{ - config.streamDir+='/streams/' - } -} -s.dir.streams=config.streamDir; -//streams dir -if(!fs.existsSync(s.dir.streams)){ - fs.mkdirSync(s.dir.streams); -} -s.gid=function(x){ - if(!x){x=10};var t = "";var p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - for( var i=0; i < x; i++ ) - t += p.charAt(Math.floor(Math.random() * p.length)); - return t; -}; -s.systemLog=function(q,w,e){ - if(!w){w=''} - if(!e){e=''} - if(config.systemLog===true){ - return console.log(moment().format(),q,w,e) - } -} -s.objectToParameter = function(obj){ - return Object.keys(obj).map(function(key) { - return key + '=' + encodeURIComponent(obj[key]); - }).join('&'); -} -s.sendImageToMS=function(sourceImageUrl,API,callback){ - var URL = API.endpoint+'?'+s.objectToParameter(API.params) - request(URL,{ - method: 'POST', - headers:{ - "Ocp-Apim-Subscription-Key":API.apiKey - }, - json: { - url:sourceImageUrl - } - }, callback) -} -s.detectObject=function(buffer,d){ - var sourceImageUrl = 'http://184.105.6.43/'+s.api_key+'/jpeg/'+d.ke+'/'+d.id+'/s.jpg' -// const client = new cognitive.computerVision({ -// apiKey: config.computerVision.apiKey, -// endpoint: config.computerVision.endpoint -// }); -// const parameters = { -// "visualFeatures": "Categories,Tags,Description", -// "details": "Celebrities,Landmarks" -// }; -// const headers = { -// 'Content-type': 'application/json' -// }; -// const body = { -// "url": sourceImageUrl -// }; -// -// client.analyzeImage({ -// parameters, -// headers, -// body -// }).then((response) => { -//// should(response).not.be.undefined(); -//// should(response).have.properties(["categories", "metadata", "requestId"]); -// console.log(response) -// }).catch((err) => { -// console.log('Error',err) -// }); - var responses = {} - s.sendImageToMS(sourceImageUrl,config.computerVision,function(err,resp,body1){ - responses.computerVisionURL = body1 - s.sendImageToMS(sourceImageUrl,config.FaceAPI,function(err,resp,body2){ - responses.faceApiURL = body2 - s.sendImageToMS(sourceImageUrl,config.EmotionAPI,function(err,resp,body3){ - responses.EmotionAPI = body3 - console.log('responses',JSON.stringify(responses,null,3)) - }) - }) - }) -} -s.makeMonitorObject=function(d){ - if(!s.group[d.ke]){ - s.group[d.ke]={} - } - if(!s.group[d.ke][d.id]){ - s.group[d.ke][d.id]={ - port:null, - countStarted:new Date() - } - } -} -io = require('socket.io-client')('ws://'+config.host+':'+config.port);//connect to master -s.cx=function(x){x.pluginKey=config.key;x.plug=config.plug;return io.emit('ocv',x)} -io.on('connect',function(d){ - s.cx({f:'init',plug:config.plug}); -}) -io.on('disconnect',function(d){ - io.connect() -}) -io.on('f',function(d){ - switch(d.f){ - case'api_key': - s.api_key=d.key - break; - case'init_monitor': - if(s.group[d.ke]&&s.group[d.ke][d.id]){ - s.group[d.ke][d.id].buffer=null - s.group[d.ke][d.id].countStarted=new Date() - } - s.makeMonitorObject(d) - break; - case'frame': - d.details={} - try{ - s.makeMonitorObject(d) - if(!s.group[d.ke][d.id].buffer){ - s.group[d.ke][d.id].buffer=[d.frame]; - }else{ - s.group[d.ke][d.id].buffer.push(d.frame) - } - if(d.frame[d.frame.length-2] === 0xFF && d.frame[d.frame.length-1] === 0xD9){ - if(d.mon.detector_frame_save==="1"){ - d.base64=s.group[d.ke][d.id].buffer.toString('base64') - } - if(d.mon.detector_scale_x&&d.mon.detector_scale_x!==''&&d.mon.detector_scale_y&&d.mon.detector_scale_y!==''){ - d.width=d.mon.detector_scale_x; - d.height=d.mon.detector_scale_y; - }else{ - d.width=640 - d.height=480 - } - s.detectObject(Buffer.concat(s.group[d.ke][d.id].buffer),d) - s.group[d.ke][d.id].buffer=null; - } - } catch(err){ - console.error(err) - } - break; - } -}) \ No newline at end of file diff --git a/plugins/tensorflow/.gitignore b/plugins/tensorflow/.gitignore new file mode 100644 index 00000000..58816542 --- /dev/null +++ b/plugins/tensorflow/.gitignore @@ -0,0 +1,2 @@ +conf.json +cascades \ No newline at end of file diff --git a/plugins/tensorflow/INSTALL.sh b/plugins/tensorflow/INSTALL.sh new file mode 100644 index 00000000..09f92577 --- /dev/null +++ b/plugins/tensorflow/INSTALL.sh @@ -0,0 +1,20 @@ +#!/bin/bash +mkdir data +mkdir data/inception +chmod -R 777 data +wget https://cdn.shinobi.video/weights/inception5h.zip -O inception5h.zip +unzip inception5h.zip -d data/inception +if [ $(dpkg-query -W -f='${Status}' opencv_version 2>/dev/null | grep -c "ok installed") -eq 0 ]; then + echo "Shinobi - Do ypu want to let the `opencv4nodejs` npm package install OpenCV? " + echo "Only do this if you do not have OpenCV already or will not use a GPU (Hardware Acceleration)." + echo "(y)es or (N)o" + read nodejsinstall + if [ "$nodejsinstall" = "y" ] || [ "$nodejsinstall" = "Y" ]; then + export OPENCV4NODEJS_DISABLE_AUTOBUILD=0 + else + export OPENCV4NODEJS_DISABLE_AUTOBUILD=1 + fi +else + export OPENCV4NODEJS_DISABLE_AUTOBUILD=1 +fi +npm install opencv4nodejs moment express canvas@1.6 --unsafe-perm \ No newline at end of file diff --git a/plugins/tensorflow/conf.sample.json b/plugins/tensorflow/conf.sample.json new file mode 100644 index 00000000..7c27d4ee --- /dev/null +++ b/plugins/tensorflow/conf.sample.json @@ -0,0 +1,9 @@ +{ + "plug":"Tensorflow", + "host":"localhost", + "port":8080, + "hostPort":8082, + "key":"change_this_to_something_very_random____make_sure_to_match__/plugins/opencv/conf.json", + "mode":"client", + "type":"detector" +} \ No newline at end of file diff --git a/plugins/tensorflow/openalpr.conf b/plugins/tensorflow/openalpr.conf new file mode 100644 index 00000000..070752b1 --- /dev/null +++ b/plugins/tensorflow/openalpr.conf @@ -0,0 +1,94 @@ + +; Specify the path to the runtime data directory +runtime_dir = ${CMAKE_INSTALL_PREFIX}/share/openalpr/runtime_data + + +ocr_img_size_percent = 1.33333333 +state_id_img_size_percent = 2.0 + +; Calibrating your camera improves detection accuracy in cases where vehicle plates are captured at a steep angle +; Use the openalpr-utils-calibrate utility to calibrate your fixed camera to adjust for an angle +; Once done, update the prewarp config with the values obtained from the tool +prewarp = + +; detection will ignore plates that are too large. This is a good efficiency technique to use if the +; plates are going to be a fixed distance away from the camera (e.g., you will never see plates that fill +; up the entire image +max_plate_width_percent = 100 +max_plate_height_percent = 100 + +; detection_iteration_increase is the percentage that the LBP frame increases each iteration. +; It must be greater than 1.0. A value of 1.01 means increase by 1%, 1.10 increases it by 10% each time. +; So a 1% increase would be ~10x slower than 10% to process, but it has a higher chance of landing +; directly on the plate and getting a strong detection +detection_iteration_increase = 1.1 + +; The minimum detection strength determines how sure the detection algorithm must be before signaling that +; a plate region exists. Technically this corresponds to LBP nearest neighbors (e.g., how many detections +; are clustered around the same area). For example, 2 = very lenient, 9 = very strict. +detection_strictness = 3 + +; The detection doesn't necessarily need an extremely high resolution image in order to detect plates +; Using a smaller input image should still find the plates and will do it faster +; Tweaking the max_detection_input values will resize the input image if it is larger than these sizes +; max_detection_input_width/height are specified in pixels +max_detection_input_width = 1280 +max_detection_input_height = 720 + +; detector is the technique used to find license plate regions in an image. Value can be set to +; lbpcpu - default LBP-based detector uses the system CPU +; lbpgpu - LBP-based detector that uses Nvidia GPU to increase recognition speed. +; lbpopencl - LBP-based detector that uses OpenCL GPU to increase recognition speed. Requires OpenCV 3.0 +; morphcpu - Experimental detector that detects white rectangles in an image. Does not require training. +detector = lbpgpu + +; If set to true, all results must match a postprocess text pattern if a pattern is available. +; If not, the result is disqualified. +must_match_pattern = 0 + +; Bypasses plate detection. If this is set to 1, the library assumes that each region provided is a likely plate area. +skip_detection = 0 + +; Specifies the full path to an image file that constrains the detection area. Only the plate regions allowed through the mask +; will be analyzed. The mask image must match the resolution of your image to be analyzed. The mask is black and white. +; Black areas will be ignored, white areas will be searched. An empty value means no mask (scan the entire image) +detection_mask_image = + +; OpenALPR can scan the same image multiple times with different randomization. Setting this to a value larger than +; 1 may increase accuracy, but will increase processing time linearly (e.g., analysis_count = 3 is 3x slower) +analysis_count = 1 + +; OpenALPR detects high-contrast plate crops and uses an alternative edge detection technique. Setting this to 0.0 +; would classify ALL images as high-contrast, setting it to 1.0 would classify no images as high-contrast. +contrast_detection_threshold = 0.3 + +max_plate_angle_degrees = 15 + +ocr_min_font_point = 6 + +; Minimum OCR confidence percent to consider. +postprocess_min_confidence = 65 + +; Any OCR character lower than this will also add an equally likely +; chance that the character is incorrect and will be skipped. Value is a confidence percent +postprocess_confidence_skip_level = 80 + + +debug_general = 0 +debug_timing = 0 +debug_detector = 0 +debug_prewarp = 0 +debug_state_id = 0 +debug_plate_lines = 0 +debug_plate_corners = 0 +debug_char_segment = 0 +debug_char_analysis = 0 +debug_color_filter = 0 +debug_ocr = 0 +debug_postprocess = 0 +debug_show_images = 0 +debug_pause_on_frame = 0 + + + + diff --git a/plugins/tensorflow/shinobi-tensorflow.js b/plugins/tensorflow/shinobi-tensorflow.js new file mode 100644 index 00000000..204b5782 --- /dev/null +++ b/plugins/tensorflow/shinobi-tensorflow.js @@ -0,0 +1,502 @@ +// +// Shinobi - OpenCV Plugin +// Copyright (C) 2016-2025 Moe Alam, moeiscool +// +// # Donate +// +// If you like what I am doing here and want me to continue please consider donating :) +// PayPal : paypal@m03.ca +// +process.on('uncaughtException', function (err) { + console.error('uncaughtException',err); +}); +var fs=require('fs'); +var cv=require('opencv4nodejs'); +var exec = require('child_process').exec; +var moment = require('moment'); +var Canvas = require('canvas'); +var express = require('express'); +const path = require('path'); +var http = require('http'), + app = express(), + server = http.createServer(app); +var config=require('./conf.json'); +if(!config.port){config.port=8080} +if(!config.hostPort){config.hostPort=8082} +if(config.systemLog===undefined){config.systemLog=true} +if(config.cascadesDir===undefined){config.cascadesDir=__dirname+'/cascades/'} +if(config.alprConfig===undefined){config.alprConfig=__dirname+'/openalpr.conf'} +s={ + group:{}, + dir:{ + cascades : config.cascadesDir + }, + isWin:(process.platform==='win32'), + foundCascades : { + + } +} +//default stream folder check +if(!config.streamDir){ + if(s.isWin===false){ + config.streamDir='/dev/shm' + }else{ + config.streamDir=config.windowsTempDir + } + if(!fs.existsSync(config.streamDir)){ + config.streamDir=__dirname+'/streams/' + }else{ + config.streamDir+='/streams/' + } +} +s.dir.streams=config.streamDir; +//streams dir +if(!fs.existsSync(s.dir.streams)){ + fs.mkdirSync(s.dir.streams); +} +//streams dir +if(!fs.existsSync(s.dir.cascades)){ + fs.mkdirSync(s.dir.cascades); +} +s.gid=function(x){ + if(!x){x=10};var t = "";var p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for( var i=0; i < x; i++ ) + t += p.charAt(Math.floor(Math.random() * p.length)); + return t; +}; +s.findCascades=function(callback){ + var tmp={}; + tmp.foundCascades=[]; + fs.readdir(s.dir.cascades,function(err,files){ + files.forEach(function(cascade,n){ + if(cascade.indexOf('.xml')>-1){ + tmp.foundCascades.push(cascade.replace('.xml','')) + } + }) + s.cascadesInDir=tmp.foundCascades; + callback(tmp.foundCascades) + }) +} +s.findCascades(function(){ + //get cascades +}) +s.detectLicensePlate=function(buffer,d,tx){ + if(!d.mon.detector_lisence_plate_country||d.mon.detector_lisence_plate_country===''){ + d.mon.detector_lisence_plate_country='us' + } + d.tmpFile=s.gid(5)+'.jpg' + if(!fs.existsSync(s.dir.streams)){ + fs.mkdirSync(s.dir.streams); + } + d.dir=s.dir.streams+d.ke+'/' + if(!fs.existsSync(d.dir)){ + fs.mkdirSync(d.dir); + } + d.dir=s.dir.streams+d.ke+'/'+d.id+'/' + if(!fs.existsSync(d.dir)){ + fs.mkdirSync(d.dir); + } + fs.writeFile(d.dir+d.tmpFile,buffer,function(err){ + if(err) return s.systemLog(err); + exec('alpr -j --config '+config.alprConfig+' -c '+d.mon.detector_lisence_plate_country+' '+d.dir+d.tmpFile,{encoding:'utf8'},(err, scan, stderr) => { + if(err){ + s.systemLog(err); + }else{ + try{ + scan=JSON.parse(scan.replace('--(!)Loaded CUDA classifier','').trim()) + }catch(err){ + if(!scan||!scan.results){ + return s.systemLog(scan,err); + } + } + if(scan.results.length>0){ + scan.plates=[] + scan.mats=[] + scan.results.forEach(function(v){ + v.candidates.forEach(function(g,n){ + if(v.candidates[n].matches_template) + delete(v.candidates[n].matches_template) + }) + scan.plates.push({coordinates:v.coordinates,candidates:v.candidates,confidence:v.confidence,plate:v.plate}) + var width = Math.sqrt( Math.pow(v.coordinates[1].x - v.coordinates[0].x, 2) + Math.pow(v.coordinates[1].y - v.coordinates[0].y, 2)); + var height = Math.sqrt( Math.pow(v.coordinates[2].x - v.coordinates[1].x, 2) + Math.pow(v.coordinates[2].y - v.coordinates[1].y, 2)) + scan.mats.push({ + x:v.coordinates[0].x, + y:v.coordinates[0].y, + width:width, + height:height, + tag:v.plate + }) + }) + tx({f:'trigger',id:d.id,ke:d.ke,details:{split:true,plug:config.plug,name:'licensePlate',reason:'object',matrices:scan.mats,imgHeight:d.mon.detector_scale_y,imgWidth:d.mon.detector_scale_x,frame:d.base64}}) + } + } + exec('rm -rf '+d.dir+d.tmpFile,{encoding:'utf8'}) + }) + }) +} +s.detectObject=function(buffer,d,tx){ + //detect license plate? + if(d.mon.detector_lisence_plate==="1"){ + s.detectLicensePlate(buffer,d,tx) + } + cv.imdecodeAsync(buffer,(err,im) => { + if(err){ + console.log(err) + return + } + + if (!cv.xmodules.dnn) { + throw new Error('exiting: opencv4nodejs compiled without dnn module'); + } + + // replace with path where you unzipped inception model + const inceptionModelPath = __dirname+'/data/inception'; + + + const modelFile = path.resolve(inceptionModelPath, 'tensorflow_inception_graph.pb'); + const classNamesFile = path.resolve(inceptionModelPath, 'imagenet_comp_graph_label_strings.txt'); + if (!fs.existsSync(modelFile) || !fs.existsSync(classNamesFile)) { + console.log('could not find inception model'); + console.log('download the model from: https://cdn.shinobi.video/weights/inception5h.zip'); + throw new Error('exiting'); + } + + // read classNames and store them in an array + const classNames = fs.readFileSync(classNamesFile).toString().split('\n'); + + // initialize tensorflow inception model from modelFile + const net = cv.readNetFromTensorflow(modelFile); + + // inception model works with 224 x 224 images, so we resize + // our input images and pad the image with white pixels to + // make the images have the same width and height + const maxImgDim = 224; + const white = new cv.Vec(255, 255, 255); + const imgResized = im.resizeToMax(maxImgDim).padToSquare(white); + + // network accepts blobs as input + const inputBlob = cv.blobFromImage(imgResized); + net.setInput(inputBlob); + + // forward pass input through entire network, will return + // classification result as 1xN Mat with confidences of each class + const outputBlob = net.forward(); + + // find all labels with a minimum confidence + const minConfidence = 0.05; + const locations = + outputBlob + .threshold(minConfidence, 1, cv.THRESH_BINARY) + .convertTo(cv.CV_8U) + .findNonZero(); +// locations.forEach(function(v){ +// console.log(v) +// }) + const result = + locations.map(pt => ({ + confidence: parseInt(outputBlob.at(0, pt.x) * 100) / 100, + className: classNames[pt.x] + })) + // sort result by confidence + .sort((r0, r1) => r1.confidence - r0.confidence) + .map(res => `${res.className} (${res.confidence})`); + console.log(result) + if(result.length > 0) { + s.cx({ + f:'trigger', + id:d.id, + ke:d.ke, + name:'tensorflow', + details:{ + plug:'tensorflow', + name:'tensorflow', + reason:'object', + matrices : result + // confidence:d.average + }, + imgHeight:d.mon.detector_scale_y, + imgWidth:d.mon.detector_scale_x + }) + } + }) +} +s.systemLog=function(q,w,e){ + if(!w){w=''} + if(!e){e=''} + if(config.systemLog===true){ + return console.log(moment().format(),q,w,e) + } +} + +s.blenderRegion=function(d,cord,tx){ + d.width = d.image.width; + d.height = d.image.height; + if(!s.group[d.ke][d.id].canvas[cord.name]){ + if(!cord.sensitivity||isNaN(cord.sensitivity)){ + cord.sensitivity=d.mon.detector_sensitivity; + } + s.group[d.ke][d.id].canvas[cord.name] = new Canvas(d.width,d.height); + s.group[d.ke][d.id].canvasContext[cord.name] = s.group[d.ke][d.id].canvas[cord.name].getContext('2d'); + s.group[d.ke][d.id].canvasContext[cord.name].fillStyle = '#000'; + s.group[d.ke][d.id].canvasContext[cord.name].fillRect( 0, 0,d.width,d.height); + if(cord.points&&cord.points.length>0){ + s.group[d.ke][d.id].canvasContext[cord.name].beginPath(); + for (var b = 0; b < cord.points.length; b++){ + cord.points[b][0]=parseFloat(cord.points[b][0]); + cord.points[b][1]=parseFloat(cord.points[b][1]); + if(b===0){ + s.group[d.ke][d.id].canvasContext[cord.name].moveTo(cord.points[b][0],cord.points[b][1]); + }else{ + s.group[d.ke][d.id].canvasContext[cord.name].lineTo(cord.points[b][0],cord.points[b][1]); + } + } + s.group[d.ke][d.id].canvasContext[cord.name].clip(); + } + } + if(!s.group[d.ke][d.id].canvasContext[cord.name]){ + return + } + s.group[d.ke][d.id].canvasContext[cord.name].drawImage(d.image, 0, 0, d.width, d.height); + if(!s.group[d.ke][d.id].blendRegion[cord.name]){ + s.group[d.ke][d.id].blendRegion[cord.name] = new Canvas(d.width, d.height); + s.group[d.ke][d.id].blendRegionContext[cord.name] = s.group[d.ke][d.id].blendRegion[cord.name].getContext('2d'); + } + var sourceData = s.group[d.ke][d.id].canvasContext[cord.name].getImageData(0, 0, d.width, d.height); + // create an image if the previous image doesn�t exist + if (!s.group[d.ke][d.id].lastRegionImageData[cord.name]) s.group[d.ke][d.id].lastRegionImageData[cord.name] = s.group[d.ke][d.id].canvasContext[cord.name].getImageData(0, 0, d.width, d.height); + // create a ImageData instance to receive the blended result + var blendedData = s.group[d.ke][d.id].canvasContext[cord.name].createImageData(d.width, d.height); + // blend the 2 images + s.differenceAccuracy(blendedData.data,sourceData.data,s.group[d.ke][d.id].lastRegionImageData[cord.name].data); + // draw the result in a canvas + s.group[d.ke][d.id].blendRegionContext[cord.name].putImageData(blendedData, 0, 0); + // store the current webcam image + s.group[d.ke][d.id].lastRegionImageData[cord.name] = sourceData; + blendedData = s.group[d.ke][d.id].blendRegionContext[cord.name].getImageData(0, 0, d.width, d.height); + var i = 0; + d.average = 0; + while (i < (blendedData.data.length * 0.25)) { + d.average += (blendedData.data[i * 4] + blendedData.data[i * 4 + 1] + blendedData.data[i * 4 + 2]); + ++i; + } + d.average = (d.average / (blendedData.data.length * 0.25))*10; + if (d.average > parseFloat(cord.sensitivity)){ + if(d.mon.detector_use_detect_object==="1"&&d.mon.detector_second!=='1'){ + var buffer=s.group[d.ke][d.id].canvas[cord.name].toBuffer(); + s.detectObject(buffer,d,tx) + }else{ + tx({f:'trigger',id:d.id,ke:d.ke,details:{split:true,plug:config.plug,name:cord.name,reason:'motion',confidence:d.average,frame:d.base64}}) + } + } + s.group[d.ke][d.id].canvasContext[cord.name].clearRect(0, 0, d.width, d.height); + s.group[d.ke][d.id].blendRegionContext[cord.name].clearRect(0, 0, d.width, d.height); +} +function blobToBuffer (blob, cb) { + if (typeof Blob === 'undefined' || !(blob instanceof Blob)) { + throw new Error('first argument must be a Blob') + } + if (typeof cb !== 'function') { + throw new Error('second argument must be a function') + } + + var reader = new FileReader() + + function onLoadEnd (e) { + reader.removeEventListener('loadend', onLoadEnd, false) + if (e.error) cb(e.error) + else cb(null, Buffer.from(reader.result)) + } + + reader.addEventListener('loadend', onLoadEnd, false) + reader.readAsArrayBuffer(blob) +} +function fastAbs(value) { + return (value ^ (value >> 31)) - (value >> 31); +} + +function threshold(value) { + return (value > 0x15) ? 0xFF : 0; +} +s.differenceAccuracy=function(target, data1, data2) { + if (data1.length != data2.length) return null; + var i = 0; + while (i < (data1.length * 0.25)) { + var average1 = (data1[4 * i] + data1[4 * i + 1] + data1[4 * i + 2]) / 3; + var average2 = (data2[4 * i] + data2[4 * i + 1] + data2[4 * i + 2]) / 3; + var diff = threshold(fastAbs(average1 - average2)); + target[4 * i] = diff; + target[4 * i + 1] = diff; + target[4 * i + 2] = diff; + target[4 * i + 3] = 0xFF; + ++i; + } +} +s.checkAreas=function(d,tx){ + if(!s.group[d.ke][d.id].cords){ + if(!d.mon.cords){d.mon.cords={}} + s.group[d.ke][d.id].cords=Object.values(d.mon.cords); + } + if(d.mon.detector_frame==='1'){ + d.mon.cords.frame={name:'FULL_FRAME',s:d.mon.detector_sensitivity,points:[[0,0],[0,d.image.height],[d.image.width,d.image.height],[d.image.width,0]]}; + s.group[d.ke][d.id].cords.push(d.mon.cords.frame); + } + for (var b = 0; b < s.group[d.ke][d.id].cords.length; b++){ + if(!s.group[d.ke][d.id].cords[b]){return} + s.blenderRegion(d,s.group[d.ke][d.id].cords[b],tx) + } + delete(d.image) +} + +s.MainEventController=function(d,cn,tx){ + switch(d.f){ + case'refreshPlugins': + s.findCascades(function(cascades){ + s.cx({f:'s.tx',data:{f:'detector_cascade_list',cascades:cascades},to:'GRP_'+d.ke}) + }) + break; + case'readPlugins': + s.cx({f:'s.tx',data:{f:'detector_cascade_list',cascades:s.cascadesInDir},to:'GRP_'+d.ke}) + break; + case'init_plugin_as_host': + if(!cn){ + console.log('No CN',d) + return + } + if(d.key!==config.key){ + console.log(new Date(),'Plugin Key Mismatch',cn.request.connection.remoteAddress,d) + cn.emit('init',{ok:false}) + cn.disconnect() + }else{ + console.log(new Date(),'Plugin Connected to Client',cn.request.connection.remoteAddress) + cn.emit('init',{ok:true,plug:config.plug,notice:config.notice,type:config.type}) + } + break; + case'init_monitor': + if(s.group[d.ke]&&s.group[d.ke][d.id]){ + s.group[d.ke][d.id].canvas={} + s.group[d.ke][d.id].canvasContext={} + s.group[d.ke][d.id].blendRegion={} + s.group[d.ke][d.id].blendRegionContext={} + s.group[d.ke][d.id].lastRegionImageData={} + s.group[d.ke][d.id].numberOfTriggers=0 + delete(s.group[d.ke][d.id].cords) + delete(s.group[d.ke][d.id].buffer) + } + break; + case'init_aws_push': +// console.log('init_aws') + s.group[d.ke][d.id].aws={links:[],complete:0,total:d.total,videos:[],tx:tx} + break; + case'frame': + try{ + if(!s.group[d.ke]){ + s.group[d.ke]={} + } + if(!s.group[d.ke][d.id]){ + s.group[d.ke][d.id]={ + canvas:{}, + canvasContext:{}, + lastRegionImageData:{}, + blendRegion:{}, + blendRegionContext:{}, + } + } + if(!s.group[d.ke][d.id].buffer){ + s.group[d.ke][d.id].buffer=[d.frame]; + }else{ + s.group[d.ke][d.id].buffer.push(d.frame) + } + if(d.frame[d.frame.length-2] === 0xFF && d.frame[d.frame.length-1] === 0xD9){ + s.group[d.ke][d.id].buffer=Buffer.concat(s.group[d.ke][d.id].buffer); + try{ + d.mon.detector_cascades=JSON.parse(d.mon.detector_cascades) + }catch(err){ + + } + if(d.mon.detector_frame_save==="1"){ + d.base64=s.group[d.ke][d.id].buffer.toString('base64') + } + if(d.mon.detector_second==='1'&&d.objectOnly===true){ + s.detectObject(s.group[d.ke][d.id].buffer,d,tx) + }else{ + if((d.mon.detector_pam !== '1' && d.mon.detector_use_motion === "1") || d.mon.detector_use_detect_object !== "1"){ + if((typeof d.mon.cords ==='string')&&d.mon.cords.trim()===''){ + d.mon.cords=[] + }else{ + try{ + d.mon.cords=JSON.parse(d.mon.cords) + }catch(err){ + // console.log('d.mon.cords',err,d) + } + } + s.group[d.ke][d.id].cords=Object.values(d.mon.cords); + d.mon.cords=d.mon.cords; + d.image = new Canvas.Image; + if(d.mon.detector_scale_x===''||d.mon.detector_scale_y===''){ + s.systemLog('Must set detector image size') + return + }else{ + d.image.width=d.mon.detector_scale_x; + d.image.height=d.mon.detector_scale_y; + } + d.width=d.image.width; + d.height=d.image.height; + d.image.onload = function() { + s.checkAreas(d,tx); + } + d.image.src = s.group[d.ke][d.id].buffer; + }else{ + s.detectObject(s.group[d.ke][d.id].buffer,d,tx) + } + } + s.group[d.ke][d.id].buffer=null; + } + }catch(err){ + if(err){ + s.systemLog(err) + delete(s.group[d.ke][d.id].buffer) + } + } + break; + } +} +server.listen(config.hostPort); +//web pages and plugin api +app.get('/', function (req, res) { + res.end(''+config.plug+' for Shinobi is running') +}); +//Conector to Shinobi +if(config.mode==='host'){ + //start plugin as host + var io = require('socket.io')(server); + io.attach(server); + s.connectedClients={}; + io.on('connection', function (cn) { + s.connectedClients[cn.id]={id:cn.id} + s.connectedClients[cn.id].tx = function(data){ + data.pluginKey=config.key;data.plug=config.plug; + return io.to(cn.id).emit('ocv',data); + } + cn.on('f',function(d){ + s.MainEventController(d,cn,s.connectedClients[cn.id].tx) + }); + cn.on('disconnect',function(d){ + delete(s.connectedClients[cn.id]) + }) + }); +}else{ + //start plugin as client + if(!config.host){config.host='localhost'} + var io = require('socket.io-client')('ws://'+config.host+':'+config.port);//connect to master + s.cx=function(x){x.pluginKey=config.key;x.plug=config.plug;return io.emit('ocv',x)} + io.on('connect',function(d){ + s.cx({f:'init',plug:config.plug,notice:config.notice,type:config.type}); + }) + io.on('disconnect',function(d){ + io.connect(); + }) + io.on('f',function(d){ + s.MainEventController(d,null,s.cx) + }) +} diff --git a/web/libs/css/bootstrap4.min.css b/web/libs/css/bootstrap4.min.css new file mode 100644 index 00000000..e66b07a9 --- /dev/null +++ b/web/libs/css/bootstrap4.min.css @@ -0,0 +1,8468 @@ +/*! + * Bootstrap v4.0.0-beta (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +@media print { + *, + ::after, + ::before { + text-shadow: none!important; + box-shadow: none!important + } + a, + a:visited { + text-decoration: underline + } + abbr[title]::after { + content: " (" attr(title) ")" + } + pre { + white-space: pre-wrap!important + } + blockquote, + pre { + border: 1px solid #999; + page-break-inside: avoid + } + thead { + display: table-header-group + } + img, + tr { + page-break-inside: avoid + } + h2, + h3, + p { + orphans: 3; + widows: 3 + } + h2, + h3 { + page-break-after: avoid + } + .navbar { + display: none + } + .badge { + border: 1px solid #000 + } + .table { + border-collapse: collapse!important + } + .table td, + .table th { + background-color: #fff!important + } + .table-bordered td, + .table-bordered th { + border: 1px solid #ddd!important + } +} + +html { + box-sizing: border-box; + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent +} + +*, +::after, +::before { + box-sizing: inherit +} + +@-ms-viewport { + width: device-width +} + +article, +aside, +dialog, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff +} + +[tabindex="-1"]:focus { + outline: 0!important +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: .5rem +} + +p { + margin-top: 0; + margin-bottom: 1rem +} + +abbr[data-original-title], +abbr[title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0 +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit +} + +dl, +ol, +ul { + margin-top: 0; + margin-bottom: 1rem +} + +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0 +} + +dt { + font-weight: 700 +} + +dd { + margin-bottom: .5rem; + margin-left: 0 +} + +blockquote { + margin: 0 0 1rem +} + +dfn { + font-style: italic +} + +b, +strong { + font-weight: bolder +} + +small { + font-size: 80% +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline +} + +sub { + bottom: -.25em +} + +sup { + top: -.5em +} + +a { + color: #007bff; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects +} + +a:hover { + color: #0056b3; + text-decoration: underline +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none +} + +a:not([href]):not([tabindex]):focus, +a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none +} + +a:not([href]):not([tabindex]):focus { + outline: 0 +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto +} + +figure { + margin: 0 0 1rem +} + +img { + vertical-align: middle; + border-style: none +} + +svg:not(:root) { + overflow: hidden +} + +[role=button], +a, +area, +button, +input, +label, +select, +summary, +textarea { + -ms-touch-action: manipulation; + touch-action: manipulation +} + +table { + border-collapse: collapse +} + +caption { + padding-top: .75rem; + padding-bottom: .75rem; + color: #868e96; + text-align: left; + caption-side: bottom +} + +th { + text-align: left +} + +label { + display: inline-block; + margin-bottom: .5rem +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color +} + +button, +input, +optgroup, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit +} + +button, +input { + overflow: visible +} + +button, +select { + text-transform: none +} + +[type=reset], +[type=submit], +button, +html [type=button] { + -webkit-appearance: button +} + +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + padding: 0; + border-style: none +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=date], +input[type=datetime-local], +input[type=month], +input[type=time] { + -webkit-appearance: listbox +} + +textarea { + overflow: auto; + resize: vertical +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0 +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal +} + +progress { + vertical-align: baseline +} + +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: none +} + +[type=search]::-webkit-search-cancel-button, +[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button +} + +output { + display: inline-block +} + +summary { + display: list-item +} + +template { + display: none +} + +[hidden] { + display: none!important +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + margin-bottom: .5rem; + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit +} + +.h1, +h1 { + font-size: 2.5rem +} + +.h2, +h2 { + font-size: 2rem +} + +.h3, +h3 { + font-size: 1.75rem +} + +.h4, +h4 { + font-size: 1.5rem +} + +.h5, +h5 { + font-size: 1.25rem +} + +.h6, +h6 { + font-size: 1rem +} + +.lead { + font-size: 1.25rem; + font-weight: 300 +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.1 +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.1 +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.1 +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.1 +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, .1) +} + +.small, +small { + font-size: 80%; + font-weight: 400 +} + +.mark, +mark { + padding: .2em; + background-color: #fcf8e3 +} + +.list-unstyled { + padding-left: 0; + list-style: none +} + +.list-inline { + padding-left: 0; + list-style: none +} + +.list-inline-item { + display: inline-block +} + +.list-inline-item:not(:last-child) { + margin-right: 5px +} + +.initialism { + font-size: 90%; + text-transform: uppercase +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #868e96 +} + +.blockquote-footer::before { + content: "\2014 \00A0" +} + +.img-fluid { + max-width: 100%; + height: auto +} + +.img-thumbnail { + padding: .25rem; + background-color: #fff; + border: 1px solid #ddd; + border-radius: .25rem; + transition: all .2s ease-in-out; + max-width: 100%; + height: auto +} + +.figure { + display: inline-block +} + +.figure-img { + margin-bottom: .5rem; + line-height: 1 +} + +.figure-caption { + font-size: 90%; + color: #868e96 +} + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace +} + +code { + padding: .2rem .4rem; + font-size: 90%; + color: #bd4147; + background-color: #f8f9fa; + border-radius: .25rem +} + +a>code { + padding: 0; + color: inherit; + background-color: inherit +} + +kbd { + padding: .2rem .4rem; + font-size: 90%; + color: #fff; + background-color: #212529; + border-radius: .2rem +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700 +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + font-size: 90%; + color: #212529 +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + background-color: transparent; + border-radius: 0 +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll +} + +.container { + margin-right: auto; + margin-left: auto; + padding-right: 15px; + padding-left: 15px; + width: 100% +} + +@media (min-width:576px) { + .container { + max-width: 540px + } +} + +@media (min-width:768px) { + .container { + max-width: 720px + } +} + +@media (min-width:992px) { + .container { + max-width: 960px + } +} + +@media (min-width:1200px) { + .container { + max-width: 1140px + } +} + +.container-fluid { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: 15px; + padding-left: 15px; + width: 100% +} + +.row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px +} + +.no-gutters { + margin-right: 0; + margin-left: 0 +} + +.no-gutters>.col, +.no-gutters>[class*=col-] { + padding-right: 0; + padding-left: 0 +} + +.col, +.col-1, +.col-10, +.col-11, +.col-12, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-auto, +.col-lg, +.col-lg-1, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-auto, +.col-md, +.col-md-1, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-auto, +.col-sm, +.col-sm-1, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-auto, +.col-xl, +.col-xl-1, +.col-xl-10, +.col-xl-11, +.col-xl-12, +.col-xl-2, +.col-xl-3, +.col-xl-4, +.col-xl-5, +.col-xl-6, +.col-xl-7, +.col-xl-8, +.col-xl-9, +.col-xl-auto { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% +} + +.col-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none +} + +.col-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% +} + +.col-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% +} + +.col-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% +} + +.col-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% +} + +.col-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% +} + +.col-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% +} + +.col-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% +} + +.col-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% +} + +.col-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% +} + +.col-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% +} + +.col-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% +} + +.col-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% +} + +.order-1 { + -ms-flex-order: 1; + order: 1 +} + +.order-2 { + -ms-flex-order: 2; + order: 2 +} + +.order-3 { + -ms-flex-order: 3; + order: 3 +} + +.order-4 { + -ms-flex-order: 4; + order: 4 +} + +.order-5 { + -ms-flex-order: 5; + order: 5 +} + +.order-6 { + -ms-flex-order: 6; + order: 6 +} + +.order-7 { + -ms-flex-order: 7; + order: 7 +} + +.order-8 { + -ms-flex-order: 8; + order: 8 +} + +.order-9 { + -ms-flex-order: 9; + order: 9 +} + +.order-10 { + -ms-flex-order: 10; + order: 10 +} + +.order-11 { + -ms-flex-order: 11; + order: 11 +} + +.order-12 { + -ms-flex-order: 12; + order: 12 +} + +@media (min-width:576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .col-sm-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-sm-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-sm-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-sm-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-sm-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-sm-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-sm-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-sm-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-sm-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-sm-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-sm-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-sm-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-sm-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-sm-1 { + -ms-flex-order: 1; + order: 1 + } + .order-sm-2 { + -ms-flex-order: 2; + order: 2 + } + .order-sm-3 { + -ms-flex-order: 3; + order: 3 + } + .order-sm-4 { + -ms-flex-order: 4; + order: 4 + } + .order-sm-5 { + -ms-flex-order: 5; + order: 5 + } + .order-sm-6 { + -ms-flex-order: 6; + order: 6 + } + .order-sm-7 { + -ms-flex-order: 7; + order: 7 + } + .order-sm-8 { + -ms-flex-order: 8; + order: 8 + } + .order-sm-9 { + -ms-flex-order: 9; + order: 9 + } + .order-sm-10 { + -ms-flex-order: 10; + order: 10 + } + .order-sm-11 { + -ms-flex-order: 11; + order: 11 + } + .order-sm-12 { + -ms-flex-order: 12; + order: 12 + } +} + +@media (min-width:768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .col-md-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-md-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-md-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-md-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-md-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-md-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-md-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-md-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-md-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-md-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-md-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-md-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-md-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-md-1 { + -ms-flex-order: 1; + order: 1 + } + .order-md-2 { + -ms-flex-order: 2; + order: 2 + } + .order-md-3 { + -ms-flex-order: 3; + order: 3 + } + .order-md-4 { + -ms-flex-order: 4; + order: 4 + } + .order-md-5 { + -ms-flex-order: 5; + order: 5 + } + .order-md-6 { + -ms-flex-order: 6; + order: 6 + } + .order-md-7 { + -ms-flex-order: 7; + order: 7 + } + .order-md-8 { + -ms-flex-order: 8; + order: 8 + } + .order-md-9 { + -ms-flex-order: 9; + order: 9 + } + .order-md-10 { + -ms-flex-order: 10; + order: 10 + } + .order-md-11 { + -ms-flex-order: 11; + order: 11 + } + .order-md-12 { + -ms-flex-order: 12; + order: 12 + } +} + +@media (min-width:992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .col-lg-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-lg-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-lg-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-lg-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-lg-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-lg-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-lg-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-lg-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-lg-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-lg-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-lg-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-lg-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-lg-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-lg-1 { + -ms-flex-order: 1; + order: 1 + } + .order-lg-2 { + -ms-flex-order: 2; + order: 2 + } + .order-lg-3 { + -ms-flex-order: 3; + order: 3 + } + .order-lg-4 { + -ms-flex-order: 4; + order: 4 + } + .order-lg-5 { + -ms-flex-order: 5; + order: 5 + } + .order-lg-6 { + -ms-flex-order: 6; + order: 6 + } + .order-lg-7 { + -ms-flex-order: 7; + order: 7 + } + .order-lg-8 { + -ms-flex-order: 8; + order: 8 + } + .order-lg-9 { + -ms-flex-order: 9; + order: 9 + } + .order-lg-10 { + -ms-flex-order: 10; + order: 10 + } + .order-lg-11 { + -ms-flex-order: 11; + order: 11 + } + .order-lg-12 { + -ms-flex-order: 12; + order: 12 + } +} + +@media (min-width:1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + .col-xl-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + .col-xl-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333% + } + .col-xl-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667% + } + .col-xl-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + .col-xl-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333% + } + .col-xl-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667% + } + .col-xl-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + .col-xl-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333% + } + .col-xl-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667% + } + .col-xl-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + .col-xl-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333% + } + .col-xl-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667% + } + .col-xl-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + .order-xl-1 { + -ms-flex-order: 1; + order: 1 + } + .order-xl-2 { + -ms-flex-order: 2; + order: 2 + } + .order-xl-3 { + -ms-flex-order: 3; + order: 3 + } + .order-xl-4 { + -ms-flex-order: 4; + order: 4 + } + .order-xl-5 { + -ms-flex-order: 5; + order: 5 + } + .order-xl-6 { + -ms-flex-order: 6; + order: 6 + } + .order-xl-7 { + -ms-flex-order: 7; + order: 7 + } + .order-xl-8 { + -ms-flex-order: 8; + order: 8 + } + .order-xl-9 { + -ms-flex-order: 9; + order: 9 + } + .order-xl-10 { + -ms-flex-order: 10; + order: 10 + } + .order-xl-11 { + -ms-flex-order: 11; + order: 11 + } + .order-xl-12 { + -ms-flex-order: 12; + order: 12 + } +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; + background-color: transparent +} + +.table td, +.table th { + padding: .75rem; + vertical-align: top; + border-top: 1px solid #e9ecef +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #e9ecef +} + +.table tbody+tbody { + border-top: 2px solid #e9ecef +} + +.table .table { + background-color: #fff +} + +.table-sm td, +.table-sm th { + padding: .3rem +} + +.table-bordered { + border: 1px solid #e9ecef +} + +.table-bordered td, +.table-bordered th { + border: 1px solid #e9ecef +} + +.table-bordered thead td, +.table-bordered thead th { + border-bottom-width: 2px +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, .05) +} + +.table-hover tbody tr:hover { + background-color: rgba(0, 0, 0, .075) +} + +.table-primary, +.table-primary>td, +.table-primary>th { + background-color: #b8daff +} + +.table-hover .table-primary:hover { + background-color: #9fcdff +} + +.table-hover .table-primary:hover>td, +.table-hover .table-primary:hover>th { + background-color: #9fcdff +} + +.table-secondary, +.table-secondary>td, +.table-secondary>th { + background-color: #dddfe2 +} + +.table-hover .table-secondary:hover { + background-color: #cfd2d6 +} + +.table-hover .table-secondary:hover>td, +.table-hover .table-secondary:hover>th { + background-color: #cfd2d6 +} + +.table-success, +.table-success>td, +.table-success>th { + background-color: #c3e6cb +} + +.table-hover .table-success:hover { + background-color: #b1dfbb +} + +.table-hover .table-success:hover>td, +.table-hover .table-success:hover>th { + background-color: #b1dfbb +} + +.table-info, +.table-info>td, +.table-info>th { + background-color: #bee5eb +} + +.table-hover .table-info:hover { + background-color: #abdde5 +} + +.table-hover .table-info:hover>td, +.table-hover .table-info:hover>th { + background-color: #abdde5 +} + +.table-warning, +.table-warning>td, +.table-warning>th { + background-color: #ffeeba +} + +.table-hover .table-warning:hover { + background-color: #ffe8a1 +} + +.table-hover .table-warning:hover>td, +.table-hover .table-warning:hover>th { + background-color: #ffe8a1 +} + +.table-danger, +.table-danger>td, +.table-danger>th { + background-color: #f5c6cb +} + +.table-hover .table-danger:hover { + background-color: #f1b0b7 +} + +.table-hover .table-danger:hover>td, +.table-hover .table-danger:hover>th { + background-color: #f1b0b7 +} + +.table-light, +.table-light>td, +.table-light>th { + background-color: #fdfdfe +} + +.table-hover .table-light:hover { + background-color: #ececf6 +} + +.table-hover .table-light:hover>td, +.table-hover .table-light:hover>th { + background-color: #ececf6 +} + +.table-dark, +.table-dark>td, +.table-dark>th { + background-color: #c6c8ca +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe +} + +.table-hover .table-dark:hover>td, +.table-hover .table-dark:hover>th { + background-color: #b9bbbe +} + +.table-active, +.table-active>td, +.table-active>th { + background-color: rgba(0, 0, 0, .075) +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, .075) +} + +.table-hover .table-active:hover>td, +.table-hover .table-active:hover>th { + background-color: rgba(0, 0, 0, .075) +} + +.thead-inverse th { + color: #fff; + background-color: #212529 +} + +.thead-default th { + color: #495057; + background-color: #e9ecef +} + +.table-inverse { + color: #fff; + background-color: #212529 +} + +.table-inverse td, +.table-inverse th, +.table-inverse thead th { + border-color: #32383e +} + +.table-inverse.table-bordered { + border: 0 +} + +.table-inverse.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, .05) +} + +.table-inverse.table-hover tbody tr:hover { + background-color: rgba(255, 255, 255, .075) +} + +@media (max-width:991px) { + .table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar + } + .table-responsive.table-bordered { + border: 0 + } +} + +.form-control { + display: block; + width: 100%; + padding: .5rem .75rem; + font-size: 1rem; + line-height: 1.25; + color: #495057; + background-color: #fff; + background-image: none; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: .25rem; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0 +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0 +} + +.form-control::-webkit-input-placeholder { + color: #868e96; + opacity: 1 +} + +.form-control:-ms-input-placeholder { + color: #868e96; + opacity: 1 +} + +.form-control::placeholder { + color: #868e96; + opacity: 1 +} + +.form-control:disabled, +.form-control[readonly] { + background-color: #e9ecef; + opacity: 1 +} + +select.form-control:not([size]):not([multiple]) { + height: calc(2.25rem + 2px) +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff +} + +.form-control-file, +.form-control-range { + display: block +} + +.col-form-label { + padding-top: calc(.5rem - 1px * 2); + padding-bottom: calc(.5rem - 1px * 2); + margin-bottom: 0 +} + +.col-form-label-lg { + padding-top: calc(.5rem - 1px * 2); + padding-bottom: calc(.5rem - 1px * 2); + font-size: 1.25rem +} + +.col-form-label-sm { + padding-top: calc(.25rem - 1px * 2); + padding-bottom: calc(.25rem - 1px * 2); + font-size: .875rem +} + +.col-form-legend { + padding-top: .5rem; + padding-bottom: .5rem; + margin-bottom: 0; + font-size: 1rem +} + +.form-control-plaintext { + padding-top: .5rem; + padding-bottom: .5rem; + margin-bottom: 0; + line-height: 1.25; + border: solid transparent; + border-width: 1px 0 +} + +.form-control-plaintext.form-control-lg, +.form-control-plaintext.form-control-sm, +.input-group-lg>.form-control-plaintext.form-control, +.input-group-lg>.form-control-plaintext.input-group-addon, +.input-group-lg>.input-group-btn>.form-control-plaintext.btn, +.input-group-sm>.form-control-plaintext.form-control, +.input-group-sm>.form-control-plaintext.input-group-addon, +.input-group-sm>.input-group-btn>.form-control-plaintext.btn { + padding-right: 0; + padding-left: 0 +} + +.form-control-sm, +.input-group-sm>.form-control, +.input-group-sm>.input-group-addon, +.input-group-sm>.input-group-btn>.btn { + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5; + border-radius: .2rem +} + +.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]), +.input-group-sm>select.form-control:not([size]):not([multiple]), +.input-group-sm>select.input-group-addon:not([size]):not([multiple]), +select.form-control-sm:not([size]):not([multiple]) { + height: calc(1.8125rem + 2px) +} + +.form-control-lg, +.input-group-lg>.form-control, +.input-group-lg>.input-group-addon, +.input-group-lg>.input-group-btn>.btn { + padding: .5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: .3rem +} + +.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]), +.input-group-lg>select.form-control:not([size]):not([multiple]), +.input-group-lg>select.input-group-addon:not([size]):not([multiple]), +select.form-control-lg:not([size]):not([multiple]) { + height: calc(2.3125rem + 2px) +} + +.form-group { + margin-bottom: 1rem +} + +.form-text { + display: block; + margin-top: .25rem +} + +.form-row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px +} + +.form-row>.col, +.form-row>[class*=col-] { + padding-right: 5px; + padding-left: 5px +} + +.form-check { + position: relative; + display: block; + margin-bottom: .5rem +} + +.form-check.disabled .form-check-label { + color: #868e96 +} + +.form-check-label { + padding-left: 1.25rem; + margin-bottom: 0 +} + +.form-check-input { + position: absolute; + margin-top: .25rem; + margin-left: -1.25rem +} + +.form-check-input:only-child { + position: static +} + +.form-check-inline { + display: inline-block +} + +.form-check-inline .form-check-label { + vertical-align: middle +} + +.form-check-inline+.form-check-inline { + margin-left: .75rem +} + +.invalid-feedback { + display: none; + margin-top: .25rem; + font-size: .875rem; + color: #dc3545 +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + width: 250px; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(220, 53, 69, .8); + border-radius: .2rem +} + +.custom-select.is-valid, +.form-control.is-valid, +.was-validated .custom-select:valid, +.was-validated .form-control:valid { + border-color: #28a745 +} + +.custom-select.is-valid:focus, +.form-control.is-valid:focus, +.was-validated .custom-select:valid:focus, +.was-validated .form-control:valid:focus { + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) +} + +.custom-select.is-valid~.invalid-feedback, +.custom-select.is-valid~.invalid-tooltip, +.form-control.is-valid~.invalid-feedback, +.form-control.is-valid~.invalid-tooltip, +.was-validated .custom-select:valid~.invalid-feedback, +.was-validated .custom-select:valid~.invalid-tooltip, +.was-validated .form-control:valid~.invalid-feedback, +.was-validated .form-control:valid~.invalid-tooltip { + display: block +} + +.form-check-input.is-valid+.form-check-label, +.was-validated .form-check-input:valid+.form-check-label { + color: #28a745 +} + +.custom-control-input.is-valid~.custom-control-indicator, +.was-validated .custom-control-input:valid~.custom-control-indicator { + background-color: rgba(40, 167, 69, .25) +} + +.custom-control-input.is-valid~.custom-control-description, +.was-validated .custom-control-input:valid~.custom-control-description { + color: #28a745 +} + +.custom-file-input.is-valid~.custom-file-control, +.was-validated .custom-file-input:valid~.custom-file-control { + border-color: #28a745 +} + +.custom-file-input.is-valid~.custom-file-control::before, +.was-validated .custom-file-input:valid~.custom-file-control::before { + border-color: inherit +} + +.custom-file-input.is-valid:focus, +.was-validated .custom-file-input:valid:focus { + box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) +} + +.custom-select.is-invalid, +.form-control.is-invalid, +.was-validated .custom-select:invalid, +.was-validated .form-control:invalid { + border-color: #dc3545 +} + +.custom-select.is-invalid:focus, +.form-control.is-invalid:focus, +.was-validated .custom-select:invalid:focus, +.was-validated .form-control:invalid:focus { + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) +} + +.custom-select.is-invalid~.invalid-feedback, +.custom-select.is-invalid~.invalid-tooltip, +.form-control.is-invalid~.invalid-feedback, +.form-control.is-invalid~.invalid-tooltip, +.was-validated .custom-select:invalid~.invalid-feedback, +.was-validated .custom-select:invalid~.invalid-tooltip, +.was-validated .form-control:invalid~.invalid-feedback, +.was-validated .form-control:invalid~.invalid-tooltip { + display: block +} + +.form-check-input.is-invalid+.form-check-label, +.was-validated .form-check-input:invalid+.form-check-label { + color: #dc3545 +} + +.custom-control-input.is-invalid~.custom-control-indicator, +.was-validated .custom-control-input:invalid~.custom-control-indicator { + background-color: rgba(220, 53, 69, .25) +} + +.custom-control-input.is-invalid~.custom-control-description, +.was-validated .custom-control-input:invalid~.custom-control-description { + color: #dc3545 +} + +.custom-file-input.is-invalid~.custom-file-control, +.was-validated .custom-file-input:invalid~.custom-file-control { + border-color: #dc3545 +} + +.custom-file-input.is-invalid~.custom-file-control::before, +.was-validated .custom-file-input:invalid~.custom-file-control::before { + border-color: inherit +} + +.custom-file-input.is-invalid:focus, +.was-validated .custom-file-input:invalid:focus { + box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) +} + +.form-inline { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center +} + +.form-inline .form-check { + width: 100% +} + +@media (min-width:576px) { + .form-inline label { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0 + } + .form-inline .form-group { + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0 + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + .form-inline .form-control-plaintext { + display: inline-block + } + .form-inline .input-group { + width: auto + } + .form-inline .form-control-label { + margin-bottom: 0; + vertical-align: middle + } + .form-inline .form-check { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + margin-top: 0; + margin-bottom: 0 + } + .form-inline .form-check-label { + padding-left: 0 + } + .form-inline .form-check-input { + position: relative; + margin-top: 0; + margin-right: .25rem; + margin-left: 0 + } + .form-inline .custom-control { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0 + } + .form-inline .custom-control-indicator { + position: static; + display: inline-block; + margin-right: .25rem; + vertical-align: text-bottom + } + .form-inline .has-feedback .form-control-feedback { + top: 0 + } +} + +.btn { + display: inline-block; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + padding: .5rem .75rem; + font-size: 1rem; + line-height: 1.25; + border-radius: .25rem; + transition: all .15s ease-in-out +} + +.btn:focus, +.btn:hover { + text-decoration: none +} + +.btn.focus, +.btn:focus { + outline: 0; + box-shadow: 0 0 0 3px rgba(0, 123, 255, .25) +} + +.btn.disabled, +.btn:disabled { + opacity: .65 +} + +.btn.active, +.btn:active { + background-image: none +} + +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none +} + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.btn-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc +} + +.btn-primary.focus, +.btn-primary:focus { + box-shadow: 0 0 0 3px rgba(0, 123, 255, .5) +} + +.btn-primary.disabled, +.btn-primary:disabled { + background-color: #007bff; + border-color: #007bff +} + +.btn-primary.active, +.btn-primary:active, +.show>.btn-primary.dropdown-toggle { + background-color: #0069d9; + background-image: none; + border-color: #0062cc +} + +.btn-secondary { + color: #fff; + background-color: #868e96; + border-color: #868e96 +} + +.btn-secondary:hover { + color: #fff; + background-color: #727b84; + border-color: #6c757d +} + +.btn-secondary.focus, +.btn-secondary:focus { + box-shadow: 0 0 0 3px rgba(134, 142, 150, .5) +} + +.btn-secondary.disabled, +.btn-secondary:disabled { + background-color: #868e96; + border-color: #868e96 +} + +.btn-secondary.active, +.btn-secondary:active, +.show>.btn-secondary.dropdown-toggle { + background-color: #727b84; + background-image: none; + border-color: #6c757d +} + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745 +} + +.btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34 +} + +.btn-success.focus, +.btn-success:focus { + box-shadow: 0 0 0 3px rgba(40, 167, 69, .5) +} + +.btn-success.disabled, +.btn-success:disabled { + background-color: #28a745; + border-color: #28a745 +} + +.btn-success.active, +.btn-success:active, +.show>.btn-success.dropdown-toggle { + background-color: #218838; + background-image: none; + border-color: #1e7e34 +} + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b +} + +.btn-info.focus, +.btn-info:focus { + box-shadow: 0 0 0 3px rgba(23, 162, 184, .5) +} + +.btn-info.disabled, +.btn-info:disabled { + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-info.active, +.btn-info:active, +.show>.btn-info.dropdown-toggle { + background-color: #138496; + background-image: none; + border-color: #117a8b +} + +.btn-warning { + color: #111; + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-warning:hover { + color: #111; + background-color: #e0a800; + border-color: #d39e00 +} + +.btn-warning.focus, +.btn-warning:focus { + box-shadow: 0 0 0 3px rgba(255, 193, 7, .5) +} + +.btn-warning.disabled, +.btn-warning:disabled { + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-warning.active, +.btn-warning:active, +.show>.btn-warning.dropdown-toggle { + background-color: #e0a800; + background-image: none; + border-color: #d39e00 +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130 +} + +.btn-danger.focus, +.btn-danger:focus { + box-shadow: 0 0 0 3px rgba(220, 53, 69, .5) +} + +.btn-danger.disabled, +.btn-danger:disabled { + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-danger.active, +.btn-danger:active, +.show>.btn-danger.dropdown-toggle { + background-color: #c82333; + background-image: none; + border-color: #bd2130 +} + +.btn-light { + color: #111; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-light:hover { + color: #111; + background-color: #e2e6ea; + border-color: #dae0e5 +} + +.btn-light.focus, +.btn-light:focus { + box-shadow: 0 0 0 3px rgba(248, 249, 250, .5) +} + +.btn-light.disabled, +.btn-light:disabled { + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-light.active, +.btn-light:active, +.show>.btn-light.dropdown-toggle { + background-color: #e2e6ea; + background-image: none; + border-color: #dae0e5 +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124 +} + +.btn-dark.focus, +.btn-dark:focus { + box-shadow: 0 0 0 3px rgba(52, 58, 64, .5) +} + +.btn-dark.disabled, +.btn-dark:disabled { + background-color: #343a40; + border-color: #343a40 +} + +.btn-dark.active, +.btn-dark:active, +.show>.btn-dark.dropdown-toggle { + background-color: #23272b; + background-image: none; + border-color: #1d2124 +} + +.btn-outline-primary { + color: #007bff; + background-color: transparent; + background-image: none; + border-color: #007bff +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.btn-outline-primary.focus, +.btn-outline-primary:focus { + box-shadow: 0 0 0 3px rgba(0, 123, 255, .5) +} + +.btn-outline-primary.disabled, +.btn-outline-primary:disabled { + color: #007bff; + background-color: transparent +} + +.btn-outline-primary.active, +.btn-outline-primary:active, +.show>.btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.btn-outline-secondary { + color: #868e96; + background-color: transparent; + background-image: none; + border-color: #868e96 +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #868e96; + border-color: #868e96 +} + +.btn-outline-secondary.focus, +.btn-outline-secondary:focus { + box-shadow: 0 0 0 3px rgba(134, 142, 150, .5) +} + +.btn-outline-secondary.disabled, +.btn-outline-secondary:disabled { + color: #868e96; + background-color: transparent +} + +.btn-outline-secondary.active, +.btn-outline-secondary:active, +.show>.btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #868e96; + border-color: #868e96 +} + +.btn-outline-success { + color: #28a745; + background-color: transparent; + background-image: none; + border-color: #28a745 +} + +.btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745 +} + +.btn-outline-success.focus, +.btn-outline-success:focus { + box-shadow: 0 0 0 3px rgba(40, 167, 69, .5) +} + +.btn-outline-success.disabled, +.btn-outline-success:disabled { + color: #28a745; + background-color: transparent +} + +.btn-outline-success.active, +.btn-outline-success:active, +.show>.btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745 +} + +.btn-outline-info { + color: #17a2b8; + background-color: transparent; + background-image: none; + border-color: #17a2b8 +} + +.btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-outline-info.focus, +.btn-outline-info:focus { + box-shadow: 0 0 0 3px rgba(23, 162, 184, .5) +} + +.btn-outline-info.disabled, +.btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent +} + +.btn-outline-info.active, +.btn-outline-info:active, +.show>.btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8 +} + +.btn-outline-warning { + color: #ffc107; + background-color: transparent; + background-image: none; + border-color: #ffc107 +} + +.btn-outline-warning:hover { + color: #fff; + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-outline-warning.focus, +.btn-outline-warning:focus { + box-shadow: 0 0 0 3px rgba(255, 193, 7, .5) +} + +.btn-outline-warning.disabled, +.btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent +} + +.btn-outline-warning.active, +.btn-outline-warning:active, +.show>.btn-outline-warning.dropdown-toggle { + color: #fff; + background-color: #ffc107; + border-color: #ffc107 +} + +.btn-outline-danger { + color: #dc3545; + background-color: transparent; + background-image: none; + border-color: #dc3545 +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-outline-danger.focus, +.btn-outline-danger:focus { + box-shadow: 0 0 0 3px rgba(220, 53, 69, .5) +} + +.btn-outline-danger.disabled, +.btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent +} + +.btn-outline-danger.active, +.btn-outline-danger:active, +.show>.btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545 +} + +.btn-outline-light { + color: #f8f9fa; + background-color: transparent; + background-image: none; + border-color: #f8f9fa +} + +.btn-outline-light:hover { + color: #fff; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light.focus, +.btn-outline-light:focus { + box-shadow: 0 0 0 3px rgba(248, 249, 250, .5) +} + +.btn-outline-light.disabled, +.btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent +} + +.btn-outline-light.active, +.btn-outline-light:active, +.show>.btn-outline-light.dropdown-toggle { + color: #fff; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-dark { + color: #343a40; + background-color: transparent; + background-image: none; + border-color: #343a40 +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-outline-dark.focus, +.btn-outline-dark:focus { + box-shadow: 0 0 0 3px rgba(52, 58, 64, .5) +} + +.btn-outline-dark.disabled, +.btn-outline-dark:disabled { + color: #343a40; + background-color: transparent +} + +.btn-outline-dark.active, +.btn-outline-dark:active, +.show>.btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-link { + font-weight: 400; + color: #007bff; + border-radius: 0 +} + +.btn-link, +.btn-link.active, +.btn-link:active, +.btn-link:disabled { + background-color: transparent +} + +.btn-link, +.btn-link:active, +.btn-link:focus { + border-color: transparent; + box-shadow: none +} + +.btn-link:hover { + border-color: transparent +} + +.btn-link:focus, +.btn-link:hover { + color: #0056b3; + text-decoration: underline; + background-color: transparent +} + +.btn-link:disabled { + color: #868e96 +} + +.btn-link:disabled:focus, +.btn-link:disabled:hover { + text-decoration: none +} + +.btn-group-lg>.btn, +.btn-lg { + padding: .5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: .3rem +} + +.btn-group-sm>.btn, +.btn-sm { + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5; + border-radius: .2rem +} + +.btn-block { + display: block; + width: 100% +} + +.btn-block+.btn-block { + margin-top: .5rem +} + +input[type=button].btn-block, +input[type=reset].btn-block, +input[type=submit].btn-block { + width: 100% +} + +.fade { + opacity: 0; + transition: opacity .15s linear +} + +.fade.show { + opacity: 1 +} + +.collapse { + display: none +} + +.collapse.show { + display: block +} + +tr.collapse.show { + display: table-row +} + +tbody.collapse.show { + display: table-row-group +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height .35s ease +} + +.dropdown, +.dropup { + position: relative +} + +.dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: .255em; + vertical-align: .255em; + content: ""; + border-top: .3em solid; + border-right: .3em solid transparent; + border-left: .3em solid transparent +} + +.dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropup .dropdown-menu { + margin-top: 0; + margin-bottom: .125rem +} + +.dropup .dropdown-toggle::after { + border-top: 0; + border-bottom: .3em solid +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: .5rem 0; + margin: .125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: .25rem +} + +.dropdown-divider { + height: 0; + margin: .5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef +} + +.dropdown-item { + display: block; + width: 100%; + padding: .25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background: 0 0; + border: 0 +} + +.dropdown-item:focus, +.dropdown-item:hover { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa +} + +.dropdown-item.active, +.dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #007bff +} + +.dropdown-item.disabled, +.dropdown-item:disabled { + color: #868e96; + background-color: transparent +} + +.show>a { + outline: 0 +} + +.dropdown-menu.show { + display: block +} + +.dropdown-header { + display: block; + padding: .5rem 1.5rem; + margin-bottom: 0; + font-size: .875rem; + color: #868e96; + white-space: nowrap +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle +} + +.btn-group-vertical>.btn, +.btn-group>.btn { + position: relative; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin-bottom: 0 +} + +.btn-group-vertical>.btn:hover, +.btn-group>.btn:hover { + z-index: 2 +} + +.btn-group-vertical>.btn.active, +.btn-group-vertical>.btn:active, +.btn-group-vertical>.btn:focus, +.btn-group>.btn.active, +.btn-group>.btn:active, +.btn-group>.btn:focus { + z-index: 2 +} + +.btn-group .btn+.btn, +.btn-group .btn+.btn-group, +.btn-group .btn-group+.btn, +.btn-group .btn-group+.btn-group, +.btn-group-vertical .btn+.btn, +.btn-group-vertical .btn+.btn-group, +.btn-group-vertical .btn-group+.btn, +.btn-group-vertical .btn-group+.btn-group { + margin-left: -1px +} + +.btn-toolbar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: start; + justify-content: flex-start +} + +.btn-toolbar .input-group { + width: auto +} + +.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0 +} + +.btn-group>.btn:first-child { + margin-left: 0 +} + +.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.btn-group>.btn:last-child:not(:first-child), +.btn-group>.dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group>.btn-group { + float: left +} + +.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn { + border-radius: 0 +} + +.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child, +.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.btn+.dropdown-toggle-split { + padding-right: .5625rem; + padding-left: .5625rem +} + +.btn+.dropdown-toggle-split::after { + margin-left: 0 +} + +.btn-group-sm>.btn+.dropdown-toggle-split, +.btn-sm+.dropdown-toggle-split { + padding-right: .375rem; + padding-left: .375rem +} + +.btn-group-lg>.btn+.dropdown-toggle-split, +.btn-lg+.dropdown-toggle-split { + padding-right: .75rem; + padding-left: .75rem +} + +.btn-group-vertical { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: center; + justify-content: center +} + +.btn-group-vertical .btn, +.btn-group-vertical .btn-group { + width: 100% +} + +.btn-group-vertical>.btn+.btn, +.btn-group-vertical>.btn+.btn-group, +.btn-group-vertical>.btn-group+.btn, +.btn-group-vertical>.btn-group+.btn-group { + margin-top: -1px; + margin-left: 0 +} + +.btn-group-vertical>.btn:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.btn-group-vertical>.btn:first-child:not(:last-child) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group-vertical>.btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn { + border-radius: 0 +} + +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child, +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +[data-toggle=buttons]>.btn input[type=checkbox], +[data-toggle=buttons]>.btn input[type=radio], +[data-toggle=buttons]>.btn-group>.btn input[type=checkbox], +[data-toggle=buttons]>.btn-group>.btn input[type=radio] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none +} + +.input-group { + position: relative; + display: -ms-flexbox; + display: flex; + width: 100% +} + +.input-group .form-control { + position: relative; + z-index: 2; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0 +} + +.input-group .form-control:active, +.input-group .form-control:focus, +.input-group .form-control:hover { + z-index: 3 +} + +.input-group .form-control, +.input-group-addon, +.input-group-btn { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center +} + +.input-group .form-control:not(:first-child):not(:last-child), +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.input-group-addon, +.input-group-btn { + white-space: nowrap; + vertical-align: middle +} + +.input-group-addon { + padding: .5rem .75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.25; + color: #495057; + text-align: center; + background-color: #e9ecef; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: .25rem +} + +.input-group-addon.form-control-sm, +.input-group-sm>.input-group-addon, +.input-group-sm>.input-group-btn>.input-group-addon.btn { + padding: .25rem .5rem; + font-size: .875rem; + border-radius: .2rem +} + +.input-group-addon.form-control-lg, +.input-group-lg>.input-group-addon, +.input-group-lg>.input-group-btn>.input-group-addon.btn { + padding: .5rem 1rem; + font-size: 1.25rem; + border-radius: .3rem +} + +.input-group-addon input[type=checkbox], +.input-group-addon input[type=radio] { + margin-top: 0 +} + +.input-group .form-control:not(:last-child), +.input-group-addon:not(:last-child), +.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn, +.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:not(:last-child)>.btn, +.input-group-btn:not(:last-child)>.btn-group>.btn, +.input-group-btn:not(:last-child)>.dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group-addon:not(:last-child) { + border-right: 0 +} + +.input-group .form-control:not(:first-child), +.input-group-addon:not(:first-child), +.input-group-btn:not(:first-child)>.btn, +.input-group-btn:not(:first-child)>.btn-group>.btn, +.input-group-btn:not(:first-child)>.dropdown-toggle, +.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn, +.input-group-btn:not(:last-child)>.btn:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.form-control+.input-group-addon:not(:first-child) { + border-left: 0 +} + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap +} + +.input-group-btn>.btn { + position: relative +} + +.input-group-btn>.btn+.btn { + margin-left: -1px +} + +.input-group-btn>.btn:active, +.input-group-btn>.btn:focus, +.input-group-btn>.btn:hover { + z-index: 3 +} + +.input-group-btn:not(:last-child)>.btn, +.input-group-btn:not(:last-child)>.btn-group { + margin-right: -1px +} + +.input-group-btn:not(:first-child)>.btn, +.input-group-btn:not(:first-child)>.btn-group { + z-index: 2; + margin-left: -1px +} + +.input-group-btn:not(:first-child)>.btn-group:active, +.input-group-btn:not(:first-child)>.btn-group:focus, +.input-group-btn:not(:first-child)>.btn-group:hover, +.input-group-btn:not(:first-child)>.btn:active, +.input-group-btn:not(:first-child)>.btn:focus, +.input-group-btn:not(:first-child)>.btn:hover { + z-index: 3 +} + +.custom-control { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + min-height: 1.5rem; + padding-left: 1.5rem; + margin-right: 1rem +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0 +} + +.custom-control-input:checked~.custom-control-indicator { + color: #fff; + background-color: #007bff +} + +.custom-control-input:focus~.custom-control-indicator { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #007bff +} + +.custom-control-input:active~.custom-control-indicator { + color: #fff; + background-color: #b3d7ff +} + +.custom-control-input:disabled~.custom-control-indicator { + background-color: #e9ecef +} + +.custom-control-input:disabled~.custom-control-description { + color: #868e96 +} + +.custom-control-indicator { + position: absolute; + top: .25rem; + left: 0; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #ddd; + background-repeat: no-repeat; + background-position: center center; + background-size: 50% 50% +} + +.custom-checkbox .custom-control-indicator { + border-radius: .25rem +} + +.custom-checkbox .custom-control-input:checked~.custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") +} + +.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator { + background-color: #007bff; + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E") +} + +.custom-radio .custom-control-indicator { + border-radius: 50% +} + +.custom-radio .custom-control-input:checked~.custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E") +} + +.custom-controls-stacked { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column +} + +.custom-controls-stacked .custom-control { + margin-bottom: .25rem +} + +.custom-controls-stacked .custom-control+.custom-control { + margin-left: 0 +} + +.custom-select { + display: inline-block; + max-width: 100%; + height: calc(2.25rem + 2px); + padding: .375rem 1.75rem .375rem .75rem; + line-height: 1.25; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center; + background-size: 8px 10px; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: .25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.custom-select:focus { + border-color: #80bdff; + outline: 0 +} + +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff +} + +.custom-select:disabled { + color: #868e96; + background-color: #e9ecef +} + +.custom-select::-ms-expand { + opacity: 0 +} + +.custom-select-sm { + height: calc(1.8125rem + 2px); + padding-top: .375rem; + padding-bottom: .375rem; + font-size: 75% +} + +.custom-file { + position: relative; + display: inline-block; + max-width: 100%; + height: 2.5rem; + margin-bottom: 0 +} + +.custom-file-input { + min-width: 14rem; + max-width: 100%; + height: 2.5rem; + margin: 0; + opacity: 0 +} + +.custom-file-control { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 5; + height: 2.5rem; + padding: .5rem 1rem; + line-height: 1.5; + color: #495057; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: .25rem +} + +.custom-file-control:lang(en):empty::after { + content: "Choose file..." +} + +.custom-file-control::before { + position: absolute; + top: -1px; + right: -1px; + bottom: -1px; + z-index: 6; + display: block; + height: 2.5rem; + padding: .5rem 1rem; + line-height: 1.5; + color: #495057; + background-color: #e9ecef; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 0 .25rem .25rem 0 +} + +.custom-file-control:lang(en)::before { + content: "Browse" +} + +.nav { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.nav-link { + display: block; + padding: .5rem 1rem +} + +.nav-link:focus, +.nav-link:hover { + text-decoration: none +} + +.nav-link.disabled { + color: #868e96 +} + +.nav-tabs { + border-bottom: 1px solid #ddd +} + +.nav-tabs .nav-item { + margin-bottom: -1px +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: .25rem; + border-top-right-radius: .25rem +} + +.nav-tabs .nav-link:focus, +.nav-tabs .nav-link:hover { + border-color: #e9ecef #e9ecef #ddd +} + +.nav-tabs .nav-link.disabled { + color: #868e96; + background-color: transparent; + border-color: transparent +} + +.nav-tabs .nav-item.show .nav-link, +.nav-tabs .nav-link.active { + color: #495057; + background-color: #fff; + border-color: #ddd #ddd #fff +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.nav-pills .nav-link { + border-radius: .25rem +} + +.nav-pills .nav-link.active, +.show>.nav-pills .nav-link { + color: #fff; + background-color: #007bff +} + +.nav-fill .nav-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center +} + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center +} + +.tab-content>.tab-pane { + display: none +} + +.tab-content>.active { + display: block +} + +.navbar { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: .5rem 1rem +} + +.navbar>.container, +.navbar>.container-fluid { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between +} + +.navbar-brand { + display: inline-block; + padding-top: .3125rem; + padding-bottom: .3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap +} + +.navbar-brand:focus, +.navbar-brand:hover { + text-decoration: none +} + +.navbar-nav { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0 +} + +.navbar-nav .dropdown-menu { + position: static; + float: none +} + +.navbar-text { + display: inline-block; + padding-top: .5rem; + padding-bottom: .5rem +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -ms-flex-align: center; + align-items: center +} + +.navbar-toggler { + padding: .25rem .75rem; + font-size: 1.25rem; + line-height: 1; + background: 0 0; + border: 1px solid transparent; + border-radius: .25rem +} + +.navbar-toggler:focus, +.navbar-toggler:hover { + text-decoration: none +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100% +} + +@media (max-width:575px) { + .navbar-expand-sm>.container, + .navbar-expand-sm>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:576px) { + .navbar-expand-sm { + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-sm .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-sm .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-sm>.container, + .navbar-expand-sm>.container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-sm .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important + } + .navbar-expand-sm .navbar-toggler { + display: none + } +} + +@media (max-width:767px) { + .navbar-expand-md>.container, + .navbar-expand-md>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:768px) { + .navbar-expand-md { + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-md .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-md .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-md>.container, + .navbar-expand-md>.container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-md .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important + } + .navbar-expand-md .navbar-toggler { + display: none + } +} + +@media (max-width:991px) { + .navbar-expand-lg>.container, + .navbar-expand-lg>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:992px) { + .navbar-expand-lg { + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-lg .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-lg .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-lg>.container, + .navbar-expand-lg>.container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-lg .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important + } + .navbar-expand-lg .navbar-toggler { + display: none + } +} + +@media (max-width:1199px) { + .navbar-expand-xl>.container, + .navbar-expand-xl>.container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width:1200px) { + .navbar-expand-xl { + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-pack: start; + justify-content: flex-start + } + .navbar-expand-xl .navbar-nav { + -ms-flex-direction: row; + flex-direction: row + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute + } + .navbar-expand-xl .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem + } + .navbar-expand-xl>.container, + .navbar-expand-xl>.container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + .navbar-expand-xl .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important + } + .navbar-expand-xl .navbar-toggler { + display: none + } +} + +.navbar-expand { + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -ms-flex-pack: start; + justify-content: flex-start +} + +.navbar-expand>.container, +.navbar-expand>.container-fluid { + padding-right: 0; + padding-left: 0 +} + +.navbar-expand .navbar-nav { + -ms-flex-direction: row; + flex-direction: row +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute +} + +.navbar-expand .navbar-nav .dropdown-menu-right { + right: 0; + left: auto +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem +} + +.navbar-expand>.container, +.navbar-expand>.container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap +} + +.navbar-expand .navbar-collapse { + display: -ms-flexbox!important; + display: flex!important +} + +.navbar-expand .navbar-toggler { + display: none +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, .9) +} + +.navbar-light .navbar-brand:focus, +.navbar-light .navbar-brand:hover { + color: rgba(0, 0, 0, .9) +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, .5) +} + +.navbar-light .navbar-nav .nav-link:focus, +.navbar-light .navbar-nav .nav-link:hover { + color: rgba(0, 0, 0, .7) +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, .3) +} + +.navbar-light .navbar-nav .active>.nav-link, +.navbar-light .navbar-nav .nav-link.active, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .show>.nav-link { + color: rgba(0, 0, 0, .9) +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, .5); + border-color: rgba(0, 0, 0, .1) +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, .5) +} + +.navbar-dark .navbar-brand { + color: #fff +} + +.navbar-dark .navbar-brand:focus, +.navbar-dark .navbar-brand:hover { + color: #fff +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, .5) +} + +.navbar-dark .navbar-nav .nav-link:focus, +.navbar-dark .navbar-nav .nav-link:hover { + color: rgba(255, 255, 255, .75) +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, .25) +} + +.navbar-dark .navbar-nav .active>.nav-link, +.navbar-dark .navbar-nav .nav-link.active, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .show>.nav-link { + color: #fff +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, .5); + border-color: rgba(255, 255, 255, .1) +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, .5) +} + +.card { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, .125); + border-radius: .25rem +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem +} + +.card-title { + margin-bottom: .75rem +} + +.card-subtitle { + margin-top: -.375rem; + margin-bottom: 0 +} + +.card-text:last-child { + margin-bottom: 0 +} + +.card-link:hover { + text-decoration: none +} + +.card-link+.card-link { + margin-left: 1.25rem +} + +.card>.list-group:first-child .list-group-item:first-child { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem +} + +.card>.list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem +} + +.card-header { + padding: .75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, .03); + border-bottom: 1px solid rgba(0, 0, 0, .125) +} + +.card-header:first-child { + border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0 +} + +.card-footer { + padding: .75rem 1.25rem; + background-color: rgba(0, 0, 0, .03); + border-top: 1px solid rgba(0, 0, 0, .125) +} + +.card-footer:last-child { + border-radius: 0 0 calc(.25rem - 1px) calc(.25rem - 1px) +} + +.card-header-tabs { + margin-right: -.625rem; + margin-bottom: -.75rem; + margin-left: -.625rem; + border-bottom: 0 +} + +.card-header-pills { + margin-right: -.625rem; + margin-left: -.625rem +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem +} + +.card-img { + width: 100%; + border-radius: calc(.25rem - 1px) +} + +.card-img-top { + width: 100%; + border-top-left-radius: calc(.25rem - 1px); + border-top-right-radius: calc(.25rem - 1px) +} + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(.25rem - 1px); + border-bottom-left-radius: calc(.25rem - 1px) +} + +@media (min-width:576px) { + .card-deck { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px + } + .card-deck .card { + display: -ms-flexbox; + display: flex; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -ms-flex-direction: column; + flex-direction: column; + margin-right: 15px; + margin-left: 15px + } +} + +@media (min-width:576px) { + .card-group { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap + } + .card-group .card { + -ms-flex: 1 0 0%; + flex: 1 0 0% + } + .card-group .card+.card { + margin-left: 0; + border-left: 0 + } + .card-group .card:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + .card-group .card:first-child .card-img-top { + border-top-right-radius: 0 + } + .card-group .card:first-child .card-img-bottom { + border-bottom-right-radius: 0 + } + .card-group .card:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 + } + .card-group .card:last-child .card-img-top { + border-top-left-radius: 0 + } + .card-group .card:last-child .card-img-bottom { + border-bottom-left-radius: 0 + } + .card-group .card:not(:first-child):not(:last-child) { + border-radius: 0 + } + .card-group .card:not(:first-child):not(:last-child) .card-img-bottom, + .card-group .card:not(:first-child):not(:last-child) .card-img-top { + border-radius: 0 + } +} + +.card-columns .card { + margin-bottom: .75rem +} + +@media (min-width:576px) { + .card-columns { + -webkit-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + column-gap: 1.25rem + } + .card-columns .card { + display: inline-block; + width: 100% + } +} + +.breadcrumb { + padding: .75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: .25rem +} + +.breadcrumb::after { + display: block; + clear: both; + content: "" +} + +.breadcrumb-item { + float: left +} + +.breadcrumb-item+.breadcrumb-item::before { + display: inline-block; + padding-right: .5rem; + padding-left: .5rem; + color: #868e96; + content: "/" +} + +.breadcrumb-item+.breadcrumb-item:hover::before { + text-decoration: underline +} + +.breadcrumb-item+.breadcrumb-item:hover::before { + text-decoration: none +} + +.breadcrumb-item.active { + color: #868e96 +} + +.pagination { + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: .25rem +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem +} + +.page-item:last-child .page-link { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem +} + +.page-item.active .page-link { + z-index: 2; + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.page-item.disabled .page-link { + color: #868e96; + pointer-events: none; + background-color: #fff; + border-color: #ddd +} + +.page-link { + position: relative; + display: block; + padding: .5rem .75rem; + margin-left: -1px; + line-height: 1.25; + color: #007bff; + background-color: #fff; + border: 1px solid #ddd +} + +.page-link:focus, +.page-link:hover { + color: #0056b3; + text-decoration: none; + background-color: #e9ecef; + border-color: #ddd +} + +.pagination-lg .page-link { + padding: .75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5 +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: .3rem; + border-bottom-left-radius: .3rem +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: .3rem; + border-bottom-right-radius: .3rem +} + +.pagination-sm .page-link { + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5 +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: .2rem; + border-bottom-left-radius: .2rem +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: .2rem; + border-bottom-right-radius: .2rem +} + +.badge { + display: inline-block; + padding: .25em .4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25rem +} + +.badge:empty { + display: none +} + +.btn .badge { + position: relative; + top: -1px +} + +.badge-pill { + padding-right: .6em; + padding-left: .6em; + border-radius: 10rem +} + +.badge-primary { + color: #fff; + background-color: #007bff +} + +.badge-primary[href]:focus, +.badge-primary[href]:hover { + color: #fff; + text-decoration: none; + background-color: #0062cc +} + +.badge-secondary { + color: #fff; + background-color: #868e96 +} + +.badge-secondary[href]:focus, +.badge-secondary[href]:hover { + color: #fff; + text-decoration: none; + background-color: #6c757d +} + +.badge-success { + color: #fff; + background-color: #28a745 +} + +.badge-success[href]:focus, +.badge-success[href]:hover { + color: #fff; + text-decoration: none; + background-color: #1e7e34 +} + +.badge-info { + color: #fff; + background-color: #17a2b8 +} + +.badge-info[href]:focus, +.badge-info[href]:hover { + color: #fff; + text-decoration: none; + background-color: #117a8b +} + +.badge-warning { + color: #111; + background-color: #ffc107 +} + +.badge-warning[href]:focus, +.badge-warning[href]:hover { + color: #111; + text-decoration: none; + background-color: #d39e00 +} + +.badge-danger { + color: #fff; + background-color: #dc3545 +} + +.badge-danger[href]:focus, +.badge-danger[href]:hover { + color: #fff; + text-decoration: none; + background-color: #bd2130 +} + +.badge-light { + color: #111; + background-color: #f8f9fa +} + +.badge-light[href]:focus, +.badge-light[href]:hover { + color: #111; + text-decoration: none; + background-color: #dae0e5 +} + +.badge-dark { + color: #fff; + background-color: #343a40 +} + +.badge-dark[href]:focus, +.badge-dark[href]:hover { + color: #fff; + text-decoration: none; + background-color: #1d2124 +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: .3rem +} + +@media (min-width:576px) { + .jumbotron { + padding: 4rem 2rem + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0 +} + +.alert { + padding: .75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: .25rem +} + +.alert-heading { + color: inherit +} + +.alert-link { + font-weight: 700 +} + +.alert-dismissible .close { + position: relative; + top: -.75rem; + right: -1.25rem; + padding: .75rem 1.25rem; + color: inherit +} + +.alert-primary { + color: #004085; + background-color: #cce5ff; + border-color: #b8daff +} + +.alert-primary hr { + border-top-color: #9fcdff +} + +.alert-primary .alert-link { + color: #002752 +} + +.alert-secondary { + color: #464a4e; + background-color: #e7e8ea; + border-color: #dddfe2 +} + +.alert-secondary hr { + border-top-color: #cfd2d6 +} + +.alert-secondary .alert-link { + color: #2e3133 +} + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb +} + +.alert-success hr { + border-top-color: #b1dfbb +} + +.alert-success .alert-link { + color: #0b2e13 +} + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb +} + +.alert-info hr { + border-top-color: #abdde5 +} + +.alert-info .alert-link { + color: #062c33 +} + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba +} + +.alert-warning hr { + border-top-color: #ffe8a1 +} + +.alert-warning .alert-link { + color: #533f03 +} + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb +} + +.alert-danger hr { + border-top-color: #f1b0b7 +} + +.alert-danger .alert-link { + color: #491217 +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe +} + +.alert-light hr { + border-top-color: #ececf6 +} + +.alert-light .alert-link { + color: #686868 +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca +} + +.alert-dark hr { + border-top-color: #b9bbbe +} + +.alert-dark .alert-link { + color: #040505 +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0 + } + to { + background-position: 0 0 + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0 + } + to { + background-position: 0 0 + } +} + +.progress { + display: -ms-flexbox; + display: flex; + overflow: hidden; + font-size: .75rem; + line-height: 1rem; + text-align: center; + background-color: #e9ecef; + border-radius: .25rem +} + +.progress-bar { + height: 1rem; + line-height: 1rem; + color: #fff; + background-color: #007bff; + transition: width .6s ease +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite +} + +.media { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start +} + +.media-body { + -ms-flex: 1; + flex: 1 +} + +.list-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0 +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit +} + +.list-group-item-action:focus, +.list-group-item-action:hover { + color: #495057; + text-decoration: none; + background-color: #f8f9fa +} + +.list-group-item-action:active { + color: #212529; + background-color: #e9ecef +} + +.list-group-item { + position: relative; + display: block; + padding: .75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, .125) +} + +.list-group-item:first-child { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem +} + +.list-group-item:focus, +.list-group-item:hover { + text-decoration: none +} + +.list-group-item.disabled, +.list-group-item:disabled { + color: #868e96; + background-color: #fff +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #007bff; + border-color: #007bff +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0 +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0 +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom: 0 +} + +.list-group-item-primary { + color: #004085; + background-color: #b8daff +} + +a.list-group-item-primary, +button.list-group-item-primary { + color: #004085 +} + +a.list-group-item-primary:focus, +a.list-group-item-primary:hover, +button.list-group-item-primary:focus, +button.list-group-item-primary:hover { + color: #004085; + background-color: #9fcdff +} + +a.list-group-item-primary.active, +button.list-group-item-primary.active { + color: #fff; + background-color: #004085; + border-color: #004085 +} + +.list-group-item-secondary { + color: #464a4e; + background-color: #dddfe2 +} + +a.list-group-item-secondary, +button.list-group-item-secondary { + color: #464a4e +} + +a.list-group-item-secondary:focus, +a.list-group-item-secondary:hover, +button.list-group-item-secondary:focus, +button.list-group-item-secondary:hover { + color: #464a4e; + background-color: #cfd2d6 +} + +a.list-group-item-secondary.active, +button.list-group-item-secondary.active { + color: #fff; + background-color: #464a4e; + border-color: #464a4e +} + +.list-group-item-success { + color: #155724; + background-color: #c3e6cb +} + +a.list-group-item-success, +button.list-group-item-success { + color: #155724 +} + +a.list-group-item-success:focus, +a.list-group-item-success:hover, +button.list-group-item-success:focus, +button.list-group-item-success:hover { + color: #155724; + background-color: #b1dfbb +} + +a.list-group-item-success.active, +button.list-group-item-success.active { + color: #fff; + background-color: #155724; + border-color: #155724 +} + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb +} + +a.list-group-item-info, +button.list-group-item-info { + color: #0c5460 +} + +a.list-group-item-info:focus, +a.list-group-item-info:hover, +button.list-group-item-info:focus, +button.list-group-item-info:hover { + color: #0c5460; + background-color: #abdde5 +} + +a.list-group-item-info.active, +button.list-group-item-info.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460 +} + +.list-group-item-warning { + color: #856404; + background-color: #ffeeba +} + +a.list-group-item-warning, +button.list-group-item-warning { + color: #856404 +} + +a.list-group-item-warning:focus, +a.list-group-item-warning:hover, +button.list-group-item-warning:focus, +button.list-group-item-warning:hover { + color: #856404; + background-color: #ffe8a1 +} + +a.list-group-item-warning.active, +button.list-group-item-warning.active { + color: #fff; + background-color: #856404; + border-color: #856404 +} + +.list-group-item-danger { + color: #721c24; + background-color: #f5c6cb +} + +a.list-group-item-danger, +button.list-group-item-danger { + color: #721c24 +} + +a.list-group-item-danger:focus, +a.list-group-item-danger:hover, +button.list-group-item-danger:focus, +button.list-group-item-danger:hover { + color: #721c24; + background-color: #f1b0b7 +} + +a.list-group-item-danger.active, +button.list-group-item-danger.active { + color: #fff; + background-color: #721c24; + border-color: #721c24 +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe +} + +a.list-group-item-light, +button.list-group-item-light { + color: #818182 +} + +a.list-group-item-light:focus, +a.list-group-item-light:hover, +button.list-group-item-light:focus, +button.list-group-item-light:hover { + color: #818182; + background-color: #ececf6 +} + +a.list-group-item-light.active, +button.list-group-item-light.active { + color: #fff; + background-color: #818182; + border-color: #818182 +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca +} + +a.list-group-item-dark, +button.list-group-item-dark { + color: #1b1e21 +} + +a.list-group-item-dark:focus, +a.list-group-item-dark:hover, +button.list-group-item-dark:focus, +button.list-group-item-dark:hover { + color: #1b1e21; + background-color: #b9bbbe +} + +a.list-group-item-dark.active, +button.list-group-item-dark.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21 +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5 +} + +.close:focus, +.close:hover { + color: #000; + text-decoration: none; + opacity: .75 +} + +button.close { + padding: 0; + background: 0 0; + border: 0; + -webkit-appearance: none +} + +.modal-open { + overflow: hidden +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + outline: 0 +} + +.modal.fade .modal-dialog { + transition: -webkit-transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out; + -webkit-transform: translate(0, -25%); + transform: translate(0, -25%) +} + +.modal.show .modal-dialog { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto +} + +.modal-dialog { + position: relative; + width: auto; + margin: 10px +} + +.modal-content { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: .3rem; + outline: 0 +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000 +} + +.modal-backdrop.fade { + opacity: 0 +} + +.modal-backdrop.show { + opacity: .5 +} + +.modal-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 15px; + border-bottom: 1px solid #e9ecef +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5 +} + +.modal-body { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 15px +} + +.modal-footer { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 15px; + border-top: 1px solid #e9ecef +} + +.modal-footer>:not(:first-child) { + margin-left: .25rem +} + +.modal-footer>:not(:last-child) { + margin-right: .25rem +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll +} + +@media (min-width:576px) { + .modal-dialog { + max-width: 500px; + margin: 30px auto + } + .modal-sm { + max-width: 300px + } +} + +@media (min-width:992px) { + .modal-lg { + max-width: 800px + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: .875rem; + word-wrap: break-word; + opacity: 0 +} + +.tooltip.show { + opacity: .9 +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 5px; + height: 5px +} + +.tooltip.bs-tooltip-auto[x-placement^=top], +.tooltip.bs-tooltip-top { + padding: 5px 0 +} + +.tooltip.bs-tooltip-auto[x-placement^=top] .arrow, +.tooltip.bs-tooltip-top .arrow { + bottom: 0 +} + +.tooltip.bs-tooltip-auto[x-placement^=top] .arrow::before, +.tooltip.bs-tooltip-top .arrow::before { + margin-left: -3px; + content: ""; + border-width: 5px 5px 0; + border-top-color: #000 +} + +.tooltip.bs-tooltip-auto[x-placement^=right], +.tooltip.bs-tooltip-right { + padding: 0 5px +} + +.tooltip.bs-tooltip-auto[x-placement^=right] .arrow, +.tooltip.bs-tooltip-right .arrow { + left: 0 +} + +.tooltip.bs-tooltip-auto[x-placement^=right] .arrow::before, +.tooltip.bs-tooltip-right .arrow::before { + margin-top: -3px; + content: ""; + border-width: 5px 5px 5px 0; + border-right-color: #000 +} + +.tooltip.bs-tooltip-auto[x-placement^=bottom], +.tooltip.bs-tooltip-bottom { + padding: 5px 0 +} + +.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow, +.tooltip.bs-tooltip-bottom .arrow { + top: 0 +} + +.tooltip.bs-tooltip-auto[x-placement^=bottom] .arrow::before, +.tooltip.bs-tooltip-bottom .arrow::before { + margin-left: -3px; + content: ""; + border-width: 0 5px 5px; + border-bottom-color: #000 +} + +.tooltip.bs-tooltip-auto[x-placement^=left], +.tooltip.bs-tooltip-left { + padding: 0 5px +} + +.tooltip.bs-tooltip-auto[x-placement^=left] .arrow, +.tooltip.bs-tooltip-left .arrow { + right: 0 +} + +.tooltip.bs-tooltip-auto[x-placement^=left] .arrow::before, +.tooltip.bs-tooltip-left .arrow::before { + right: 0; + margin-top: -3px; + content: ""; + border-width: 5px 0 5px 5px; + border-left-color: #000 +} + +.tooltip .arrow::before { + position: absolute; + border-color: transparent; + border-style: solid +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: .25rem +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + padding: 1px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: .875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: .3rem +} + +.popover .arrow { + position: absolute; + display: block; + width: 10px; + height: 5px +} + +.popover .arrow::after, +.popover .arrow::before { + position: absolute; + display: block; + border-color: transparent; + border-style: solid +} + +.popover .arrow::before { + content: ""; + border-width: 11px +} + +.popover .arrow::after { + content: ""; + border-width: 11px +} + +.popover.bs-popover-auto[x-placement^=top], +.popover.bs-popover-top { + margin-bottom: 10px +} + +.popover.bs-popover-auto[x-placement^=top] .arrow, +.popover.bs-popover-top .arrow { + bottom: 0 +} + +.popover.bs-popover-auto[x-placement^=top] .arrow::after, +.popover.bs-popover-auto[x-placement^=top] .arrow::before, +.popover.bs-popover-top .arrow::after, +.popover.bs-popover-top .arrow::before { + border-bottom-width: 0 +} + +.popover.bs-popover-auto[x-placement^=top] .arrow::before, +.popover.bs-popover-top .arrow::before { + bottom: -11px; + margin-left: -6px; + border-top-color: rgba(0, 0, 0, .25) +} + +.popover.bs-popover-auto[x-placement^=top] .arrow::after, +.popover.bs-popover-top .arrow::after { + bottom: -10px; + margin-left: -6px; + border-top-color: #fff +} + +.popover.bs-popover-auto[x-placement^=right], +.popover.bs-popover-right { + margin-left: 10px +} + +.popover.bs-popover-auto[x-placement^=right] .arrow, +.popover.bs-popover-right .arrow { + left: 0 +} + +.popover.bs-popover-auto[x-placement^=right] .arrow::after, +.popover.bs-popover-auto[x-placement^=right] .arrow::before, +.popover.bs-popover-right .arrow::after, +.popover.bs-popover-right .arrow::before { + margin-top: -8px; + border-left-width: 0 +} + +.popover.bs-popover-auto[x-placement^=right] .arrow::before, +.popover.bs-popover-right .arrow::before { + left: -11px; + border-right-color: rgba(0, 0, 0, .25) +} + +.popover.bs-popover-auto[x-placement^=right] .arrow::after, +.popover.bs-popover-right .arrow::after { + left: -10px; + border-right-color: #fff +} + +.popover.bs-popover-auto[x-placement^=bottom], +.popover.bs-popover-bottom { + margin-top: 10px +} + +.popover.bs-popover-auto[x-placement^=bottom] .arrow, +.popover.bs-popover-bottom .arrow { + top: 0 +} + +.popover.bs-popover-auto[x-placement^=bottom] .arrow::after, +.popover.bs-popover-auto[x-placement^=bottom] .arrow::before, +.popover.bs-popover-bottom .arrow::after, +.popover.bs-popover-bottom .arrow::before { + margin-left: -7px; + border-top-width: 0 +} + +.popover.bs-popover-auto[x-placement^=bottom] .arrow::before, +.popover.bs-popover-bottom .arrow::before { + top: -11px; + border-bottom-color: rgba(0, 0, 0, .25) +} + +.popover.bs-popover-auto[x-placement^=bottom] .arrow::after, +.popover.bs-popover-bottom .arrow::after { + top: -10px; + border-bottom-color: #fff +} + +.popover.bs-popover-auto[x-placement^=bottom] .popover-header::before, +.popover.bs-popover-bottom .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 20px; + margin-left: -10px; + content: ""; + border-bottom: 1px solid #f7f7f7 +} + +.popover.bs-popover-auto[x-placement^=left], +.popover.bs-popover-left { + margin-right: 10px +} + +.popover.bs-popover-auto[x-placement^=left] .arrow, +.popover.bs-popover-left .arrow { + right: 0 +} + +.popover.bs-popover-auto[x-placement^=left] .arrow::after, +.popover.bs-popover-auto[x-placement^=left] .arrow::before, +.popover.bs-popover-left .arrow::after, +.popover.bs-popover-left .arrow::before { + margin-top: -8px; + border-right-width: 0 +} + +.popover.bs-popover-auto[x-placement^=left] .arrow::before, +.popover.bs-popover-left .arrow::before { + right: -11px; + border-left-color: rgba(0, 0, 0, .25) +} + +.popover.bs-popover-auto[x-placement^=left] .arrow::after, +.popover.bs-popover-left .arrow::after { + right: -10px; + border-left-color: #fff +} + +.popover-header { + padding: 8px 14px; + margin-bottom: 0; + font-size: 1rem; + color: inherit; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(.3rem - 1px); + border-top-right-radius: calc(.3rem - 1px) +} + +.popover-header:empty { + display: none +} + +.popover-body { + padding: 9px 14px; + color: #212529 +} + +.carousel { + position: relative +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden +} + +.carousel-item { + position: relative; + display: none; + -ms-flex-align: center; + align-items: center; + width: 100%; + transition: -webkit-transform .6s ease; + transition: transform .6s ease; + transition: transform .6s ease, -webkit-transform .6s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px +} + +.carousel-item-next, +.carousel-item-prev, +.carousel-item.active { + display: block +} + +.carousel-item-next, +.carousel-item-prev { + position: absolute; + top: 0 +} + +.carousel-item-next.carousel-item-left, +.carousel-item-prev.carousel-item-right { + -webkit-transform: translateX(0); + transform: translateX(0) +} + +@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0) + } +} + +.active.carousel-item-right, +.carousel-item-next { + -webkit-transform: translateX(100%); + transform: translateX(100%) +} + +@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)) { + .active.carousel-item-right, + .carousel-item-next { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) + } +} + +.active.carousel-item-left, +.carousel-item-prev { + -webkit-transform: translateX(-100%); + transform: translateX(-100%) +} + +@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)) { + .active.carousel-item-left, + .carousel-item-prev { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) + } +} + +.carousel-control-next, +.carousel-control-prev { + position: absolute; + top: 0; + bottom: 0; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: .5 +} + +.carousel-control-next:focus, +.carousel-control-next:hover, +.carousel-control-prev:focus, +.carousel-control-prev:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9 +} + +.carousel-control-prev { + left: 0 +} + +.carousel-control-next { + right: 0 +} + +.carousel-control-next-icon, +.carousel-control-prev-icon { + display: inline-block; + width: 20px; + height: 20px; + background: transparent no-repeat center center; + background-size: 100% 100% +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E") +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E") +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 10px; + left: 0; + z-index: 15; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none +} + +.carousel-indicators li { + position: relative; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + background-color: rgba(255, 255, 255, .5) +} + +.carousel-indicators li::before { + position: absolute; + top: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: "" +} + +.carousel-indicators li::after { + position: absolute; + bottom: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: "" +} + +.carousel-indicators .active { + background-color: #fff +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center +} + +.align-baseline { + vertical-align: baseline!important +} + +.align-top { + vertical-align: top!important +} + +.align-middle { + vertical-align: middle!important +} + +.align-bottom { + vertical-align: bottom!important +} + +.align-text-bottom { + vertical-align: text-bottom!important +} + +.align-text-top { + vertical-align: text-top!important +} + +.bg-primary { + background-color: #007bff!important +} + +a.bg-primary:focus, +a.bg-primary:hover { + background-color: #0062cc!important +} + +.bg-secondary { + background-color: #868e96!important +} + +a.bg-secondary:focus, +a.bg-secondary:hover { + background-color: #6c757d!important +} + +.bg-success { + background-color: #28a745!important +} + +a.bg-success:focus, +a.bg-success:hover { + background-color: #1e7e34!important +} + +.bg-info { + background-color: #17a2b8!important +} + +a.bg-info:focus, +a.bg-info:hover { + background-color: #117a8b!important +} + +.bg-warning { + background-color: #ffc107!important +} + +a.bg-warning:focus, +a.bg-warning:hover { + background-color: #d39e00!important +} + +.bg-danger { + background-color: #dc3545!important +} + +a.bg-danger:focus, +a.bg-danger:hover { + background-color: #bd2130!important +} + +.bg-light { + background-color: #f8f9fa!important +} + +a.bg-light:focus, +a.bg-light:hover { + background-color: #dae0e5!important +} + +.bg-dark { + background-color: #343a40!important +} + +a.bg-dark:focus, +a.bg-dark:hover { + background-color: #1d2124!important +} + +.bg-white { + background-color: #fff!important +} + +.bg-transparent { + background-color: transparent!important +} + +.border { + border: 1px solid #e9ecef!important +} + +.border-0 { + border: 0!important +} + +.border-top-0 { + border-top: 0!important +} + +.border-right-0 { + border-right: 0!important +} + +.border-bottom-0 { + border-bottom: 0!important +} + +.border-left-0 { + border-left: 0!important +} + +.border-primary { + border-color: #007bff!important +} + +.border-secondary { + border-color: #868e96!important +} + +.border-success { + border-color: #28a745!important +} + +.border-info { + border-color: #17a2b8!important +} + +.border-warning { + border-color: #ffc107!important +} + +.border-danger { + border-color: #dc3545!important +} + +.border-light { + border-color: #f8f9fa!important +} + +.border-dark { + border-color: #343a40!important +} + +.border-white { + border-color: #fff!important +} + +.rounded { + border-radius: .25rem!important +} + +.rounded-top { + border-top-left-radius: .25rem!important; + border-top-right-radius: .25rem!important +} + +.rounded-right { + border-top-right-radius: .25rem!important; + border-bottom-right-radius: .25rem!important +} + +.rounded-bottom { + border-bottom-right-radius: .25rem!important; + border-bottom-left-radius: .25rem!important +} + +.rounded-left { + border-top-left-radius: .25rem!important; + border-bottom-left-radius: .25rem!important +} + +.rounded-circle { + border-radius: 50% +} + +.rounded-0 { + border-radius: 0 +} + +.clearfix::after { + display: block; + clear: both; + content: "" +} + +.d-none { + display: none!important +} + +.d-inline { + display: inline!important +} + +.d-inline-block { + display: inline-block!important +} + +.d-block { + display: block!important +} + +.d-table { + display: table!important +} + +.d-table-cell { + display: table-cell!important +} + +.d-flex { + display: -ms-flexbox!important; + display: flex!important +} + +.d-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important +} + +@media (min-width:576px) { + .d-sm-none { + display: none!important + } + .d-sm-inline { + display: inline!important + } + .d-sm-inline-block { + display: inline-block!important + } + .d-sm-block { + display: block!important + } + .d-sm-table { + display: table!important + } + .d-sm-table-cell { + display: table-cell!important + } + .d-sm-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-sm-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +@media (min-width:768px) { + .d-md-none { + display: none!important + } + .d-md-inline { + display: inline!important + } + .d-md-inline-block { + display: inline-block!important + } + .d-md-block { + display: block!important + } + .d-md-table { + display: table!important + } + .d-md-table-cell { + display: table-cell!important + } + .d-md-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-md-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +@media (min-width:992px) { + .d-lg-none { + display: none!important + } + .d-lg-inline { + display: inline!important + } + .d-lg-inline-block { + display: inline-block!important + } + .d-lg-block { + display: block!important + } + .d-lg-table { + display: table!important + } + .d-lg-table-cell { + display: table-cell!important + } + .d-lg-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-lg-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +@media (min-width:1200px) { + .d-xl-none { + display: none!important + } + .d-xl-inline { + display: inline!important + } + .d-xl-inline-block { + display: inline-block!important + } + .d-xl-block { + display: block!important + } + .d-xl-table { + display: table!important + } + .d-xl-table-cell { + display: table-cell!important + } + .d-xl-flex { + display: -ms-flexbox!important; + display: flex!important + } + .d-xl-inline-flex { + display: -ms-inline-flexbox!important; + display: inline-flex!important + } +} + +.d-print-block { + display: none!important +} + +@media print { + .d-print-block { + display: block!important + } +} + +.d-print-inline { + display: none!important +} + +@media print { + .d-print-inline { + display: inline!important + } +} + +.d-print-inline-block { + display: none!important +} + +@media print { + .d-print-inline-block { + display: inline-block!important + } +} + +@media print { + .d-print-none { + display: none!important + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden +} + +.embed-responsive::before { + display: block; + content: "" +} + +.embed-responsive .embed-responsive-item, +.embed-responsive embed, +.embed-responsive iframe, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0 +} + +.embed-responsive-21by9::before { + padding-top: 42.857143% +} + +.embed-responsive-16by9::before { + padding-top: 56.25% +} + +.embed-responsive-4by3::before { + padding-top: 75% +} + +.embed-responsive-1by1::before { + padding-top: 100% +} + +.flex-row { + -ms-flex-direction: row!important; + flex-direction: row!important +} + +.flex-column { + -ms-flex-direction: column!important; + flex-direction: column!important +} + +.flex-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important +} + +.flex-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important +} + +.flex-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important +} + +.flex-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important +} + +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important +} + +.justify-content-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important +} + +.justify-content-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important +} + +.justify-content-center { + -ms-flex-pack: center!important; + justify-content: center!important +} + +.justify-content-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important +} + +.justify-content-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important +} + +.align-items-start { + -ms-flex-align: start!important; + align-items: flex-start!important +} + +.align-items-end { + -ms-flex-align: end!important; + align-items: flex-end!important +} + +.align-items-center { + -ms-flex-align: center!important; + align-items: center!important +} + +.align-items-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important +} + +.align-items-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important +} + +.align-content-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important +} + +.align-content-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important +} + +.align-content-center { + -ms-flex-line-pack: center!important; + align-content: center!important +} + +.align-content-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important +} + +.align-content-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important +} + +.align-content-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important +} + +.align-self-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important +} + +.align-self-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important +} + +.align-self-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important +} + +.align-self-center { + -ms-flex-item-align: center!important; + align-self: center!important +} + +.align-self-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important +} + +.align-self-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important +} + +@media (min-width:576px) { + .flex-sm-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-sm-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-sm-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-sm-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-sm-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .justify-content-sm-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-sm-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-sm-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-sm-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-sm-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-sm-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-sm-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-sm-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-sm-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-sm-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-sm-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-sm-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-sm-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-sm-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-sm-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-sm-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-sm-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-sm-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-sm-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-sm-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-sm-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +@media (min-width:768px) { + .flex-md-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-md-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-md-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-md-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-md-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-md-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .justify-content-md-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-md-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-md-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-md-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-md-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-md-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-md-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-md-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-md-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-md-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-md-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-md-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-md-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-md-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-md-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-md-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-md-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-md-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-md-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-md-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-md-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-md-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +@media (min-width:992px) { + .flex-lg-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-lg-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-lg-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-lg-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-lg-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .justify-content-lg-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-lg-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-lg-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-lg-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-lg-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-lg-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-lg-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-lg-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-lg-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-lg-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-lg-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-lg-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-lg-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-lg-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-lg-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-lg-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-lg-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-lg-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-lg-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-lg-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-lg-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +@media (min-width:1200px) { + .flex-xl-row { + -ms-flex-direction: row!important; + flex-direction: row!important + } + .flex-xl-column { + -ms-flex-direction: column!important; + flex-direction: column!important + } + .flex-xl-row-reverse { + -ms-flex-direction: row-reverse!important; + flex-direction: row-reverse!important + } + .flex-xl-column-reverse { + -ms-flex-direction: column-reverse!important; + flex-direction: column-reverse!important + } + .flex-xl-wrap { + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important + } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important + } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse!important; + flex-wrap: wrap-reverse!important + } + .justify-content-xl-start { + -ms-flex-pack: start!important; + justify-content: flex-start!important + } + .justify-content-xl-end { + -ms-flex-pack: end!important; + justify-content: flex-end!important + } + .justify-content-xl-center { + -ms-flex-pack: center!important; + justify-content: center!important + } + .justify-content-xl-between { + -ms-flex-pack: justify!important; + justify-content: space-between!important + } + .justify-content-xl-around { + -ms-flex-pack: distribute!important; + justify-content: space-around!important + } + .align-items-xl-start { + -ms-flex-align: start!important; + align-items: flex-start!important + } + .align-items-xl-end { + -ms-flex-align: end!important; + align-items: flex-end!important + } + .align-items-xl-center { + -ms-flex-align: center!important; + align-items: center!important + } + .align-items-xl-baseline { + -ms-flex-align: baseline!important; + align-items: baseline!important + } + .align-items-xl-stretch { + -ms-flex-align: stretch!important; + align-items: stretch!important + } + .align-content-xl-start { + -ms-flex-line-pack: start!important; + align-content: flex-start!important + } + .align-content-xl-end { + -ms-flex-line-pack: end!important; + align-content: flex-end!important + } + .align-content-xl-center { + -ms-flex-line-pack: center!important; + align-content: center!important + } + .align-content-xl-between { + -ms-flex-line-pack: justify!important; + align-content: space-between!important + } + .align-content-xl-around { + -ms-flex-line-pack: distribute!important; + align-content: space-around!important + } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch!important; + align-content: stretch!important + } + .align-self-xl-auto { + -ms-flex-item-align: auto!important; + align-self: auto!important + } + .align-self-xl-start { + -ms-flex-item-align: start!important; + align-self: flex-start!important + } + .align-self-xl-end { + -ms-flex-item-align: end!important; + align-self: flex-end!important + } + .align-self-xl-center { + -ms-flex-item-align: center!important; + align-self: center!important + } + .align-self-xl-baseline { + -ms-flex-item-align: baseline!important; + align-self: baseline!important + } + .align-self-xl-stretch { + -ms-flex-item-align: stretch!important; + align-self: stretch!important + } +} + +.float-left { + float: left!important +} + +.float-right { + float: right!important +} + +.float-none { + float: none!important +} + +@media (min-width:576px) { + .float-sm-left { + float: left!important + } + .float-sm-right { + float: right!important + } + .float-sm-none { + float: none!important + } +} + +@media (min-width:768px) { + .float-md-left { + float: left!important + } + .float-md-right { + float: right!important + } + .float-md-none { + float: none!important + } +} + +@media (min-width:992px) { + .float-lg-left { + float: left!important + } + .float-lg-right { + float: right!important + } + .float-lg-none { + float: none!important + } +} + +@media (min-width:1200px) { + .float-xl-left { + float: left!important + } + .float-xl-right { + float: right!important + } + .float-xl-none { + float: none!important + } +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030 +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030 +} + +@supports ((position:-webkit-sticky) or (position:sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020 + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + border: 0 +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; + -webkit-clip-path: none; + clip-path: none +} + +.w-25 { + width: 25%!important +} + +.w-50 { + width: 50%!important +} + +.w-75 { + width: 75%!important +} + +.w-100 { + width: 100%!important +} + +.h-25 { + height: 25%!important +} + +.h-50 { + height: 50%!important +} + +.h-75 { + height: 75%!important +} + +.h-100 { + height: 100%!important +} + +.mw-100 { + max-width: 100%!important +} + +.mh-100 { + max-height: 100%!important +} + +.m-0 { + margin: 0!important +} + +.mt-0 { + margin-top: 0!important +} + +.mr-0 { + margin-right: 0!important +} + +.mb-0 { + margin-bottom: 0!important +} + +.ml-0 { + margin-left: 0!important +} + +.mx-0 { + margin-right: 0!important; + margin-left: 0!important +} + +.my-0 { + margin-top: 0!important; + margin-bottom: 0!important +} + +.m-1 { + margin: .25rem!important +} + +.mt-1 { + margin-top: .25rem!important +} + +.mr-1 { + margin-right: .25rem!important +} + +.mb-1 { + margin-bottom: .25rem!important +} + +.ml-1 { + margin-left: .25rem!important +} + +.mx-1 { + margin-right: .25rem!important; + margin-left: .25rem!important +} + +.my-1 { + margin-top: .25rem!important; + margin-bottom: .25rem!important +} + +.m-2 { + margin: .5rem!important +} + +.mt-2 { + margin-top: .5rem!important +} + +.mr-2 { + margin-right: .5rem!important +} + +.mb-2 { + margin-bottom: .5rem!important +} + +.ml-2 { + margin-left: .5rem!important +} + +.mx-2 { + margin-right: .5rem!important; + margin-left: .5rem!important +} + +.my-2 { + margin-top: .5rem!important; + margin-bottom: .5rem!important +} + +.m-3 { + margin: 1rem!important +} + +.mt-3 { + margin-top: 1rem!important +} + +.mr-3 { + margin-right: 1rem!important +} + +.mb-3 { + margin-bottom: 1rem!important +} + +.ml-3 { + margin-left: 1rem!important +} + +.mx-3 { + margin-right: 1rem!important; + margin-left: 1rem!important +} + +.my-3 { + margin-top: 1rem!important; + margin-bottom: 1rem!important +} + +.m-4 { + margin: 1.5rem!important +} + +.mt-4 { + margin-top: 1.5rem!important +} + +.mr-4 { + margin-right: 1.5rem!important +} + +.mb-4 { + margin-bottom: 1.5rem!important +} + +.ml-4 { + margin-left: 1.5rem!important +} + +.mx-4 { + margin-right: 1.5rem!important; + margin-left: 1.5rem!important +} + +.my-4 { + margin-top: 1.5rem!important; + margin-bottom: 1.5rem!important +} + +.m-5 { + margin: 3rem!important +} + +.mt-5 { + margin-top: 3rem!important +} + +.mr-5 { + margin-right: 3rem!important +} + +.mb-5 { + margin-bottom: 3rem!important +} + +.ml-5 { + margin-left: 3rem!important +} + +.mx-5 { + margin-right: 3rem!important; + margin-left: 3rem!important +} + +.my-5 { + margin-top: 3rem!important; + margin-bottom: 3rem!important +} + +.p-0 { + padding: 0!important +} + +.pt-0 { + padding-top: 0!important +} + +.pr-0 { + padding-right: 0!important +} + +.pb-0 { + padding-bottom: 0!important +} + +.pl-0 { + padding-left: 0!important +} + +.px-0 { + padding-right: 0!important; + padding-left: 0!important +} + +.py-0 { + padding-top: 0!important; + padding-bottom: 0!important +} + +.p-1 { + padding: .25rem!important +} + +.pt-1 { + padding-top: .25rem!important +} + +.pr-1 { + padding-right: .25rem!important +} + +.pb-1 { + padding-bottom: .25rem!important +} + +.pl-1 { + padding-left: .25rem!important +} + +.px-1 { + padding-right: .25rem!important; + padding-left: .25rem!important +} + +.py-1 { + padding-top: .25rem!important; + padding-bottom: .25rem!important +} + +.p-2 { + padding: .5rem!important +} + +.pt-2 { + padding-top: .5rem!important +} + +.pr-2 { + padding-right: .5rem!important +} + +.pb-2 { + padding-bottom: .5rem!important +} + +.pl-2 { + padding-left: .5rem!important +} + +.px-2 { + padding-right: .5rem!important; + padding-left: .5rem!important +} + +.py-2 { + padding-top: .5rem!important; + padding-bottom: .5rem!important +} + +.p-3 { + padding: 1rem!important +} + +.pt-3 { + padding-top: 1rem!important +} + +.pr-3 { + padding-right: 1rem!important +} + +.pb-3 { + padding-bottom: 1rem!important +} + +.pl-3 { + padding-left: 1rem!important +} + +.px-3 { + padding-right: 1rem!important; + padding-left: 1rem!important +} + +.py-3 { + padding-top: 1rem!important; + padding-bottom: 1rem!important +} + +.p-4 { + padding: 1.5rem!important +} + +.pt-4 { + padding-top: 1.5rem!important +} + +.pr-4 { + padding-right: 1.5rem!important +} + +.pb-4 { + padding-bottom: 1.5rem!important +} + +.pl-4 { + padding-left: 1.5rem!important +} + +.px-4 { + padding-right: 1.5rem!important; + padding-left: 1.5rem!important +} + +.py-4 { + padding-top: 1.5rem!important; + padding-bottom: 1.5rem!important +} + +.p-5 { + padding: 3rem!important +} + +.pt-5 { + padding-top: 3rem!important +} + +.pr-5 { + padding-right: 3rem!important +} + +.pb-5 { + padding-bottom: 3rem!important +} + +.pl-5 { + padding-left: 3rem!important +} + +.px-5 { + padding-right: 3rem!important; + padding-left: 3rem!important +} + +.py-5 { + padding-top: 3rem!important; + padding-bottom: 3rem!important +} + +.m-auto { + margin: auto!important +} + +.mt-auto { + margin-top: auto!important +} + +.mr-auto { + margin-right: auto!important +} + +.mb-auto { + margin-bottom: auto!important +} + +.ml-auto { + margin-left: auto!important +} + +.mx-auto { + margin-right: auto!important; + margin-left: auto!important +} + +.my-auto { + margin-top: auto!important; + margin-bottom: auto!important +} + +@media (min-width:576px) { + .m-sm-0 { + margin: 0!important + } + .mt-sm-0 { + margin-top: 0!important + } + .mr-sm-0 { + margin-right: 0!important + } + .mb-sm-0 { + margin-bottom: 0!important + } + .ml-sm-0 { + margin-left: 0!important + } + .mx-sm-0 { + margin-right: 0!important; + margin-left: 0!important + } + .my-sm-0 { + margin-top: 0!important; + margin-bottom: 0!important + } + .m-sm-1 { + margin: .25rem!important + } + .mt-sm-1 { + margin-top: .25rem!important + } + .mr-sm-1 { + margin-right: .25rem!important + } + .mb-sm-1 { + margin-bottom: .25rem!important + } + .ml-sm-1 { + margin-left: .25rem!important + } + .mx-sm-1 { + margin-right: .25rem!important; + margin-left: .25rem!important + } + .my-sm-1 { + margin-top: .25rem!important; + margin-bottom: .25rem!important + } + .m-sm-2 { + margin: .5rem!important + } + .mt-sm-2 { + margin-top: .5rem!important + } + .mr-sm-2 { + margin-right: .5rem!important + } + .mb-sm-2 { + margin-bottom: .5rem!important + } + .ml-sm-2 { + margin-left: .5rem!important + } + .mx-sm-2 { + margin-right: .5rem!important; + margin-left: .5rem!important + } + .my-sm-2 { + margin-top: .5rem!important; + margin-bottom: .5rem!important + } + .m-sm-3 { + margin: 1rem!important + } + .mt-sm-3 { + margin-top: 1rem!important + } + .mr-sm-3 { + margin-right: 1rem!important + } + .mb-sm-3 { + margin-bottom: 1rem!important + } + .ml-sm-3 { + margin-left: 1rem!important + } + .mx-sm-3 { + margin-right: 1rem!important; + margin-left: 1rem!important + } + .my-sm-3 { + margin-top: 1rem!important; + margin-bottom: 1rem!important + } + .m-sm-4 { + margin: 1.5rem!important + } + .mt-sm-4 { + margin-top: 1.5rem!important + } + .mr-sm-4 { + margin-right: 1.5rem!important + } + .mb-sm-4 { + margin-bottom: 1.5rem!important + } + .ml-sm-4 { + margin-left: 1.5rem!important + } + .mx-sm-4 { + margin-right: 1.5rem!important; + margin-left: 1.5rem!important + } + .my-sm-4 { + margin-top: 1.5rem!important; + margin-bottom: 1.5rem!important + } + .m-sm-5 { + margin: 3rem!important + } + .mt-sm-5 { + margin-top: 3rem!important + } + .mr-sm-5 { + margin-right: 3rem!important + } + .mb-sm-5 { + margin-bottom: 3rem!important + } + .ml-sm-5 { + margin-left: 3rem!important + } + .mx-sm-5 { + margin-right: 3rem!important; + margin-left: 3rem!important + } + .my-sm-5 { + margin-top: 3rem!important; + margin-bottom: 3rem!important + } + .p-sm-0 { + padding: 0!important + } + .pt-sm-0 { + padding-top: 0!important + } + .pr-sm-0 { + padding-right: 0!important + } + .pb-sm-0 { + padding-bottom: 0!important + } + .pl-sm-0 { + padding-left: 0!important + } + .px-sm-0 { + padding-right: 0!important; + padding-left: 0!important + } + .py-sm-0 { + padding-top: 0!important; + padding-bottom: 0!important + } + .p-sm-1 { + padding: .25rem!important + } + .pt-sm-1 { + padding-top: .25rem!important + } + .pr-sm-1 { + padding-right: .25rem!important + } + .pb-sm-1 { + padding-bottom: .25rem!important + } + .pl-sm-1 { + padding-left: .25rem!important + } + .px-sm-1 { + padding-right: .25rem!important; + padding-left: .25rem!important + } + .py-sm-1 { + padding-top: .25rem!important; + padding-bottom: .25rem!important + } + .p-sm-2 { + padding: .5rem!important + } + .pt-sm-2 { + padding-top: .5rem!important + } + .pr-sm-2 { + padding-right: .5rem!important + } + .pb-sm-2 { + padding-bottom: .5rem!important + } + .pl-sm-2 { + padding-left: .5rem!important + } + .px-sm-2 { + padding-right: .5rem!important; + padding-left: .5rem!important + } + .py-sm-2 { + padding-top: .5rem!important; + padding-bottom: .5rem!important + } + .p-sm-3 { + padding: 1rem!important + } + .pt-sm-3 { + padding-top: 1rem!important + } + .pr-sm-3 { + padding-right: 1rem!important + } + .pb-sm-3 { + padding-bottom: 1rem!important + } + .pl-sm-3 { + padding-left: 1rem!important + } + .px-sm-3 { + padding-right: 1rem!important; + padding-left: 1rem!important + } + .py-sm-3 { + padding-top: 1rem!important; + padding-bottom: 1rem!important + } + .p-sm-4 { + padding: 1.5rem!important + } + .pt-sm-4 { + padding-top: 1.5rem!important + } + .pr-sm-4 { + padding-right: 1.5rem!important + } + .pb-sm-4 { + padding-bottom: 1.5rem!important + } + .pl-sm-4 { + padding-left: 1.5rem!important + } + .px-sm-4 { + padding-right: 1.5rem!important; + padding-left: 1.5rem!important + } + .py-sm-4 { + padding-top: 1.5rem!important; + padding-bottom: 1.5rem!important + } + .p-sm-5 { + padding: 3rem!important + } + .pt-sm-5 { + padding-top: 3rem!important + } + .pr-sm-5 { + padding-right: 3rem!important + } + .pb-sm-5 { + padding-bottom: 3rem!important + } + .pl-sm-5 { + padding-left: 3rem!important + } + .px-sm-5 { + padding-right: 3rem!important; + padding-left: 3rem!important + } + .py-sm-5 { + padding-top: 3rem!important; + padding-bottom: 3rem!important + } + .m-sm-auto { + margin: auto!important + } + .mt-sm-auto { + margin-top: auto!important + } + .mr-sm-auto { + margin-right: auto!important + } + .mb-sm-auto { + margin-bottom: auto!important + } + .ml-sm-auto { + margin-left: auto!important + } + .mx-sm-auto { + margin-right: auto!important; + margin-left: auto!important + } + .my-sm-auto { + margin-top: auto!important; + margin-bottom: auto!important + } +} + +@media (min-width:768px) { + .m-md-0 { + margin: 0!important + } + .mt-md-0 { + margin-top: 0!important + } + .mr-md-0 { + margin-right: 0!important + } + .mb-md-0 { + margin-bottom: 0!important + } + .ml-md-0 { + margin-left: 0!important + } + .mx-md-0 { + margin-right: 0!important; + margin-left: 0!important + } + .my-md-0 { + margin-top: 0!important; + margin-bottom: 0!important + } + .m-md-1 { + margin: .25rem!important + } + .mt-md-1 { + margin-top: .25rem!important + } + .mr-md-1 { + margin-right: .25rem!important + } + .mb-md-1 { + margin-bottom: .25rem!important + } + .ml-md-1 { + margin-left: .25rem!important + } + .mx-md-1 { + margin-right: .25rem!important; + margin-left: .25rem!important + } + .my-md-1 { + margin-top: .25rem!important; + margin-bottom: .25rem!important + } + .m-md-2 { + margin: .5rem!important + } + .mt-md-2 { + margin-top: .5rem!important + } + .mr-md-2 { + margin-right: .5rem!important + } + .mb-md-2 { + margin-bottom: .5rem!important + } + .ml-md-2 { + margin-left: .5rem!important + } + .mx-md-2 { + margin-right: .5rem!important; + margin-left: .5rem!important + } + .my-md-2 { + margin-top: .5rem!important; + margin-bottom: .5rem!important + } + .m-md-3 { + margin: 1rem!important + } + .mt-md-3 { + margin-top: 1rem!important + } + .mr-md-3 { + margin-right: 1rem!important + } + .mb-md-3 { + margin-bottom: 1rem!important + } + .ml-md-3 { + margin-left: 1rem!important + } + .mx-md-3 { + margin-right: 1rem!important; + margin-left: 1rem!important + } + .my-md-3 { + margin-top: 1rem!important; + margin-bottom: 1rem!important + } + .m-md-4 { + margin: 1.5rem!important + } + .mt-md-4 { + margin-top: 1.5rem!important + } + .mr-md-4 { + margin-right: 1.5rem!important + } + .mb-md-4 { + margin-bottom: 1.5rem!important + } + .ml-md-4 { + margin-left: 1.5rem!important + } + .mx-md-4 { + margin-right: 1.5rem!important; + margin-left: 1.5rem!important + } + .my-md-4 { + margin-top: 1.5rem!important; + margin-bottom: 1.5rem!important + } + .m-md-5 { + margin: 3rem!important + } + .mt-md-5 { + margin-top: 3rem!important + } + .mr-md-5 { + margin-right: 3rem!important + } + .mb-md-5 { + margin-bottom: 3rem!important + } + .ml-md-5 { + margin-left: 3rem!important + } + .mx-md-5 { + margin-right: 3rem!important; + margin-left: 3rem!important + } + .my-md-5 { + margin-top: 3rem!important; + margin-bottom: 3rem!important + } + .p-md-0 { + padding: 0!important + } + .pt-md-0 { + padding-top: 0!important + } + .pr-md-0 { + padding-right: 0!important + } + .pb-md-0 { + padding-bottom: 0!important + } + .pl-md-0 { + padding-left: 0!important + } + .px-md-0 { + padding-right: 0!important; + padding-left: 0!important + } + .py-md-0 { + padding-top: 0!important; + padding-bottom: 0!important + } + .p-md-1 { + padding: .25rem!important + } + .pt-md-1 { + padding-top: .25rem!important + } + .pr-md-1 { + padding-right: .25rem!important + } + .pb-md-1 { + padding-bottom: .25rem!important + } + .pl-md-1 { + padding-left: .25rem!important + } + .px-md-1 { + padding-right: .25rem!important; + padding-left: .25rem!important + } + .py-md-1 { + padding-top: .25rem!important; + padding-bottom: .25rem!important + } + .p-md-2 { + padding: .5rem!important + } + .pt-md-2 { + padding-top: .5rem!important + } + .pr-md-2 { + padding-right: .5rem!important + } + .pb-md-2 { + padding-bottom: .5rem!important + } + .pl-md-2 { + padding-left: .5rem!important + } + .px-md-2 { + padding-right: .5rem!important; + padding-left: .5rem!important + } + .py-md-2 { + padding-top: .5rem!important; + padding-bottom: .5rem!important + } + .p-md-3 { + padding: 1rem!important + } + .pt-md-3 { + padding-top: 1rem!important + } + .pr-md-3 { + padding-right: 1rem!important + } + .pb-md-3 { + padding-bottom: 1rem!important + } + .pl-md-3 { + padding-left: 1rem!important + } + .px-md-3 { + padding-right: 1rem!important; + padding-left: 1rem!important + } + .py-md-3 { + padding-top: 1rem!important; + padding-bottom: 1rem!important + } + .p-md-4 { + padding: 1.5rem!important + } + .pt-md-4 { + padding-top: 1.5rem!important + } + .pr-md-4 { + padding-right: 1.5rem!important + } + .pb-md-4 { + padding-bottom: 1.5rem!important + } + .pl-md-4 { + padding-left: 1.5rem!important + } + .px-md-4 { + padding-right: 1.5rem!important; + padding-left: 1.5rem!important + } + .py-md-4 { + padding-top: 1.5rem!important; + padding-bottom: 1.5rem!important + } + .p-md-5 { + padding: 3rem!important + } + .pt-md-5 { + padding-top: 3rem!important + } + .pr-md-5 { + padding-right: 3rem!important + } + .pb-md-5 { + padding-bottom: 3rem!important + } + .pl-md-5 { + padding-left: 3rem!important + } + .px-md-5 { + padding-right: 3rem!important; + padding-left: 3rem!important + } + .py-md-5 { + padding-top: 3rem!important; + padding-bottom: 3rem!important + } + .m-md-auto { + margin: auto!important + } + .mt-md-auto { + margin-top: auto!important + } + .mr-md-auto { + margin-right: auto!important + } + .mb-md-auto { + margin-bottom: auto!important + } + .ml-md-auto { + margin-left: auto!important + } + .mx-md-auto { + margin-right: auto!important; + margin-left: auto!important + } + .my-md-auto { + margin-top: auto!important; + margin-bottom: auto!important + } +} + +@media (min-width:992px) { + .m-lg-0 { + margin: 0!important + } + .mt-lg-0 { + margin-top: 0!important + } + .mr-lg-0 { + margin-right: 0!important + } + .mb-lg-0 { + margin-bottom: 0!important + } + .ml-lg-0 { + margin-left: 0!important + } + .mx-lg-0 { + margin-right: 0!important; + margin-left: 0!important + } + .my-lg-0 { + margin-top: 0!important; + margin-bottom: 0!important + } + .m-lg-1 { + margin: .25rem!important + } + .mt-lg-1 { + margin-top: .25rem!important + } + .mr-lg-1 { + margin-right: .25rem!important + } + .mb-lg-1 { + margin-bottom: .25rem!important + } + .ml-lg-1 { + margin-left: .25rem!important + } + .mx-lg-1 { + margin-right: .25rem!important; + margin-left: .25rem!important + } + .my-lg-1 { + margin-top: .25rem!important; + margin-bottom: .25rem!important + } + .m-lg-2 { + margin: .5rem!important + } + .mt-lg-2 { + margin-top: .5rem!important + } + .mr-lg-2 { + margin-right: .5rem!important + } + .mb-lg-2 { + margin-bottom: .5rem!important + } + .ml-lg-2 { + margin-left: .5rem!important + } + .mx-lg-2 { + margin-right: .5rem!important; + margin-left: .5rem!important + } + .my-lg-2 { + margin-top: .5rem!important; + margin-bottom: .5rem!important + } + .m-lg-3 { + margin: 1rem!important + } + .mt-lg-3 { + margin-top: 1rem!important + } + .mr-lg-3 { + margin-right: 1rem!important + } + .mb-lg-3 { + margin-bottom: 1rem!important + } + .ml-lg-3 { + margin-left: 1rem!important + } + .mx-lg-3 { + margin-right: 1rem!important; + margin-left: 1rem!important + } + .my-lg-3 { + margin-top: 1rem!important; + margin-bottom: 1rem!important + } + .m-lg-4 { + margin: 1.5rem!important + } + .mt-lg-4 { + margin-top: 1.5rem!important + } + .mr-lg-4 { + margin-right: 1.5rem!important + } + .mb-lg-4 { + margin-bottom: 1.5rem!important + } + .ml-lg-4 { + margin-left: 1.5rem!important + } + .mx-lg-4 { + margin-right: 1.5rem!important; + margin-left: 1.5rem!important + } + .my-lg-4 { + margin-top: 1.5rem!important; + margin-bottom: 1.5rem!important + } + .m-lg-5 { + margin: 3rem!important + } + .mt-lg-5 { + margin-top: 3rem!important + } + .mr-lg-5 { + margin-right: 3rem!important + } + .mb-lg-5 { + margin-bottom: 3rem!important + } + .ml-lg-5 { + margin-left: 3rem!important + } + .mx-lg-5 { + margin-right: 3rem!important; + margin-left: 3rem!important + } + .my-lg-5 { + margin-top: 3rem!important; + margin-bottom: 3rem!important + } + .p-lg-0 { + padding: 0!important + } + .pt-lg-0 { + padding-top: 0!important + } + .pr-lg-0 { + padding-right: 0!important + } + .pb-lg-0 { + padding-bottom: 0!important + } + .pl-lg-0 { + padding-left: 0!important + } + .px-lg-0 { + padding-right: 0!important; + padding-left: 0!important + } + .py-lg-0 { + padding-top: 0!important; + padding-bottom: 0!important + } + .p-lg-1 { + padding: .25rem!important + } + .pt-lg-1 { + padding-top: .25rem!important + } + .pr-lg-1 { + padding-right: .25rem!important + } + .pb-lg-1 { + padding-bottom: .25rem!important + } + .pl-lg-1 { + padding-left: .25rem!important + } + .px-lg-1 { + padding-right: .25rem!important; + padding-left: .25rem!important + } + .py-lg-1 { + padding-top: .25rem!important; + padding-bottom: .25rem!important + } + .p-lg-2 { + padding: .5rem!important + } + .pt-lg-2 { + padding-top: .5rem!important + } + .pr-lg-2 { + padding-right: .5rem!important + } + .pb-lg-2 { + padding-bottom: .5rem!important + } + .pl-lg-2 { + padding-left: .5rem!important + } + .px-lg-2 { + padding-right: .5rem!important; + padding-left: .5rem!important + } + .py-lg-2 { + padding-top: .5rem!important; + padding-bottom: .5rem!important + } + .p-lg-3 { + padding: 1rem!important + } + .pt-lg-3 { + padding-top: 1rem!important + } + .pr-lg-3 { + padding-right: 1rem!important + } + .pb-lg-3 { + padding-bottom: 1rem!important + } + .pl-lg-3 { + padding-left: 1rem!important + } + .px-lg-3 { + padding-right: 1rem!important; + padding-left: 1rem!important + } + .py-lg-3 { + padding-top: 1rem!important; + padding-bottom: 1rem!important + } + .p-lg-4 { + padding: 1.5rem!important + } + .pt-lg-4 { + padding-top: 1.5rem!important + } + .pr-lg-4 { + padding-right: 1.5rem!important + } + .pb-lg-4 { + padding-bottom: 1.5rem!important + } + .pl-lg-4 { + padding-left: 1.5rem!important + } + .px-lg-4 { + padding-right: 1.5rem!important; + padding-left: 1.5rem!important + } + .py-lg-4 { + padding-top: 1.5rem!important; + padding-bottom: 1.5rem!important + } + .p-lg-5 { + padding: 3rem!important + } + .pt-lg-5 { + padding-top: 3rem!important + } + .pr-lg-5 { + padding-right: 3rem!important + } + .pb-lg-5 { + padding-bottom: 3rem!important + } + .pl-lg-5 { + padding-left: 3rem!important + } + .px-lg-5 { + padding-right: 3rem!important; + padding-left: 3rem!important + } + .py-lg-5 { + padding-top: 3rem!important; + padding-bottom: 3rem!important + } + .m-lg-auto { + margin: auto!important + } + .mt-lg-auto { + margin-top: auto!important + } + .mr-lg-auto { + margin-right: auto!important + } + .mb-lg-auto { + margin-bottom: auto!important + } + .ml-lg-auto { + margin-left: auto!important + } + .mx-lg-auto { + margin-right: auto!important; + margin-left: auto!important + } + .my-lg-auto { + margin-top: auto!important; + margin-bottom: auto!important + } +} + +@media (min-width:1200px) { + .m-xl-0 { + margin: 0!important + } + .mt-xl-0 { + margin-top: 0!important + } + .mr-xl-0 { + margin-right: 0!important + } + .mb-xl-0 { + margin-bottom: 0!important + } + .ml-xl-0 { + margin-left: 0!important + } + .mx-xl-0 { + margin-right: 0!important; + margin-left: 0!important + } + .my-xl-0 { + margin-top: 0!important; + margin-bottom: 0!important + } + .m-xl-1 { + margin: .25rem!important + } + .mt-xl-1 { + margin-top: .25rem!important + } + .mr-xl-1 { + margin-right: .25rem!important + } + .mb-xl-1 { + margin-bottom: .25rem!important + } + .ml-xl-1 { + margin-left: .25rem!important + } + .mx-xl-1 { + margin-right: .25rem!important; + margin-left: .25rem!important + } + .my-xl-1 { + margin-top: .25rem!important; + margin-bottom: .25rem!important + } + .m-xl-2 { + margin: .5rem!important + } + .mt-xl-2 { + margin-top: .5rem!important + } + .mr-xl-2 { + margin-right: .5rem!important + } + .mb-xl-2 { + margin-bottom: .5rem!important + } + .ml-xl-2 { + margin-left: .5rem!important + } + .mx-xl-2 { + margin-right: .5rem!important; + margin-left: .5rem!important + } + .my-xl-2 { + margin-top: .5rem!important; + margin-bottom: .5rem!important + } + .m-xl-3 { + margin: 1rem!important + } + .mt-xl-3 { + margin-top: 1rem!important + } + .mr-xl-3 { + margin-right: 1rem!important + } + .mb-xl-3 { + margin-bottom: 1rem!important + } + .ml-xl-3 { + margin-left: 1rem!important + } + .mx-xl-3 { + margin-right: 1rem!important; + margin-left: 1rem!important + } + .my-xl-3 { + margin-top: 1rem!important; + margin-bottom: 1rem!important + } + .m-xl-4 { + margin: 1.5rem!important + } + .mt-xl-4 { + margin-top: 1.5rem!important + } + .mr-xl-4 { + margin-right: 1.5rem!important + } + .mb-xl-4 { + margin-bottom: 1.5rem!important + } + .ml-xl-4 { + margin-left: 1.5rem!important + } + .mx-xl-4 { + margin-right: 1.5rem!important; + margin-left: 1.5rem!important + } + .my-xl-4 { + margin-top: 1.5rem!important; + margin-bottom: 1.5rem!important + } + .m-xl-5 { + margin: 3rem!important + } + .mt-xl-5 { + margin-top: 3rem!important + } + .mr-xl-5 { + margin-right: 3rem!important + } + .mb-xl-5 { + margin-bottom: 3rem!important + } + .ml-xl-5 { + margin-left: 3rem!important + } + .mx-xl-5 { + margin-right: 3rem!important; + margin-left: 3rem!important + } + .my-xl-5 { + margin-top: 3rem!important; + margin-bottom: 3rem!important + } + .p-xl-0 { + padding: 0!important + } + .pt-xl-0 { + padding-top: 0!important + } + .pr-xl-0 { + padding-right: 0!important + } + .pb-xl-0 { + padding-bottom: 0!important + } + .pl-xl-0 { + padding-left: 0!important + } + .px-xl-0 { + padding-right: 0!important; + padding-left: 0!important + } + .py-xl-0 { + padding-top: 0!important; + padding-bottom: 0!important + } + .p-xl-1 { + padding: .25rem!important + } + .pt-xl-1 { + padding-top: .25rem!important + } + .pr-xl-1 { + padding-right: .25rem!important + } + .pb-xl-1 { + padding-bottom: .25rem!important + } + .pl-xl-1 { + padding-left: .25rem!important + } + .px-xl-1 { + padding-right: .25rem!important; + padding-left: .25rem!important + } + .py-xl-1 { + padding-top: .25rem!important; + padding-bottom: .25rem!important + } + .p-xl-2 { + padding: .5rem!important + } + .pt-xl-2 { + padding-top: .5rem!important + } + .pr-xl-2 { + padding-right: .5rem!important + } + .pb-xl-2 { + padding-bottom: .5rem!important + } + .pl-xl-2 { + padding-left: .5rem!important + } + .px-xl-2 { + padding-right: .5rem!important; + padding-left: .5rem!important + } + .py-xl-2 { + padding-top: .5rem!important; + padding-bottom: .5rem!important + } + .p-xl-3 { + padding: 1rem!important + } + .pt-xl-3 { + padding-top: 1rem!important + } + .pr-xl-3 { + padding-right: 1rem!important + } + .pb-xl-3 { + padding-bottom: 1rem!important + } + .pl-xl-3 { + padding-left: 1rem!important + } + .px-xl-3 { + padding-right: 1rem!important; + padding-left: 1rem!important + } + .py-xl-3 { + padding-top: 1rem!important; + padding-bottom: 1rem!important + } + .p-xl-4 { + padding: 1.5rem!important + } + .pt-xl-4 { + padding-top: 1.5rem!important + } + .pr-xl-4 { + padding-right: 1.5rem!important + } + .pb-xl-4 { + padding-bottom: 1.5rem!important + } + .pl-xl-4 { + padding-left: 1.5rem!important + } + .px-xl-4 { + padding-right: 1.5rem!important; + padding-left: 1.5rem!important + } + .py-xl-4 { + padding-top: 1.5rem!important; + padding-bottom: 1.5rem!important + } + .p-xl-5 { + padding: 3rem!important + } + .pt-xl-5 { + padding-top: 3rem!important + } + .pr-xl-5 { + padding-right: 3rem!important + } + .pb-xl-5 { + padding-bottom: 3rem!important + } + .pl-xl-5 { + padding-left: 3rem!important + } + .px-xl-5 { + padding-right: 3rem!important; + padding-left: 3rem!important + } + .py-xl-5 { + padding-top: 3rem!important; + padding-bottom: 3rem!important + } + .m-xl-auto { + margin: auto!important + } + .mt-xl-auto { + margin-top: auto!important + } + .mr-xl-auto { + margin-right: auto!important + } + .mb-xl-auto { + margin-bottom: auto!important + } + .ml-xl-auto { + margin-left: auto!important + } + .mx-xl-auto { + margin-right: auto!important; + margin-left: auto!important + } + .my-xl-auto { + margin-top: auto!important; + margin-bottom: auto!important + } +} + +.text-justify { + text-align: justify!important +} + +.text-nowrap { + white-space: nowrap!important +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.text-left { + text-align: left!important +} + +.text-right { + text-align: right!important +} + +.text-center { + text-align: center!important +} + +@media (min-width:576px) { + .text-sm-left { + text-align: left!important + } + .text-sm-right { + text-align: right!important + } + .text-sm-center { + text-align: center!important + } +} + +@media (min-width:768px) { + .text-md-left { + text-align: left!important + } + .text-md-right { + text-align: right!important + } + .text-md-center { + text-align: center!important + } +} + +@media (min-width:992px) { + .text-lg-left { + text-align: left!important + } + .text-lg-right { + text-align: right!important + } + .text-lg-center { + text-align: center!important + } +} + +@media (min-width:1200px) { + .text-xl-left { + text-align: left!important + } + .text-xl-right { + text-align: right!important + } + .text-xl-center { + text-align: center!important + } +} + +.text-lowercase { + text-transform: lowercase!important +} + +.text-uppercase { + text-transform: uppercase!important +} + +.text-capitalize { + text-transform: capitalize!important +} + +.font-weight-normal { + font-weight: 400 +} + +.font-weight-bold { + font-weight: 700 +} + +.font-italic { + font-style: italic +} + +.text-white { + color: #fff!important +} + +.text-primary { + color: #007bff!important +} + +a.text-primary:focus, +a.text-primary:hover { + color: #0062cc!important +} + +.text-secondary { + color: #868e96!important +} + +a.text-secondary:focus, +a.text-secondary:hover { + color: #6c757d!important +} + +.text-success { + color: #28a745!important +} + +a.text-success:focus, +a.text-success:hover { + color: #1e7e34!important +} + +.text-info { + color: #17a2b8!important +} + +a.text-info:focus, +a.text-info:hover { + color: #117a8b!important +} + +.text-warning { + color: #ffc107!important +} + +a.text-warning:focus, +a.text-warning:hover { + color: #d39e00!important +} + +.text-danger { + color: #dc3545!important +} + +a.text-danger:focus, +a.text-danger:hover { + color: #bd2130!important +} + +.text-light { + color: #f8f9fa!important +} + +a.text-light:focus, +a.text-light:hover { + color: #dae0e5!important +} + +.text-dark { + color: #343a40!important +} + +a.text-dark:focus, +a.text-dark:hover { + color: #1d2124!important +} + +.text-muted { + color: #868e96!important +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0 +} + +.visible { + visibility: visible!important +} + +.invisible { + visibility: hidden!important +} + +h4.modal-title { + margin:0 +} +/*# sourceMappingURL=bootstrap4.min.css.map */ \ No newline at end of file diff --git a/web/libs/css/main.dash2.css b/web/libs/css/main.dash2.css index 10da0f51..ccef80c5 100644 --- a/web/libs/css/main.dash2.css +++ b/web/libs/css/main.dash2.css @@ -65,11 +65,13 @@ nav h4{cursor:default;font-size:95%;padding:16px 40px;font-weight:100;text-trans .m-b{margin-bottom:10px} .m-t{margin-top:10px} .m-l{margin-left:10px} +.overflow-hidden{overflow: hidden!important} .list-inline{list-style:none} .list-inline li{display:inline-block;vertical-align: top;margin:0;} .truncate{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} img{max-width:100%} .display-table{display:table;width:100%} +.display-inline{display:inline-block} .display-table-cell{display:table-cell} .small{font-size:80%} .super-center{position:absolute;left:0;top:0;right:0;bottom:0;margin:auto;width: 4em;height: 1em;} @@ -90,9 +92,9 @@ img{max-width:100%} .monitor_item[mode="Watch Only"] .stream-hud .lamp{color:#5da8e8} .monitor_item[mode="Idle"] .stream-hud .lamp{color:#fff} .monitor_item[mode="Record"] .stream-hud .lamp{color:#d9534f} -/*.monitor_item .data-menu{max-height:700px}*/ -.monitor_item .data-menu:not(:last-child){border-right:1px solid #fff;} -.monitor_item .data-menu.logs{list-style:none;} +/*.data-menu{max-height:700px}*/ +.data-menu:not(:last-child){border-right:1px solid #fff;} +.data-menu.logs{list-style:none;} .monitor_item .motionVision{display:none} .monitor_item .grid-stack-item-content{width:100%!important;left:0;right:0} @@ -713,4 +715,10 @@ ul.msg_list li .message { .marc-toggle label:active:after { width: 10px; +} + +/*hexagon pattern*/ +.bg-hexagon { + background-color: #054e9f; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='49' viewBox='0 0 28 49'%3E%3Cg fill-rule='evenodd'%3E%3Cg id='hexagons' fill='%23fdfdfd' fill-opacity='0.4' fill-rule='nonzero'%3E%3Cpath d='M13.99 9.25l13 7.5v15l-13 7.5L1 31.75v-15l12.99-7.5zM3 17.9v12.7l10.99 6.34 11-6.35V17.9l-11-6.34L3 17.9zM0 15l12.98-7.5V0h-2v6.35L0 12.69v2.3zm0 18.5L12.98 41v8h-2v-6.85L0 35.81v-2.3zM15 0v7.5L27.99 15H28v-2.31h-.01L17 6.35V0h-2zm0 49v-8l12.99-7.5H28v2.31h-.01L17 42.15V49h-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); } \ No newline at end of file diff --git a/web/libs/css/now-ui-kit.css b/web/libs/css/now-ui-kit.css new file mode 100644 index 00000000..4036ed5d --- /dev/null +++ b/web/libs/css/now-ui-kit.css @@ -0,0 +1,7545 @@ +/*! + + ========================================================= + * Now-ui-kit - v1.1.0 + ========================================================= + + * Product Page: http://www.creative-tim.com/product/now-ui-kit + * Copyright 2017 Creative Tim (http://www.creative-tim.com) + * Licensed under MIT (https://github.com/creativetimofficial/now-ui-kit/blob/master/LICENSE.md) + + * Designed by www.invisionapp.com Coded by www.creative-tim.com + + ========================================================= + + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + */ + + +/* brand Colors */ + + +/* light colors */ + + +/* ======================================================================== + * bootstrap-switch - v3.3.2 + * http://www.bootstrap-switch.org + * ======================================================================== + * Copyright 2012-2013 Mattia Larentis + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +.bootstrap-switch { + display: inline-block; + direction: ltr; + cursor: pointer; + border-radius: 30px; + border: 0; + position: relative; + text-align: left; + margin-bottom: 10px; + line-height: 8px; + width: 59px !important; + height: 22px; + outline: none; + z-index: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + margin-right: 20px; + background: rgba(44, 44, 44, 0.2); +} + +.bootstrap-switch .bootstrap-switch-container { + display: inline-flex; + top: 0; + height: 22px; + border-radius: 4px; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + width: 100px !important; +} + +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off, +.bootstrap-switch .bootstrap-switch-label { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + display: inline-block !important; + height: 100%; + color: #fff; + padding: 6px 12px; + font-size: 11px; + text-indent: -5px; + line-height: 15px; + -webkit-transition: 0.25s ease-out; + transition: 0.25s ease-out; +} + +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off { + text-align: center; + z-index: 1; + float: left; + line-height: 11px; + width: 50% !important; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-brown, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-brown { + color: #fff; + background: #f96332; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-blue, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-blue { + color: #fff; + background: #2CA8FF; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-green, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-green { + color: #fff; + background: #18ce0f; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-orange, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-orange { + background: #FFB236; + color: #fff; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-red, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-red { + color: #fff; + background: #FF3636; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { + color: #fff; +} + +.bootstrap-switch .bootstrap-switch-label { + text-align: center; + z-index: 100; + color: #333333; + background: #ffffff; + width: 22px !important; + height: 22px !important; + margin: 0px -11px; + border-radius: 20px; + position: absolute; + float: left; + top: 0; + left: 50%; + padding: 0; + box-shadow: 0 1px 11px rgba(0, 0, 0, 0.25); +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label { + background-color: rgba(23, 23, 23, 0.4); +} + +.bootstrap-switch.bootstrap-switch-on:hover .bootstrap-switch-label { + width: 27px !important; + margin-left: -16px; +} + +.bootstrap-switch.bootstrap-switch-off:hover .bootstrap-switch-label { + width: 27px !important; + margin-left: -11px; +} + +.bootstrap-switch .bootstrap-switch-handle-on { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.bootstrap-switch .bootstrap-switch-handle-off { + text-indent: 6px; +} + +.bootstrap-switch input[type='radio'], +.bootstrap-switch input[type='checkbox'] { + position: absolute !important; + top: 0; + left: 0; + opacity: 0; + filter: alpha(opacity=0); + z-index: -1; +} + +.bootstrap-switch input[type='radio'].form-control, +.bootstrap-switch input[type='checkbox'].form-control { + height: auto; +} + +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; +} + +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} + +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label { + padding: 6px 16px; + font-size: 18px; + line-height: 1.33; +} + +.bootstrap-switch.bootstrap-switch-disabled, +.bootstrap-switch.bootstrap-switch-readonly, +.bootstrap-switch.bootstrap-switch-indeterminate { + cursor: default !important; +} + +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default !important; +} + +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { + -webkit-transition: margin-left 0.5s; + transition: margin-left 0.5s; +} + +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} + +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-container { + margin-left: -2px !important; +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-container { + margin-left: -39px !important; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label:before { + background-color: #FFFFFF; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-red~.bootstrap-switch-default { + background-color: #FF3636; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-orange~.bootstrap-switch-default { + background-color: #FFB236; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-green~.bootstrap-switch-default { + background-color: #18ce0f; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-brown~.bootstrap-switch-default { + background-color: #f96332; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-blue~.bootstrap-switch-default { + background-color: #2CA8FF; +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-red, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-brown, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-blue, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-orange, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-green { + background-color: #E3E3E3; +} + +.bootstrap-switch-off .bootstrap-switch-handle-on { + opacity: 0; +} + +.bootstrap-switch-on .bootstrap-switch-handle-off { + opacity: 0; +} + + +/*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */ + + +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + */ + +.noUi-target, +.noUi-target * { + -webkit-touch-callout: none; + -webkit-tap-highlight-color: transparent; + -webkit-user-select: none; + -ms-touch-action: none; + touch-action: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.noUi-target { + position: relative; + direction: ltr; +} + +.noUi-base { + width: 100%; + height: 100%; + position: relative; + z-index: 1; + /* Fix 401 */ +} + +.noUi-connect { + position: absolute; + right: 0; + top: 0; + left: 0; + bottom: 0; +} + +.noUi-origin { + position: absolute; + height: 0; + width: 0; +} + +.noUi-handle { + position: relative; + z-index: 1; +} + +.noUi-state-tap .noUi-connect, +.noUi-state-tap .noUi-origin { + -webkit-transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s; + transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s; +} + +.noUi-state-drag * { + cursor: inherit !important; +} + + +/* Painting and performance; + * Browsers can paint handles in their own layer. + */ + +.noUi-base, +.noUi-handle { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + + +/* Slider size and handle placement; + */ + +.noUi-horizontal { + height: 1px; +} + +.noUi-horizontal .noUi-handle { + border-radius: 50%; + background-color: #FFFFFF; + box-shadow: 0 1px 13px 0 rgba(0, 0, 0, 0.2); + height: 15px; + width: 15px; + cursor: pointer; + margin-left: -10px; + margin-top: -7px; +} + +.noUi-vertical { + width: 18px; +} + +.noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + left: -6px; + top: -17px; +} + + +/* Styling; + */ + +.noUi-target { + background-color: rgba(182, 182, 182, 0.3); + border-radius: 3px; +} + +.noUi-connect { + background: #888; + border-radius: 3px; + -webkit-transition: background 450ms; + transition: background 450ms; +} + + +/* Handles and cursors; + */ + +.noUi-draggable { + cursor: ew-resize; +} + +.noUi-vertical .noUi-draggable { + cursor: ns-resize; +} + +.noUi-handle { + border-radius: 3px; + background: #FFF; + cursor: default; + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; + -webkit-transition: 300ms ease 0s; + -moz-transition: 300ms ease 0s; + -ms-transition: 300ms ease 0s; + -o-transform: 300ms ease 0s; + transition: 300ms ease 0s; +} + +.noUi-active { + -webkit-transform: scale3d(1.5, 1.5, 1); + -moz-transform: scale3d(1.5, 1.5, 1); + -ms-transform: scale3d(1.5, 1.5, 1); + -o-transform: scale3d(1.5, 1.5, 1); + transform: scale3d(1.5, 1.5, 1); +} + + +/* Disabled state; + */ + +[disabled] .noUi-connect { + background: #B8B8B8; +} + +[disabled].noUi-target, +[disabled].noUi-handle, +[disabled] .noUi-handle { + cursor: not-allowed; +} + + +/* Base; + * + */ + +.noUi-pips, +.noUi-pips * { + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.noUi-pips { + position: absolute; + color: #999; +} + + +/* Values; + * + */ + +.noUi-value { + position: absolute; + text-align: center; +} + +.noUi-value-sub { + color: #ccc; + font-size: 10px; +} + + +/* Markings; + * + */ + +.noUi-marker { + position: absolute; + background: #CCC; +} + +.noUi-marker-sub { + background: #AAA; +} + +.noUi-marker-large { + background: #AAA; +} + + +/* Horizontal layout; + * + */ + +.noUi-pips-horizontal { + padding: 10px 0; + height: 80px; + top: 100%; + left: 0; + width: 100%; +} + +.noUi-value-horizontal { + -webkit-transform: translate3d(-50%, 50%, 0); + transform: translate3d(-50%, 50%, 0); +} + +.noUi-marker-horizontal.noUi-marker { + margin-left: -1px; + width: 2px; + height: 5px; +} + +.noUi-marker-horizontal.noUi-marker-sub { + height: 10px; +} + +.noUi-marker-horizontal.noUi-marker-large { + height: 15px; +} + + +/* Vertical layout; + * + */ + +.noUi-pips-vertical { + padding: 0 10px; + height: 100%; + top: 0; + left: 100%; +} + +.noUi-value-vertical { + -webkit-transform: translate3d(0, 50%, 0); + transform: translate3d(0, 50%, 0); + padding-left: 25px; +} + +.noUi-marker-vertical.noUi-marker { + width: 5px; + height: 2px; + margin-top: -1px; +} + +.noUi-marker-vertical.noUi-marker-sub { + width: 10px; +} + +.noUi-marker-vertical.noUi-marker-large { + width: 15px; +} + +.noUi-tooltip { + display: block; + position: absolute; + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #fff; + color: #000; + padding: 5px; + text-align: center; +} + +.noUi-horizontal .noUi-tooltip { + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + left: 50%; + bottom: 120%; +} + +.noUi-vertical .noUi-tooltip { + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + top: 50%; + right: 120%; +} + +.slider.slider-neutral .noUi-connect, +.slider.slider-neutral.noUi-connect { + background-color: #FFFFFF; +} + +.slider.slider-neutral.noUi-target { + background-color: rgba(255, 255, 255, 0.3); +} + +.slider.slider-neutral .noUi-handle { + background-color: #FFFFFF; +} + +.slider.slider-primary .noUi-connect, +.slider.slider-primary.noUi-connect { + background-color: #f96332; +} + +.slider.slider-primary.noUi-target { + background-color: rgba(249, 99, 50, 0.3); +} + +.slider.slider-primary .noUi-handle { + background-color: #f96332; +} + +.slider.slider-info .noUi-connect, +.slider.slider-info.noUi-connect { + background-color: #2CA8FF; +} + +.slider.slider-info.noUi-target { + background-color: rgba(44, 168, 255, 0.3); +} + +.slider.slider-info .noUi-handle { + background-color: #2CA8FF; +} + +.slider.slider-success .noUi-connect, +.slider.slider-success.noUi-connect { + background-color: #18ce0f; +} + +.slider.slider-success.noUi-target { + background-color: rgba(24, 206, 15, 0.3); +} + +.slider.slider-success .noUi-handle { + background-color: #18ce0f; +} + +.slider.slider-warning .noUi-connect, +.slider.slider-warning.noUi-connect { + background-color: #FFB236; +} + +.slider.slider-warning.noUi-target { + background-color: rgba(255, 178, 54, 0.3); +} + +.slider.slider-warning .noUi-handle { + background-color: #FFB236; +} + +.slider.slider-danger .noUi-connect, +.slider.slider-danger.noUi-connect { + background-color: #FF3636; +} + +.slider.slider-danger.noUi-target { + background-color: rgba(255, 54, 54, 0.3); +} + +.slider.slider-danger .noUi-handle { + background-color: #FF3636; +} + + +/*! + * Datepicker for Bootstrap v1.7.0-dev (https://github.com/uxsolutions/bootstrap-datepicker) + * + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ + +.datepicker { + padding: 8px 6px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + direction: ltr; + -webkit-transform: translate3d(0, -40px, 0); + -moz-transform: translate3d(0, -40px, 0); + -o-transform: translate3d(0, -40px, 0); + -ms-transform: translate3d(0, -40px, 0); + transform: translate3d(0, -40px, 0); + transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s, opacity 0.3s ease 0s, height 0s linear 0.35s; + opacity: 0; + filter: alpha(opacity=0); + visibility: hidden; + display: block; + width: 254px; + max-width: 254px; +} + +.datepicker.dropdown-menu:before { + display: none; +} + +.datepicker.datepicker-primary { + background-color: #f96332; +} + +.datepicker.datepicker-primary th, +.datepicker.datepicker-primary .day div, +.datepicker.datepicker-primary table tr td span { + color: #FFFFFF; +} + +.datepicker.datepicker-primary:after { + border-bottom-color: #f96332; +} + +.datepicker.datepicker-primary.datepicker-orient-top:after { + border-top-color: #f96332; +} + +.datepicker.datepicker-primary .dow { + color: rgba(255, 255, 255, 0.8); +} + +.datepicker.datepicker-primary table tr td.old div, +.datepicker.datepicker-primary table tr td.new div, +.datepicker.datepicker-primary table tr td span.old, +.datepicker.datepicker-primary table tr td span.new { + color: rgba(255, 255, 255, 0.4); +} + +.datepicker.datepicker-primary table tr td span:hover, +.datepicker.datepicker-primary table tr td span.focused { + background: rgba(255, 255, 255, 0.1); +} + +.datepicker.datepicker-primary .datepicker-switch:hover, +.datepicker.datepicker-primary .prev:hover, +.datepicker.datepicker-primary .next:hover, +.datepicker.datepicker-primary tfoot tr th:hover { + background: rgba(255, 255, 255, 0.2); +} + +.datepicker.datepicker-primary table tr td.active div, +.datepicker.datepicker-primary table tr td.active:hover div, +.datepicker.datepicker-primary table tr td.active.disabled div, +.datepicker.datepicker-primary table tr td.active.disabled:hover div { + background-color: #FFFFFF; + color: #f96332; +} + +.datepicker.datepicker-primary table tr td.day:hover div, +.datepicker.datepicker-primary table tr td.day.focused div { + background: rgba(255, 255, 255, 0.2); +} + +.datepicker.datepicker-primary table tr td.active:hover div, +.datepicker.datepicker-primary table tr td.active:hover:hover div, +.datepicker.datepicker-primary table tr td.active.disabled:hover div, +.datepicker.datepicker-primary table tr td.active.disabled:hover:hover div, +.datepicker.datepicker-primary table tr td.active:active div, +.datepicker.datepicker-primary table tr td.active:hover:active div, +.datepicker.datepicker-primary table tr td.active.disabled:active div, +.datepicker.datepicker-primary table tr td.active.disabled:hover:active div, +.datepicker.datepicker-primary table tr td.active.active div, +.datepicker.datepicker-primary table tr td.active:hover.active div, +.datepicker.datepicker-primary table tr td.active.disabled.active div, +.datepicker.datepicker-primary table tr td.active.disabled:hover.active div, +.datepicker.datepicker-primary table tr td.active.disabled div, +.datepicker.datepicker-primary table tr td.active:hover.disabled div, +.datepicker.datepicker-primary table tr td.active.disabled.disabled div, +.datepicker.datepicker-primary table tr td.active.disabled:hover.disabled div, +.datepicker.datepicker-primary table tr td.active[disabled] div, +.datepicker.datepicker-primary table tr td.active:hover[disabled] div, +.datepicker.datepicker-primary table tr td.active.disabled[disabled] div, +.datepicker.datepicker-primary table tr td.active.disabled:hover[disabled] div, +.datepicker.datepicker-primary table tr td span.active:hover, +.datepicker.datepicker-primary table tr td span.active:hover:hover, +.datepicker.datepicker-primary table tr td span.active.disabled:hover, +.datepicker.datepicker-primary table tr td span.active.disabled:hover:hover, +.datepicker.datepicker-primary table tr td span.active:active, +.datepicker.datepicker-primary table tr td span.active:hover:active, +.datepicker.datepicker-primary table tr td span.active.disabled:active, +.datepicker.datepicker-primary table tr td span.active.disabled:hover:active, +.datepicker.datepicker-primary table tr td span.active.active, +.datepicker.datepicker-primary table tr td span.active:hover.active, +.datepicker.datepicker-primary table tr td span.active.disabled.active, +.datepicker.datepicker-primary table tr td span.active.disabled:hover.active, +.datepicker.datepicker-primary table tr td span.active.disabled, +.datepicker.datepicker-primary table tr td span.active:hover.disabled, +.datepicker.datepicker-primary table tr td span.active.disabled.disabled, +.datepicker.datepicker-primary table tr td span.active.disabled:hover.disabled, +.datepicker.datepicker-primary table tr td span.active[disabled], +.datepicker.datepicker-primary table tr td span.active:hover[disabled], +.datepicker.datepicker-primary table tr td span.active.disabled[disabled], +.datepicker.datepicker-primary table tr td span.active.disabled:hover[disabled] { + background-color: #FFFFFF; +} + +.datepicker.datepicker-primary table tr td span.active:hover, +.datepicker.datepicker-primary table tr td span.active:hover:hover, +.datepicker.datepicker-primary table tr td span.active.disabled:hover, +.datepicker.datepicker-primary table tr td span.active.disabled:hover:hover, +.datepicker.datepicker-primary table tr td span.active:active, +.datepicker.datepicker-primary table tr td span.active:hover:active, +.datepicker.datepicker-primary table tr td span.active.disabled:active, +.datepicker.datepicker-primary table tr td span.active.disabled:hover:active, +.datepicker.datepicker-primary table tr td span.active.active, +.datepicker.datepicker-primary table tr td span.active:hover.active, +.datepicker.datepicker-primary table tr td span.active.disabled.active, +.datepicker.datepicker-primary table tr td span.active.disabled:hover.active, +.datepicker.datepicker-primary table tr td span.active.disabled, +.datepicker.datepicker-primary table tr td span.active:hover.disabled, +.datepicker.datepicker-primary table tr td span.active.disabled.disabled, +.datepicker.datepicker-primary table tr td span.active.disabled:hover.disabled, +.datepicker.datepicker-primary table tr td span.active[disabled], +.datepicker.datepicker-primary table tr td span.active:hover[disabled], +.datepicker.datepicker-primary table tr td span.active.disabled[disabled], +.datepicker.datepicker-primary table tr td span.active.disabled:hover[disabled] { + color: #f96332; +} + +.datepicker-inline { + width: 220px; +} + +.datepicker.datepicker-rtl { + direction: rtl; +} + +.datepicker.datepicker-rtl.dropdown-menu { + left: auto; +} + +.datepicker.datepicker-rtl table tr td span { + float: right; +} + +.datepicker-dropdown { + top: 0; + left: 0; +} + +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid transparent; + border-top: 0; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; +} + +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-top: 0; + position: absolute; +} + +.datepicker-dropdown.datepicker-orient-left:before { + left: 6px; +} + +.datepicker-dropdown.datepicker-orient-left:after { + left: 7px; +} + +.datepicker-dropdown.datepicker-orient-right:before { + right: 6px; +} + +.datepicker-dropdown.datepicker-orient-right:after { + right: 7px; +} + +.datepicker-dropdown.datepicker-orient-bottom:before { + top: -7px; +} + +.datepicker-dropdown.datepicker-orient-bottom:after { + top: -6px; +} + +.datepicker-dropdown.datepicker-orient-top:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid transparent; +} + +.datepicker-dropdown.datepicker-orient-top:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #fff; +} + +.datepicker table { + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 241px; + max-width: 241px; +} + +.datepicker .day div, +.datepicker th { + -webkit-transition: all 300ms ease 0s; + -moz-transition: all 300ms ease 0s; + -o-transition: all 300ms ease 0s; + -ms-transition: all 300ms ease 0s; + transition: all 300ms ease 0s; + text-align: center; + width: 30px; + height: 30px; + line-height: 2.2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 50%; + font-weight: 300; + font-size: 14px; + border: none; + position: relative; + cursor: pointer; +} + +.datepicker th { + color: #f96332; +} + +.table-condensed>tbody>tr>td, +.table-condensed>tbody>tr>th, +.table-condensed>tfoot>tr>td, +.table-condensed>tfoot>tr>th, +.table-condensed>thead>tr>td, +.table-condensed>thead>tr>th { + padding: 2px; + text-align: center; + cursor: pointer; +} + +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} + +.datepicker table tr td.day:hover div, +.datepicker table tr td.day.focused div { + background: #eee; + cursor: pointer; +} + +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #888; +} + +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #888; + cursor: default; +} + +.datepicker table tr td.highlighted { + background: #d9edf7; + border-radius: 0; +} + +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + background-color: #fde19a; + background-image: -moz-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: -ms-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); + background-image: -webkit-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: -o-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: linear-gradient(to bottom, #fdd49a, #fdf59a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); + border-color: #fdf59a #fdf59a #fbed50; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #000; +} + +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled] { + background-color: #fdf59a; +} + +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active { + background-color: #fbf069 \9; +} + +.datepicker table tr td.today:hover:hover { + color: #000; +} + +.datepicker table tr td.today.active:hover { + color: #fff; +} + +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: #eee; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + background-color: #f3d17a; + background-image: -moz-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: -ms-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); + background-image: -webkit-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: -o-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: linear-gradient(to bottom, #f3c17a, #f3e97a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); + border-color: #f3e97a #f3e97a #edde34; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled] { + background-color: #f3e97a; +} + +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active { + background-color: #efe24b \9; +} + +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + background-color: #9e9e9e; + background-image: -moz-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: -ms-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080)); + background-image: -webkit-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: -o-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: linear-gradient(to bottom, #b3b3b3, #808080); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); + border-color: #808080 #808080 #595959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled] { + background-color: #808080; +} + +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active { + background-color: #666666 \9; +} + +.datepicker table tr td.active div, +.datepicker table tr td.active:hover div, +.datepicker table tr td.active.disabled div, +.datepicker table tr td.active.disabled:hover div { + background-color: #f96332; + color: #FFFFFF; + box-shadow: 0px 1px 10px 0px rgba(0, 0, 0, 0.2); +} + +.datepicker table tr td.active:hover div, +.datepicker table tr td.active:hover:hover div, +.datepicker table tr td.active.disabled:hover div, +.datepicker table tr td.active.disabled:hover:hover div, +.datepicker table tr td.active:active div, +.datepicker table tr td.active:hover:active div, +.datepicker table tr td.active.disabled:active div, +.datepicker table tr td.active.disabled:hover:active div, +.datepicker table tr td.active.active div, +.datepicker table tr td.active:hover.active div, +.datepicker table tr td.active.disabled.active div, +.datepicker table tr td.active.disabled:hover.active div, +.datepicker table tr td.active.disabled div, +.datepicker table tr td.active:hover.disabled div, +.datepicker table tr td.active.disabled.disabled div, +.datepicker table tr td.active.disabled:hover.disabled div, +.datepicker table tr td.active[disabled] div, +.datepicker table tr td.active:hover[disabled] div, +.datepicker table tr td.active.disabled[disabled] div, +.datepicker table tr td.active.disabled:hover[disabled] div { + background-color: #f96332; +} + +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active { + background-color: #003399 \9; +} + +.datepicker table tr td span { + display: block; + width: 41px; + height: 41px; + line-height: 41px; + float: left; + margin: 1%; + font-size: 14px; + cursor: pointer; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} + +.datepicker table tr td span:hover, +.datepicker table tr td span.focused { + background: #eee; +} + +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #888; + cursor: default; +} + +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + color: #fff; + background-color: #f96332; +} + +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled] { + background-color: #f96332; + box-shadow: 0px 1px 10px 0px rgba(0, 0, 0, 0.2); +} + +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active { + background-color: #003399 \9; +} + +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #888; +} + +.datepicker .datepicker-switch { + width: auto; + border-radius: 0.1875rem; +} + +.datepicker .datepicker-switch, +.datepicker .prev, +.datepicker .next, +.datepicker tfoot tr th { + cursor: pointer; +} + +.datepicker .prev, +.datepicker .next { + width: 35px; + height: 35px; +} + +.datepicker i { + position: relative; + top: 2px; +} + +.datepicker .prev i { + left: -1px; +} + +.datepicker .next i { + right: -1px; +} + +.datepicker .datepicker-switch:hover, +.datepicker .prev:hover, +.datepicker .next:hover, +.datepicker tfoot tr th:hover { + background: #eee; +} + +.datepicker .prev.disabled, +.datepicker .next.disabled { + visibility: hidden; +} + +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} + +.input-append.date .add-on, +.input-prepend.date .add-on { + cursor: pointer; +} + +.input-append.date .add-on i, +.input-prepend.date .add-on i { + margin-top: 3px; +} + +.input-daterange input { + text-align: center; +} + +.input-daterange input:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-daterange input:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-daterange .add-on { + display: inline-block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #fff; + vertical-align: middle; + background-color: #eee; + border: 1px solid #ccc; + margin-left: -5px; + margin-right: -5px; +} + +.btn, +.navbar .navbar-nav>a.btn { + border-width: 2px; + font-weight: 400; + font-size: 0.8571em; + line-height: 1.35em; + margin: 5px 1px; + border: none; + border-radius: 0.1875rem; + padding: 11px 22px; + cursor: pointer; + background-color: #888; + color: #FFFFFF; +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn:active:focus, +.btn:active:hover, +.btn.active:focus, +.btn.active:hover, +.show>.btn.dropdown-toggle, +.show>.btn.dropdown-toggle:focus, +.show>.btn.dropdown-toggle:hover, +.navbar .navbar-nav>a.btn:hover, +.navbar .navbar-nav>a.btn:focus, +.navbar .navbar-nav>a.btn:active, +.navbar .navbar-nav>a.btn.active, +.navbar .navbar-nav>a.btn:active:focus, +.navbar .navbar-nav>a.btn:active:hover, +.navbar .navbar-nav>a.btn.active:focus, +.navbar .navbar-nav>a.btn.active:hover, +.show>.navbar .navbar-nav>a.btn.dropdown-toggle, +.show>.navbar .navbar-nav>a.btn.dropdown-toggle:focus, +.show>.navbar .navbar-nav>a.btn.dropdown-toggle:hover { + background-color: #979797; + color: #FFFFFF; + box-shadow: none; +} + +.btn:hover, +.navbar .navbar-nav>a.btn:hover { + box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.17); +} + +.btn.disabled, +.btn.disabled:hover, +.btn.disabled:focus, +.btn.disabled.focus, +.btn.disabled:active, +.btn.disabled.active, +.btn:disabled, +.btn:disabled:hover, +.btn:disabled:focus, +.btn:disabled.focus, +.btn:disabled:active, +.btn:disabled.active, +.btn[disabled], +.btn[disabled]:hover, +.btn[disabled]:focus, +.btn[disabled].focus, +.btn[disabled]:active, +.btn[disabled].active, +fieldset[disabled] .btn, +fieldset[disabled] .btn:hover, +fieldset[disabled] .btn:focus, +fieldset[disabled] .btn.focus, +fieldset[disabled] .btn:active, +fieldset[disabled] .btn.active, +.navbar .navbar-nav>a.btn.disabled, +.navbar .navbar-nav>a.btn.disabled:hover, +.navbar .navbar-nav>a.btn.disabled:focus, +.navbar .navbar-nav>a.btn.disabled.focus, +.navbar .navbar-nav>a.btn.disabled:active, +.navbar .navbar-nav>a.btn.disabled.active, +.navbar .navbar-nav>a.btn:disabled, +.navbar .navbar-nav>a.btn:disabled:hover, +.navbar .navbar-nav>a.btn:disabled:focus, +.navbar .navbar-nav>a.btn:disabled.focus, +.navbar .navbar-nav>a.btn:disabled:active, +.navbar .navbar-nav>a.btn:disabled.active, +.navbar .navbar-nav>a.btn[disabled], +.navbar .navbar-nav>a.btn[disabled]:hover, +.navbar .navbar-nav>a.btn[disabled]:focus, +.navbar .navbar-nav>a.btn[disabled].focus, +.navbar .navbar-nav>a.btn[disabled]:active, +.navbar .navbar-nav>a.btn[disabled].active, +fieldset[disabled] .navbar .navbar-nav>a.btn, +fieldset[disabled] .navbar .navbar-nav>a.btn:hover, +fieldset[disabled] .navbar .navbar-nav>a.btn:focus, +fieldset[disabled] .navbar .navbar-nav>a.btn.focus, +fieldset[disabled] .navbar .navbar-nav>a.btn:active, +fieldset[disabled] .navbar .navbar-nav>a.btn.active { + background-color: #888; + border-color: #888; +} + +.btn.btn-simple, +.navbar .navbar-nav>a.btn.btn-simple { + color: #888; + border-color: #888; +} + +.btn.btn-simple:hover, +.btn.btn-simple:focus, +.btn.btn-simple:active, +.navbar .navbar-nav>a.btn.btn-simple:hover, +.navbar .navbar-nav>a.btn.btn-simple:focus, +.navbar .navbar-nav>a.btn.btn-simple:active { + background-color: transparent; + color: #979797; + border-color: #979797; + box-shadow: none; +} + +.btn.btn-link, +.navbar .navbar-nav>a.btn.btn-link { + color: #888; +} + +.btn.btn-link:hover, +.btn.btn-link:focus, +.btn.btn-link:active, +.navbar .navbar-nav>a.btn.btn-link:hover, +.navbar .navbar-nav>a.btn.btn-link:focus, +.navbar .navbar-nav>a.btn.btn-link:active { + background-color: transparent; + color: #979797; + text-decoration: none; + box-shadow: none; +} + +.btn:hover, +.btn:focus, +.navbar .navbar-nav>a.btn:hover, +.navbar .navbar-nav>a.btn:focus { + opacity: 1; + filter: alpha(opacity=100); + outline: 0 !important; +} + +.btn:active, +.btn.active, +.open>.btn.dropdown-toggle, +.navbar .navbar-nav>a.btn:active, +.navbar .navbar-nav>a.btn.active, +.open>.navbar .navbar-nav>a.btn.dropdown-toggle { + -webkit-box-shadow: none; + box-shadow: none; + outline: 0 !important; +} + +.btn.btn-icon, +.navbar .navbar-nav>a.btn.btn-icon { + height: 2.375rem; + min-width: 2.375rem; + width: 2.375rem; + padding: 0; + font-size: 0.9375rem; + overflow: hidden; + position: relative; + line-height: normal; +} + +.btn.btn-icon.btn-simple, +.navbar .navbar-nav>a.btn.btn-icon.btn-simple { + padding: 0; +} + +.btn.btn-icon.btn-sm, +.navbar .navbar-nav>a.btn.btn-icon.btn-sm { + height: 1.875rem; + min-width: 1.875rem; + width: 1.875rem; +} + +.btn.btn-icon.btn-sm i.fa, +.btn.btn-icon.btn-sm i.now-ui-icons, +.navbar .navbar-nav>a.btn.btn-icon.btn-sm i.fa, +.navbar .navbar-nav>a.btn.btn-icon.btn-sm i.now-ui-icons { + font-size: 0.6875rem; +} + +.btn.btn-icon.btn-lg, +.navbar .navbar-nav>a.btn.btn-icon.btn-lg { + height: 3.6rem; + min-width: 3.6rem; + width: 3.6rem; +} + +.btn.btn-icon.btn-lg i.now-ui-icons, +.btn.btn-icon.btn-lg i.fa, +.navbar .navbar-nav>a.btn.btn-icon.btn-lg i.now-ui-icons, +.navbar .navbar-nav>a.btn.btn-icon.btn-lg i.fa { + font-size: 1.325rem; +} + +.btn.btn-icon:not(.btn-footer) i.now-ui-icons, +.btn.btn-icon:not(.btn-footer) i.fa, +.navbar .navbar-nav>a.btn.btn-icon:not(.btn-footer) i.now-ui-icons, +.navbar .navbar-nav>a.btn.btn-icon:not(.btn-footer) i.fa { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-12px, -12px); + line-height: 1.5626rem; + width: 25px; +} + +.btn:not(.btn-icon) .now-ui-icons, +.navbar .navbar-nav>a.btn:not(.btn-icon) .now-ui-icons { + position: relative; + top: 1px; +} + +.btn-primary { + background-color: #f96332; + color: #FFFFFF; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary:active:focus, +.btn-primary:active:hover, +.btn-primary.active:focus, +.btn-primary.active:hover, +.show>.btn-primary.dropdown-toggle, +.show>.btn-primary.dropdown-toggle:focus, +.show>.btn-primary.dropdown-toggle:hover { + background-color: #fa7a50; + color: #FFFFFF; + box-shadow: none; +} + +.btn-primary:hover { + box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.17); +} + +.btn-primary.disabled, +.btn-primary.disabled:hover, +.btn-primary.disabled:focus, +.btn-primary.disabled.focus, +.btn-primary.disabled:active, +.btn-primary.disabled.active, +.btn-primary:disabled, +.btn-primary:disabled:hover, +.btn-primary:disabled:focus, +.btn-primary:disabled.focus, +.btn-primary:disabled:active, +.btn-primary:disabled.active, +.btn-primary[disabled], +.btn-primary[disabled]:hover, +.btn-primary[disabled]:focus, +.btn-primary[disabled].focus, +.btn-primary[disabled]:active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary, +fieldset[disabled] .btn-primary:hover, +fieldset[disabled] .btn-primary:focus, +fieldset[disabled] .btn-primary.focus, +fieldset[disabled] .btn-primary:active, +fieldset[disabled] .btn-primary.active { + background-color: #f96332; + border-color: #f96332; +} + +.btn-primary.btn-simple { + color: #f96332; + border-color: #f96332; +} + +.btn-primary.btn-simple:hover, +.btn-primary.btn-simple:focus, +.btn-primary.btn-simple:active { + background-color: transparent; + color: #fa7a50; + border-color: #fa7a50; + box-shadow: none; +} + +.btn-primary.btn-link { + color: #f96332; +} + +.btn-primary.btn-link:hover, +.btn-primary.btn-link:focus, +.btn-primary.btn-link:active { + background-color: transparent; + color: #fa7a50; + text-decoration: none; + box-shadow: none; +} + +.btn-success { + background-color: #18ce0f; + color: #FFFFFF; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success:active:focus, +.btn-success:active:hover, +.btn-success.active:focus, +.btn-success.active:hover, +.show>.btn-success.dropdown-toggle, +.show>.btn-success.dropdown-toggle:focus, +.show>.btn-success.dropdown-toggle:hover { + background-color: #1beb11; + color: #FFFFFF; + box-shadow: none; +} + +.btn-success:hover { + box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.17); +} + +.btn-success.disabled, +.btn-success.disabled:hover, +.btn-success.disabled:focus, +.btn-success.disabled.focus, +.btn-success.disabled:active, +.btn-success.disabled.active, +.btn-success:disabled, +.btn-success:disabled:hover, +.btn-success:disabled:focus, +.btn-success:disabled.focus, +.btn-success:disabled:active, +.btn-success:disabled.active, +.btn-success[disabled], +.btn-success[disabled]:hover, +.btn-success[disabled]:focus, +.btn-success[disabled].focus, +.btn-success[disabled]:active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success, +fieldset[disabled] .btn-success:hover, +fieldset[disabled] .btn-success:focus, +fieldset[disabled] .btn-success.focus, +fieldset[disabled] .btn-success:active, +fieldset[disabled] .btn-success.active { + background-color: #18ce0f; + border-color: #18ce0f; +} + +.btn-success.btn-simple { + color: #18ce0f; + border-color: #18ce0f; +} + +.btn-success.btn-simple:hover, +.btn-success.btn-simple:focus, +.btn-success.btn-simple:active { + background-color: transparent; + color: #1beb11; + border-color: #1beb11; + box-shadow: none; +} + +.btn-success.btn-link { + color: #18ce0f; +} + +.btn-success.btn-link:hover, +.btn-success.btn-link:focus, +.btn-success.btn-link:active { + background-color: transparent; + color: #1beb11; + text-decoration: none; + box-shadow: none; +} + +.btn-info { + background-color: #2CA8FF; + color: #FFFFFF; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info:active:focus, +.btn-info:active:hover, +.btn-info.active:focus, +.btn-info.active:hover, +.show>.btn-info.dropdown-toggle, +.show>.btn-info.dropdown-toggle:focus, +.show>.btn-info.dropdown-toggle:hover { + background-color: #4bb5ff; + color: #FFFFFF; + box-shadow: none; +} + +.btn-info:hover { + box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.17); +} + +.btn-info.disabled, +.btn-info.disabled:hover, +.btn-info.disabled:focus, +.btn-info.disabled.focus, +.btn-info.disabled:active, +.btn-info.disabled.active, +.btn-info:disabled, +.btn-info:disabled:hover, +.btn-info:disabled:focus, +.btn-info:disabled.focus, +.btn-info:disabled:active, +.btn-info:disabled.active, +.btn-info[disabled], +.btn-info[disabled]:hover, +.btn-info[disabled]:focus, +.btn-info[disabled].focus, +.btn-info[disabled]:active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info, +fieldset[disabled] .btn-info:hover, +fieldset[disabled] .btn-info:focus, +fieldset[disabled] .btn-info.focus, +fieldset[disabled] .btn-info:active, +fieldset[disabled] .btn-info.active { + background-color: #2CA8FF; + border-color: #2CA8FF; +} + +.btn-info.btn-simple { + color: #2CA8FF; + border-color: #2CA8FF; +} + +.btn-info.btn-simple:hover, +.btn-info.btn-simple:focus, +.btn-info.btn-simple:active { + background-color: transparent; + color: #4bb5ff; + border-color: #4bb5ff; + box-shadow: none; +} + +.btn-info.btn-link { + color: #2CA8FF; +} + +.btn-info.btn-link:hover, +.btn-info.btn-link:focus, +.btn-info.btn-link:active { + background-color: transparent; + color: #4bb5ff; + text-decoration: none; + box-shadow: none; +} + +.btn-warning { + background-color: #FFB236; + color: #FFFFFF; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning:active:focus, +.btn-warning:active:hover, +.btn-warning.active:focus, +.btn-warning.active:hover, +.show>.btn-warning.dropdown-toggle, +.show>.btn-warning.dropdown-toggle:focus, +.show>.btn-warning.dropdown-toggle:hover { + background-color: #ffbe55; + color: #FFFFFF; + box-shadow: none; +} + +.btn-warning:hover { + box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.17); +} + +.btn-warning.disabled, +.btn-warning.disabled:hover, +.btn-warning.disabled:focus, +.btn-warning.disabled.focus, +.btn-warning.disabled:active, +.btn-warning.disabled.active, +.btn-warning:disabled, +.btn-warning:disabled:hover, +.btn-warning:disabled:focus, +.btn-warning:disabled.focus, +.btn-warning:disabled:active, +.btn-warning:disabled.active, +.btn-warning[disabled], +.btn-warning[disabled]:hover, +.btn-warning[disabled]:focus, +.btn-warning[disabled].focus, +.btn-warning[disabled]:active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning, +fieldset[disabled] .btn-warning:hover, +fieldset[disabled] .btn-warning:focus, +fieldset[disabled] .btn-warning.focus, +fieldset[disabled] .btn-warning:active, +fieldset[disabled] .btn-warning.active { + background-color: #FFB236; + border-color: #FFB236; +} + +.btn-warning.btn-simple { + color: #FFB236; + border-color: #FFB236; +} + +.btn-warning.btn-simple:hover, +.btn-warning.btn-simple:focus, +.btn-warning.btn-simple:active { + background-color: transparent; + color: #ffbe55; + border-color: #ffbe55; + box-shadow: none; +} + +.btn-warning.btn-link { + color: #FFB236; +} + +.btn-warning.btn-link:hover, +.btn-warning.btn-link:focus, +.btn-warning.btn-link:active { + background-color: transparent; + color: #ffbe55; + text-decoration: none; + box-shadow: none; +} + +.btn-danger { + background-color: #FF3636; + color: #FFFFFF; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger:active:focus, +.btn-danger:active:hover, +.btn-danger.active:focus, +.btn-danger.active:hover, +.show>.btn-danger.dropdown-toggle, +.show>.btn-danger.dropdown-toggle:focus, +.show>.btn-danger.dropdown-toggle:hover { + background-color: #ff5555; + color: #FFFFFF; + box-shadow: none; +} + +.btn-danger:hover { + box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.17); +} + +.btn-danger.disabled, +.btn-danger.disabled:hover, +.btn-danger.disabled:focus, +.btn-danger.disabled.focus, +.btn-danger.disabled:active, +.btn-danger.disabled.active, +.btn-danger:disabled, +.btn-danger:disabled:hover, +.btn-danger:disabled:focus, +.btn-danger:disabled.focus, +.btn-danger:disabled:active, +.btn-danger:disabled.active, +.btn-danger[disabled], +.btn-danger[disabled]:hover, +.btn-danger[disabled]:focus, +.btn-danger[disabled].focus, +.btn-danger[disabled]:active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger, +fieldset[disabled] .btn-danger:hover, +fieldset[disabled] .btn-danger:focus, +fieldset[disabled] .btn-danger.focus, +fieldset[disabled] .btn-danger:active, +fieldset[disabled] .btn-danger.active { + background-color: #FF3636; + border-color: #FF3636; +} + +.btn-danger.btn-simple { + color: #FF3636; + border-color: #FF3636; +} + +.btn-danger.btn-simple:hover, +.btn-danger.btn-simple:focus, +.btn-danger.btn-simple:active { + background-color: transparent; + color: #ff5555; + border-color: #ff5555; + box-shadow: none; +} + +.btn-danger.btn-link { + color: #FF3636; +} + +.btn-danger.btn-link:hover, +.btn-danger.btn-link:focus, +.btn-danger.btn-link:active { + background-color: transparent; + color: #ff5555; + text-decoration: none; + box-shadow: none; +} + +.btn-neutral { + background-color: #FFFFFF; + color: #f96332; +} + +.btn-neutral:hover, +.btn-neutral:focus, +.btn-neutral:active, +.btn-neutral.active, +.btn-neutral:active:focus, +.btn-neutral:active:hover, +.btn-neutral.active:focus, +.btn-neutral.active:hover, +.show>.btn-neutral.dropdown-toggle, +.show>.btn-neutral.dropdown-toggle:focus, +.show>.btn-neutral.dropdown-toggle:hover { + background-color: #FFFFFF; + color: #FFFFFF; + box-shadow: none; +} + +.btn-neutral:hover { + box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.17); +} + +.btn-neutral.disabled, +.btn-neutral.disabled:hover, +.btn-neutral.disabled:focus, +.btn-neutral.disabled.focus, +.btn-neutral.disabled:active, +.btn-neutral.disabled.active, +.btn-neutral:disabled, +.btn-neutral:disabled:hover, +.btn-neutral:disabled:focus, +.btn-neutral:disabled.focus, +.btn-neutral:disabled:active, +.btn-neutral:disabled.active, +.btn-neutral[disabled], +.btn-neutral[disabled]:hover, +.btn-neutral[disabled]:focus, +.btn-neutral[disabled].focus, +.btn-neutral[disabled]:active, +.btn-neutral[disabled].active, +fieldset[disabled] .btn-neutral, +fieldset[disabled] .btn-neutral:hover, +fieldset[disabled] .btn-neutral:focus, +fieldset[disabled] .btn-neutral.focus, +fieldset[disabled] .btn-neutral:active, +fieldset[disabled] .btn-neutral.active { + background-color: #FFFFFF; + border-color: #FFFFFF; +} + +.btn-neutral.btn-danger { + color: #FF3636; +} + +.btn-neutral.btn-danger:hover, +.btn-neutral.btn-danger:focus, +.btn-neutral.btn-danger:active { + color: #ff5555; +} + +.btn-neutral.btn-info { + color: #2CA8FF; +} + +.btn-neutral.btn-info:hover, +.btn-neutral.btn-info:focus, +.btn-neutral.btn-info:active { + color: #4bb5ff; +} + +.btn-neutral.btn-warning { + color: #FFB236; +} + +.btn-neutral.btn-warning:hover, +.btn-neutral.btn-warning:focus, +.btn-neutral.btn-warning:active { + color: #ffbe55; +} + +.btn-neutral.btn-success { + color: #18ce0f; +} + +.btn-neutral.btn-success:hover, +.btn-neutral.btn-success:focus, +.btn-neutral.btn-success:active { + color: #1beb11; +} + +.btn-neutral.btn-default { + color: #888; +} + +.btn-neutral.btn-default:hover, +.btn-neutral.btn-default:focus, +.btn-neutral.btn-default:active { + color: #979797; +} + +.btn-neutral.active, +.btn-neutral:active, +.btn-neutral:active:focus, +.btn-neutral:active:hover, +.btn-neutral.active:focus, +.btn-neutral.active:hover, +.show>.btn-neutral.dropdown-toggle, +.show>.btn-neutral.dropdown-toggle:focus, +.show>.btn-neutral.dropdown-toggle:hover { + background-color: #FFFFFF; + color: #fa7a50; + box-shadow: none; +} + +.btn-neutral:hover, +.btn-neutral:focus { + color: #fa7a50; +} + +.btn-neutral:hover:not(.nav-link), +.btn-neutral:focus:not(.nav-link) { + box-shadow: none; +} + +.btn-neutral.btn-simple { + color: #FFFFFF; + border-color: #FFFFFF; +} + +.btn-neutral.btn-simple:hover, +.btn-neutral.btn-simple:focus, +.btn-neutral.btn-simple:active { + background-color: transparent; + color: #FFFFFF; + border-color: #FFFFFF; + box-shadow: none; +} + +.btn-neutral.btn-link { + color: #FFFFFF; +} + +.btn-neutral.btn-link:hover, +.btn-neutral.btn-link:focus, +.btn-neutral.btn-link:active { + background-color: transparent; + color: #FFFFFF; + text-decoration: none; + box-shadow: none; +} + +.btn:disabled, +.btn[disabled], +.btn.disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.btn-round { + border-width: 1px; + border-radius: 30px !important; + padding: 11px 23px; +} + +.btn-round.btn-simple { + padding: 10px 22px; +} + +.btn-simple { + border: 1px solid; + border-color: #888; + padding: 10px 22px; + background-color: transparent; +} + +.btn-simple.disabled, +.btn-simple.disabled:hover, +.btn-simple.disabled:focus, +.btn-simple.disabled.focus, +.btn-simple.disabled:active, +.btn-simple.disabled.active, +.btn-simple:disabled, +.btn-simple:disabled:hover, +.btn-simple:disabled:focus, +.btn-simple:disabled.focus, +.btn-simple:disabled:active, +.btn-simple:disabled.active, +.btn-simple[disabled], +.btn-simple[disabled]:hover, +.btn-simple[disabled]:focus, +.btn-simple[disabled].focus, +.btn-simple[disabled]:active, +.btn-simple[disabled].active, +fieldset[disabled] .btn-simple, +fieldset[disabled] .btn-simple:hover, +fieldset[disabled] .btn-simple:focus, +fieldset[disabled] .btn-simple.focus, +fieldset[disabled] .btn-simple:active, +fieldset[disabled] .btn-simple.active, +.btn-link.disabled, +.btn-link.disabled:hover, +.btn-link.disabled:focus, +.btn-link.disabled.focus, +.btn-link.disabled:active, +.btn-link.disabled.active, +.btn-link:disabled, +.btn-link:disabled:hover, +.btn-link:disabled:focus, +.btn-link:disabled.focus, +.btn-link:disabled:active, +.btn-link:disabled.active, +.btn-link[disabled], +.btn-link[disabled]:hover, +.btn-link[disabled]:focus, +.btn-link[disabled].focus, +.btn-link[disabled]:active, +.btn-link[disabled].active, +fieldset[disabled] .btn-link, +fieldset[disabled] .btn-link:hover, +fieldset[disabled] .btn-link:focus, +fieldset[disabled] .btn-link.focus, +fieldset[disabled] .btn-link:active, +fieldset[disabled] .btn-link.active { + background-color: transparent; +} + +.btn-lg { + font-size: 1em; + border-radius: 0.25rem; + padding: 15px 48px; +} + +.btn-lg.btn-simple { + padding: 14px 47px; +} + +.btn-sm { + font-size: 14px; + border-radius: 0.1875rem; + padding: 5px 15px; +} + +.btn-sm.btn-simple { + padding: 4px 14px; +} + +.btn-link { + border: 0; + padding: 0.5rem 0.7rem; + background-color: transparent; +} + +.btn-wd { + min-width: 140px; +} + +.btn-group.select { + width: 100%; +} + +.btn-group.select .btn { + text-align: left; +} + +.btn-group.select .caret { + position: absolute; + top: 50%; + margin-top: -1px; + right: 8px; +} + +.form-control::-moz-placeholder { + color: #DDDDDD; + opacity: 1; + filter: alpha(opacity=100); +} + +.form-control:-moz-placeholder { + color: #DDDDDD; + opacity: 1; + filter: alpha(opacity=100); +} + +.form-control::-webkit-input-placeholder { + color: #DDDDDD; + opacity: 1; + filter: alpha(opacity=100); +} + +.form-control:-ms-input-placeholder { + color: #DDDDDD; + opacity: 1; + filter: alpha(opacity=100); +} + +.form-control { + background-color: transparent; + border: 1px solid #E3E3E3; + border-radius: 30px; + color: #2c2c2c; + line-height: normal; + font-size: 0.8571em; + -webkit-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -moz-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -o-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -ms-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -webkit-box-shadow: none; + box-shadow: none; +} + +.has-success .form-control { + border-color: #E3E3E3; +} + +.form-control:focus { + border: 1px solid #f96332; + -webkit-box-shadow: none; + box-shadow: none; + outline: 0 !important; + color: #2c2c2c; +} + +.form-control:focus+.input-group-addon, +.form-control:focus~.input-group-addon { + border: 1px solid #f96332; + border-left: none; + background-color: transparent; +} + +.has-success .form-control, +.has-error .form-control, +.has-success .form-control:focus, +.has-error .form-control:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.has-success .form-control:focus { + border-color: #1be611; +} + +.has-danger .form-control.form-control-success, +.has-danger .form-control.form-control-danger, +.has-success .form-control.form-control-success, +.has-success .form-control.form-control-danger { + background-image: none; +} + +.has-danger .form-control { + border-color: #ffcfcf; + color: #FF3636; + background-color: rgba(222, 222, 222, 0.1); +} + +.has-danger .form-control:focus { + background-color: #FFFFFF; +} + +.form-control+.form-control-feedback { + border-radius: 0.25rem; + font-size: 14px; + margin-top: 0; + position: absolute; + left: 18px; + bottom: -20px; + vertical-align: middle; +} + +.open .form-control { + border-radius: 0.25rem 0.25rem 0 0; + border-bottom-color: transparent; +} + +.form-control+.input-group-addon { + background-color: #FFFFFF; +} + +.has-success:after, +.has-danger:after { + font-family: 'Nucleo Outline'; + content: "\ea22"; + display: inline-block; + position: absolute; + right: 15px; + bottom: 10px; + color: #18ce0f; + font-size: 11px; +} + +.has-success.input-lg:after, +.has-danger.input-lg:after { + font-size: 13px; + top: 13px; +} + +.has-danger:after { + content: "\ea53"; + color: #FF3636; +} + +.form-group.form-group-no-border.input-lg .input-group-addon, +.input-group.form-group-no-border.input-lg .input-group-addon { + padding: 15px 0 15px 19px; +} + +.form-group.form-group-no-border.input-lg .form-control, +.input-group.form-group-no-border.input-lg .form-control { + padding: 15px 19px; +} + +.form-group.form-group-no-border.input-lg .form-control+.input-group-addon, +.input-group.form-group-no-border.input-lg .form-control+.input-group-addon { + padding: 15px 19px 15px 0; +} + +.form-group.input-lg .form-control, +.input-group.input-lg .form-control { + padding: 14px 18px; +} + +.form-group.input-lg .form-control+.input-group-addon, +.input-group.input-lg .form-control+.input-group-addon { + padding: 14px 18px 14px 0; +} + +.form-group.input-lg .input-group-addon, +.input-group.input-lg .input-group-addon { + padding: 14px 0 15px 18px; +} + +.form-group.input-lg .input-group-addon+.form-control, +.input-group.input-lg .input-group-addon+.form-control { + padding: 15px 18px 15px 16px; +} + +.form-group.form-group-no-border .form-control, +.input-group.form-group-no-border .form-control { + padding: 11px 19px; +} + +.form-group.form-group-no-border .form-control+.input-group-addon, +.input-group.form-group-no-border .form-control+.input-group-addon { + padding: 11px 19px 11px 0; +} + +.form-group.form-group-no-border .input-group-addon, +.input-group.form-group-no-border .input-group-addon { + padding: 11px 0 11px 19px; +} + +.form-group .form-control, +.input-group .form-control { + padding: 10px 18px 10px 18px; +} + +.form-group .form-control+.input-group-addon, +.input-group .form-control+.input-group-addon { + padding: 10px 18px 10px 0; +} + +.form-group .input-group-addon, +.input-group .input-group-addon { + padding: 10px 0 10px 18px; +} + +.form-group .input-group-addon+.form-control, +.form-group .input-group-addon~.form-control, +.input-group .input-group-addon+.form-control, +.input-group .input-group-addon~.form-control { + padding: 10px 19px 11px 16px; +} + +.form-group.form-group-no-border .form-control, +.form-group.form-group-no-border .form-control+.input-group-addon, +.input-group.form-group-no-border .form-control, +.input-group.form-group-no-border .form-control+.input-group-addon { + background-color: rgba(222, 222, 222, 0.3); + border: medium none; +} + +.form-group.form-group-no-border .form-control:focus, +.form-group.form-group-no-border .form-control:active, +.form-group.form-group-no-border .form-control:active, +.form-group.form-group-no-border .form-control+.input-group-addon:focus, +.form-group.form-group-no-border .form-control+.input-group-addon:active, +.form-group.form-group-no-border .form-control+.input-group-addon:active, +.input-group.form-group-no-border .form-control:focus, +.input-group.form-group-no-border .form-control:active, +.input-group.form-group-no-border .form-control:active, +.input-group.form-group-no-border .form-control+.input-group-addon:focus, +.input-group.form-group-no-border .form-control+.input-group-addon:active, +.input-group.form-group-no-border .form-control+.input-group-addon:active { + border: medium none; + background-color: rgba(222, 222, 222, 0.5); +} + +.form-group.form-group-no-border .form-control:focus+.input-group-addon, +.input-group.form-group-no-border .form-control:focus+.input-group-addon { + background-color: rgba(222, 222, 222, 0.5); +} + +.form-group.form-group-no-border .input-group-addon, +.input-group.form-group-no-border .input-group-addon { + background-color: rgba(222, 222, 222, 0.3); + border: none; +} + +.has-error .form-control-feedback, +.has-error .control-label { + color: #FF3636; +} + +.has-success .form-control-feedback, +.has-success .control-label { + color: #18ce0f; +} + +.input-group-addon { + background-color: #FFFFFF; + border: 1px solid #E3E3E3; + border-radius: 30px; + color: #555555; + padding: -0.5rem 0 -0.5rem -0.3rem; + -webkit-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -moz-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -o-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -ms-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; +} + +.has-success .input-group-addon, +.has-danger .input-group-addon { + background-color: #FFFFFF; +} + +.has-danger .form-control:focus+.input-group-addon { + color: #FF3636; +} + +.has-success .form-control:focus+.input-group-addon { + color: #18ce0f; +} + +.input-group-addon+.form-control, +.input-group-addon~.form-control { + padding: -0.5rem 0.7rem; + padding-left: 18px; +} + +.input-group-addon i { + width: 17px; +} + +.input-group-focus .input-group-addon { + background-color: #FFFFFF; + border-color: #f96332; +} + +.input-group-focus.form-group-no-border .input-group-addon { + background-color: rgba(222, 222, 222, 0.5); +} + +.input-group, +.form-group { + margin-bottom: 10px; +} + +.input-group[disabled] .input-group-addon { + background-color: #E3E3E3; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child>.dropdown-toggle, +.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) { + border-right: 0 none; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child>.dropdown-toggle, +.input-group-btn:first-child>.btn:not(:first-child) { + border-left: 0 none; +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #E3E3E3; + color: #888; + cursor: not-allowed; +} + +.input-group-btn .btn { + border-width: 1px; + padding: 11px 0.7rem; +} + +.input-group-btn .btn-default:not(.btn-fill) { + border-color: #DDDDDD; +} + +.input-group-btn:last-child>.btn { + margin-left: 0; +} + +textarea.form-control { + max-width: 100%; + padding: 10px 10px 0 0; + resize: none; + border: none; + border-bottom: 1px solid #E3E3E3; + border-radius: 0; + line-height: 2; +} + +textarea.form-control:focus, +textarea.form-control:active { + border-left: none; + border-top: none; + border-right: none; +} + +.has-success.form-group .form-control, +.has-success.form-group.form-group-no-border .form-control, +.has-danger.form-group .form-control, +.has-danger.form-group.form-group-no-border .form-control { + padding-right: 40px; +} + +.form-group { + position: relative; +} + +.form-group.has-error, +.form-group.has-danger { + margin-bottom: 20px; +} + +.checkbox, +.radio { + margin-bottom: 12px; +} + +.checkbox label, +.radio label { + display: inline-block; + position: relative; + cursor: pointer; + padding-left: 35px; + line-height: 26px; + margin-bottom: 0; +} + +.radio label { + padding-left: 28px; +} + +.checkbox label::before, +.checkbox label::after { + content: " "; + display: inline-block; + position: absolute; + width: 26px; + height: 26px; + left: 0; + cursor: pointer; + border-radius: 3px; + top: 0; + background-color: transparent; + border: 1px solid #E3E3E3; + -webkit-transition: opacity 0.3s linear; + -moz-transition: opacity 0.3s linear; + -o-transition: opacity 0.3s linear; + -ms-transition: opacity 0.3s linear; + transition: opacity 0.3s linear; +} + +.checkbox label::after { + font-family: 'Nucleo Outline'; + content: "\ea22"; + top: 0px; + text-align: center; + font-size: 14px; + opacity: 0; + color: #555555; + border: 0; + background-color: inherit; +} + +.checkbox input[type="checkbox"], +.radio input[type="radio"] { + opacity: 0; + position: absolute; + visibility: hidden; +} + +.checkbox input[type="checkbox"]:checked+label::after { + opacity: 1; +} + +.checkbox input[type="checkbox"]:disabled+label, +.radio input[type="radio"]:disabled+label { + color: #9A9A9A; + opacity: .5; +} + +.checkbox input[type="checkbox"]:disabled+label::before, +.checkbox input[type="checkbox"]:disabled+label::after { + cursor: not-allowed; +} + +.checkbox input[type="checkbox"]:disabled+label, +.radio input[type="radio"]:disabled+label { + cursor: not-allowed; +} + +.checkbox.checkbox-circle label::before { + border-radius: 50%; +} + +.checkbox.checkbox-inline { + margin-top: 0; +} + +.checkbox-primary input[type="checkbox"]:checked+label::before { + background-color: #428bca; + border-color: #428bca; +} + +.checkbox-primary input[type="checkbox"]:checked+label::after { + color: #fff; +} + +.checkbox-danger input[type="checkbox"]:checked+label::before { + background-color: #d9534f; + border-color: #d9534f; +} + +.checkbox-danger input[type="checkbox"]:checked+label::after { + color: #fff; +} + +.checkbox-info input[type="checkbox"]:checked+label::before { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.checkbox-info input[type="checkbox"]:checked+label::after { + color: #fff; +} + +.checkbox-warning input[type="checkbox"]:checked+label::before { + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.checkbox-warning input[type="checkbox"]:checked+label::after { + color: #fff; +} + +.checkbox-success input[type="checkbox"]:checked+label::before { + background-color: #5cb85c; + border-color: #5cb85c; +} + +.checkbox-success input[type="checkbox"]:checked+label::after { + color: #fff; +} + +.radio label::before, +.radio label::after { + content: " "; + width: 20px; + height: 20px; + border-radius: 50%; + border: 1px solid #E3E3E3; + display: inline-block; + position: absolute; + left: 3px; + top: 3px; + padding: 1px; + -webkit-transition: opacity 0.3s linear; + -moz-transition: opacity 0.3s linear; + -o-transition: opacity 0.3s linear; + -ms-transition: opacity 0.3s linear; + transition: opacity 0.3s linear; +} + +.radio input[type="radio"]+label:after, +.radio input[type="radio"] { + opacity: 0; +} + +.radio input[type="radio"]:checked+label::after { + width: 4px; + height: 4px; + background-color: #555555; + border-color: #555555; + top: 11px; + left: 11px; + opacity: 1; +} + +.radio input[type="radio"]:checked+label::after { + opacity: 1; +} + +.radio input[type="radio"]:disabled+label { + color: #9A9A9A; +} + +.radio input[type="radio"]:disabled+label::before, +.radio input[type="radio"]:disabled+label::after { + color: #9A9A9A; +} + +.radio.radio-inline { + margin-top: 0; +} + +.progress-container { + position: relative; +} + +.progress-container+.progress-container, +.progress-container~.progress-container { + margin-top: 15px; +} + +.progress-container .progress-badge { + color: #888; + font-size: 0.8571em; + text-transform: uppercase; +} + +.progress-container .progress { + height: 1px; + border-radius: 0; + box-shadow: none; + background: rgba(222, 222, 222, 0.8); + margin-top: 14px; +} + +.progress-container .progress .progress-bar { + box-shadow: none; + background-color: #888; +} + +.progress-container .progress .progress-value { + position: absolute; + top: 2px; + right: 0; + color: #888; + font-size: 0.8571em; +} + +.progress-container.progress-neutral .progress { + background: rgba(255, 255, 255, 0.3); +} + +.progress-container.progress-neutral .progress-bar { + background: #FFFFFF; +} + +.progress-container.progress-neutral .progress-value, +.progress-container.progress-neutral .progress-badge { + color: #FFFFFF; +} + +.progress-container.progress-primary .progress { + background: rgba(249, 99, 50, 0.3); +} + +.progress-container.progress-primary .progress-bar { + background: #f96332; +} + +.progress-container.progress-primary .progress-value, +.progress-container.progress-primary .progress-badge { + color: #f96332; +} + +.progress-container.progress-info .progress { + background: rgba(44, 168, 255, 0.3); +} + +.progress-container.progress-info .progress-bar { + background: #2CA8FF; +} + +.progress-container.progress-info .progress-value, +.progress-container.progress-info .progress-badge { + color: #2CA8FF; +} + +.progress-container.progress-success .progress { + background: rgba(24, 206, 15, 0.3); +} + +.progress-container.progress-success .progress-bar { + background: #18ce0f; +} + +.progress-container.progress-success .progress-value, +.progress-container.progress-success .progress-badge { + color: #18ce0f; +} + +.progress-container.progress-warning .progress { + background: rgba(255, 178, 54, 0.3); +} + +.progress-container.progress-warning .progress-bar { + background: #FFB236; +} + +.progress-container.progress-warning .progress-value, +.progress-container.progress-warning .progress-badge { + color: #FFB236; +} + +.progress-container.progress-danger .progress { + background: rgba(255, 54, 54, 0.3); +} + +.progress-container.progress-danger .progress-bar { + background: #FF3636; +} + +.progress-container.progress-danger .progress-value, +.progress-container.progress-danger .progress-badge { + color: #FF3636; +} + + +/* badges */ + +.badge { + border-radius: 8px; + padding: 4px 8px; + text-transform: uppercase; + font-size: 0.7142em; + line-height: 12px; + background-color: transparent; + border: 1px solid; + margin-bottom: 5px; + border-radius: 0.875rem; +} + +.badge-icon { + padding: 0.4em 0.55em; +} + +.badge-icon i { + font-size: 0.8em; +} + +.badge-default { + border-color: #888; + color: #888; +} + +.badge-primary { + border-color: #f96332; + color: #f96332; +} + +.badge-info { + border-color: #2CA8FF; + color: #2CA8FF; +} + +.badge-success { + border-color: #18ce0f; + color: #18ce0f; +} + +.badge-warning { + border-color: #FFB236; + color: #FFB236; +} + +.badge-danger { + border-color: #FF3636; + color: #FF3636; +} + +.badge-neutral { + border-color: #FFFFFF; + color: #FFFFFF; +} + +.pagination .page-item .page-link { + border: 0; + border-radius: 30px !important; + transition: all .3s; + padding: 0px 11px; + margin: 0 3px; + min-width: 30px; + text-align: center; + height: 30px; + line-height: 30px; + color: #2c2c2c; + cursor: pointer; + font-size: 14px; + text-transform: uppercase; + background: transparent; +} + +.pagination .page-item .page-link:hover, +.pagination .page-item .page-link:focus { + color: #2c2c2c; + background-color: rgba(222, 222, 222, 0.3); + border: none; +} + +.pagination .arrow-margin-left, +.pagination .arrow-margin-right { + position: absolute; +} + +.pagination .arrow-margin-right { + right: 0; +} + +.pagination .arrow-margin-left { + left: 0; +} + +.pagination .page-item.active>.page-link { + color: #E3E3E3; + box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2); +} + +.pagination .page-item.active>.page-link, +.pagination .page-item.active>.page-link:focus, +.pagination .page-item.active>.page-link:hover { + background-color: #888; + border-color: #888; + color: #FFFFFF; +} + +.pagination .page-item.disabled>.page-link { + opacity: .5; + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +.pagination.pagination-info .page-item.active>.page-link, +.pagination.pagination-info .page-item.active>.page-link:focus, +.pagination.pagination-info .page-item.active>.page-link:hover { + background-color: #2CA8FF; + border-color: #2CA8FF; +} + +.pagination.pagination-success .page-item.active>.page-link, +.pagination.pagination-success .page-item.active>.page-link:focus, +.pagination.pagination-success .page-item.active>.page-link:hover { + background-color: #18ce0f; + border-color: #18ce0f; +} + +.pagination.pagination-primary .page-item.active>.page-link, +.pagination.pagination-primary .page-item.active>.page-link:focus, +.pagination.pagination-primary .page-item.active>.page-link:hover { + background-color: #f96332; + border-color: #f96332; +} + +.pagination.pagination-warning .page-item.active>.page-link, +.pagination.pagination-warning .page-item.active>.page-link:focus, +.pagination.pagination-warning .page-item.active>.page-link:hover { + background-color: #FFB236; + border-color: #FFB236; +} + +.pagination.pagination-danger .page-item.active>.page-link, +.pagination.pagination-danger .page-item.active>.page-link:focus, +.pagination.pagination-danger .page-item.active>.page-link:hover { + background-color: #FF3636; + border-color: #FF3636; +} + +.pagination.pagination-neutral .page-item>.page-link { + color: #FFFFFF; +} + +.pagination.pagination-neutral .page-item>.page-link:focus, +.pagination.pagination-neutral .page-item>.page-link:hover { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +.pagination.pagination-neutral .page-item.active>.page-link, +.pagination.pagination-neutral .page-item.active>.page-link:focus, +.pagination.pagination-neutral .page-item.active>.page-link:hover { + background-color: #FFFFFF; + border-color: #FFFFFF; + color: #f96332; +} + +button, +input, +optgroup, +select, +textarea { +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 400; +} + +small { + font-size: 60%; +} + +a { + color: #f96332; +} + +a:hover, +a:focus { + color: #f96332; +} + +h1, +.h1 { + font-size: 3.5em; + line-height: 1.15; + margin-bottom: 30px; +} + +h1 small, +.h1 small { + font-weight: 700; + text-transform: uppercase; + opacity: .8; +} + +h2, +.h2 { + font-size: 2.5em; + margin-bottom: 30px; +} + +h3, +.h3 { + font-size: 2em; + margin-bottom: 30px; + line-height: 1.4em; +} + +h4, +.h4 { + font-size: 1.714em; + line-height: 1.45em; + margin-top: 30px; + margin-bottom: 15px; +} + +h4+.category, +h4.title+.category, +.h4+.category, +.h4.title+.category { + margin-top: -10px; +} + +h5, +.h5 { + font-size: 1.57em; + line-height: 1.4em; + margin-bottom: 15px; +} + +h6, +.h6 { + font-size: 1em; + font-weight: 700; + text-transform: uppercase; +} + +p { + line-height: 1.61em; +} + +.description p, +p.description { + font-size: 1.14em; +} + +.title { + font-weight: 700; +} + +.title.title-up { + text-transform: uppercase; +} + +.title.title-up a { + color: #2c2c2c; + text-decoration: none; +} + +.title+.category { + margin-top: -25px; +} + +.description, +.card-description, +.footer-big p { + color: #9A9A9A; + font-weight: 300; +} + +.category { + text-transform: uppercase; + font-weight: 700; + color: #9A9A9A; +} + +.text-primary { + color: #f96332 !important; +} + +.text-info { + color: #2CA8FF !important; +} + +.text-success { + color: #18ce0f !important; +} + +.text-warning { + color: #FFB236 !important; +} + +.text-danger { + color: #FF3636 !important; +} + +.text-black { + color: #444; +} + +.blockquote { + border-left: none; + border: 1px solid #888; + padding: 20px; + font-size: 1.1em; + line-height: 1.8; +} + +.blockquote small { + color: #888; + font-size: 0.8571em; + text-transform: uppercase; +} + +.blockquote.blockquote-primary { + border-color: #f96332; + color: #f96332; +} + +.blockquote.blockquote-primary small { + color: #f96332; +} + +.blockquote.blockquote-danger { + border-color: #FF3636; + color: #FF3636; +} + +.blockquote.blockquote-danger small { + color: #FF3636; +} + +.blockquote.blockquote-white { + border-color: rgba(255, 255, 255, 0.8); + color: #FFFFFF; +} + +.blockquote.blockquote-white small { + color: rgba(255, 255, 255, 0.8); +} + +body { + color: #2c2c2c; + font-size: 14px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} + +.main { + position: relative; + background: #FFFFFF; +} + + +/* Animations */ + +.nav-pills .nav-link, +.nav-item .nav-link, +.navbar, +.nav-tabs .nav-link { + -webkit-transition: all 300ms ease 0s; + -moz-transition: all 300ms ease 0s; + -o-transition: all 300ms ease 0s; + -ms-transition: all 300ms ease 0s; + transition: all 300ms ease 0s; +} + +.dropdown-toggle:after, +.bootstrap-switch-label:before { + -webkit-transition: all 150ms ease 0s; + -moz-transition: all 150ms ease 0s; + -o-transition: all 150ms ease 0s; + -ms-transition: all 150ms ease 0s; + transition: all 150ms ease 0s; +} + +.dropdown-toggle[aria-expanded="true"]:after { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.button-bar { + display: block; + position: relative; + width: 22px; + height: 1px; + border-radius: 1px; + background: #FFFFFF; +} + +.button-bar+.button-bar { + margin-top: 7px; +} + +.button-bar:nth-child(2) { + width: 17px; +} + +.open { + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + filter: alpha(opacity=100); + visibility: visible; +} + +.separator { + height: 2px; + width: 44px; + background-color: #888; + margin: 20px auto; +} + +.separator.separator-primary { + background-color: #f96332; +} + +.nav-pills .nav-item .nav-link { + padding: 0 15.5px; + text-align: center; + height: 60px; + width: 60px; + font-weight: 400; + color: #9A9A9A; + margin-right: 19px; + background-color: rgba(222, 222, 222, 0.3); + border-radius: 30px; +} + +.nav-pills .nav-item .nav-link:hover { + background-color: rgba(222, 222, 222, 0.3); +} + +.nav-pills .nav-item .nav-link.active, +.nav-pills .nav-item .nav-link.active:focus, +.nav-pills .nav-item .nav-link.active:hover { + background-color: #9A9A9A; + color: #FFFFFF; + box-shadow: 0px 5px 35px 0px rgba(0, 0, 0, 0.3); +} + +.nav-pills .nav-item .nav-link.disabled, +.nav-pills .nav-item .nav-link:disabled, +.nav-pills .nav-item .nav-link[disabled] { + opacity: .5; +} + +.nav-pills .nav-item i { + display: block; + font-size: 20px; + line-height: 60px; +} + +.nav-pills.nav-pills-neutral .nav-item .nav-link { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +.nav-pills.nav-pills-neutral .nav-item .nav-link.active, +.nav-pills.nav-pills-neutral .nav-item .nav-link.active:focus, +.nav-pills.nav-pills-neutral .nav-item .nav-link.active:hover { + background-color: #FFFFFF; + color: #f96332; +} + +.nav-pills.nav-pills-primary .nav-item .nav-link.active, +.nav-pills.nav-pills-primary .nav-item .nav-link.active:focus, +.nav-pills.nav-pills-primary .nav-item .nav-link.active:hover { + background-color: #f96332; +} + +.nav-pills.nav-pills-info .nav-item .nav-link.active, +.nav-pills.nav-pills-info .nav-item .nav-link.active:focus, +.nav-pills.nav-pills-info .nav-item .nav-link.active:hover { + background-color: #2CA8FF; +} + +.nav-pills.nav-pills-success .nav-item .nav-link.active, +.nav-pills.nav-pills-success .nav-item .nav-link.active:focus, +.nav-pills.nav-pills-success .nav-item .nav-link.active:hover { + background-color: #18ce0f; +} + +.nav-pills.nav-pills-warning .nav-item .nav-link.active, +.nav-pills.nav-pills-warning .nav-item .nav-link.active:focus, +.nav-pills.nav-pills-warning .nav-item .nav-link.active:hover { + background-color: #FFB236; +} + +.nav-pills.nav-pills-danger .nav-item .nav-link.active, +.nav-pills.nav-pills-danger .nav-item .nav-link.active:focus, +.nav-pills.nav-pills-danger .nav-item .nav-link.active:hover { + background-color: #FF3636; +} + +.tab-space { + padding: 20px 0 50px 0px; +} + +.nav-align-center { + text-align: center; +} + +.nav-align-center .nav-pills { + display: inline-flex; +} + +.btn-twitter { + color: #55acee; +} + +.btn-twitter:hover, +.btn-twitter:focus, +.btn-twitter:active { + color: #3ea1ec; +} + +.btn-facebook { + color: #3b5998; +} + +.btn-facebook:hover, +.btn-facebook:focus, +.btn-facebook:active { + color: #344e86; +} + +.btn-google { + color: #dd4b39; +} + +.btn-google:hover, +.btn-google:focus, +.btn-google:active { + color: #d73925; +} + +.btn-linkedin { + color: #0077B5; +} + +.btn-linkedin:hover, +.btn-linkedin:focus, +.btn-linkedin:active { + color: #00669c; +} + +.nav-tabs { + border: 0; + padding: 15px 0.7rem; +} + +.nav-tabs>.nav-item>.nav-link { + color: #888; + margin: 0; + margin-right: 5px; + background-color: transparent; + border: 1px solid transparent; + border-radius: 30px; + font-size: 14px; + padding: 11px 23px; + line-height: 1.5; +} + +.nav-tabs>.nav-item>.nav-link:hover { + background-color: transparent; +} + +.nav-tabs>.nav-item>.nav-link.active { + border: 1px solid #888; + border-radius: 30px; +} + +.nav-tabs>.nav-item>.nav-link i.now-ui-icons { + font-size: 14px; + position: relative; + top: 1px; + margin-right: 3px; +} + +.nav-tabs>.nav-item.disabled>.nav-link, +.nav-tabs>.nav-item.disabled>.nav-link:hover { + color: rgba(255, 255, 255, 0.5); +} + +.nav-tabs.nav-tabs-neutral>.nav-item>.nav-link { + color: #FFFFFF; +} + +.nav-tabs.nav-tabs-neutral>.nav-item>.nav-link.active { + border-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +.nav-tabs.nav-tabs-primary>.nav-item>.nav-link.active { + border-color: #f96332; + color: #f96332; +} + +.nav-tabs.nav-tabs-info>.nav-item>.nav-link.active { + border-color: #2CA8FF; + color: #2CA8FF; +} + +.nav-tabs.nav-tabs-danger>.nav-item>.nav-link.active { + border-color: #FF3636; + color: #FF3636; +} + +.nav-tabs.nav-tabs-warning>.nav-item>.nav-link.active { + border-color: #FFB236; + color: #FFB236; +} + +.nav-tabs.nav-tabs-success>.nav-item>.nav-link.active { + border-color: #18ce0f; + color: #18ce0f; +} + +.navbar-rounded { + border-radius: 15px; +} +.navbar { + padding-top: 0.625rem; + padding-bottom: 0.625rem; + min-height: 53px; + margin-bottom: 20px; + box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15); +} + +.navbar a { + vertical-align: middle; +} + +.navbar a:not(.btn):not(.dropdown-item) { + color: #FFFFFF; +} + +.navbar p { + display: inline-block; + margin: 0; + line-height: 21px; +} + +.navbar .navbar-nav.navbar-logo { + position: absolute; + left: 0; + right: 0; + margin: 0 auto; + width: 49px; + top: -4px; +} + +.navbar .navbar-nav .nav-link.btn { + padding: 11px 22px; +} + +.navbar .navbar-nav .nav-link.btn.btn-lg { + padding: 15px 48px; +} + +.navbar .navbar-nav .nav-link.btn.btn-sm { + padding: 5px 15px; +} + +.navbar .navbar-nav .nav-link:not(.btn) { + text-transform: uppercase; + font-size: 0.7142em; + padding: 0.5rem 0.7rem; + line-height: 1.625rem; +} + +.navbar .navbar-nav .nav-link:not(.btn) i.fa+p, +.navbar .navbar-nav .nav-link:not(.btn) i.now-ui-icons+p { + margin-left: 5px; +} + +.navbar .navbar-nav .nav-link:not(.btn) i.fa, +.navbar .navbar-nav .nav-link:not(.btn) i.now-ui-icons { + font-size: 18px; + position: relative; + top: 2px; + text-align: center; + width: 21px; +} + +.navbar .navbar-nav .nav-link:not(.btn) i.now-ui-icons { + top: 4px; + font-size: 16px; +} + +.navbar .navbar-nav .nav-link:not(.btn).profile-photo .profile-photo-small { + width: 27px; + height: 27px; +} + +.navbar .navbar-nav .nav-link:not(.btn).disabled { + opacity: .5; + color: #FFFFFF; +} + +.navbar .navbar-nav .nav-item.active .nav-link:not(.btn), +.navbar .navbar-nav .nav-item .nav-link:not(.btn):focus, +.navbar .navbar-nav .nav-item .nav-link:not(.btn):hover, +.navbar .navbar-nav .nav-item .nav-link:not(.btn):active { + background-color: rgba(255, 255, 255, 0.2); + border-radius: 0.1875rem; +} + +.navbar .logo-container { + width: 27px; + height: 27px; + overflow: hidden; + margin: 0 auto; + border-radius: 50%; + border: 1px solid transparent; +} + +.navbar .navbar-brand { + text-transform: uppercase; + font-size: 0.8571em; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + line-height: 1.625rem; +} + +.navbar .navbar-toggler { + width: 37px; + height: 27px; + outline: 0; + cursor: pointer; +} + +.navbar .navbar-toggler.navbar-toggler-left { + position: relative; + left: 0; + padding-left: 0; +} + +.navbar .navbar-toggler:hover .navbar-toggler-bar.bar2 { + width: 22px; +} + +.navbar .button-dropdown .navbar-toggler-bar:nth-child(2) { + width: 17px; +} + +.navbar.navbar-transparent { + background-color: transparent !important; + box-shadow: none; + color: #FFFFFF; + padding-top: 20px; +} + +.navbar.bg-white:not(.navbar-transparent) a:not(.dropdown-item) { + color: #888; +} + +.navbar.bg-white:not(.navbar-transparent) a:not(.dropdown-item).disabled { + opacity: .5; + color: #888; +} + +.navbar.bg-white:not(.navbar-transparent) .button-bar { + background: #888; +} + +.navbar.bg-white:not(.navbar-transparent) .nav-item.active .nav-link:not(.btn), +.navbar.bg-white:not(.navbar-transparent) .nav-item .nav-link:not(.btn):focus, +.navbar.bg-white:not(.navbar-transparent) .nav-item .nav-link:not(.btn):hover, +.navbar.bg-white:not(.navbar-transparent) .nav-item .nav-link:not(.btn):active { + background-color: rgba(222, 222, 222, 0.3); +} + +.navbar.bg-white:not(.navbar-transparent) .logo-container { + border: 1px solid #888; +} + +.bg-default { + background-color: #888 !important; +} + +.bg-primary { + background-color: #f96332 !important; +} + +.bg-info { + background-color: #2CA8FF !important; +} + +.bg-success { + background-color: #18ce0f !important; +} + +.bg-danger { + background-color: #FF3636 !important; +} + +.bg-warning { + background-color: #FFB236 !important; +} + +.bg-white { + background-color: #FFFFFF !important; +} + +.dropdown-menu { + border: 0; + box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.2); + border-radius: 0.125rem; + -webkit-transition: all 150ms linear; + -moz-transition: all 150ms linear; + -o-transition: all 150ms linear; + -ms-transition: all 150ms linear; + transition: all 150ms linear; + font-size: 14px; +} + +.dropdown-menu.dropdown-menu-right:before { + left: auto; + right: 10px; +} + +.dropdown-menu:before { + display: inline-block; + position: absolute; + width: 0; + height: 0; + vertical-align: middle; + content: ""; + top: -5px; + left: 10px; + right: auto; + color: #FFFFFF; + border-bottom: .4em solid; + border-right: .4em solid transparent; + border-left: .4em solid transparent; +} + +.dropdown-menu .dropdown-item { + font-size: 0.8571em; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + -webkit-transition: all 150ms linear; + -moz-transition: all 150ms linear; + -o-transition: all 150ms linear; + -ms-transition: all 150ms linear; + transition: all 150ms linear; +} + +.dropdown-menu .dropdown-item:hover, +.dropdown-menu .dropdown-item:focus { + background-color: rgba(222, 222, 222, 0.3); +} + +.dropdown-menu .dropdown-divider { + background-color: rgba(222, 222, 222, 0.5); +} + +.dropdown-menu .dropdown-header:not([href]):not([tabindex]) { + color: rgba(182, 182, 182, 0.6); + font-size: 0.7142em; + text-transform: uppercase; + font-weight: 700; +} + +.dropdown-menu.dropdown-primary { + background-color: #f95823; +} + +.dropdown-menu.dropdown-primary:before { + color: #f95823; +} + +.dropdown-menu.dropdown-primary .dropdown-header:not([href]):not([tabindex]) { + color: rgba(255, 255, 255, 0.8); +} + +.dropdown-menu.dropdown-primary .dropdown-item { + color: #FFFFFF; +} + +.dropdown-menu.dropdown-primary .dropdown-item:hover, +.dropdown-menu.dropdown-primary .dropdown-item:focus { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-primary .dropdown-divider { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-info { + background-color: #1da2ff; +} + +.dropdown-menu.dropdown-info:before { + color: #1da2ff; +} + +.dropdown-menu.dropdown-info .dropdown-header:not([href]):not([tabindex]) { + color: rgba(255, 255, 255, 0.8); +} + +.dropdown-menu.dropdown-info .dropdown-item { + color: #FFFFFF; +} + +.dropdown-menu.dropdown-info .dropdown-item:hover, +.dropdown-menu.dropdown-info .dropdown-item:focus { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-info .dropdown-divider { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-danger { + background-color: #ff2727; +} + +.dropdown-menu.dropdown-danger:before { + color: #ff2727; +} + +.dropdown-menu.dropdown-danger .dropdown-header:not([href]):not([tabindex]) { + color: rgba(255, 255, 255, 0.8); +} + +.dropdown-menu.dropdown-danger .dropdown-item { + color: #FFFFFF; +} + +.dropdown-menu.dropdown-danger .dropdown-item:hover, +.dropdown-menu.dropdown-danger .dropdown-item:focus { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-danger .dropdown-divider { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-success { + background-color: #16c00e; +} + +.dropdown-menu.dropdown-success:before { + color: #16c00e; +} + +.dropdown-menu.dropdown-success .dropdown-header:not([href]):not([tabindex]) { + color: rgba(255, 255, 255, 0.8); +} + +.dropdown-menu.dropdown-success .dropdown-item { + color: #FFFFFF; +} + +.dropdown-menu.dropdown-success .dropdown-item:hover, +.dropdown-menu.dropdown-success .dropdown-item:focus { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-success .dropdown-divider { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-warning { + background-color: #ffac27; +} + +.dropdown-menu.dropdown-warning:before { + color: #ffac27; +} + +.dropdown-menu.dropdown-warning .dropdown-header:not([href]):not([tabindex]) { + color: rgba(255, 255, 255, 0.8); +} + +.dropdown-menu.dropdown-warning .dropdown-item { + color: #FFFFFF; +} + +.dropdown-menu.dropdown-warning .dropdown-item:hover, +.dropdown-menu.dropdown-warning .dropdown-item:focus { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown-menu.dropdown-warning .dropdown-divider { + background-color: rgba(255, 255, 255, 0.2); +} + +.dropdown .dropdown-menu { + -webkit-transform: translate3d(0, -25px, 0); + -moz-transform: translate3d(0, -25px, 0); + -o-transform: translate3d(0, -25px, 0); + -ms-transform: translate3d(0, -25px, 0); + transform: translate3d(0, -25px, 0); + visibility: hidden; + display: block; + opacity: 0; + filter: alpha(opacity=0); +} + +.dropdown.show .dropdown-menu, +.dropdown-menu.open { + opacity: 1; + filter: alpha(opacity=100); + visibility: visible; + -webkit-transform: translate3d(0, 0px, 0); + -moz-transform: translate3d(0, 0px, 0); + -o-transform: translate3d(0, 0px, 0); + -ms-transform: translate3d(0, 0px, 0); + transform: translate3d(0, 0px, 0); +} + +.navbar .dropdown.show .dropdown-menu { + -webkit-transform: translate3d(0, 7px, 0); + -moz-transform: translate3d(0, 7px, 0); + -o-transform: translate3d(0, 7px, 0); + -ms-transform: translate3d(0, 7px, 0); + transform: translate3d(0, 7px, 0); +} + +.button-dropdown { + padding-right: 0.7rem; + cursor: pointer; +} + +.button-dropdown .dropdown-toggle { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + display: block; +} + +.button-dropdown .dropdown-toggle:after { + display: none; +} + +.alert { + border: 0; + border-radius: 0; + color: #FFFFFF; + padding-top: .9rem; + padding-bottom: .9rem; + position: relative; +} + +.alert.alert-success { + background-color: rgba(24, 206, 15, 0.8); +} + +.alert.alert-danger { + background-color: rgba(255, 54, 54, 0.8); +} + +.alert.alert-warning { + background-color: rgba(255, 178, 54, 0.8); +} + +.alert.alert-info { + background-color: rgba(44, 168, 255, 0.8); +} + +.alert.alert-primary { + background-color: rgba(249, 99, 50, 0.8); +} + +.alert .alert-icon { + display: block; + float: left; + margin-right: 15px; + margin-top: -1px; +} + +.alert strong { + text-transform: uppercase; + font-size: 12px; +} + +.alert i.fa, +.alert i.now-ui-icons { + font-size: 20px; +} + +.alert .close { + color: #FFFFFF; + opacity: .9; + text-shadow: none; + line-height: 0; + outline: 0; +} + +img { + max-width: 100%; + border-radius: 1px; +} + +.img-raised { + box-shadow: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); +} + +.popover { + font-size: 14px; + box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.2); + border: none; + line-height: 1.7; + max-width: 240px; +} + +.popover.bs-popover-top .arrow:before, +.popover.bs-popover-left .arrow:before, +.popover.bs-popover-right .arrow:before, +.popover.bs-popover-bottom .arrow:before { + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-color: transparent; +} + +.popover .popover-header { + color: rgba(182, 182, 182, 0.6); + font-size: 14px; + text-transform: capitalize; + font-weight: 600; + margin: 0; + margin-top: 5px; + border: none; + background-color: transparent; +} + +.popover:before { + display: none; +} + +.popover.bs-tether-element-attached-top:after { + border-bottom-color: #FFFFFF; + top: -9px; +} + +.popover.popover-primary { + background-color: #f96332; +} + +.popover.popover-primary .popover-body { + color: #FFFFFF; +} + +.popover.popover-primary.bs-popover-right .arrow:after { + border-right-color: #f96332; +} + +.popover.popover-primary.bs-popover-top .arrow:after { + border-top-color: #f96332; +} + +.popover.popover-primary.bs-popover-bottom .arrow:after { + border-bottom-color: #f96332; +} + +.popover.popover-primary.bs-popover-left .arrow:after { + border-left-color: #f96332; +} + +.popover.popover-primary .popover-header { + color: #FFFFFF; + opacity: .6; +} + +.popover.popover-info { + background-color: #2CA8FF; +} + +.popover.popover-info .popover-body { + color: #FFFFFF; +} + +.popover.popover-info.bs-popover-right .arrow:after { + border-right-color: #2CA8FF; +} + +.popover.popover-info.bs-popover-top .arrow:after { + border-top-color: #2CA8FF; +} + +.popover.popover-info.bs-popover-bottom .arrow:after { + border-bottom-color: #2CA8FF; +} + +.popover.popover-info.bs-popover-left .arrow:after { + border-left-color: #2CA8FF; +} + +.popover.popover-info .popover-header { + color: #FFFFFF; + opacity: .6; +} + +.popover.popover-warning { + background-color: #FFB236; +} + +.popover.popover-warning .popover-body { + color: #FFFFFF; +} + +.popover.popover-warning.bs-popover-right .arrow:after { + border-right-color: #FFB236; +} + +.popover.popover-warning.bs-popover-top .arrow:after { + border-top-color: #FFB236; +} + +.popover.popover-warning.bs-popover-bottom .arrow:after { + border-bottom-color: #FFB236; +} + +.popover.popover-warning.bs-popover-left .arrow:after { + border-left-color: #FFB236; +} + +.popover.popover-warning .popover-header { + color: #FFFFFF; + opacity: .6; +} + +.popover.popover-danger { + background-color: #FF3636; +} + +.popover.popover-danger .popover-body { + color: #FFFFFF; +} + +.popover.popover-danger.bs-popover-right .arrow:after { + border-right-color: #FF3636; +} + +.popover.popover-danger.bs-popover-top .arrow:after { + border-top-color: #FF3636; +} + +.popover.popover-danger.bs-popover-bottom .arrow:after { + border-bottom-color: #FF3636; +} + +.popover.popover-danger.bs-popover-left .arrow:after { + border-left-color: #FF3636; +} + +.popover.popover-danger .popover-header { + color: #FFFFFF; + opacity: .6; +} + +.popover.popover-success { + background-color: #18ce0f; +} + +.popover.popover-success .popover-body { + color: #FFFFFF; +} + +.popover.popover-success.bs-popover-right .arrow:after { + border-right-color: #18ce0f; +} + +.popover.popover-success.bs-popover-top .arrow:after { + border-top-color: #18ce0f; +} + +.popover.popover-success.bs-popover-bottom .arrow:after { + border-bottom-color: #18ce0f; +} + +.popover.popover-success.bs-popover-left .arrow:after { + border-left-color: #18ce0f; +} + +.popover.popover-success .popover-header { + color: #FFFFFF; + opacity: .6; +} + +.tooltip.bs-tooltip-right .arrow:before { + border-right-color: #FFFFFF; +} + +.tooltip.bs-tooltip-top .arrow:before { + border-top-color: #FFFFFF; +} + +.tooltip.bs-tooltip-bottom .arrow:before { + border-bottom-color: #FFFFFF; +} + +.tooltip.bs-tooltip-left .arrow:before { + border-left-color: #FFFFFF; +} + +.tooltip-inner { + padding: 0.5rem 0.7rem; + min-width: 130px; + background-color: #FFFFFF; + font-size: 14px; + color: inherit; + box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2); +} + + +/* -------------------------------- + +Nucleo Outline Web Font - nucleoapp.com/ +License - nucleoapp.com/license/ +Created using IcoMoon - icomoon.io + +-------------------------------- */ + +@font-face { + font-family: 'Nucleo Outline'; + src: url("../fonts/nucleo-outline.eot"); + src: url("../fonts/nucleo-outline.eot") format("embedded-opentype"), url("../fonts/nucleo-outline.woff2") format("woff2"), url("../fonts/nucleo-outline.woff") format("woff"), url("../fonts/nucleo-outline.ttf") format("truetype"); + font-weight: normal; + font-style: normal; +} + + +/*------------------------ + base class definition +-------------------------*/ + +.now-ui-icons { + display: inline-block; + font: normal normal normal 14px/1 'Nucleo Outline'; + font-size: inherit; + speak: none; + text-transform: none; + /* Better Font Rendering */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + + +/*------------------------ + change icon size +-------------------------*/ + + +/*---------------------------------- + add a square/circle background +-----------------------------------*/ + +.now-ui-icons.circle { + padding: 0.33333333em; + vertical-align: -16%; + background-color: #eee; +} + +.now-ui-icons.circle { + border-radius: 50%; +} + + +/*------------------------ + list icons +-------------------------*/ + +.nc-icon-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} + +.nc-icon-ul>li { + position: relative; +} + +.nc-icon-ul>li>.now-ui-icons { + position: absolute; + left: -1.57142857em; + top: 0.14285714em; + text-align: center; +} + +.nc-icon-ul>li>.now-ui-icons.circle { + top: -0.19047619em; + left: -1.9047619em; +} + + +/*------------------------ + spinning icons +-------------------------*/ + +.now-ui-icons.spin { + -webkit-animation: nc-icon-spin 2s infinite linear; + -moz-animation: nc-icon-spin 2s infinite linear; + animation: nc-icon-spin 2s infinite linear; +} + +@-webkit-keyframes nc-icon-spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} + +@-moz-keyframes nc-icon-spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(360deg); + } +} + +@keyframes nc-icon-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + -moz-transform: rotate(360deg); + -ms-transform: rotate(360deg); + -o-transform: rotate(360deg); + transform: rotate(360deg); + } +} + + +/*------------------------ + rotated/flipped icons +-------------------------*/ + + +/*------------------------ + font icons +-------------------------*/ + +.now-ui-icons.ui-1_check:before { + content: "\ea22"; +} + +.now-ui-icons.ui-1_email-85:before { + content: "\ea2a"; +} + +.now-ui-icons.arrows-1_cloud-download-93:before { + content: "\ea21"; +} + +.now-ui-icons.arrows-1_cloud-upload-94:before { + content: "\ea24"; +} + +.now-ui-icons.arrows-1_minimal-down:before { + content: "\ea39"; +} + +.now-ui-icons.arrows-1_minimal-left:before { + content: "\ea3a"; +} + +.now-ui-icons.arrows-1_minimal-right:before { + content: "\ea3b"; +} + +.now-ui-icons.arrows-1_minimal-up:before { + content: "\ea3c"; +} + +.now-ui-icons.arrows-1_refresh-69:before { + content: "\ea44"; +} + +.now-ui-icons.arrows-1_share-66:before { + content: "\ea4c"; +} + +.now-ui-icons.business_badge:before { + content: "\ea09"; +} + +.now-ui-icons.business_bank:before { + content: "\ea0a"; +} + +.now-ui-icons.business_briefcase-24:before { + content: "\ea13"; +} + +.now-ui-icons.business_bulb-63:before { + content: "\ea15"; +} + +.now-ui-icons.business_chart-bar-32:before { + content: "\ea1e"; +} + +.now-ui-icons.business_chart-pie-36:before { + content: "\ea1f"; +} + +.now-ui-icons.business_globe:before { + content: "\ea2f"; +} + +.now-ui-icons.business_money-coins:before { + content: "\ea40"; +} + +.now-ui-icons.clothes_tie-bow:before { + content: "\ea5b"; +} + +.now-ui-icons.design_vector:before { + content: "\ea61"; +} + +.now-ui-icons.design_app:before { + content: "\ea08"; +} + +.now-ui-icons.design_bullet-list-67:before { + content: "\ea14"; +} + +.now-ui-icons.design_image:before { + content: "\ea33"; +} + +.now-ui-icons.design_palette:before { + content: "\ea41"; +} + +.now-ui-icons.design_scissors:before { + content: "\ea4a"; +} + +.now-ui-icons.design-2_html5:before { + content: "\ea32"; +} + +.now-ui-icons.design-2_ruler-pencil:before { + content: "\ea48"; +} + +.now-ui-icons.emoticons_satisfied:before { + content: "\ea49"; +} + +.now-ui-icons.files_box:before { + content: "\ea12"; +} + +.now-ui-icons.files_paper:before { + content: "\ea43"; +} + +.now-ui-icons.files_single-copy-04:before { + content: "\ea52"; +} + +.now-ui-icons.health_ambulance:before { + content: "\ea07"; +} + +.now-ui-icons.loader_gear:before { + content: "\ea4e"; +} + +.now-ui-icons.loader_refresh:before { + content: "\ea44"; +} + +.now-ui-icons.location_bookmark:before { + content: "\ea10"; +} + +.now-ui-icons.location_compass-05:before { + content: "\ea25"; +} + +.now-ui-icons.location_map-big:before { + content: "\ea3d"; +} + +.now-ui-icons.location_pin:before { + content: "\ea47"; +} + +.now-ui-icons.location_world:before { + content: "\ea63"; +} + +.now-ui-icons.media-1_album:before { + content: "\ea02"; +} + +.now-ui-icons.media-1_button-pause:before { + content: "\ea16"; +} + +.now-ui-icons.media-1_button-play:before { + content: "\ea18"; +} + +.now-ui-icons.media-1_button-power:before { + content: "\ea19"; +} + +.now-ui-icons.media-1_camera-compact:before { + content: "\ea1c"; +} + +.now-ui-icons.media-2_note-03:before { + content: "\ea3f"; +} + +.now-ui-icons.media-2_sound-wave:before { + content: "\ea57"; +} + +.now-ui-icons.objects_diamond:before { + content: "\ea29"; +} + +.now-ui-icons.objects_globe:before { + content: "\ea2f"; +} + +.now-ui-icons.objects_key-25:before { + content: "\ea38"; +} + +.now-ui-icons.objects_planet:before { + content: "\ea46"; +} + +.now-ui-icons.objects_spaceship:before { + content: "\ea55"; +} + +.now-ui-icons.objects_support-17:before { + content: "\ea56"; +} + +.now-ui-icons.objects_umbrella-13:before { + content: "\ea5f"; +} + +.now-ui-icons.education_agenda-bookmark:before { + content: "\ea01"; +} + +.now-ui-icons.education_atom:before { + content: "\ea0c"; +} + +.now-ui-icons.education_glasses:before { + content: "\ea2d"; +} + +.now-ui-icons.education_hat:before { + content: "\ea30"; +} + +.now-ui-icons.education_paper:before { + content: "\ea42"; +} + +.now-ui-icons.shopping_bag-16:before { + content: "\ea0d"; +} + +.now-ui-icons.shopping_basket:before { + content: "\ea0b"; +} + +.now-ui-icons.shopping_box:before { + content: "\ea11"; +} + +.now-ui-icons.shopping_cart-simple:before { + content: "\ea1d"; +} + +.now-ui-icons.shopping_credit-card:before { + content: "\ea28"; +} + +.now-ui-icons.shopping_delivery-fast:before { + content: "\ea27"; +} + +.now-ui-icons.shopping_shop:before { + content: "\ea50"; +} + +.now-ui-icons.shopping_tag-content:before { + content: "\ea59"; +} + +.now-ui-icons.sport_trophy:before { + content: "\ea5d"; +} + +.now-ui-icons.sport_user-run:before { + content: "\ea60"; +} + +.now-ui-icons.tech_controller-modern:before { + content: "\ea26"; +} + +.now-ui-icons.tech_headphones:before { + content: "\ea31"; +} + +.now-ui-icons.tech_laptop:before { + content: "\ea36"; +} + +.now-ui-icons.tech_mobile:before { + content: "\ea3e"; +} + +.now-ui-icons.tech_tablet:before { + content: "\ea58"; +} + +.now-ui-icons.tech_tv:before { + content: "\ea5e"; +} + +.now-ui-icons.tech_watch-time:before { + content: "\ea62"; +} + +.now-ui-icons.text_align-center:before { + content: "\ea05"; +} + +.now-ui-icons.text_align-left:before { + content: "\ea06"; +} + +.now-ui-icons.text_bold:before { + content: "\ea0e"; +} + +.now-ui-icons.text_caps-small:before { + content: "\ea1b"; +} + +.now-ui-icons.gestures_tap-01:before { + content: "\ea5a"; +} + +.now-ui-icons.transportation_air-baloon:before { + content: "\ea03"; +} + +.now-ui-icons.transportation_bus-front-12:before { + content: "\ea17"; +} + +.now-ui-icons.travel_info:before { + content: "\ea04"; +} + +.now-ui-icons.travel_istanbul:before { + content: "\ea34"; +} + +.now-ui-icons.ui-1_bell-53:before { + content: "\ea0f"; +} + +.now-ui-icons.ui-1_calendar-60:before { + content: "\ea1a"; +} + +.now-ui-icons.ui-1_lock-circle-open:before { + content: "\ea35"; +} + +.now-ui-icons.ui-1_send:before { + content: "\ea4d"; +} + +.now-ui-icons.ui-1_settings-gear-63:before { + content: "\ea4e"; +} + +.now-ui-icons.ui-1_simple-add:before { + content: "\ea4f"; +} + +.now-ui-icons.ui-1_simple-delete:before { + content: "\ea54"; +} + +.now-ui-icons.ui-1_simple-remove:before { + content: "\ea53"; +} + +.now-ui-icons.ui-1_zoom-bold:before { + content: "\ea64"; +} + +.now-ui-icons.ui-2_chat-round:before { + content: "\ea20"; +} + +.now-ui-icons.ui-2_favourite-28:before { + content: "\ea2b"; +} + +.now-ui-icons.ui-2_like:before { + content: "\ea37"; +} + +.now-ui-icons.ui-2_settings-90:before { + content: "\ea4b"; +} + +.now-ui-icons.ui-2_time-alarm:before { + content: "\ea5c"; +} + +.now-ui-icons.users_circle-08:before { + content: "\ea23"; +} + +.now-ui-icons.users_single-02:before { + content: "\ea51"; +} + +.modal-content { + border-radius: 0.1875rem; + border: none; + box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.5); +} + +.modal-content .modal-header { + border-bottom: none; + padding-top: 24px; + padding-right: 24px; + padding-bottom: 0; + padding-left: 24px; +} + +.modal-content .modal-header button { + position: absolute; + right: 27px; + top: 30px; + outline: 0; +} + +.modal-content .modal-header .title { + margin-top: 5px; + margin-bottom: 0; +} + +.modal-content .modal-body { + padding-top: 24px; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + line-height: 1.9; +} + +.modal-content .modal-footer { + border-top: none; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + -webkit-justify-content: space-between; + /* Safari 6.1+ */ + justify-content: space-between; +} + +.modal-content .modal-footer button { + margin: 0; + padding-left: 16px; + padding-right: 16px; + width: auto; +} + +.modal-content .modal-footer button.pull-left { + padding-left: 5px; + padding-right: 5px; + position: relative; + left: -5px; +} + +.modal-content .modal-body+.modal-footer { + padding-top: 0; +} + +.modal-backdrop { + background: rgba(0, 0, 0, 0.3); +} + +.modal.modal-mini p { + text-align: center; +} + +.modal.modal-mini .modal-dialog { + max-width: 255px; + margin: 0 auto; +} + +.modal.modal-mini .modal-profile { + width: 70px; + height: 70px; + background-color: #FFFFFF; + border-radius: 50%; + text-align: center; + line-height: 5.9; + box-shadow: 0px 5px 50px 0px rgba(0, 0, 0, 0.3); +} + +.modal.modal-mini .modal-profile i { + color: #f96332; + font-size: 21px; +} + +.modal.modal-mini .modal-profile[class*="modal-profile-"] i { + color: #FFFFFF; +} + +.modal.modal-mini .modal-profile.modal-profile-primary { + background-color: #f96332; +} + +.modal.modal-mini .modal-profile.modal-profile-danger { + background-color: #FF3636; +} + +.modal.modal-mini .modal-profile.modal-profile-warning { + background-color: #FFB236; +} + +.modal.modal-mini .modal-profile.modal-profile-success { + background-color: #18ce0f; +} + +.modal.modal-mini .modal-profile.modal-profile-info { + background-color: #2CA8FF; +} + +.modal.modal-mini .modal-footer button { + text-transform: uppercase; +} + +.modal.modal-mini .modal-footer button:first-child { + opacity: .5; +} + +.modal.modal-default .modal-content { + background-color: #FFFFFF; + color: #2c2c2c; +} + +.modal.modal-default .modal-header .close { + color: #2c2c2c; +} + +.modal.modal-primary .modal-content { + background-color: #f96332; + color: #FFFFFF; +} + +.modal.modal-primary .modal-header .close { + color: #FFFFFF; +} + +.modal.modal-danger .modal-content { + background-color: #FF3636; + color: #FFFFFF; +} + +.modal.modal-danger .modal-header .close { + color: #FFFFFF; +} + +.modal.modal-warning .modal-content { + background-color: #FFB236; + color: #FFFFFF; +} + +.modal.modal-warning .modal-header .close { + color: #FFFFFF; +} + +.modal.modal-success .modal-content { + background-color: #18ce0f; + color: #FFFFFF; +} + +.modal.modal-success .modal-header .close { + color: #FFFFFF; +} + +.modal.modal-info .modal-content { + background-color: #2CA8FF; + color: #FFFFFF; +} + +.modal.modal-info .modal-header .close { + color: #FFFFFF; +} + +.modal.show.modal-mini .modal-dialog { + -webkit-transform: translate(0, 30%); + -o-transform: translate(0, 30%); + transform: translate(0, 30%); +} + +.modal .modal-header .close { + color: #FF3636; + text-shadow: none; +} + +.modal .modal-header .close:hover, +.modal .modal-header .close:focus { + opacity: 1; +} + +.carousel-item-next, +.carousel-item-prev, +.carousel-item.active { + display: block; +} + +.carousel .carousel-inner { + box-shadow: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); +} + +.carousel .now-ui-icons { + font-size: 2em; +} + +.card { + border: 0; + border-radius: 0.1875rem; + display: inline-block; + position: relative; + overflow: hidden; + width: 100%; + margin-bottom: 20px; + box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2); +} + +.card .card-body { + min-height: 190px; +} + +.card[data-background-color="orange"] { + background-color: #f96332; +} + +.card[data-background-color="red"] { + background-color: #FF3636; +} + +.card[data-background-color="yellow"] { + background-color: #FFB236; +} + +.card[data-background-color="blue"] { + background-color: #2CA8FF; +} + +.card[data-background-color="green"] { + background-color: #18ce0f; +} + +.card-signup { + max-width: 350px; + margin: 0 auto; +} + +.card-signup .header { + margin-left: 20px; + margin-right: 20px; + padding: 30px 0; +} + +.card-signup .text-divider { + margin-top: 30px; + margin-bottom: 0px; + text-align: center; +} + +.card-signup .card-body { + padding-top: 0px; + padding-bottom: 0px; + min-height: auto; +} + +.card-signup .checkbox { + margin-top: 20px; +} + +.card-signup .checkbox label { + margin-left: 17px; +} + +.card-signup .checkbox .checkbox-material { + padding-right: 12px; +} + +.card-signup .social-line { + margin-top: 20px; + text-align: center; +} + +.card-signup .social-line .btn.btn-icon, +.card-signup .social-line .btn.btn-icon .btn-icon -mini { + margin-left: 5px; + margin-right: 5px; + box-shadow: 0px 5px 50px 0px rgba(0, 0, 0, 0.2); +} + +.card-signup .footer { + margin-bottom: 10px; + margin-top: 24px; +} + +.card-plain { + background: transparent; + box-shadow: none; +} + +.card-plain .header { + margin-left: 0; + margin-right: 0; +} + +.card-plain .content { + padding-left: 0; + padding-right: 0; +} + +.footer { + padding: 24px 0; +} + +.footer.footer-default { + background-color: #f2f2f2; +} + +.footer nav { + display: inline-block; + float: left; +} + +.footer ul { + margin-bottom: 0; + padding: 0; + list-style: none; +} + +.footer ul li { + display: inline-block; +} + +.footer ul li a { + color: inherit; + padding: 0.5rem; + font-size: 0.8571em; + text-transform: uppercase; + text-decoration: none; +} + +.footer ul li a:hover { + text-decoration: none; +} + +.footer .copyright { + font-size: 0.8571em; +} + +.footer:after { + display: table; + clear: both; + content: " "; +} + +.index-page .page-header { + height: 100vh; +} + +.index-page .page-header .container>.content-center { + top: 37%; +} + +.index-page .page-header .category-absolute { + position: absolute; + top: 100vh; + margin-top: -60px; + padding: 0 15px; + width: 100%; + color: rgba(255, 255, 255, 0.5); +} + +.landing-page .header { + height: 100vh; + position: relative; +} + +.landing-page .header .container { + padding-top: 26vh; + color: #FFFFFF; + z-index: 2; + position: relative; +} + +.landing-page .header .share { + margin-top: 150px; +} + +.landing-page .header h1 { + font-weight: 600; +} + +.landing-page .header .title { + color: #FFFFFF; +} + +.landing-page .section-team .team .team-player img { + max-width: 100px; +} + +.landing-page .section-team .team-player { + margin-bottom: 15px; +} + +.landing-page .section-contact-us .title { + margin-bottom: 15px; +} + +.landing-page .section-contact-us .description { + margin-bottom: 30px; +} + +.landing-page .section-contact-us .input-group, +.landing-page .section-contact-us .send-button, +.landing-page .section-contact-us .textarea-container { + padding: 0 40px; +} + +.landing-page .section-contact-us .textarea-container { + margin: 40px 0; +} + +.landing-page .section-contact-us a.btn { + margin-top: 35px; +} + +.profile-page .page-header { + min-height: 550px; +} + +.profile-page .profile-container { + color: #FFFFFF; +} + +.profile-page .photo-container { + width: 123px; + height: 123px; + border-radius: 50%; + overflow: hidden; + margin: 0 auto; + box-shadow: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); +} + +.profile-page .title { + text-align: center; + margin-top: 30px; +} + +.profile-page .description, +.profile-page .category { + text-align: center; +} + +.profile-page h5.description { + max-width: 700px; + margin: 20px auto 75px; +} + +.profile-page .nav-align-center { + margin-top: 30px; +} + +.profile-page .content { + max-width: 450px; + margin: 0 auto; +} + +.profile-page .content .social-description { + display: inline-block; + max-width: 150px; + width: 145px; + text-align: center; + margin: 15px 0 0px; +} + +.profile-page .content .social-description h2 { + margin-bottom: 15px; +} + +.profile-page .button-container { + text-align: center; + margin-top: -106px; +} + +.profile-page .collections img { + margin-bottom: 30px; +} + +.profile-page .gallery { + margin-top: 45px; + padding-bottom: 50px; +} + +.section-full-page:after, +.section-full-page:before { + display: block; + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 2; +} + +.section-full-page:before { + background-color: rgba(0, 0, 0, 0.5); +} + +.section-full-page[filter-color="purple"]:after, +.section-full-page[filter-color="primary"]:after { + background: rgba(227, 227, 227, 0.26); + /* For browsers that do not support gradients */ + background: -webkit-linear-gradient(90deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* For Safari 5.1 to 6.0 */ + background: -o-linear-gradient(90deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* For Opera 11.1 to 12.0 */ + background: -moz-linear-gradient(90deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* For Firefox 3.6 to 15 */ + background: linear-gradient(0deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* Standard syntax */ +} + +.section-full-page[data-image]:after { + opacity: .5; +} + +.section-full-page>.content, +.section-full-page>.footer { + position: relative; + z-index: 4; +} + +.section-full-page>.content { + min-height: calc(100vh - 80px); +} + +.section-full-page .full-page-background { + position: absolute; + z-index: 1; + height: 100%; + width: 100%; + display: block; + top: 0; + left: 0; + background-size: cover; + background-position: center center; +} + +.section-full-page .footer nav>ul a:not(.btn), +.section-full-page .footer, +.section-full-page .footer .copyright a { + color: #FFFFFF; +} + +.login-page .card-login { + border-radius: 0.25rem; + padding-bottom: 0.7rem; + max-width: 320px; +} + +.login-page .card-login .btn-wd { + min-width: 180px; +} + +.login-page .card-login .logo-container { + width: 65px; + margin: 0 auto; + margin-bottom: 55px; +} + +.login-page .card-login .logo-container img { + width: 100%; +} + +.login-page .card-login .input-group:last-child { + margin-bottom: 40px; +} + +.login-page .card-login.card-plain .form-control::-moz-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +.login-page .card-login.card-plain .form-control:-moz-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +.login-page .card-login.card-plain .form-control::-webkit-input-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +.login-page .card-login.card-plain .form-control:-ms-input-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +.login-page .card-login.card-plain .form-control { + border-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +.login-page .card-login.card-plain .form-control:focus { + border-color: #FFFFFF; + background-color: transparent; + color: #FFFFFF; +} + +.login-page .card-login.card-plain .has-success:after, +.login-page .card-login.card-plain .has-danger:after { + color: #FFFFFF; +} + +.login-page .card-login.card-plain .has-danger .form-control { + background-color: transparent; +} + +.login-page .card-login.card-plain .input-group-addon { + background-color: transparent; + border-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +.login-page .card-login.card-plain .input-group-focus .input-group-addon { + background-color: transparent; + border-color: #FFFFFF; + color: #FFFFFF; +} + +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control { + background-color: rgba(255, 255, 255, 0.1); + color: #FFFFFF; +} + +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control:focus, +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control:active, +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control:active, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control:focus, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control:active, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control:active { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control+.input-group-addon, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control+.input-group-addon { + background-color: rgba(255, 255, 255, 0.1); +} + +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control+.input-group-addon:focus, +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control+.input-group-addon:active, +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control+.input-group-addon:active, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control+.input-group-addon:focus, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control+.input-group-addon:active, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control+.input-group-addon:active { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +.login-page .card-login.card-plain .form-group.form-group-no-border .form-control:focus+.input-group-addon, +.login-page .card-login.card-plain .input-group.form-group-no-border .form-control:focus+.input-group-addon { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +.login-page .card-login.card-plain .form-group.form-group-no-border .input-group-addon, +.login-page .card-login.card-plain .input-group.form-group-no-border .input-group-addon { + background-color: rgba(255, 255, 255, 0.1); + border: none; + color: #FFFFFF; +} + +.login-page .card-login.card-plain .form-group.form-group-no-border.input-group-focus .input-group-addon, +.login-page .card-login.card-plain .input-group.form-group-no-border.input-group-focus .input-group-addon { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +.login-page .card-login.card-plain .input-group-addon, +.login-page .card-login.card-plain .form-group.form-group-no-border .input-group-addon, +.login-page .card-login.card-plain .input-group.form-group-no-border .input-group-addon { + color: rgba(255, 255, 255, 0.8); +} + +.login-page .link { + font-size: 10px; + color: #FFFFFF; + text-decoration: none; +} + +.section { + padding: 70px 0; + position: relative; + background: #FFFFFF; +} + +.section .row+.category { + margin-top: 15px; +} + +.section-navbars { + padding-bottom: 0; +} + +.section-full-screen { + height: 100vh; +} + +.section-signup { + padding-top: 20vh; +} + +.page-header { + height: 100vh; + max-height: 1050px; + padding: 0; + position: relative; + background-position: center center; + background-size: cover; +} + +.page-header .page-header-image { + position: absolute; + background-size: cover; + background-position: center center; + width: 100%; + height: 100%; + z-index: -1; +} + +.page-header footer { + position: absolute; + bottom: 0; + width: 100%; +} + +.page-header .container { + height: 100%; + z-index: 1; + text-align: center; + position: relative; +} + +.page-header .container>.content-center { + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + text-align: center; + padding: 0 15px; + width: 100%; + max-width: 880px; +} + +.page-header .category, +.page-header .description { + color: rgba(255, 255, 255, 0.5); +} + +.page-header.page-header-small { + height: 60vh; + max-height: 440px; +} + +.page-header:after, +.page-header:before { + position: absolute; + z-index: 0; + width: 100%; + height: 100%; + display: block; + left: 0; + top: 0; + content: ""; +} + +.page-header:before { + background-color: rgba(0, 0, 0, 0.5); +} + +.page-header[filter-color="orange"] { + background: rgba(44, 44, 44, 0.2); + /* For browsers that do not support gradients */ + background: -webkit-linear-gradient(90deg, rgba(44, 44, 44, 0.2), rgba(224, 23, 3, 0.6)); + /* For Safari 5.1 to 6.0 */ + background: -o-linear-gradient(90deg, rgba(44, 44, 44, 0.2), rgba(224, 23, 3, 0.6)); + /* For Opera 11.1 to 12.0 */ + background: -moz-linear-gradient(90deg, rgba(44, 44, 44, 0.2), rgba(224, 23, 3, 0.6)); + /* For Firefox 3.6 to 15 */ + background: linear-gradient(0deg, rgba(44, 44, 44, 0.2), rgba(224, 23, 3, 0.6)); + /* Standard syntax */ +} +.page-header[filter-color="primary"] { + background: rgba(227, 227, 227, 0.26); + /* For browsers that do not support gradients */ + background: -webkit-linear-gradient(90deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* For Safari 5.1 to 6.0 */ + background: -o-linear-gradient(90deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* For Opera 11.1 to 12.0 */ + background: -moz-linear-gradient(90deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* For Firefox 3.6 to 15 */ + background: linear-gradient(0deg, rgba(227, 227, 227, 0.26), rgba(249, 99, 50, 0.95)); + /* Standard syntax */ +} +.page-header .container { + z-index: 2; +} + +.clear-filter:after, +.clear-filter:before { + display: none; +} + +.section-story-overview { + padding: 50px 0; +} + +.section-story-overview .image-container { + height: 335px; + position: relative; + background-position: center center; + background-size: cover; + box-shadow: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); + border-radius: .25rem; +} + +.section-story-overview .image-container+.category { + padding-top: 15px; +} + +.section-story-overview .image-container.image-right { + z-index: 2; +} + +.section-story-overview .image-container.image-right+h3.title { + margin-top: 120px; +} + +.section-story-overview .image-container.image-left { + z-index: 1; +} + +.section-story-overview .image-container:nth-child(2) { + margin-top: 420px; + margin-left: -105px; +} + +.section-story-overview p.blockquote { + width: 220px; + min-height: 180px; + text-align: left; + position: absolute; + top: 376px; + right: 155px; + z-index: 0; +} + +.section-nucleo-icons .nucleo-container img { + width: auto; + left: 0; + top: 0; + height: 100%; + position: absolute; +} + +.section-nucleo-icons .nucleo-container { + height: 335px; + position: relative; +} + +.section-nucleo-icons h5 { + margin-bottom: 35px; +} + +.section-nucleo-icons .icons-container { + position: relative; + max-width: 450px; + height: 300px; + max-height: 300px; + margin: 0 auto; +} + +.section-nucleo-icons .icons-container i { + font-size: 34px; + position: absolute; + left: 0; + top: 0; +} + +.section-nucleo-icons .icons-container i:nth-child(1) { + top: 5%; + left: 7%; +} + +.section-nucleo-icons .icons-container i:nth-child(2) { + top: 28%; + left: 24%; +} + +.section-nucleo-icons .icons-container i:nth-child(3) { + top: 40%; +} + +.section-nucleo-icons .icons-container i:nth-child(4) { + top: 18%; + left: 62%; +} + +.section-nucleo-icons .icons-container i:nth-child(5) { + top: 74%; + left: 3%; +} + +.section-nucleo-icons .icons-container i:nth-child(6) { + top: 36%; + left: 44%; + font-size: 65px; + color: #f96332; + padding: 1px; +} + +.section-nucleo-icons .icons-container i:nth-child(7) { + top: 59%; + left: 26%; +} + +.section-nucleo-icons .icons-container i:nth-child(8) { + top: 60%; + left: 69%; +} + +.section-nucleo-icons .icons-container i:nth-child(9) { + top: 72%; + left: 47%; +} + +.section-nucleo-icons .icons-container i:nth-child(10) { + top: 88%; + left: 27%; +} + +.section-nucleo-icons .icons-container i:nth-child(11) { + top: 31%; + left: 80%; +} + +.section-nucleo-icons .icons-container i:nth-child(12) { + top: 88%; + left: 68%; +} + +.section-nucleo-icons .icons-container i:nth-child(13) { + top: 5%; + left: 81%; +} + +.section-nucleo-icons .icons-container i:nth-child(14) { + top: 58%; + left: 90%; +} + +.section-nucleo-icons .icons-container i:nth-child(15) { + top: 6%; + left: 40%; +} + +.section-images { + max-height: 670px; + height: 670px; +} + +.section-images .hero-images-container, +.section-images .hero-images-container-1, +.section-images .hero-images-container-2 { + margin-top: -38vh; +} + +.section-images .hero-images-container { + max-width: 670px; +} + +.section-images .hero-images-container-1 { + max-width: 390px; + position: absolute; + top: 55%; + right: 18%; +} + +.section-images .hero-images-container-2 { + max-width: 225px; + position: absolute; + top: 68%; + right: 12%; +} + +[data-background-color="orange"] { + background-color: #e95e38; +} + +[data-background-color="black"] { + background-color: #2c2c2c; +} + +[data-background-color] { + color: #FFFFFF; +} + +[data-background-color] .title, +[data-background-color] .social-description h2, +[data-background-color] p, +[data-background-color] p.blockquote, +[data-background-color] p.blockquote small, +[data-background-color] h1, +[data-background-color] h2, +[data-background-color] h3, +[data-background-color] h4, +[data-background-color] h5, +[data-background-color] h6, +[data-background-color] a:not(.btn):not(.dropdown-item), +[data-background-color] .icons-container i { + color: #FFFFFF; +} + +[data-background-color] .separator { + background-color: #FFFFFF; +} + +[data-background-color] .navbar.bg-white p { + color: #888; +} + +[data-background-color] .description, +[data-background-color] .social-description p { + color: rgba(255, 255, 255, 0.8); +} + +[data-background-color] p.blockquote { + border-color: rgba(255, 255, 255, 0.2); +} + +[data-background-color] .checkbox label::before, +[data-background-color] .checkbox label::after, +[data-background-color] .radio label::before, +[data-background-color] .radio label::after { + border-color: rgba(255, 255, 255, 0.2); +} + +[data-background-color] .checkbox label::after, +[data-background-color] .checkbox label, +[data-background-color] .radio label { + color: #FFFFFF; +} + +[data-background-color] .checkbox input[type="checkbox"]:disabled+label, +[data-background-color] .radio input[type="radio"]:disabled+label { + color: #FFFFFF; +} + +[data-background-color] .radio input[type="radio"]:not(:disabled):hover+label::after, +[data-background-color] .radio input[type="radio"]:checked+label::after { + background-color: #FFFFFF; + border-color: #FFFFFF; +} + +[data-background-color] .form-control::-moz-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +[data-background-color] .form-control:-moz-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +[data-background-color] .form-control::-webkit-input-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +[data-background-color] .form-control:-ms-input-placeholder { + color: #ebebeb; + opacity: 1; + filter: alpha(opacity=100); +} + +[data-background-color] .form-control { + border-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +[data-background-color] .form-control:focus { + border-color: #FFFFFF; + background-color: transparent; + color: #FFFFFF; +} + +[data-background-color] .has-success:after, +[data-background-color] .has-danger:after { + color: #FFFFFF; +} + +[data-background-color] .has-danger .form-control { + background-color: transparent; +} + +[data-background-color] .input-group-addon { + background-color: transparent; + border-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +[data-background-color] .input-group-focus .input-group-addon { + background-color: transparent; + border-color: #FFFFFF; + color: #FFFFFF; +} + +[data-background-color] .form-group.form-group-no-border .form-control, +[data-background-color] .input-group.form-group-no-border .form-control { + background-color: rgba(255, 255, 255, 0.1); + color: #FFFFFF; +} + +[data-background-color] .form-group.form-group-no-border .form-control:focus, +[data-background-color] .form-group.form-group-no-border .form-control:active, +[data-background-color] .form-group.form-group-no-border .form-control:active, +[data-background-color] .input-group.form-group-no-border .form-control:focus, +[data-background-color] .input-group.form-group-no-border .form-control:active, +[data-background-color] .input-group.form-group-no-border .form-control:active { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +[data-background-color] .form-group.form-group-no-border .form-control+.input-group-addon, +[data-background-color] .input-group.form-group-no-border .form-control+.input-group-addon { + background-color: rgba(255, 255, 255, 0.1); +} + +[data-background-color] .form-group.form-group-no-border .form-control+.input-group-addon:focus, +[data-background-color] .form-group.form-group-no-border .form-control+.input-group-addon:active, +[data-background-color] .form-group.form-group-no-border .form-control+.input-group-addon:active, +[data-background-color] .input-group.form-group-no-border .form-control+.input-group-addon:focus, +[data-background-color] .input-group.form-group-no-border .form-control+.input-group-addon:active, +[data-background-color] .input-group.form-group-no-border .form-control+.input-group-addon:active { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +[data-background-color] .form-group.form-group-no-border .form-control:focus+.input-group-addon, +[data-background-color] .input-group.form-group-no-border .form-control:focus+.input-group-addon { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +[data-background-color] .form-group.form-group-no-border .input-group-addon, +[data-background-color] .input-group.form-group-no-border .input-group-addon { + background-color: rgba(255, 255, 255, 0.1); + border: none; + color: #FFFFFF; +} + +[data-background-color] .form-group.form-group-no-border.input-group-focus .input-group-addon, +[data-background-color] .input-group.form-group-no-border.input-group-focus .input-group-addon { + background-color: rgba(255, 255, 255, 0.2); + color: #FFFFFF; +} + +[data-background-color] .input-group-addon, +[data-background-color] .form-group.form-group-no-border .input-group-addon, +[data-background-color] .input-group.form-group-no-border .input-group-addon { + color: rgba(255, 255, 255, 0.8); +} + +[data-background-color] .btn.btn-simple { + background-color: transparent; + border-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +[data-background-color] .btn.btn-simple:hover, +[data-background-color] .btn.btn-simple:hover, +[data-background-color] .btn.btn-simple:focus, +[data-background-color] .btn.btn-simple:active { + background-color: transparent; + border-color: #FFFFFF; +} + +[data-background-color] .nav-tabs>.nav-item>.nav-link i.now-ui-icons { + color: #FFFFFF; +} + +[data-background-color].section-nucleo-icons .icons-container i:nth-child(6) { + color: #FFFFFF; +} + +@media screen and (max-width: 991px) { + .sidebar-collapse .navbar-collapse { + position: fixed; + display: block; + top: 0; + height: 100% !important; + width: 300px; + right: 0; + z-index: 1032; + visibility: visible; + background-color: #999; + overflow-y: visible; + border-top: none; + text-align: left; + max-height: none !important; + -webkit-transform: translate3d(300px, 0, 0); + -moz-transform: translate3d(300px, 0, 0); + -o-transform: translate3d(300px, 0, 0); + -ms-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .sidebar-collapse .navbar-collapse:before { + background: #f96332; + /* For browsers that do not support gradients */ + background: -webkit-linear-gradient(#f96332 0%, #000 80%); + /* For Safari 5.1 to 6.0 */ + background: -o-linear-gradient(#f96332 0%, #000 80%); + /* For Opera 11.1 to 12.0 */ + background: -moz-linear-gradient(#f96332 0%, #000 80%); + /* For Firefox 3.6 to 15 */ + background: linear-gradient(#f96332 0%, #000 80%); + /* Standard syntax (must be last) */ + opacity: 0.76; + filter: alpha(opacity=76); + display: block; + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: -1; + } + .sidebar-collapse .navbar-collapse .navbar-nav:not(.navbar-logo) .nav-link { + margin: 0 1rem; + margin-top: 0.3125rem; + } + .sidebar-collapse .navbar-collapse .navbar-nav:not(.navbar-logo) .nav-link:not(.btn) { + color: #FFFFFF; + } + .sidebar-collapse .navbar-collapse .dropdown-menu .dropdown-item { + color: #FFFFFF; + } + .sidebar-collapse .navbar .navbar-nav { + margin-top: 53px; + } + .sidebar-collapse .navbar .navbar-nav .nav-link { + padding-top: 0.75rem; + padding-bottom: .75rem; + } + .sidebar-collapse .navbar .navbar-nav.navbar-logo { + top: 0; + height: 53px; + } + .sidebar-collapse .navbar .dropdown.show .dropdown-menu, + .sidebar-collapse .navbar .dropdown .dropdown-menu { + background-color: transparent; + border: 0; + transition: none; + -webkit-box-shadow: none; + box-shadow: none; + width: auto; + margin: 0 1rem; + margin-bottom: 15px; + padding-top: 0; + height: 150px; + overflow-y: scroll; + } + .sidebar-collapse .navbar .dropdown.show .dropdown-menu:before, + .sidebar-collapse .navbar .dropdown .dropdown-menu:before { + display: none; + } + .sidebar-collapse .navbar .dropdown .dropdown-item { + padding-left: 2.5rem; + } + .sidebar-collapse .navbar .dropdown .dropdown-menu { + display: none; + } + .sidebar-collapse .navbar .dropdown.show .dropdown-menu { + display: block; + } + .sidebar-collapse .navbar .dropdown-menu .dropdown-item:focus, + .sidebar-collapse .navbar .dropdown-menu .dropdown-item:hover { + color: #FFFFFF; + } + .sidebar-collapse .navbar .navbar-translate { + width: 100%; + position: relative; + display: flex; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + -ms-flex-align: center; + align-items: center; + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .sidebar-collapse .navbar .navbar-toggler-bar { + display: block; + position: relative; + width: 22px; + height: 1px; + border-radius: 1px; + background: #FFFFFF; + } + .sidebar-collapse .navbar .navbar-toggler-bar+.navbar-toggler-bar { + margin-top: 7px; + } + .sidebar-collapse .navbar .navbar-toggler-bar.bar2 { + width: 17px; + transition: width .2s linear; + } + .sidebar-collapse .navbar.bg-white:not(.navbar-transparent) .navbar-toggler-bar { + background: #888; + } + .sidebar-collapse .navbar .toggled .navbar-toggler-bar { + width: 24px; + } + .sidebar-collapse .navbar .toggled .navbar-toggler-bar+.navbar-toggler-bar { + margin-top: 5px; + } + .sidebar-collapse .bar1, + .sidebar-collapse .bar2, + .sidebar-collapse .bar3 { + outline: 1px solid transparent; + } + .sidebar-collapse .bar1 { + top: 0px; + -webkit-animation: topbar-back 500ms linear 0s; + -moz-animation: topbar-back 500ms linear 0s; + animation: topbar-back 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .sidebar-collapse .bar2 { + opacity: 1; + } + .sidebar-collapse .bar3 { + bottom: 0px; + -webkit-animation: bottombar-back 500ms linear 0s; + -moz-animation: bottombar-back 500ms linear 0s; + animation: bottombar-back 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .sidebar-collapse .toggled .bar1 { + top: 6px; + -webkit-animation: topbar-x 500ms linear 0s; + -moz-animation: topbar-x 500ms linear 0s; + animation: topbar-x 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .sidebar-collapse .toggled .bar2 { + opacity: 0; + } + .sidebar-collapse .toggled .bar3 { + bottom: 6px; + -webkit-animation: bottombar-x 500ms linear 0s; + -moz-animation: bottombar-x 500ms linear 0s; + animation: bottombar-x 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + @keyframes topbar-x { + 0% { + top: 0px; + transform: rotate(0deg); + } + 45% { + top: 6px; + transform: rotate(145deg); + } + 75% { + transform: rotate(130deg); + } + 100% { + transform: rotate(135deg); + } + } + @-webkit-keyframes topbar-x { + 0% { + top: 0px; + -webkit-transform: rotate(0deg); + } + 45% { + top: 6px; + -webkit-transform: rotate(145deg); + } + 75% { + -webkit-transform: rotate(130deg); + } + 100% { + -webkit-transform: rotate(135deg); + } + } + @-moz-keyframes topbar-x { + 0% { + top: 0px; + -moz-transform: rotate(0deg); + } + 45% { + top: 6px; + -moz-transform: rotate(145deg); + } + 75% { + -moz-transform: rotate(130deg); + } + 100% { + -moz-transform: rotate(135deg); + } + } + @keyframes topbar-back { + 0% { + top: 6px; + transform: rotate(135deg); + } + 45% { + transform: rotate(-10deg); + } + 75% { + transform: rotate(5deg); + } + 100% { + top: 0px; + transform: rotate(0); + } + } + @-webkit-keyframes topbar-back { + 0% { + top: 6px; + -webkit-transform: rotate(135deg); + } + 45% { + -webkit-transform: rotate(-10deg); + } + 75% { + -webkit-transform: rotate(5deg); + } + 100% { + top: 0px; + -webkit-transform: rotate(0); + } + } + @-moz-keyframes topbar-back { + 0% { + top: 6px; + -moz-transform: rotate(135deg); + } + 45% { + -moz-transform: rotate(-10deg); + } + 75% { + -moz-transform: rotate(5deg); + } + 100% { + top: 0px; + -moz-transform: rotate(0); + } + } + @keyframes bottombar-x { + 0% { + bottom: 0px; + transform: rotate(0deg); + } + 45% { + bottom: 6px; + transform: rotate(-145deg); + } + 75% { + transform: rotate(-130deg); + } + 100% { + transform: rotate(-135deg); + } + } + @-webkit-keyframes bottombar-x { + 0% { + bottom: 0px; + -webkit-transform: rotate(0deg); + } + 45% { + bottom: 6px; + -webkit-transform: rotate(-145deg); + } + 75% { + -webkit-transform: rotate(-130deg); + } + 100% { + -webkit-transform: rotate(-135deg); + } + } + @-moz-keyframes bottombar-x { + 0% { + bottom: 0px; + -moz-transform: rotate(0deg); + } + 45% { + bottom: 6px; + -moz-transform: rotate(-145deg); + } + 75% { + -moz-transform: rotate(-130deg); + } + 100% { + -moz-transform: rotate(-135deg); + } + } + @keyframes bottombar-back { + 0% { + bottom: 6px; + transform: rotate(-135deg); + } + 45% { + transform: rotate(10deg); + } + 75% { + transform: rotate(-5deg); + } + 100% { + bottom: 0px; + transform: rotate(0); + } + } + @-webkit-keyframes bottombar-back { + 0% { + bottom: 6px; + -webkit-transform: rotate(-135deg); + } + 45% { + -webkit-transform: rotate(10deg); + } + 75% { + -webkit-transform: rotate(-5deg); + } + 100% { + bottom: 0px; + -webkit-transform: rotate(0); + } + } + @-moz-keyframes bottombar-back { + 0% { + bottom: 6px; + -moz-transform: rotate(-135deg); + } + 45% { + -moz-transform: rotate(10deg); + } + 75% { + -moz-transform: rotate(-5deg); + } + 100% { + bottom: 0px; + -moz-transform: rotate(0); + } + } + @-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @-moz-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + .sidebar-collapse [class*="navbar-expand-"] .navbar-collapse { + width: 300px; + } + .sidebar-collapse .wrapper { + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .sidebar-collapse #bodyClick { + height: 100%; + width: 100%; + position: fixed; + opacity: 1; + top: 0; + left: auto; + right: 300px; + content: ""; + z-index: 9999; + overflow-x: hidden; + background-color: transparent; + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .sidebar-collapse.menu-on-left .navbar-collapse { + right: auto; + left: 0; + -webkit-transform: translate3d(-300px, 0, 0); + -moz-transform: translate3d(-300px, 0, 0); + -o-transform: translate3d(-300px, 0, 0); + -ms-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + .nav-open .sidebar-collapse .navbar-collapse { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); + } + .nav-open .sidebar-collapse .wrapper { + -webkit-transform: translate3d(-150px, 0, 0); + -moz-transform: translate3d(-150px, 0, 0); + -o-transform: translate3d(-150px, 0, 0); + -ms-transform: translate3d(-150px, 0, 0); + transform: translate3d(-150px, 0, 0); + } + .nav-open .sidebar-collapse .navbar-translate { + -webkit-transform: translate3d(-300px, 0, 0); + -moz-transform: translate3d(-300px, 0, 0); + -o-transform: translate3d(-300px, 0, 0); + -ms-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + .nav-open .sidebar-collapse.menu-on-left .navbar-collapse { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); + } + .nav-open .sidebar-collapse.menu-on-left .navbar-translate { + -webkit-transform: translate3d(300px, 0, 0); + -moz-transform: translate3d(300px, 0, 0); + -o-transform: translate3d(300px, 0, 0); + -ms-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + .nav-open .sidebar-collapse.menu-on-left .wrapper { + -webkit-transform: translate3d(150px, 0, 0); + -moz-transform: translate3d(150px, 0, 0); + -o-transform: translate3d(150px, 0, 0); + -ms-transform: translate3d(150px, 0, 0); + transform: translate3d(150px, 0, 0); + } + .nav-open .sidebar-collapse.menu-on-left #bodyClick { + right: auto; + left: 300px; + } + .bootstrap-collapse .navbar .navbar-collapse { + background: none !important; + } + .bootstrap-collapse .navbar .navbar-nav { + margin-top: 53px; + } + .bootstrap-collapse .navbar .navbar-nav .nav-link { + padding-top: 0.75rem; + padding-bottom: .75rem; + } + .bootstrap-collapse .navbar .navbar-nav.navbar-logo { + top: 0; + height: 53px; + } + .bootstrap-collapse .navbar .dropdown.show .dropdown-menu, + .bootstrap-collapse .navbar .dropdown .dropdown-menu { + background-color: transparent; + border: 0; + transition: none; + -webkit-box-shadow: none; + box-shadow: none; + width: auto; + margin: 0 1rem; + margin-bottom: 15px; + padding-top: 0; + height: 150px; + overflow-y: scroll; + } + .bootstrap-collapse .navbar .dropdown.show .dropdown-menu:before, + .bootstrap-collapse .navbar .dropdown .dropdown-menu:before { + display: none; + } + .bootstrap-collapse .navbar .dropdown .dropdown-item { + padding-left: 2.5rem; + } + .bootstrap-collapse .navbar .dropdown .dropdown-menu { + display: none; + } + .bootstrap-collapse .navbar .dropdown.show .dropdown-menu { + display: block; + } + .bootstrap-collapse .navbar .dropdown-menu .dropdown-item:focus, + .bootstrap-collapse .navbar .dropdown-menu .dropdown-item:hover { + color: #FFFFFF; + } + .bootstrap-collapse .navbar .navbar-translate { + width: 100%; + position: relative; + display: flex; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + -ms-flex-align: center; + align-items: center; + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .bootstrap-collapse .navbar .navbar-toggler-bar { + display: block; + position: relative; + width: 22px; + height: 1px; + border-radius: 1px; + background: #FFFFFF; + } + .bootstrap-collapse .navbar .navbar-toggler-bar+.navbar-toggler-bar { + margin-top: 7px; + } + .bootstrap-collapse .navbar .navbar-toggler-bar.bar2 { + width: 17px; + transition: width .2s linear; + } + .bootstrap-collapse .navbar.bg-white:not(.navbar-transparent) .navbar-toggler-bar { + background: #888; + } + .bootstrap-collapse .navbar .toggled .navbar-toggler-bar { + width: 24px; + } + .bootstrap-collapse .navbar .toggled .navbar-toggler-bar+.navbar-toggler-bar { + margin-top: 5px; + } + .bootstrap-collapse .bar1, + .bootstrap-collapse .bar2, + .bootstrap-collapse .bar3 { + outline: 1px solid transparent; + } + .bootstrap-collapse .bar1 { + top: 0px; + -webkit-animation: topbar-back 500ms linear 0s; + -moz-animation: topbar-back 500ms linear 0s; + animation: topbar-back 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .bootstrap-collapse .bar2 { + opacity: 1; + } + .bootstrap-collapse .bar3 { + bottom: 0px; + -webkit-animation: bottombar-back 500ms linear 0s; + -moz-animation: bottombar-back 500ms linear 0s; + animation: bottombar-back 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .bootstrap-collapse .toggled .bar1 { + top: 6px; + -webkit-animation: topbar-x 500ms linear 0s; + -moz-animation: topbar-x 500ms linear 0s; + animation: topbar-x 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .bootstrap-collapse .toggled .bar2 { + opacity: 0; + } + .bootstrap-collapse .toggled .bar3 { + bottom: 6px; + -webkit-animation: bottombar-x 500ms linear 0s; + -moz-animation: bottombar-x 500ms linear 0s; + animation: bottombar-x 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + @keyframes topbar-x { + 0% { + top: 0px; + transform: rotate(0deg); + } + 45% { + top: 6px; + transform: rotate(145deg); + } + 75% { + transform: rotate(130deg); + } + 100% { + transform: rotate(135deg); + } + } + @-webkit-keyframes topbar-x { + 0% { + top: 0px; + -webkit-transform: rotate(0deg); + } + 45% { + top: 6px; + -webkit-transform: rotate(145deg); + } + 75% { + -webkit-transform: rotate(130deg); + } + 100% { + -webkit-transform: rotate(135deg); + } + } + @-moz-keyframes topbar-x { + 0% { + top: 0px; + -moz-transform: rotate(0deg); + } + 45% { + top: 6px; + -moz-transform: rotate(145deg); + } + 75% { + -moz-transform: rotate(130deg); + } + 100% { + -moz-transform: rotate(135deg); + } + } + @keyframes topbar-back { + 0% { + top: 6px; + transform: rotate(135deg); + } + 45% { + transform: rotate(-10deg); + } + 75% { + transform: rotate(5deg); + } + 100% { + top: 0px; + transform: rotate(0); + } + } + @-webkit-keyframes topbar-back { + 0% { + top: 6px; + -webkit-transform: rotate(135deg); + } + 45% { + -webkit-transform: rotate(-10deg); + } + 75% { + -webkit-transform: rotate(5deg); + } + 100% { + top: 0px; + -webkit-transform: rotate(0); + } + } + @-moz-keyframes topbar-back { + 0% { + top: 6px; + -moz-transform: rotate(135deg); + } + 45% { + -moz-transform: rotate(-10deg); + } + 75% { + -moz-transform: rotate(5deg); + } + 100% { + top: 0px; + -moz-transform: rotate(0); + } + } + @keyframes bottombar-x { + 0% { + bottom: 0px; + transform: rotate(0deg); + } + 45% { + bottom: 6px; + transform: rotate(-145deg); + } + 75% { + transform: rotate(-130deg); + } + 100% { + transform: rotate(-135deg); + } + } + @-webkit-keyframes bottombar-x { + 0% { + bottom: 0px; + -webkit-transform: rotate(0deg); + } + 45% { + bottom: 6px; + -webkit-transform: rotate(-145deg); + } + 75% { + -webkit-transform: rotate(-130deg); + } + 100% { + -webkit-transform: rotate(-135deg); + } + } + @-moz-keyframes bottombar-x { + 0% { + bottom: 0px; + -moz-transform: rotate(0deg); + } + 45% { + bottom: 6px; + -moz-transform: rotate(-145deg); + } + 75% { + -moz-transform: rotate(-130deg); + } + 100% { + -moz-transform: rotate(-135deg); + } + } + @keyframes bottombar-back { + 0% { + bottom: 6px; + transform: rotate(-135deg); + } + 45% { + transform: rotate(10deg); + } + 75% { + transform: rotate(-5deg); + } + 100% { + bottom: 0px; + transform: rotate(0); + } + } + @-webkit-keyframes bottombar-back { + 0% { + bottom: 6px; + -webkit-transform: rotate(-135deg); + } + 45% { + -webkit-transform: rotate(10deg); + } + 75% { + -webkit-transform: rotate(-5deg); + } + 100% { + bottom: 0px; + -webkit-transform: rotate(0); + } + } + @-moz-keyframes bottombar-back { + 0% { + bottom: 6px; + -moz-transform: rotate(-135deg); + } + 45% { + -moz-transform: rotate(10deg); + } + 75% { + -moz-transform: rotate(-5deg); + } + 100% { + bottom: 0px; + -moz-transform: rotate(0); + } + } + @-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @-moz-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + .profile-photo .profile-photo-small { + margin-left: -2px; + } + .button-dropdown { + display: none; + } + .section-nucleo-icons .container .row>[class*="col-"]:first-child { + text-align: center; + } + .footer .copyright { + text-align: right; + } + .section-nucleo-icons .icons-container { + margin-top: 65px; + } + .navbar-nav .nav-link i.fa, + .navbar-nav .nav-link i.now-ui-icons { + opacity: .5; + } + .section-images { + height: 500px; + max-height: 500px; + } + .section-images .hero-images-container { + max-width: 500px; + } + .section-images .hero-images-container-1 { + right: 10%; + top: 68%; + max-width: 269px; + } + .section-images .hero-images-container-2 { + right: 5%; + max-width: 135px; + top: 93%; + } +} + +@media screen and (min-width: 992px) { + .burger-menu .navbar-collapse { + position: fixed; + display: block; + top: 0; + height: 100% !important; + width: 300px; + right: 0; + z-index: 1032; + visibility: visible; + background-color: #999; + overflow-y: visible; + border-top: none; + text-align: left; + max-height: none !important; + -webkit-transform: translate3d(300px, 0, 0); + -moz-transform: translate3d(300px, 0, 0); + -o-transform: translate3d(300px, 0, 0); + -ms-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .burger-menu .navbar-collapse:before { + background: #f96332; + /* For browsers that do not support gradients */ + background: -webkit-linear-gradient(#f96332 0%, #000 80%); + /* For Safari 5.1 to 6.0 */ + background: -o-linear-gradient(#f96332 0%, #000 80%); + /* For Opera 11.1 to 12.0 */ + background: -moz-linear-gradient(#f96332 0%, #000 80%); + /* For Firefox 3.6 to 15 */ + background: linear-gradient(#f96332 0%, #000 80%); + /* Standard syntax (must be last) */ + opacity: 0.76; + filter: alpha(opacity=76); + display: block; + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: -1; + } + .burger-menu .navbar-collapse .navbar-nav:not(.navbar-logo) .nav-link { + margin: 0 1rem; + margin-top: 0.3125rem; + } + .burger-menu .navbar-collapse .navbar-nav:not(.navbar-logo) .nav-link:not(.btn) { + color: #FFFFFF; + } + .burger-menu .navbar-collapse .dropdown-menu .dropdown-item { + color: #FFFFFF; + } + .burger-menu .navbar .navbar-nav { + margin-top: 53px; + } + .burger-menu .navbar .navbar-nav .nav-link { + padding-top: 0.75rem; + padding-bottom: .75rem; + } + .burger-menu .navbar .navbar-nav.navbar-logo { + top: 0; + height: 53px; + } + .burger-menu .navbar .dropdown.show .dropdown-menu, + .burger-menu .navbar .dropdown .dropdown-menu { + background-color: transparent; + border: 0; + transition: none; + -webkit-box-shadow: none; + box-shadow: none; + width: auto; + margin: 0 1rem; + margin-bottom: 15px; + padding-top: 0; + height: 150px; + overflow-y: scroll; + } + .burger-menu .navbar .dropdown.show .dropdown-menu:before, + .burger-menu .navbar .dropdown .dropdown-menu:before { + display: none; + } + .burger-menu .navbar .dropdown .dropdown-item { + padding-left: 2.5rem; + } + .burger-menu .navbar .dropdown .dropdown-menu { + display: none; + } + .burger-menu .navbar .dropdown.show .dropdown-menu { + display: block; + } + .burger-menu .navbar .dropdown-menu .dropdown-item:focus, + .burger-menu .navbar .dropdown-menu .dropdown-item:hover { + color: #FFFFFF; + } + .burger-menu .navbar .navbar-translate { + width: 100%; + position: relative; + display: flex; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + -ms-flex-align: center; + align-items: center; + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .burger-menu .navbar .navbar-toggler-bar { + display: block; + position: relative; + width: 22px; + height: 1px; + border-radius: 1px; + background: #FFFFFF; + } + .burger-menu .navbar .navbar-toggler-bar+.navbar-toggler-bar { + margin-top: 7px; + } + .burger-menu .navbar .navbar-toggler-bar.bar2 { + width: 17px; + transition: width .2s linear; + } + .burger-menu .navbar.bg-white:not(.navbar-transparent) .navbar-toggler-bar { + background: #888; + } + .burger-menu .navbar .toggled .navbar-toggler-bar { + width: 24px; + } + .burger-menu .navbar .toggled .navbar-toggler-bar+.navbar-toggler-bar { + margin-top: 5px; + } + .burger-menu .bar1, + .burger-menu .bar2, + .burger-menu .bar3 { + outline: 1px solid transparent; + } + .burger-menu .bar1 { + top: 0px; + -webkit-animation: topbar-back 500ms linear 0s; + -moz-animation: topbar-back 500ms linear 0s; + animation: topbar-back 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .burger-menu .bar2 { + opacity: 1; + } + .burger-menu .bar3 { + bottom: 0px; + -webkit-animation: bottombar-back 500ms linear 0s; + -moz-animation: bottombar-back 500ms linear 0s; + animation: bottombar-back 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .burger-menu .toggled .bar1 { + top: 6px; + -webkit-animation: topbar-x 500ms linear 0s; + -moz-animation: topbar-x 500ms linear 0s; + animation: topbar-x 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + .burger-menu .toggled .bar2 { + opacity: 0; + } + .burger-menu .toggled .bar3 { + bottom: 6px; + -webkit-animation: bottombar-x 500ms linear 0s; + -moz-animation: bottombar-x 500ms linear 0s; + animation: bottombar-x 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } + @keyframes topbar-x { + 0% { + top: 0px; + transform: rotate(0deg); + } + 45% { + top: 6px; + transform: rotate(145deg); + } + 75% { + transform: rotate(130deg); + } + 100% { + transform: rotate(135deg); + } + } + @-webkit-keyframes topbar-x { + 0% { + top: 0px; + -webkit-transform: rotate(0deg); + } + 45% { + top: 6px; + -webkit-transform: rotate(145deg); + } + 75% { + -webkit-transform: rotate(130deg); + } + 100% { + -webkit-transform: rotate(135deg); + } + } + @-moz-keyframes topbar-x { + 0% { + top: 0px; + -moz-transform: rotate(0deg); + } + 45% { + top: 6px; + -moz-transform: rotate(145deg); + } + 75% { + -moz-transform: rotate(130deg); + } + 100% { + -moz-transform: rotate(135deg); + } + } + @keyframes topbar-back { + 0% { + top: 6px; + transform: rotate(135deg); + } + 45% { + transform: rotate(-10deg); + } + 75% { + transform: rotate(5deg); + } + 100% { + top: 0px; + transform: rotate(0); + } + } + @-webkit-keyframes topbar-back { + 0% { + top: 6px; + -webkit-transform: rotate(135deg); + } + 45% { + -webkit-transform: rotate(-10deg); + } + 75% { + -webkit-transform: rotate(5deg); + } + 100% { + top: 0px; + -webkit-transform: rotate(0); + } + } + @-moz-keyframes topbar-back { + 0% { + top: 6px; + -moz-transform: rotate(135deg); + } + 45% { + -moz-transform: rotate(-10deg); + } + 75% { + -moz-transform: rotate(5deg); + } + 100% { + top: 0px; + -moz-transform: rotate(0); + } + } + @keyframes bottombar-x { + 0% { + bottom: 0px; + transform: rotate(0deg); + } + 45% { + bottom: 6px; + transform: rotate(-145deg); + } + 75% { + transform: rotate(-130deg); + } + 100% { + transform: rotate(-135deg); + } + } + @-webkit-keyframes bottombar-x { + 0% { + bottom: 0px; + -webkit-transform: rotate(0deg); + } + 45% { + bottom: 6px; + -webkit-transform: rotate(-145deg); + } + 75% { + -webkit-transform: rotate(-130deg); + } + 100% { + -webkit-transform: rotate(-135deg); + } + } + @-moz-keyframes bottombar-x { + 0% { + bottom: 0px; + -moz-transform: rotate(0deg); + } + 45% { + bottom: 6px; + -moz-transform: rotate(-145deg); + } + 75% { + -moz-transform: rotate(-130deg); + } + 100% { + -moz-transform: rotate(-135deg); + } + } + @keyframes bottombar-back { + 0% { + bottom: 6px; + transform: rotate(-135deg); + } + 45% { + transform: rotate(10deg); + } + 75% { + transform: rotate(-5deg); + } + 100% { + bottom: 0px; + transform: rotate(0); + } + } + @-webkit-keyframes bottombar-back { + 0% { + bottom: 6px; + -webkit-transform: rotate(-135deg); + } + 45% { + -webkit-transform: rotate(10deg); + } + 75% { + -webkit-transform: rotate(-5deg); + } + 100% { + bottom: 0px; + -webkit-transform: rotate(0); + } + } + @-moz-keyframes bottombar-back { + 0% { + bottom: 6px; + -moz-transform: rotate(-135deg); + } + 45% { + -moz-transform: rotate(10deg); + } + 75% { + -moz-transform: rotate(-5deg); + } + 100% { + bottom: 0px; + -moz-transform: rotate(0); + } + } + @-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @-moz-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + .burger-menu [class*="navbar-expand-"] .navbar-collapse { + width: 300px; + } + .burger-menu .wrapper { + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .burger-menu #bodyClick { + height: 100%; + width: 100%; + position: fixed; + opacity: 1; + top: 0; + left: auto; + right: 300px; + content: ""; + z-index: 9999; + overflow-x: hidden; + background-color: transparent; + -webkit-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -moz-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -o-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + -ms-transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); + } + .nav-open .burger-menu .navbar-collapse { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); + } + .burger-menu .navbar-collapse { + display: block !important; + } + .burger-menu .navbar-collapse .navbar-nav { + margin-top: 53px; + height: 100%; + z-index: 2; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + } + .burger-menu .navbar-collapse .navbar-nav .nav-item { + margin: 0; + } + .burger-menu.menu-on-left .navbar-collapse { + right: auto; + left: 0; + -webkit-transform: translate3d(-300px, 0, 0); + -moz-transform: translate3d(-300px, 0, 0); + -o-transform: translate3d(-300px, 0, 0); + -ms-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + .burger-menu [class*="navbar-expand-"] .navbar-nav .dropdown-menu { + position: static; + float: none; + } + .burger-menu [class*="navbar-expand-"] .navbar-toggler { + display: inline-block; + } + .burger-menu .section-navbars .navbar-collapse { + display: none !important; + } + .nav-open .burger-menu.menu-on-left .navbar .navbar-translate { + -webkit-transform: translate3d(300px, 0, 0); + -moz-transform: translate3d(300px, 0, 0); + -o-transform: translate3d(300px, 0, 0); + -ms-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + .nav-open .burger-menu .navbar .navbar-translate { + -webkit-transform: translate3d(-300px, 0, 0); + -moz-transform: translate3d(-300px, 0, 0); + -o-transform: translate3d(-300px, 0, 0); + -ms-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + .nav-open .burger-menu.menu-on-left .navbar-collapse { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); + } + .nav-open .burger-menu.menu-on-left #bodyClick { + right: auto; + left: 300px; + } + .burger-menu.menu-on-left .navbar-brand { + float: right; + margin-right: 0; + margin-left: 1rem; + } + .navbar-nav .nav-link.profile-photo { + padding: 0; + margin: 7px 0.7rem; + } + .navbar-nav .nav-link.btn:not(.btn-sm) { + margin: 0; + } + .navbar-nav .nav-item:not(:last-child) { + margin-right: 5px; + } + .section-nucleo-icons .icons-container { + margin: 0 0 0 auto; + } + .dropdown-menu .dropdown-item { + color: inherit; + } + .footer .copyright { + float: right; + } +} + +@media screen and (min-width: 768px) { + .image-container.image-right { + top: 80px; + margin-left: -100px; + margin-bottom: 130px; + } + .image-container.image-left { + margin-right: -100px; + } +} + +@media screen and (max-width: 768px) { + .image-container.image-left { + margin-bottom: 220px; + } + .image-container.image-left p.blockquote { + margin: 0 auto; + position: relative; + right: 0; + } + .nav-tabs { + display: inline-block; + width: 100%; + padding-left: 100px; + padding-right: 100px; + text-align: center; + } + .nav-tabs .nav-item>.nav-link { + margin-bottom: 5px; + } + .landing-page .section-story-overview .image-container:nth-child(2) { + margin-left: 0; + margin-bottom: 30px; + } +} + +@media screen and (max-width: 576px) { + .navbar[class*='navbar-expand-'] .container { + margin-left: 0; + margin-right: 0; + } + .footer .copyright { + text-align: center; + } + .section-nucleo-icons .icons-container i { + font-size: 30px; + } + .section-nucleo-icons .icons-container i:nth-child(6) { + font-size: 48px; + } + .page-header .container h6.category-absolute { + width: 90%; + } +} + +@media screen and (min-width: 991px) and (max-width: 1200px) { + .section-images .hero-images-container-1 { + right: 9%; + max-width: 370px; + } + .section-images .hero-images-container-2 { + right: 2%; + max-width: 216px; + } +} + +@media screen and (max-width: 768px) { + .section-images { + height: 300px; + max-height: 300px; + } + .section-images .hero-images-container { + max-width: 380px; + } + .section-images .hero-images-container-1 { + right: 7%; + top: 87%; + max-width: 210px; + } + .section-images .hero-images-container-2 { + right: 1%; + max-width: 133px; + top: 99%; + } +} + +@media screen and (max-width: 517px) { + .alert .alert-icon { + margin-top: 10px; + } +} + +@media screen and (min-width: 1200px) { + .section-images .hero-images-container-1 { + top: 51%; + right: 21%; + } + .section-images .hero-images-container-2 { + top: 66%; + right: 14%; + } +} + +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait) { + .section-images .hero-images-container, + .section-images .hero-images-container-1, + .section-images .hero-images-container-2 { + margin-top: -15vh; + margin-left: 80px; + } + .section-images .hero-images-container { + max-width: 300px; + } + .section-images .hero-images-container-1 { + right: 28%; + top: 40%; + } + .section-images .hero-images-container-2 { + right: 21%; + top: 55%; + } + .index-page .category-absolute { + top: 90vh; + } +} + +@media screen and (max-width: 580px) { + .alert button.close { + position: absolute; + right: 11px; + top: 50%; + transform: translateY(-50%); + } +} \ No newline at end of file diff --git a/web/libs/fonts/nucleo-outline.eot b/web/libs/fonts/nucleo-outline.eot new file mode 100644 index 00000000..3625494f Binary files /dev/null and b/web/libs/fonts/nucleo-outline.eot differ diff --git a/web/libs/fonts/nucleo-outline.ttf b/web/libs/fonts/nucleo-outline.ttf new file mode 100644 index 00000000..5caf5553 Binary files /dev/null and b/web/libs/fonts/nucleo-outline.ttf differ diff --git a/web/libs/fonts/nucleo-outline.woff b/web/libs/fonts/nucleo-outline.woff new file mode 100644 index 00000000..425ee841 Binary files /dev/null and b/web/libs/fonts/nucleo-outline.woff differ diff --git a/web/libs/fonts/nucleo-outline.woff2 b/web/libs/fonts/nucleo-outline.woff2 new file mode 100644 index 00000000..791b3b91 Binary files /dev/null and b/web/libs/fonts/nucleo-outline.woff2 differ diff --git a/web/libs/js/bootstrap4.min.js b/web/libs/js/bootstrap4.min.js new file mode 100644 index 00000000..32445bf8 --- /dev/null +++ b/web/libs/js/bootstrap4.min.js @@ -0,0 +1,1586 @@ +/*! + * Bootstrap v4.0.0-beta (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript."); +! function(t) { + var e = jQuery.fn.jquery.split(" ")[0].split("."); + if (e[0] < 2 && e[1] < 9 || 1 == e[0] && 9 == e[1] && e[2] < 1 || e[0] >= 4) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0") +}(), +function() { + function t(t, e) { + if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !e || "object" != typeof e && "function" != typeof e ? t : e + } + + function e(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) + } + + function n(t, e) { + if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + } + var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + return typeof t + } : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + }, + o = function() { + function t(t, e) { + for (var n = 0; n < e.length; n++) { + var i = e[n]; + i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i) + } + } + return function(e, n, i) { + return n && t(e.prototype, n), i && t(e, i), e + } + }(), + r = function(t) { + function e(t) { + return {}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase() + } + + function n(t) { + return (t[0] || t).nodeType + } + + function i() { + return { + bindType: s.end, + delegateType: s.end, + handle: function(e) { + if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + } + + function o() { + if (window.QUnit) return !1; + var t = document.createElement("bootstrap"); + for (var e in a) + if (void 0 !== t.style[e]) return { + end: a[e] + }; + return !1 + } + + function r(e) { + var n = this, + i = !1; + return t(this).one(l.TRANSITION_END, function() { + i = !0 + }), setTimeout(function() { + i || l.triggerTransitionEnd(n) + }, e), this + } + var s = !1, + a = { + WebkitTransition: "webkitTransitionEnd", + MozTransition: "transitionend", + OTransition: "oTransitionEnd otransitionend", + transition: "transitionend" + }, + l = { + TRANSITION_END: "bsTransitionEnd", + getUID: function(t) { + do { + t += ~~(1e6 * Math.random()) + } while (document.getElementById(t)); + return t + }, + getSelectorFromElement: function(e) { + var n = e.getAttribute("data-target"); + n && "#" !== n || (n = e.getAttribute("href") || ""); + try { + return t(n).length > 0 ? n : null + } catch (t) { + return null + } + }, + reflow: function(t) { + return t.offsetHeight + }, + triggerTransitionEnd: function(e) { + t(e).trigger(s.end) + }, + supportsTransitionEnd: function() { + return Boolean(s) + }, + typeCheckConfig: function(t, i, o) { + for (var r in o) + if (o.hasOwnProperty(r)) { + var s = o[r], + a = i[r], + l = a && n(a) ? "element" : e(a); + if (!new RegExp(s).test(l)) throw new Error(t.toUpperCase() + ': Option "' + r + '" provided type "' + l + '" but expected type "' + s + '".') + } + } + }; + return s = o(), t.fn.emulateTransitionEnd = r, l.supportsTransitionEnd() && (t.event.special[l.TRANSITION_END] = i()), l + }(jQuery), + s = (function(t) { + var e = "alert", + i = t.fn[e], + s = { + DISMISS: '[data-dismiss="alert"]' + }, + a = { + CLOSE: "close.bs.alert", + CLOSED: "closed.bs.alert", + CLICK_DATA_API: "click.bs.alert.data-api" + }, + l = { + ALERT: "alert", + FADE: "fade", + SHOW: "show" + }, + h = function() { + function e(t) { + n(this, e), this._element = t + } + return e.prototype.close = function(t) { + t = t || this._element; + var e = this._getRootElement(t); + this._triggerCloseEvent(e).isDefaultPrevented() || this._removeElement(e) + }, e.prototype.dispose = function() { + t.removeData(this._element, "bs.alert"), this._element = null + }, e.prototype._getRootElement = function(e) { + var n = r.getSelectorFromElement(e), + i = !1; + return n && (i = t(n)[0]), i || (i = t(e).closest("." + l.ALERT)[0]), i + }, e.prototype._triggerCloseEvent = function(e) { + var n = t.Event(a.CLOSE); + return t(e).trigger(n), n + }, e.prototype._removeElement = function(e) { + var n = this; + t(e).removeClass(l.SHOW), r.supportsTransitionEnd() && t(e).hasClass(l.FADE) ? t(e).one(r.TRANSITION_END, function(t) { + return n._destroyElement(e, t) + }).emulateTransitionEnd(150) : this._destroyElement(e) + }, e.prototype._destroyElement = function(e) { + t(e).detach().trigger(a.CLOSED).remove() + }, e._jQueryInterface = function(n) { + return this.each(function() { + var i = t(this), + o = i.data("bs.alert"); + o || (o = new e(this), i.data("bs.alert", o)), "close" === n && o[n](this) + }) + }, e._handleDismiss = function(t) { + return function(e) { + e && e.preventDefault(), t.close(this) + } + }, o(e, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }]), e + }(); + t(document).on(a.CLICK_DATA_API, s.DISMISS, h._handleDismiss(new h)), t.fn[e] = h._jQueryInterface, t.fn[e].Constructor = h, t.fn[e].noConflict = function() { + return t.fn[e] = i, h._jQueryInterface + } + }(jQuery), function(t) { + var e = "button", + i = t.fn[e], + r = { + ACTIVE: "active", + BUTTON: "btn", + FOCUS: "focus" + }, + s = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: "input", + ACTIVE: ".active", + BUTTON: ".btn" + }, + a = { + CLICK_DATA_API: "click.bs.button.data-api", + FOCUS_BLUR_DATA_API: "focus.bs.button.data-api blur.bs.button.data-api" + }, + l = function() { + function e(t) { + n(this, e), this._element = t + } + return e.prototype.toggle = function() { + var e = !0, + n = !0, + i = t(this._element).closest(s.DATA_TOGGLE)[0]; + if (i) { + var o = t(this._element).find(s.INPUT)[0]; + if (o) { + if ("radio" === o.type) + if (o.checked && t(this._element).hasClass(r.ACTIVE)) e = !1; + else { + var a = t(i).find(s.ACTIVE)[0]; + a && t(a).removeClass(r.ACTIVE) + } + if (e) { + if (o.hasAttribute("disabled") || i.hasAttribute("disabled") || o.classList.contains("disabled") || i.classList.contains("disabled")) return; + o.checked = !t(this._element).hasClass(r.ACTIVE), t(o).trigger("change") + } + o.focus(), n = !1 + } + } + n && this._element.setAttribute("aria-pressed", !t(this._element).hasClass(r.ACTIVE)), e && t(this._element).toggleClass(r.ACTIVE) + }, e.prototype.dispose = function() { + t.removeData(this._element, "bs.button"), this._element = null + }, e._jQueryInterface = function(n) { + return this.each(function() { + var i = t(this).data("bs.button"); + i || (i = new e(this), t(this).data("bs.button", i)), "toggle" === n && i[n]() + }) + }, o(e, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }]), e + }(); + t(document).on(a.CLICK_DATA_API, s.DATA_TOGGLE_CARROT, function(e) { + e.preventDefault(); + var n = e.target; + t(n).hasClass(r.BUTTON) || (n = t(n).closest(s.BUTTON)), l._jQueryInterface.call(t(n), "toggle") + }).on(a.FOCUS_BLUR_DATA_API, s.DATA_TOGGLE_CARROT, function(e) { + var n = t(e.target).closest(s.BUTTON)[0]; + t(n).toggleClass(r.FOCUS, /^focus(in)?$/.test(e.type)) + }), t.fn[e] = l._jQueryInterface, t.fn[e].Constructor = l, t.fn[e].noConflict = function() { + return t.fn[e] = i, l._jQueryInterface + } + }(jQuery), function(t) { + var e = "carousel", + s = "bs.carousel", + a = "." + s, + l = t.fn[e], + h = { + interval: 5e3, + keyboard: !0, + slide: !1, + pause: "hover", + wrap: !0 + }, + c = { + interval: "(number|boolean)", + keyboard: "boolean", + slide: "(boolean|string)", + pause: "(string|boolean)", + wrap: "boolean" + }, + u = { + NEXT: "next", + PREV: "prev", + LEFT: "left", + RIGHT: "right" + }, + d = { + SLIDE: "slide" + a, + SLID: "slid" + a, + KEYDOWN: "keydown" + a, + MOUSEENTER: "mouseenter" + a, + MOUSELEAVE: "mouseleave" + a, + TOUCHEND: "touchend" + a, + LOAD_DATA_API: "load.bs.carousel.data-api", + CLICK_DATA_API: "click.bs.carousel.data-api" + }, + f = { + CAROUSEL: "carousel", + ACTIVE: "active", + SLIDE: "slide", + RIGHT: "carousel-item-right", + LEFT: "carousel-item-left", + NEXT: "carousel-item-next", + PREV: "carousel-item-prev", + ITEM: "carousel-item" + }, + p = { + ACTIVE: ".active", + ACTIVE_ITEM: ".active.carousel-item", + ITEM: ".carousel-item", + NEXT_PREV: ".carousel-item-next, .carousel-item-prev", + INDICATORS: ".carousel-indicators", + DATA_SLIDE: "[data-slide], [data-slide-to]", + DATA_RIDE: '[data-ride="carousel"]' + }, + _ = function() { + function l(e, i) { + n(this, l), this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this._config = this._getConfig(i), this._element = t(e)[0], this._indicatorsElement = t(this._element).find(p.INDICATORS)[0], this._addEventListeners() + } + return l.prototype.next = function() { + this._isSliding || this._slide(u.NEXT) + }, l.prototype.nextWhenVisible = function() { + document.hidden || this.next() + }, l.prototype.prev = function() { + this._isSliding || this._slide(u.PREV) + }, l.prototype.pause = function(e) { + e || (this._isPaused = !0), t(this._element).find(p.NEXT_PREV)[0] && r.supportsTransitionEnd() && (r.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null + }, l.prototype.cycle = function(t) { + t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval)) + }, l.prototype.to = function(e) { + var n = this; + this._activeElement = t(this._element).find(p.ACTIVE_ITEM)[0]; + var i = this._getItemIndex(this._activeElement); + if (!(e > this._items.length - 1 || e < 0)) + if (this._isSliding) t(this._element).one(d.SLID, function() { + return n.to(e) + }); + else { + if (i === e) return this.pause(), void this.cycle(); + var o = e > i ? u.NEXT : u.PREV; + this._slide(o, this._items[e]) + } + }, l.prototype.dispose = function() { + t(this._element).off(a), t.removeData(this._element, s), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null + }, l.prototype._getConfig = function(n) { + return n = t.extend({}, h, n), r.typeCheckConfig(e, n, c), n + }, l.prototype._addEventListeners = function() { + var e = this; + this._config.keyboard && t(this._element).on(d.KEYDOWN, function(t) { + return e._keydown(t) + }), "hover" === this._config.pause && (t(this._element).on(d.MOUSEENTER, function(t) { + return e.pause(t) + }).on(d.MOUSELEAVE, function(t) { + return e.cycle(t) + }), "ontouchstart" in document.documentElement && t(this._element).on(d.TOUCHEND, function() { + e.pause(), e.touchTimeout && clearTimeout(e.touchTimeout), e.touchTimeout = setTimeout(function(t) { + return e.cycle(t) + }, 500 + e._config.interval) + })) + }, l.prototype._keydown = function(t) { + if (!/input|textarea/i.test(t.target.tagName)) switch (t.which) { + case 37: + t.preventDefault(), this.prev(); + break; + case 39: + t.preventDefault(), this.next(); + break; + default: + return + } + }, l.prototype._getItemIndex = function(e) { + return this._items = t.makeArray(t(e).parent().find(p.ITEM)), this._items.indexOf(e) + }, l.prototype._getItemByDirection = function(t, e) { + var n = t === u.NEXT, + i = t === u.PREV, + o = this._getItemIndex(e), + r = this._items.length - 1; + if ((i && 0 === o || n && o === r) && !this._config.wrap) return e; + var s = (o + (t === u.PREV ? -1 : 1)) % this._items.length; + return -1 === s ? this._items[this._items.length - 1] : this._items[s] + }, l.prototype._triggerSlideEvent = function(e, n) { + var i = this._getItemIndex(e), + o = this._getItemIndex(t(this._element).find(p.ACTIVE_ITEM)[0]), + r = t.Event(d.SLIDE, { + relatedTarget: e, + direction: n, + from: o, + to: i + }); + return t(this._element).trigger(r), r + }, l.prototype._setActiveIndicatorElement = function(e) { + if (this._indicatorsElement) { + t(this._indicatorsElement).find(p.ACTIVE).removeClass(f.ACTIVE); + var n = this._indicatorsElement.children[this._getItemIndex(e)]; + n && t(n).addClass(f.ACTIVE) + } + }, l.prototype._slide = function(e, n) { + var i = this, + o = t(this._element).find(p.ACTIVE_ITEM)[0], + s = this._getItemIndex(o), + a = n || o && this._getItemByDirection(e, o), + l = this._getItemIndex(a), + h = Boolean(this._interval), + c = void 0, + _ = void 0, + g = void 0; + if (e === u.NEXT ? (c = f.LEFT, _ = f.NEXT, g = u.LEFT) : (c = f.RIGHT, _ = f.PREV, g = u.RIGHT), a && t(a).hasClass(f.ACTIVE)) this._isSliding = !1; + else if (!this._triggerSlideEvent(a, g).isDefaultPrevented() && o && a) { + this._isSliding = !0, h && this.pause(), this._setActiveIndicatorElement(a); + var m = t.Event(d.SLID, { + relatedTarget: a, + direction: g, + from: s, + to: l + }); + r.supportsTransitionEnd() && t(this._element).hasClass(f.SLIDE) ? (t(a).addClass(_), r.reflow(a), t(o).addClass(c), t(a).addClass(c), t(o).one(r.TRANSITION_END, function() { + t(a).removeClass(c + " " + _).addClass(f.ACTIVE), t(o).removeClass(f.ACTIVE + " " + _ + " " + c), i._isSliding = !1, setTimeout(function() { + return t(i._element).trigger(m) + }, 0) + }).emulateTransitionEnd(600)) : (t(o).removeClass(f.ACTIVE), t(a).addClass(f.ACTIVE), this._isSliding = !1, t(this._element).trigger(m)), h && this.cycle() + } + }, l._jQueryInterface = function(e) { + return this.each(function() { + var n = t(this).data(s), + o = t.extend({}, h, t(this).data()); + "object" === (void 0 === e ? "undefined" : i(e)) && t.extend(o, e); + var r = "string" == typeof e ? e : o.slide; + if (n || (n = new l(this, o), t(this).data(s, n)), "number" == typeof e) n.to(e); + else if ("string" == typeof r) { + if (void 0 === n[r]) throw new Error('No method named "' + r + '"'); + n[r]() + } else o.interval && (n.pause(), n.cycle()) + }) + }, l._dataApiClickHandler = function(e) { + var n = r.getSelectorFromElement(this); + if (n) { + var i = t(n)[0]; + if (i && t(i).hasClass(f.CAROUSEL)) { + var o = t.extend({}, t(i).data(), t(this).data()), + a = this.getAttribute("data-slide-to"); + a && (o.interval = !1), l._jQueryInterface.call(t(i), o), a && t(i).data(s).to(a), e.preventDefault() + } + } + }, o(l, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }, { + key: "Default", + get: function() { + return h + } + }]), l + }(); + t(document).on(d.CLICK_DATA_API, p.DATA_SLIDE, _._dataApiClickHandler), t(window).on(d.LOAD_DATA_API, function() { + t(p.DATA_RIDE).each(function() { + var e = t(this); + _._jQueryInterface.call(e, e.data()) + }) + }), t.fn[e] = _._jQueryInterface, t.fn[e].Constructor = _, t.fn[e].noConflict = function() { + return t.fn[e] = l, _._jQueryInterface + } + }(jQuery), function(t) { + var e = "collapse", + s = "bs.collapse", + a = t.fn[e], + l = { + toggle: !0, + parent: "" + }, + h = { + toggle: "boolean", + parent: "string" + }, + c = { + SHOW: "show.bs.collapse", + SHOWN: "shown.bs.collapse", + HIDE: "hide.bs.collapse", + HIDDEN: "hidden.bs.collapse", + CLICK_DATA_API: "click.bs.collapse.data-api" + }, + u = { + SHOW: "show", + COLLAPSE: "collapse", + COLLAPSING: "collapsing", + COLLAPSED: "collapsed" + }, + d = { + WIDTH: "width", + HEIGHT: "height" + }, + f = { + ACTIVES: ".show, .collapsing", + DATA_TOGGLE: '[data-toggle="collapse"]' + }, + p = function() { + function a(e, i) { + n(this, a), this._isTransitioning = !1, this._element = e, this._config = this._getConfig(i), this._triggerArray = t.makeArray(t('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]')); + for (var o = t(f.DATA_TOGGLE), s = 0; s < o.length; s++) { + var l = o[s], + h = r.getSelectorFromElement(l); + null !== h && t(h).filter(e).length > 0 && this._triggerArray.push(l) + } + this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle() + } + return a.prototype.toggle = function() { + t(this._element).hasClass(u.SHOW) ? this.hide() : this.show() + }, a.prototype.show = function() { + var e = this; + if (!this._isTransitioning && !t(this._element).hasClass(u.SHOW)) { + var n = void 0, + i = void 0; + if (this._parent && ((n = t.makeArray(t(this._parent).children().children(f.ACTIVES))).length || (n = null)), !(n && (i = t(n).data(s)) && i._isTransitioning)) { + var o = t.Event(c.SHOW); + if (t(this._element).trigger(o), !o.isDefaultPrevented()) { + n && (a._jQueryInterface.call(t(n), "hide"), i || t(n).data(s, null)); + var l = this._getDimension(); + t(this._element).removeClass(u.COLLAPSE).addClass(u.COLLAPSING), this._element.style[l] = 0, this._triggerArray.length && t(this._triggerArray).removeClass(u.COLLAPSED).attr("aria-expanded", !0), this.setTransitioning(!0); + var h = function() { + t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).addClass(u.SHOW), e._element.style[l] = "", e.setTransitioning(!1), t(e._element).trigger(c.SHOWN) + }; + if (r.supportsTransitionEnd()) { + var d = "scroll" + (l[0].toUpperCase() + l.slice(1)); + t(this._element).one(r.TRANSITION_END, h).emulateTransitionEnd(600), this._element.style[l] = this._element[d] + "px" + } else h() + } + } + } + }, a.prototype.hide = function() { + var e = this; + if (!this._isTransitioning && t(this._element).hasClass(u.SHOW)) { + var n = t.Event(c.HIDE); + if (t(this._element).trigger(n), !n.isDefaultPrevented()) { + var i = this._getDimension(); + if (this._element.style[i] = this._element.getBoundingClientRect()[i] + "px", r.reflow(this._element), t(this._element).addClass(u.COLLAPSING).removeClass(u.COLLAPSE).removeClass(u.SHOW), this._triggerArray.length) + for (var o = 0; o < this._triggerArray.length; o++) { + var s = this._triggerArray[o], + a = r.getSelectorFromElement(s); + null !== a && (t(a).hasClass(u.SHOW) || t(s).addClass(u.COLLAPSED).attr("aria-expanded", !1)) + } + this.setTransitioning(!0); + var l = function() { + e.setTransitioning(!1), t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).trigger(c.HIDDEN) + }; + this._element.style[i] = "", r.supportsTransitionEnd() ? t(this._element).one(r.TRANSITION_END, l).emulateTransitionEnd(600) : l() + } + } + }, a.prototype.setTransitioning = function(t) { + this._isTransitioning = t + }, a.prototype.dispose = function() { + t.removeData(this._element, s), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null + }, a.prototype._getConfig = function(n) { + return n = t.extend({}, l, n), n.toggle = Boolean(n.toggle), r.typeCheckConfig(e, n, h), n + }, a.prototype._getDimension = function() { + return t(this._element).hasClass(d.WIDTH) ? d.WIDTH : d.HEIGHT + }, a.prototype._getParent = function() { + var e = this, + n = t(this._config.parent)[0], + i = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + return t(n).find(i).each(function(t, n) { + e._addAriaAndCollapsedClass(a._getTargetFromElement(n), [n]) + }), n + }, a.prototype._addAriaAndCollapsedClass = function(e, n) { + if (e) { + var i = t(e).hasClass(u.SHOW); + n.length && t(n).toggleClass(u.COLLAPSED, !i).attr("aria-expanded", i) + } + }, a._getTargetFromElement = function(e) { + var n = r.getSelectorFromElement(e); + return n ? t(n)[0] : null + }, a._jQueryInterface = function(e) { + return this.each(function() { + var n = t(this), + o = n.data(s), + r = t.extend({}, l, n.data(), "object" === (void 0 === e ? "undefined" : i(e)) && e); + if (!o && r.toggle && /show|hide/.test(e) && (r.toggle = !1), o || (o = new a(this, r), n.data(s, o)), "string" == typeof e) { + if (void 0 === o[e]) throw new Error('No method named "' + e + '"'); + o[e]() + } + }) + }, o(a, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }, { + key: "Default", + get: function() { + return l + } + }]), a + }(); + t(document).on(c.CLICK_DATA_API, f.DATA_TOGGLE, function(e) { + /input|textarea/i.test(e.target.tagName) || e.preventDefault(); + var n = t(this), + i = r.getSelectorFromElement(this); + t(i).each(function() { + var e = t(this), + i = e.data(s) ? "toggle" : n.data(); + p._jQueryInterface.call(e, i) + }) + }), t.fn[e] = p._jQueryInterface, t.fn[e].Constructor = p, t.fn[e].noConflict = function() { + return t.fn[e] = a, p._jQueryInterface + } + }(jQuery), function(t) { + if ("undefined" == typeof Popper) throw new Error("Bootstrap dropdown require Popper.js (https://popper.js.org)"); + var e = "dropdown", + s = "bs.dropdown", + a = "." + s, + l = t.fn[e], + h = new RegExp("38|40|27"), + c = { + HIDE: "hide" + a, + HIDDEN: "hidden" + a, + SHOW: "show" + a, + SHOWN: "shown" + a, + CLICK: "click" + a, + CLICK_DATA_API: "click.bs.dropdown.data-api", + KEYDOWN_DATA_API: "keydown.bs.dropdown.data-api", + KEYUP_DATA_API: "keyup.bs.dropdown.data-api" + }, + u = { + DISABLED: "disabled", + SHOW: "show", + DROPUP: "dropup", + MENURIGHT: "dropdown-menu-right", + MENULEFT: "dropdown-menu-left" + }, + d = { + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: ".dropdown form", + MENU: ".dropdown-menu", + NAVBAR_NAV: ".navbar-nav", + VISIBLE_ITEMS: ".dropdown-menu .dropdown-item:not(.disabled)" + }, + f = { + TOP: "top-start", + TOPEND: "top-end", + BOTTOM: "bottom-start", + BOTTOMEND: "bottom-end" + }, + p = { + placement: f.BOTTOM, + offset: 0, + flip: !0 + }, + _ = { + placement: "string", + offset: "(number|string)", + flip: "boolean" + }, + g = function() { + function l(t, e) { + n(this, l), this._element = t, this._popper = null, this._config = this._getConfig(e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners() + } + return l.prototype.toggle = function() { + if (!this._element.disabled && !t(this._element).hasClass(u.DISABLED)) { + var e = l._getParentFromElement(this._element), + n = t(this._menu).hasClass(u.SHOW); + if (l._clearMenus(), !n) { + var i = { + relatedTarget: this._element + }, + o = t.Event(c.SHOW, i); + if (t(e).trigger(o), !o.isDefaultPrevented()) { + var r = this._element; + t(e).hasClass(u.DROPUP) && (t(this._menu).hasClass(u.MENULEFT) || t(this._menu).hasClass(u.MENURIGHT)) && (r = e), this._popper = new Popper(r, this._menu, this._getPopperConfig()), "ontouchstart" in document.documentElement && !t(e).closest(d.NAVBAR_NAV).length && t("body").children().on("mouseover", null, t.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), t(this._menu).toggleClass(u.SHOW), t(e).toggleClass(u.SHOW).trigger(t.Event(c.SHOWN, i)) + } + } + } + }, l.prototype.dispose = function() { + t.removeData(this._element, s), t(this._element).off(a), this._element = null, this._menu = null, null !== this._popper && this._popper.destroy(), this._popper = null + }, l.prototype.update = function() { + this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate() + }, l.prototype._addEventListeners = function() { + var e = this; + t(this._element).on(c.CLICK, function(t) { + t.preventDefault(), t.stopPropagation(), e.toggle() + }) + }, l.prototype._getConfig = function(n) { + var i = t(this._element).data(); + return void 0 !== i.placement && (i.placement = f[i.placement.toUpperCase()]), n = t.extend({}, this.constructor.Default, t(this._element).data(), n), r.typeCheckConfig(e, n, this.constructor.DefaultType), n + }, l.prototype._getMenuElement = function() { + if (!this._menu) { + var e = l._getParentFromElement(this._element); + this._menu = t(e).find(d.MENU)[0] + } + return this._menu + }, l.prototype._getPlacement = function() { + var e = t(this._element).parent(), + n = this._config.placement; + return e.hasClass(u.DROPUP) || this._config.placement === f.TOP ? (n = f.TOP, t(this._menu).hasClass(u.MENURIGHT) && (n = f.TOPEND)) : t(this._menu).hasClass(u.MENURIGHT) && (n = f.BOTTOMEND), n + }, l.prototype._detectNavbar = function() { + return t(this._element).closest(".navbar").length > 0 + }, l.prototype._getPopperConfig = function() { + var t = { + placement: this._getPlacement(), + modifiers: { + offset: { + offset: this._config.offset + }, + flip: { + enabled: this._config.flip + } + } + }; + return this._inNavbar && (t.modifiers.applyStyle = { + enabled: !this._inNavbar + }), t + }, l._jQueryInterface = function(e) { + return this.each(function() { + var n = t(this).data(s), + o = "object" === (void 0 === e ? "undefined" : i(e)) ? e : null; + if (n || (n = new l(this, o), t(this).data(s, n)), "string" == typeof e) { + if (void 0 === n[e]) throw new Error('No method named "' + e + '"'); + n[e]() + } + }) + }, l._clearMenus = function(e) { + if (!e || 3 !== e.which && ("keyup" !== e.type || 9 === e.which)) + for (var n = t.makeArray(t(d.DATA_TOGGLE)), i = 0; i < n.length; i++) { + var o = l._getParentFromElement(n[i]), + r = t(n[i]).data(s), + a = { + relatedTarget: n[i] + }; + if (r) { + var h = r._menu; + if (t(o).hasClass(u.SHOW) && !(e && ("click" === e.type && /input|textarea/i.test(e.target.tagName) || "keyup" === e.type && 9 === e.which) && t.contains(o, e.target))) { + var f = t.Event(c.HIDE, a); + t(o).trigger(f), f.isDefaultPrevented() || ("ontouchstart" in document.documentElement && t("body").children().off("mouseover", null, t.noop), n[i].setAttribute("aria-expanded", "false"), t(h).removeClass(u.SHOW), t(o).removeClass(u.SHOW).trigger(t.Event(c.HIDDEN, a))) + } + } + } + }, l._getParentFromElement = function(e) { + var n = void 0, + i = r.getSelectorFromElement(e); + return i && (n = t(i)[0]), n || e.parentNode + }, l._dataApiKeydownHandler = function(e) { + if (!(!h.test(e.which) || /button/i.test(e.target.tagName) && 32 === e.which || /input|textarea/i.test(e.target.tagName) || (e.preventDefault(), e.stopPropagation(), this.disabled || t(this).hasClass(u.DISABLED)))) { + var n = l._getParentFromElement(this), + i = t(n).hasClass(u.SHOW); + if ((i || 27 === e.which && 32 === e.which) && (!i || 27 !== e.which && 32 !== e.which)) { + var o = t(n).find(d.VISIBLE_ITEMS).get(); + if (o.length) { + var r = o.indexOf(e.target); + 38 === e.which && r > 0 && r--, 40 === e.which && r < o.length - 1 && r++, r < 0 && (r = 0), o[r].focus() + } + } else { + if (27 === e.which) { + var s = t(n).find(d.DATA_TOGGLE)[0]; + t(s).trigger("focus") + } + t(this).trigger("click") + } + } + }, o(l, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }, { + key: "Default", + get: function() { + return p + } + }, { + key: "DefaultType", + get: function() { + return _ + } + }]), l + }(); + t(document).on(c.KEYDOWN_DATA_API, d.DATA_TOGGLE, g._dataApiKeydownHandler).on(c.KEYDOWN_DATA_API, d.MENU, g._dataApiKeydownHandler).on(c.CLICK_DATA_API + " " + c.KEYUP_DATA_API, g._clearMenus).on(c.CLICK_DATA_API, d.DATA_TOGGLE, function(e) { + e.preventDefault(), e.stopPropagation(), g._jQueryInterface.call(t(this), "toggle") + }).on(c.CLICK_DATA_API, d.FORM_CHILD, function(t) { + t.stopPropagation() + }), t.fn[e] = g._jQueryInterface, t.fn[e].Constructor = g, t.fn[e].noConflict = function() { + return t.fn[e] = l, g._jQueryInterface + } + }(jQuery), function(t) { + var e = "modal", + s = ".bs.modal", + a = t.fn[e], + l = { + backdrop: !0, + keyboard: !0, + focus: !0, + show: !0 + }, + h = { + backdrop: "(boolean|string)", + keyboard: "boolean", + focus: "boolean", + show: "boolean" + }, + c = { + HIDE: "hide.bs.modal", + HIDDEN: "hidden.bs.modal", + SHOW: "show.bs.modal", + SHOWN: "shown.bs.modal", + FOCUSIN: "focusin.bs.modal", + RESIZE: "resize.bs.modal", + CLICK_DISMISS: "click.dismiss.bs.modal", + KEYDOWN_DISMISS: "keydown.dismiss.bs.modal", + MOUSEUP_DISMISS: "mouseup.dismiss.bs.modal", + MOUSEDOWN_DISMISS: "mousedown.dismiss.bs.modal", + CLICK_DATA_API: "click.bs.modal.data-api" + }, + u = { + SCROLLBAR_MEASURER: "modal-scrollbar-measure", + BACKDROP: "modal-backdrop", + OPEN: "modal-open", + FADE: "fade", + SHOW: "show" + }, + d = { + DIALOG: ".modal-dialog", + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + NAVBAR_TOGGLER: ".navbar-toggler" + }, + f = function() { + function a(e, i) { + n(this, a), this._config = this._getConfig(i), this._element = e, this._dialog = t(e).find(d.DIALOG)[0], this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._originalBodyPadding = 0, this._scrollbarWidth = 0 + } + return a.prototype.toggle = function(t) { + return this._isShown ? this.hide() : this.show(t) + }, a.prototype.show = function(e) { + var n = this; + if (!this._isTransitioning) { + r.supportsTransitionEnd() && t(this._element).hasClass(u.FADE) && (this._isTransitioning = !0); + var i = t.Event(c.SHOW, { + relatedTarget: e + }); + t(this._element).trigger(i), this._isShown || i.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), t(document.body).addClass(u.OPEN), this._setEscapeEvent(), this._setResizeEvent(), t(this._element).on(c.CLICK_DISMISS, d.DATA_DISMISS, function(t) { + return n.hide(t) + }), t(this._dialog).on(c.MOUSEDOWN_DISMISS, function() { + t(n._element).one(c.MOUSEUP_DISMISS, function(e) { + t(e.target).is(n._element) && (n._ignoreBackdropClick = !0) + }) + }), this._showBackdrop(function() { + return n._showElement(e) + })) + } + }, a.prototype.hide = function(e) { + var n = this; + if (e && e.preventDefault(), !this._isTransitioning && this._isShown) { + var i = r.supportsTransitionEnd() && t(this._element).hasClass(u.FADE); + i && (this._isTransitioning = !0); + var o = t.Event(c.HIDE); + t(this._element).trigger(o), this._isShown && !o.isDefaultPrevented() && (this._isShown = !1, this._setEscapeEvent(), this._setResizeEvent(), t(document).off(c.FOCUSIN), t(this._element).removeClass(u.SHOW), t(this._element).off(c.CLICK_DISMISS), t(this._dialog).off(c.MOUSEDOWN_DISMISS), i ? t(this._element).one(r.TRANSITION_END, function(t) { + return n._hideModal(t) + }).emulateTransitionEnd(300) : this._hideModal()) + } + }, a.prototype.dispose = function() { + t.removeData(this._element, "bs.modal"), t(window, document, this._element, this._backdrop).off(s), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._scrollbarWidth = null + }, a.prototype.handleUpdate = function() { + this._adjustDialog() + }, a.prototype._getConfig = function(n) { + return n = t.extend({}, l, n), r.typeCheckConfig(e, n, h), n + }, a.prototype._showElement = function(e) { + var n = this, + i = r.supportsTransitionEnd() && t(this._element).hasClass(u.FADE); + this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.scrollTop = 0, i && r.reflow(this._element), t(this._element).addClass(u.SHOW), this._config.focus && this._enforceFocus(); + var o = t.Event(c.SHOWN, { + relatedTarget: e + }), + s = function() { + n._config.focus && n._element.focus(), n._isTransitioning = !1, t(n._element).trigger(o) + }; + i ? t(this._dialog).one(r.TRANSITION_END, s).emulateTransitionEnd(300) : s() + }, a.prototype._enforceFocus = function() { + var e = this; + t(document).off(c.FOCUSIN).on(c.FOCUSIN, function(n) { + document === n.target || e._element === n.target || t(e._element).has(n.target).length || e._element.focus() + }) + }, a.prototype._setEscapeEvent = function() { + var e = this; + this._isShown && this._config.keyboard ? t(this._element).on(c.KEYDOWN_DISMISS, function(t) { + 27 === t.which && (t.preventDefault(), e.hide()) + }) : this._isShown || t(this._element).off(c.KEYDOWN_DISMISS) + }, a.prototype._setResizeEvent = function() { + var e = this; + this._isShown ? t(window).on(c.RESIZE, function(t) { + return e.handleUpdate(t) + }) : t(window).off(c.RESIZE) + }, a.prototype._hideModal = function() { + var e = this; + this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._isTransitioning = !1, this._showBackdrop(function() { + t(document.body).removeClass(u.OPEN), e._resetAdjustments(), e._resetScrollbar(), t(e._element).trigger(c.HIDDEN) + }) + }, a.prototype._removeBackdrop = function() { + this._backdrop && (t(this._backdrop).remove(), this._backdrop = null) + }, a.prototype._showBackdrop = function(e) { + var n = this, + i = t(this._element).hasClass(u.FADE) ? u.FADE : ""; + if (this._isShown && this._config.backdrop) { + var o = r.supportsTransitionEnd() && i; + if (this._backdrop = document.createElement("div"), this._backdrop.className = u.BACKDROP, i && t(this._backdrop).addClass(i), t(this._backdrop).appendTo(document.body), t(this._element).on(c.CLICK_DISMISS, function(t) { + n._ignoreBackdropClick ? n._ignoreBackdropClick = !1 : t.target === t.currentTarget && ("static" === n._config.backdrop ? n._element.focus() : n.hide()) + }), o && r.reflow(this._backdrop), t(this._backdrop).addClass(u.SHOW), !e) return; + if (!o) return void e(); + t(this._backdrop).one(r.TRANSITION_END, e).emulateTransitionEnd(150) + } else if (!this._isShown && this._backdrop) { + t(this._backdrop).removeClass(u.SHOW); + var s = function() { + n._removeBackdrop(), e && e() + }; + r.supportsTransitionEnd() && t(this._element).hasClass(u.FADE) ? t(this._backdrop).one(r.TRANSITION_END, s).emulateTransitionEnd(150) : s() + } else e && e() + }, a.prototype._adjustDialog = function() { + var t = this._element.scrollHeight > document.documentElement.clientHeight; + !this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px") + }, a.prototype._resetAdjustments = function() { + this._element.style.paddingLeft = "", this._element.style.paddingRight = "" + }, a.prototype._checkScrollbar = function() { + this._isBodyOverflowing = document.body.clientWidth < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth() + }, a.prototype._setScrollbar = function() { + var e = this; + if (this._isBodyOverflowing) { + t(d.FIXED_CONTENT).each(function(n, i) { + var o = t(i)[0].style.paddingRight, + r = t(i).css("padding-right"); + t(i).data("padding-right", o).css("padding-right", parseFloat(r) + e._scrollbarWidth + "px") + }), t(d.NAVBAR_TOGGLER).each(function(n, i) { + var o = t(i)[0].style.marginRight, + r = t(i).css("margin-right"); + t(i).data("margin-right", o).css("margin-right", parseFloat(r) + e._scrollbarWidth + "px") + }); + var n = document.body.style.paddingRight, + i = t("body").css("padding-right"); + t("body").data("padding-right", n).css("padding-right", parseFloat(i) + this._scrollbarWidth + "px") + } + }, a.prototype._resetScrollbar = function() { + t(d.FIXED_CONTENT).each(function(e, n) { + var i = t(n).data("padding-right"); + void 0 !== i && t(n).css("padding-right", i).removeData("padding-right") + }), t(d.NAVBAR_TOGGLER).each(function(e, n) { + var i = t(n).data("margin-right"); + void 0 !== i && t(n).css("margin-right", i).removeData("margin-right") + }); + var e = t("body").data("padding-right"); + void 0 !== e && t("body").css("padding-right", e).removeData("padding-right") + }, a.prototype._getScrollbarWidth = function() { + var t = document.createElement("div"); + t.className = u.SCROLLBAR_MEASURER, document.body.appendChild(t); + var e = t.getBoundingClientRect().width - t.clientWidth; + return document.body.removeChild(t), e + }, a._jQueryInterface = function(e, n) { + return this.each(function() { + var o = t(this).data("bs.modal"), + r = t.extend({}, a.Default, t(this).data(), "object" === (void 0 === e ? "undefined" : i(e)) && e); + if (o || (o = new a(this, r), t(this).data("bs.modal", o)), "string" == typeof e) { + if (void 0 === o[e]) throw new Error('No method named "' + e + '"'); + o[e](n) + } else r.show && o.show(n) + }) + }, o(a, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }, { + key: "Default", + get: function() { + return l + } + }]), a + }(); + t(document).on(c.CLICK_DATA_API, d.DATA_TOGGLE, function(e) { + var n = this, + i = void 0, + o = r.getSelectorFromElement(this); + o && (i = t(o)[0]); + var s = t(i).data("bs.modal") ? "toggle" : t.extend({}, t(i).data(), t(this).data()); + "A" !== this.tagName && "AREA" !== this.tagName || e.preventDefault(); + var a = t(i).one(c.SHOW, function(e) { + e.isDefaultPrevented() || a.one(c.HIDDEN, function() { + t(n).is(":visible") && n.focus() + }) + }); + f._jQueryInterface.call(t(i), s, this) + }), t.fn[e] = f._jQueryInterface, t.fn[e].Constructor = f, t.fn[e].noConflict = function() { + return t.fn[e] = a, f._jQueryInterface + } + }(jQuery), function(t) { + var e = "scrollspy", + s = t.fn[e], + a = { + offset: 10, + method: "auto", + target: "" + }, + l = { + offset: "number", + method: "string", + target: "(string|element)" + }, + h = { + ACTIVATE: "activate.bs.scrollspy", + SCROLL: "scroll.bs.scrollspy", + LOAD_DATA_API: "load.bs.scrollspy.data-api" + }, + c = { + DROPDOWN_ITEM: "dropdown-item", + DROPDOWN_MENU: "dropdown-menu", + ACTIVE: "active" + }, + u = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: ".active", + NAV_LIST_GROUP: ".nav, .list-group", + NAV_LINKS: ".nav-link", + LIST_ITEMS: ".list-group-item", + DROPDOWN: ".dropdown", + DROPDOWN_ITEMS: ".dropdown-item", + DROPDOWN_TOGGLE: ".dropdown-toggle" + }, + d = { + OFFSET: "offset", + POSITION: "position" + }, + f = function() { + function s(e, i) { + var o = this; + n(this, s), this._element = e, this._scrollElement = "BODY" === e.tagName ? window : e, this._config = this._getConfig(i), this._selector = this._config.target + " " + u.NAV_LINKS + "," + this._config.target + " " + u.LIST_ITEMS + "," + this._config.target + " " + u.DROPDOWN_ITEMS, this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, t(this._scrollElement).on(h.SCROLL, function(t) { + return o._process(t) + }), this.refresh(), this._process() + } + return s.prototype.refresh = function() { + var e = this, + n = this._scrollElement !== this._scrollElement.window ? d.POSITION : d.OFFSET, + i = "auto" === this._config.method ? n : this._config.method, + o = i === d.POSITION ? this._getScrollTop() : 0; + this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), t.makeArray(t(this._selector)).map(function(e) { + var n = void 0, + s = r.getSelectorFromElement(e); + if (s && (n = t(s)[0]), n) { + var a = n.getBoundingClientRect(); + if (a.width || a.height) return [t(n)[i]().top + o, s] + } + return null + }).filter(function(t) { + return t + }).sort(function(t, e) { + return t[0] - e[0] + }).forEach(function(t) { + e._offsets.push(t[0]), e._targets.push(t[1]) + }) + }, s.prototype.dispose = function() { + t.removeData(this._element, "bs.scrollspy"), t(this._scrollElement).off(".bs.scrollspy"), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null + }, s.prototype._getConfig = function(n) { + if ("string" != typeof(n = t.extend({}, a, n)).target) { + var i = t(n.target).attr("id"); + i || (i = r.getUID(e), t(n.target).attr("id", i)), n.target = "#" + i + } + return r.typeCheckConfig(e, n, l), n + }, s.prototype._getScrollTop = function() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop + }, s.prototype._getScrollHeight = function() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) + }, s.prototype._getOffsetHeight = function() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height + }, s.prototype._process = function() { + var t = this._getScrollTop() + this._config.offset, + e = this._getScrollHeight(), + n = this._config.offset + e - this._getOffsetHeight(); + if (this._scrollHeight !== e && this.refresh(), t >= n) { + var i = this._targets[this._targets.length - 1]; + this._activeTarget !== i && this._activate(i) + } else { + if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) return this._activeTarget = null, void this._clear(); + for (var o = this._offsets.length; o--;) this._activeTarget !== this._targets[o] && t >= this._offsets[o] && (void 0 === this._offsets[o + 1] || t < this._offsets[o + 1]) && this._activate(this._targets[o]) + } + }, s.prototype._activate = function(e) { + this._activeTarget = e, this._clear(); + var n = this._selector.split(","); + n = n.map(function(t) { + return t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]' + }); + var i = t(n.join(",")); + i.hasClass(c.DROPDOWN_ITEM) ? (i.closest(u.DROPDOWN).find(u.DROPDOWN_TOGGLE).addClass(c.ACTIVE), i.addClass(c.ACTIVE)) : (i.addClass(c.ACTIVE), i.parents(u.NAV_LIST_GROUP).prev(u.NAV_LINKS + ", " + u.LIST_ITEMS).addClass(c.ACTIVE)), t(this._scrollElement).trigger(h.ACTIVATE, { + relatedTarget: e + }) + }, s.prototype._clear = function() { + t(this._selector).filter(u.ACTIVE).removeClass(c.ACTIVE) + }, s._jQueryInterface = function(e) { + return this.each(function() { + var n = t(this).data("bs.scrollspy"), + o = "object" === (void 0 === e ? "undefined" : i(e)) && e; + if (n || (n = new s(this, o), t(this).data("bs.scrollspy", n)), "string" == typeof e) { + if (void 0 === n[e]) throw new Error('No method named "' + e + '"'); + n[e]() + } + }) + }, o(s, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }, { + key: "Default", + get: function() { + return a + } + }]), s + }(); + t(window).on(h.LOAD_DATA_API, function() { + for (var e = t.makeArray(t(u.DATA_SPY)), n = e.length; n--;) { + var i = t(e[n]); + f._jQueryInterface.call(i, i.data()) + } + }), t.fn[e] = f._jQueryInterface, t.fn[e].Constructor = f, t.fn[e].noConflict = function() { + return t.fn[e] = s, f._jQueryInterface + } + }(jQuery), function(t) { + var e = t.fn.tab, + i = { + HIDE: "hide.bs.tab", + HIDDEN: "hidden.bs.tab", + SHOW: "show.bs.tab", + SHOWN: "shown.bs.tab", + CLICK_DATA_API: "click.bs.tab.data-api" + }, + s = { + DROPDOWN_MENU: "dropdown-menu", + ACTIVE: "active", + DISABLED: "disabled", + FADE: "fade", + SHOW: "show" + }, + a = { + DROPDOWN: ".dropdown", + NAV_LIST_GROUP: ".nav, .list-group", + ACTIVE: ".active", + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', + DROPDOWN_TOGGLE: ".dropdown-toggle", + DROPDOWN_ACTIVE_CHILD: "> .dropdown-menu .active" + }, + l = function() { + function e(t) { + n(this, e), this._element = t + } + return e.prototype.show = function() { + var e = this; + if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && t(this._element).hasClass(s.ACTIVE) || t(this._element).hasClass(s.DISABLED))) { + var n = void 0, + o = void 0, + l = t(this._element).closest(a.NAV_LIST_GROUP)[0], + h = r.getSelectorFromElement(this._element); + l && (o = t.makeArray(t(l).find(a.ACTIVE)), o = o[o.length - 1]); + var c = t.Event(i.HIDE, { + relatedTarget: this._element + }), + u = t.Event(i.SHOW, { + relatedTarget: o + }); + if (o && t(o).trigger(c), t(this._element).trigger(u), !u.isDefaultPrevented() && !c.isDefaultPrevented()) { + h && (n = t(h)[0]), this._activate(this._element, l); + var d = function() { + var n = t.Event(i.HIDDEN, { + relatedTarget: e._element + }), + r = t.Event(i.SHOWN, { + relatedTarget: o + }); + t(o).trigger(n), t(e._element).trigger(r) + }; + n ? this._activate(n, n.parentNode, d) : d() + } + } + }, e.prototype.dispose = function() { + t.removeData(this._element, "bs.tab"), this._element = null + }, e.prototype._activate = function(e, n, i) { + var o = this, + l = t(n).find(a.ACTIVE)[0], + h = i && r.supportsTransitionEnd() && l && t(l).hasClass(s.FADE), + c = function() { + return o._transitionComplete(e, l, h, i) + }; + l && h ? t(l).one(r.TRANSITION_END, c).emulateTransitionEnd(150) : c(), l && t(l).removeClass(s.SHOW) + }, e.prototype._transitionComplete = function(e, n, i, o) { + if (n) { + t(n).removeClass(s.ACTIVE); + var l = t(n.parentNode).find(a.DROPDOWN_ACTIVE_CHILD)[0]; + l && t(l).removeClass(s.ACTIVE), n.setAttribute("aria-expanded", !1) + } + if (t(e).addClass(s.ACTIVE), e.setAttribute("aria-expanded", !0), i ? (r.reflow(e), t(e).addClass(s.SHOW)) : t(e).removeClass(s.FADE), e.parentNode && t(e.parentNode).hasClass(s.DROPDOWN_MENU)) { + var h = t(e).closest(a.DROPDOWN)[0]; + h && t(h).find(a.DROPDOWN_TOGGLE).addClass(s.ACTIVE), e.setAttribute("aria-expanded", !0) + } + o && o() + }, e._jQueryInterface = function(n) { + return this.each(function() { + var i = t(this), + o = i.data("bs.tab"); + if (o || (o = new e(this), i.data("bs.tab", o)), "string" == typeof n) { + if (void 0 === o[n]) throw new Error('No method named "' + n + '"'); + o[n]() + } + }) + }, o(e, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }]), e + }(); + t(document).on(i.CLICK_DATA_API, a.DATA_TOGGLE, function(e) { + e.preventDefault(), l._jQueryInterface.call(t(this), "show") + }), t.fn.tab = l._jQueryInterface, t.fn.tab.Constructor = l, t.fn.tab.noConflict = function() { + return t.fn.tab = e, l._jQueryInterface + } + }(jQuery), function(t) { + if ("undefined" == typeof Popper) throw new Error("Bootstrap tooltips require Popper.js (https://popper.js.org)"); + var e = "tooltip", + s = ".bs.tooltip", + a = t.fn[e], + l = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), + h = { + animation: "boolean", + template: "string", + title: "(string|element|function)", + trigger: "string", + delay: "(number|object)", + html: "boolean", + selector: "(string|boolean)", + placement: "(string|function)", + offset: "(number|string)", + container: "(string|element|boolean)", + fallbackPlacement: "(string|array)" + }, + c = { + AUTO: "auto", + TOP: "top", + RIGHT: "right", + BOTTOM: "bottom", + LEFT: "left" + }, + u = { + animation: !0, + template: '', + trigger: "hover focus", + title: "", + delay: 0, + html: !1, + selector: !1, + placement: "top", + offset: 0, + container: !1, + fallbackPlacement: "flip" + }, + d = { + SHOW: "show", + OUT: "out" + }, + f = { + HIDE: "hide" + s, + HIDDEN: "hidden" + s, + SHOW: "show" + s, + SHOWN: "shown" + s, + INSERTED: "inserted" + s, + CLICK: "click" + s, + FOCUSIN: "focusin" + s, + FOCUSOUT: "focusout" + s, + MOUSEENTER: "mouseenter" + s, + MOUSELEAVE: "mouseleave" + s + }, + p = { + FADE: "fade", + SHOW: "show" + }, + _ = { + TOOLTIP: ".tooltip", + TOOLTIP_INNER: ".tooltip-inner", + ARROW: ".arrow" + }, + g = { + HOVER: "hover", + FOCUS: "focus", + CLICK: "click", + MANUAL: "manual" + }, + m = function() { + function a(t, e) { + n(this, a), this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners() + } + return a.prototype.enable = function() { + this._isEnabled = !0 + }, a.prototype.disable = function() { + this._isEnabled = !1 + }, a.prototype.toggleEnabled = function() { + this._isEnabled = !this._isEnabled + }, a.prototype.toggle = function(e) { + if (e) { + var n = this.constructor.DATA_KEY, + i = t(e.currentTarget).data(n); + i || (i = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(n, i)), i._activeTrigger.click = !i._activeTrigger.click, i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i) + } else { + if (t(this.getTipElement()).hasClass(p.SHOW)) return void this._leave(null, this); + this._enter(null, this) + } + }, a.prototype.dispose = function() { + clearTimeout(this._timeout), t.removeData(this.element, this.constructor.DATA_KEY), t(this.element).off(this.constructor.EVENT_KEY), t(this.element).closest(".modal").off("hide.bs.modal"), this.tip && t(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, null !== this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null + }, a.prototype.show = function() { + var e = this; + if ("none" === t(this.element).css("display")) throw new Error("Please use show on visible elements"); + var n = t.Event(this.constructor.Event.SHOW); + if (this.isWithContent() && this._isEnabled) { + t(this.element).trigger(n); + var i = t.contains(this.element.ownerDocument.documentElement, this.element); + if (n.isDefaultPrevented() || !i) return; + var o = this.getTipElement(), + s = r.getUID(this.constructor.NAME); + o.setAttribute("id", s), this.element.setAttribute("aria-describedby", s), this.setContent(), this.config.animation && t(o).addClass(p.FADE); + var l = "function" == typeof this.config.placement ? this.config.placement.call(this, o, this.element) : this.config.placement, + h = this._getAttachment(l); + this.addAttachmentClass(h); + var c = !1 === this.config.container ? document.body : t(this.config.container); + t(o).data(this.constructor.DATA_KEY, this), t.contains(this.element.ownerDocument.documentElement, this.tip) || t(o).appendTo(c), t(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new Popper(this.element, o, { + placement: h, + modifiers: { + offset: { + offset: this.config.offset + }, + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: _.ARROW + } + }, + onCreate: function(t) { + t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t) + }, + onUpdate: function(t) { + e._handlePopperPlacementChange(t) + } + }), t(o).addClass(p.SHOW), "ontouchstart" in document.documentElement && t("body").children().on("mouseover", null, t.noop); + var u = function() { + e.config.animation && e._fixTransition(); + var n = e._hoverState; + e._hoverState = null, t(e.element).trigger(e.constructor.Event.SHOWN), n === d.OUT && e._leave(null, e) + }; + r.supportsTransitionEnd() && t(this.tip).hasClass(p.FADE) ? t(this.tip).one(r.TRANSITION_END, u).emulateTransitionEnd(a._TRANSITION_DURATION) : u() + } + }, a.prototype.hide = function(e) { + var n = this, + i = this.getTipElement(), + o = t.Event(this.constructor.Event.HIDE), + s = function() { + n._hoverState !== d.SHOW && i.parentNode && i.parentNode.removeChild(i), n._cleanTipClass(), n.element.removeAttribute("aria-describedby"), t(n.element).trigger(n.constructor.Event.HIDDEN), null !== n._popper && n._popper.destroy(), e && e() + }; + t(this.element).trigger(o), o.isDefaultPrevented() || (t(i).removeClass(p.SHOW), "ontouchstart" in document.documentElement && t("body").children().off("mouseover", null, t.noop), this._activeTrigger[g.CLICK] = !1, this._activeTrigger[g.FOCUS] = !1, this._activeTrigger[g.HOVER] = !1, r.supportsTransitionEnd() && t(this.tip).hasClass(p.FADE) ? t(i).one(r.TRANSITION_END, s).emulateTransitionEnd(150) : s(), this._hoverState = "") + }, a.prototype.update = function() { + null !== this._popper && this._popper.scheduleUpdate() + }, a.prototype.isWithContent = function() { + return Boolean(this.getTitle()) + }, a.prototype.addAttachmentClass = function(e) { + t(this.getTipElement()).addClass("bs-tooltip-" + e) + }, a.prototype.getTipElement = function() { + return this.tip = this.tip || t(this.config.template)[0] + }, a.prototype.setContent = function() { + var e = t(this.getTipElement()); + this.setElementContent(e.find(_.TOOLTIP_INNER), this.getTitle()), e.removeClass(p.FADE + " " + p.SHOW) + }, a.prototype.setElementContent = function(e, n) { + var o = this.config.html; + "object" === (void 0 === n ? "undefined" : i(n)) && (n.nodeType || n.jquery) ? o ? t(n).parent().is(e) || e.empty().append(n) : e.text(t(n).text()): e[o ? "html" : "text"](n) + }, a.prototype.getTitle = function() { + var t = this.element.getAttribute("data-original-title"); + return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t + }, a.prototype._getAttachment = function(t) { + return c[t.toUpperCase()] + }, a.prototype._setListeners = function() { + var e = this; + this.config.trigger.split(" ").forEach(function(n) { + if ("click" === n) t(e.element).on(e.constructor.Event.CLICK, e.config.selector, function(t) { + return e.toggle(t) + }); + else if (n !== g.MANUAL) { + var i = n === g.HOVER ? e.constructor.Event.MOUSEENTER : e.constructor.Event.FOCUSIN, + o = n === g.HOVER ? e.constructor.Event.MOUSELEAVE : e.constructor.Event.FOCUSOUT; + t(e.element).on(i, e.config.selector, function(t) { + return e._enter(t) + }).on(o, e.config.selector, function(t) { + return e._leave(t) + }) + } + t(e.element).closest(".modal").on("hide.bs.modal", function() { + return e.hide() + }) + }), this.config.selector ? this.config = t.extend({}, this.config, { + trigger: "manual", + selector: "" + }) : this._fixTitle() + }, a.prototype._fixTitle = function() { + var t = i(this.element.getAttribute("data-original-title")); + (this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", "")) + }, a.prototype._enter = function(e, n) { + var i = this.constructor.DATA_KEY; + (n = n || t(e.currentTarget).data(i)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusin" === e.type ? g.FOCUS : g.HOVER] = !0), t(n.getTipElement()).hasClass(p.SHOW) || n._hoverState === d.SHOW ? n._hoverState = d.SHOW : (clearTimeout(n._timeout), n._hoverState = d.SHOW, n.config.delay && n.config.delay.show ? n._timeout = setTimeout(function() { + n._hoverState === d.SHOW && n.show() + }, n.config.delay.show) : n.show()) + }, a.prototype._leave = function(e, n) { + var i = this.constructor.DATA_KEY; + (n = n || t(e.currentTarget).data(i)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusout" === e.type ? g.FOCUS : g.HOVER] = !1), n._isWithActiveTrigger() || (clearTimeout(n._timeout), n._hoverState = d.OUT, n.config.delay && n.config.delay.hide ? n._timeout = setTimeout(function() { + n._hoverState === d.OUT && n.hide() + }, n.config.delay.hide) : n.hide()) + }, a.prototype._isWithActiveTrigger = function() { + for (var t in this._activeTrigger) + if (this._activeTrigger[t]) return !0; + return !1 + }, a.prototype._getConfig = function(n) { + return (n = t.extend({}, this.constructor.Default, t(this.element).data(), n)).delay && "number" == typeof n.delay && (n.delay = { + show: n.delay, + hide: n.delay + }), n.title && "number" == typeof n.title && (n.title = n.title.toString()), n.content && "number" == typeof n.content && (n.content = n.content.toString()), r.typeCheckConfig(e, n, this.constructor.DefaultType), n + }, a.prototype._getDelegateConfig = function() { + var t = {}; + if (this.config) + for (var e in this.config) this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]); + return t + }, a.prototype._cleanTipClass = function() { + var e = t(this.getTipElement()), + n = e.attr("class").match(l); + null !== n && n.length > 0 && e.removeClass(n.join("")) + }, a.prototype._handlePopperPlacementChange = function(t) { + this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement)) + }, a.prototype._fixTransition = function() { + var e = this.getTipElement(), + n = this.config.animation; + null === e.getAttribute("x-placement") && (t(e).removeClass(p.FADE), this.config.animation = !1, this.hide(), this.show(), this.config.animation = n) + }, a._jQueryInterface = function(e) { + return this.each(function() { + var n = t(this).data("bs.tooltip"), + o = "object" === (void 0 === e ? "undefined" : i(e)) && e; + if ((n || !/dispose|hide/.test(e)) && (n || (n = new a(this, o), t(this).data("bs.tooltip", n)), "string" == typeof e)) { + if (void 0 === n[e]) throw new Error('No method named "' + e + '"'); + n[e]() + } + }) + }, o(a, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }, { + key: "Default", + get: function() { + return u + } + }, { + key: "NAME", + get: function() { + return e + } + }, { + key: "DATA_KEY", + get: function() { + return "bs.tooltip" + } + }, { + key: "Event", + get: function() { + return f + } + }, { + key: "EVENT_KEY", + get: function() { + return s + } + }, { + key: "DefaultType", + get: function() { + return h + } + }]), a + }(); + return t.fn[e] = m._jQueryInterface, t.fn[e].Constructor = m, t.fn[e].noConflict = function() { + return t.fn[e] = a, m._jQueryInterface + }, m + }(jQuery)); + ! function(r) { + var a = "popover", + l = ".bs.popover", + h = r.fn[a], + c = new RegExp("(^|\\s)bs-popover\\S+", "g"), + u = r.extend({}, s.Default, { + placement: "right", + trigger: "click", + content: "", + template: '' + }), + d = r.extend({}, s.DefaultType, { + content: "(string|element|function)" + }), + f = { + FADE: "fade", + SHOW: "show" + }, + p = { + TITLE: ".popover-header", + CONTENT: ".popover-body" + }, + _ = { + HIDE: "hide" + l, + HIDDEN: "hidden" + l, + SHOW: "show" + l, + SHOWN: "shown" + l, + INSERTED: "inserted" + l, + CLICK: "click" + l, + FOCUSIN: "focusin" + l, + FOCUSOUT: "focusout" + l, + MOUSEENTER: "mouseenter" + l, + MOUSELEAVE: "mouseleave" + l + }, + g = function(s) { + function h() { + return n(this, h), t(this, s.apply(this, arguments)) + } + return e(h, s), h.prototype.isWithContent = function() { + return this.getTitle() || this._getContent() + }, h.prototype.addAttachmentClass = function(t) { + r(this.getTipElement()).addClass("bs-popover-" + t) + }, h.prototype.getTipElement = function() { + return this.tip = this.tip || r(this.config.template)[0] + }, h.prototype.setContent = function() { + var t = r(this.getTipElement()); + this.setElementContent(t.find(p.TITLE), this.getTitle()), this.setElementContent(t.find(p.CONTENT), this._getContent()), t.removeClass(f.FADE + " " + f.SHOW) + }, h.prototype._getContent = function() { + return this.element.getAttribute("data-content") || ("function" == typeof this.config.content ? this.config.content.call(this.element) : this.config.content) + }, h.prototype._cleanTipClass = function() { + var t = r(this.getTipElement()), + e = t.attr("class").match(c); + null !== e && e.length > 0 && t.removeClass(e.join("")) + }, h._jQueryInterface = function(t) { + return this.each(function() { + var e = r(this).data("bs.popover"), + n = "object" === (void 0 === t ? "undefined" : i(t)) ? t : null; + if ((e || !/destroy|hide/.test(t)) && (e || (e = new h(this, n), r(this).data("bs.popover", e)), "string" == typeof t)) { + if (void 0 === e[t]) throw new Error('No method named "' + t + '"'); + e[t]() + } + }) + }, o(h, null, [{ + key: "VERSION", + get: function() { + return "4.0.0-beta" + } + }, { + key: "Default", + get: function() { + return u + } + }, { + key: "NAME", + get: function() { + return a + } + }, { + key: "DATA_KEY", + get: function() { + return "bs.popover" + } + }, { + key: "Event", + get: function() { + return _ + } + }, { + key: "EVENT_KEY", + get: function() { + return l + } + }, { + key: "DefaultType", + get: function() { + return d + } + }]), h + }(s); + r.fn[a] = g._jQueryInterface, r.fn[a].Constructor = g, r.fn[a].noConflict = function() { + return r.fn[a] = h, g._jQueryInterface + } + }(jQuery) +}(); \ No newline at end of file diff --git a/web/libs/js/jquery-1.10.2.min.map b/web/libs/js/jquery-1.10.2.min.map new file mode 100644 index 00000000..eda3462f --- /dev/null +++ b/web/libs/js/jquery-1.10.2.min.map @@ -0,0 +1 @@ +{"version":3,"file":"jquery.min.js","sources":["jquery.js"],"names":["window","undefined","readyList","rootjQuery","core_strundefined","location","document","docElem","documentElement","_jQuery","jQuery","_$","$","class2type","core_deletedIds","core_version","core_concat","concat","core_push","push","core_slice","slice","core_indexOf","indexOf","core_toString","toString","core_hasOwn","hasOwnProperty","core_trim","trim","selector","context","fn","init","core_pnum","source","core_rnotwhite","rtrim","rquickExpr","rsingleTag","rvalidchars","rvalidbraces","rvalidescape","rvalidtokens","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","completed","event","addEventListener","type","readyState","detach","ready","removeEventListener","detachEvent","prototype","jquery","constructor","match","elem","this","charAt","length","exec","find","merge","parseHTML","nodeType","ownerDocument","test","isPlainObject","isFunction","attr","getElementById","parentNode","id","makeArray","toArray","call","get","num","pushStack","elems","ret","prevObject","each","callback","args","promise","done","apply","arguments","first","eq","last","i","len","j","map","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isArray","expando","Math","random","replace","noConflict","isReady","readyWait","holdReady","hold","wait","body","setTimeout","resolveWith","trigger","off","obj","Array","isWindow","isNumeric","isNaN","parseFloat","isFinite","String","key","e","support","ownLast","isEmptyObject","error","msg","Error","data","keepScripts","parsed","scripts","createElement","buildFragment","remove","childNodes","parseJSON","JSON","parse","Function","parseXML","xml","tmp","DOMParser","parseFromString","ActiveXObject","async","loadXML","getElementsByTagName","noop","globalEval","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","arr","results","Object","inArray","max","second","l","grep","inv","retVal","arg","guid","proxy","access","chainable","emptyGet","raw","bulk","now","Date","getTime","swap","old","style","Deferred","attachEvent","top","frameElement","doScroll","doScrollCheck","split","cachedruns","Expr","getText","isXML","compile","outermostContext","sortInput","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","hasDuplicate","sortOrder","a","b","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rsibling","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rnative","rinputs","rheader","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","els","Sizzle","seed","m","groups","nid","newContext","newSelector","getElementsByClassName","qsa","tokenize","getAttribute","setAttribute","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","cacheLength","shift","markFunction","assert","div","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","doc","parent","defaultView","className","appendChild","createComment","innerHTML","firstChild","getById","getElementsByName","filter","attrId","getAttributeNode","tag","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","dirkey","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","matcherCachedRuns","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","group","contexts","token","div1","defaultValue","unique","isXMLDoc","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","list","stack","once","fire","stopOnFalse","self","disable","add","index","lock","locked","fireWith","func","tuples","state","always","deferred","fail","then","fns","newDefer","tuple","action","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","progressContexts","resolveContexts","fragment","opt","eventName","isSupported","cssText","getSetAttribute","leadingWhitespace","tbody","htmlSerialize","hrefNormalized","opacity","cssFloat","checkOn","optSelected","enctype","html5Clone","cloneNode","outerHTML","inlineBlockNeedsLayout","shrinkWrapBlocks","pixelPosition","deleteExpando","noCloneEvent","reliableMarginRight","boxSizingReliable","noCloneChecked","optDisabled","radioValue","createDocumentFragment","appendChecked","checkClone","click","change","focusin","backgroundClip","clearCloneStyle","container","marginDiv","tds","divReset","offsetHeight","display","reliableHiddenOffsets","zoom","boxSizing","offsetWidth","getComputedStyle","width","marginRight","rbrace","rmultiDash","internalData","pvt","acceptData","thisCache","internalKey","isNode","toJSON","internalRemoveData","isEmptyDataObject","cleanData","noData","applet","embed","hasData","removeData","_data","_removeData","dataAttr","queue","dequeue","startLength","hooks","_queueHooks","next","stop","setter","delay","time","fx","speeds","timeout","clearTimeout","clearQueue","count","defer","nodeHook","boolHook","rclass","rreturn","rfocusable","rclickable","ruseDefault","getSetInput","removeAttr","prop","removeProp","propFix","addClass","classes","clazz","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","valHooks","set","option","one","optionSet","nType","attrHooks","propName","attrNames","for","class","notxml","propHooks","tabindex","parseInt","getter","setAttributeNode","createAttribute","coords","contenteditable","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","global","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","getPreventDefault","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","origFn","triggerHandler","isSimple","rparentsprev","rneedsContext","guaranteedUnique","children","contents","prev","targets","winnow","is","closest","pos","prevAll","addBack","sibling","parents","parentsUntil","until","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","n","r","qualifier","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","manipulation_rcheckableType","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","append","createTextNode","domManip","manipulationTarget","prepend","insertBefore","before","after","keepData","getAll","setGlobalEval","dataAndEvents","deepDataAndEvents","html","replaceWith","allowIntersection","hasScripts","iNoClone","disableScript","restoreScript","_evalUrl","content","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultChecked","defaultSelected","appendTo","prependTo","insertAfter","replaceAll","insert","found","fixDefaultChecked","destElements","srcElements","inPage","selection","wrap","safe","nodes","url","ajax","dataType","throws","wrapAll","wrapInner","unwrap","iframe","getStyles","curCSS","ralpha","ropacity","rposition","rdisplayswap","rmargin","rnumsplit","rnumnonpx","rrelNum","elemdisplay","BODY","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssExpand","cssPrefixes","vendorPropName","capName","origName","isHidden","el","css","showHide","show","hidden","css_defaultDisplay","styles","hide","toggle","cssHooks","computed","cssNumber","columnCount","fillOpacity","lineHeight","order","orphans","widows","zIndex","cssProps","float","extra","_computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","getWidthOrHeight","valueIsBorderBox","actualDisplay","write","close","$1","visible","margin","padding","border","prefix","suffix","expand","expanded","parts","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","serialize","serializeArray","traditional","s","encodeURIComponent","ajaxSettings","buildParams","v","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","ajaxLocParts","ajaxLocation","ajax_nonce","ajax_rquery","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","_load","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","params","response","responseText","complete","status","active","lastModified","etag","isLocal","processData","contentType","accepts","*","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","code","abort","statusText","finalText","success","method","crossDomain","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ajaxHandleResponses","ajaxConvert","rejectWith","getJSON","getScript","firstDataType","ct","finalDataType","conv2","current","conv","dataFilter","script","text script","head","scriptCharset","charset","onload","onreadystatechange","isAbort","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","xhrCallbacks","xhrSupported","xhrId","xhrOnUnloadAbort","createStandardXHR","XMLHttpRequest","createActiveXHR","xhr","cors","username","open","xhrFields","firefoxAccessException","unload","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","tween","createTween","unit","scale","maxIterations","createFxNow","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","duration","percent","tweens","run","opts","specialEasing","originalProperties","Tween","easing","gotoEnd","propFilter","timer","anim","tweener","prefilter","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","eased","step","cssFn","speed","animate","genFx","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","includeWidth","height","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","linear","p","swing","cos","PI","interval","setInterval","clearInterval","slow","fast","animated","offset","setOffset","win","box","getBoundingClientRect","getWindow","pageYOffset","pageXOffset","curElem","curOffset","curCSSTop","curCSSLeft","calculatePosition","curPosition","curTop","curLeft","using","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","module","exports","define","amd"],"mappings":"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"} \ No newline at end of file diff --git a/web/libs/js/main.dash2.js b/web/libs/js/main.dash2.js index ccf8f3fd..926926eb 100644 --- a/web/libs/js/main.dash2.js +++ b/web/libs/js/main.dash2.js @@ -12,15 +12,26 @@ $.ccio={ fr:$('#files_recent'), mon:{} }; -<% if(config.useUTC){ %> -$.ccio.timeObject = function(date){ - return moment.utc(date).local() +$.ccio.downloadJSON = function(jsonToDownload,filename,errorResponse){ + var arr = jsonToDownload; + if(arr.length===0 && errorResponse){ + errorResponse.type = 'error' + $.ccio.init('note',errorResponse); + return + } + var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(arr,null,3)); + $('#temp').html('') + .find('a') + .attr('href',dataStr) + .attr('download',filename) + [0].click() } -<% }else{ %> -$.ccio.timeObject = function(date){ - return moment(date) +$.ccio.timeObject = function(time,isUTC){ + if(isUTC === true){ + return moment(time).utc() + } + return moment(time) } -<% } %> if(!$user.details.lang||$user.details.lang==''){ $user.details.lang="<%-config.language%>" } @@ -158,10 +169,40 @@ switch($user.details.lang){ url=url+'/' } }else{ - url='' + url = '' } return url break; + case'videoUrlBuild': + var url + if(d.href){ + url = d.href + }else if(!d.href && d.hrefNoAuth){ + url = $.ccio.init('location',user)+user.auth_token+d.hrefNoAuth + } + if(user!==$user&&url.charAt(0)==='/'){ + url = $.ccio.init('location',user)+d.href.substring(1) + } + return url + break; + case'videoHrefToDelete': + var urlSplit = d.split('?') + var url = urlSplit[0]+'/delete' + if(urlSplit[1])url += '?' + urlSplit[1] + return url + break; + case'videoHrefToUnread': + var urlSplit = d.split('?') + var url = urlSplit[0]+'/status/1' + if(urlSplit[1])url += '?' + urlSplit[1] + return url + break; + case'videoHrefToRead': + var urlSplit = d.split('?') + var url = urlSplit[0]+'/status/2' + if(urlSplit[1])url += '?' + urlSplit[1] + return url + break; // case'streamWindow': // return $('.monitor_item[mid="'+d.id+'"][ke="'+d.ke+'"][auth="'+user.auth_token+'"]') // break; @@ -369,6 +410,7 @@ switch($user.details.lang){ d.e.find('.monitor_ext').text(d.mon.ext); d.mode=$.ccio.init('humanReadMode',d.mon.mode,user) d.e.find('.monitor_mode').text(d.mode) + d.e.find('.monitor_status').text(d.status) d.e.attr('mode',d.mode) d.e.find('.lamp').attr('title',d.mode) break; @@ -463,6 +505,19 @@ switch($user.details.lang){ }) return $.ccio.mon_groups; break; + case'closeVideo': + var el = $('#monitor_live_'+d.mid+user.auth_token) + var video = el.find('video') + if(video.length === 1){ + if(!video[0].paused){ + video[0].onerror = function(){} + video[0].pause() + } + video.prop('src',''); + video.find('source').remove(); + video.remove(); + } + break; case'jpegModeStop': clearTimeout($.ccio.mon[d.ke+d.mid+user.auth_token].jpegInterval); delete($.ccio.mon[d.ke+d.mid+user.auth_token].jpegInterval); @@ -492,15 +547,6 @@ switch($user.details.lang){ $.ccio.init('jpegMode',v,user) }); break; - case'dragWindows': - console.log('Deprecated : dragWindows') -// k.e=$("#monitors_live"); -// if(k.e.disableSelection){k.e.disableSelection()}; -// k.e.sortable({ -// handle: ".mdl-card__supporting-text", -// placeholder: "ui-state-highlight col-md-6" -// }); - break; case'getLocation': var l = document.createElement("a"); l.href = d; @@ -834,25 +880,18 @@ switch($user.details.lang){ if(d.id&&!d.mid){d.mid=d.id;} switch(x){ case 0://video - var href - if(d.href){ - href = d.href - }else if(!d.href && d.hrefNoAuth){ - href = $.ccio.init('location',user)+user.auth_token+d.hrefNoAuth - } - if(user!==$user&&href.charAt(0)==='/'){ - href = $.ccio.init('location',user)+d.href.substring(1) - } - href = 'href="'+href+'"' - if(!d.filename){d.filename=$.ccio.init('tf',d.time)+'.'+d.ext;} + var url = $.ccio.init('videoUrlBuild',d) + href = 'href="'+url+'"' +// if(!d.filename){d.filename=$.ccio.init('tf',d.time)+'.'+d.ext;} d.dlname=d.mid+'-'+d.filename; - d.mom=$.ccio.timeObject(d.time), - d.hr=parseInt(d.mom.format('HH')), + d.startMoment=$.ccio.timeObject(d.time), + d.endMoment=$.ccio.timeObject(d.end), + d.hr=parseInt(d.startMoment.format('HH')), d.per=parseInt(d.hr/24*100); - d.circle='
'+d.hr+'
' - tmp+='
  • '+d.circle+'
    <%-cleanLang(lang.Start)%> : '+$.ccio.timeObject(d.time).format('h:mm:ss , MMMM Do YYYY')+'
    <%-cleanLang(lang.End)%> : '+$.ccio.timeObject(d.end).format('h:mm:ss , MMMM Do YYYY')+'
    '+(parseInt(d.size)/1000000).toFixed(2)+'mb
    ' + d.circle='
    '+d.hr+'
    ' + tmp+='
  • '+d.circle+'
    <%-cleanLang(lang.Start)%> : '+d.startMoment.format('h:mm:ss , MMMM Do YYYY')+'
    <%-cleanLang(lang.End)%> : '+d.endMoment.format('h:mm:ss , MMMM Do YYYY')+'
    '+(parseInt(d.size)/1000000).toFixed(2)+'mb
    ' <% if(config.DropboxAppKey){ %> tmp+='' <% } %> - tmp+='
  • '; + tmp+=''; $(z).each(function(n,v){ v=$(v); if(v.find('.video-item').length>10){v.find('.video-item:last').remove()} @@ -860,7 +899,7 @@ switch($user.details.lang){ break; case 1://monitor icon d.src=placeholder.getData(placeholder.plcimg({bgcolor:'#b57d00',text:'...'})); - tmp+='
    '+d.name+'
    '+d.mid+'
    <%-cleanLang(lang['Save as'])%> : '+d.ext+'
    Mode : '+d.mode+'
    '; + tmp+='
    '+d.name+'
    '+d.mid+'
    <%-cleanLang(lang['Save as'])%> : '+d.ext+'
    Status : '+d.status+'
    '; delete(d.src); break; case 2://monitor stream @@ -876,7 +915,7 @@ switch($user.details.lang){ ],function(n,v){ tmp+='
    '+v.label+' :
    ' }) - tmp+=''; + tmp+='' tmp+='
    '; tmp+='
    '; tmp+='
    '; @@ -1597,7 +1636,11 @@ $.ccio.globalWebsocket=function(d,user){ } switch(d.f){ case'note': - $.ccio.init('note',d.note); + $.ccio.init('note',d.note,user); + break; + case'monitor_status': + console.log(d) + $('[ke="'+d.ke+'"][mid="'+d.id+'"][auth="'+user.auth_token+'"] .monitor_status').html(d.status); break; case'detector_trigger': d.e=$('.monitor_item[ke="'+d.ke+'"][mid="'+d.id+'"][auth="'+user.auth_token+'"]') @@ -1705,7 +1748,8 @@ $.ccio.globalWebsocket=function(d,user){ $.ccio.pm(0,d,null,user) break; case'log': - $.ccio.tm(4,d,'#logs,.monitor_item[mid="'+d.mid+'"][ke="'+d.ke+'"][auth="'+user.auth_token+'"] .logs',user) + var attr = '[mid="'+d.mid+'"][ke="'+d.ke+'"][auth="'+user.auth_token+'"]' + $.ccio.tm(4,d,'#logs,'+attr+'.monitor_item .logs:visible,'+attr+'#add_monitor:visible .logs',user) break; case'os'://indicator //cpu @@ -1741,8 +1785,10 @@ $.ccio.globalWebsocket=function(d,user){ break; case'video_edit':case'video_archive': $.ccio.init('data-video',d) - d.e=$('[file="'+d.filename+'"][mid="'+d.mid+'"][ke="'+d.ke+'"][auth="'+user.auth_token+'"]'); + d.e=$('[file="'+d.filename+'"][mid="'+d.mid+'"][ke="'+d.ke+'"][auth="'+user.auth_token+'"],[data-file="'+d.filename+'"][data-mid="'+d.mid+'"][data-ke="'+d.ke+'"][data-auth="'+user.auth_token+'"]'); d.e.attr('status',d.status),d.e.attr('data-status',d.status); + console.log(d) + break; case'video_delete': // if($('.modal[mid="'+d.mid+'"][auth="'+user.auth_token+'"]').length>0){$('#video_viewer[mid="'+d.mid+'"]').attr('file',null).attr('ke',null).attr('mid',null).attr('auth',null).modal('hide')} @@ -1794,8 +1840,9 @@ $.ccio.globalWebsocket=function(d,user){ d.o=$.ccio.op()[d.chosen_set]; if(!d.o[d.ke]){d.o[d.ke]={}};d.o[d.ke][d.id]=0;$.ccio.op(d.chosen_set,d.o); if($.ccio.mon[d.ke+d.id+user.auth_token]){ - $.ccio.init('jpegModeStop',{mid:d.id,ke:d.ke}); - $.ccio.init('clearTimers',d) + $.ccio.init('closeVideo',{mid:d.id,ke:d.ke},user); + $.ccio.init('jpegModeStop',{mid:d.id,ke:d.ke},user); + $.ccio.init('clearTimers',d,user) clearInterval($.ccio.mon[d.ke+d.id+user.auth_token].signal);delete($.ccio.mon[d.ke+d.id+user.auth_token].signal); $.ccio.mon[d.ke+d.id+user.auth_token].watch=0; if($.ccio.mon[d.ke+d.id+user.auth_token].hls){$.ccio.mon[d.ke+d.id+user.auth_token].hls.destroy()} @@ -1817,9 +1864,11 @@ $.ccio.globalWebsocket=function(d,user){ d.e=$('#monitor_live_'+d.id+user.auth_token); d.e.find('.stream-detected-object').remove() $.ccio.init('clearTimers',d) - if(d.e.length==0){ + if(d.e.length === 1){ + $.ccio.init('closeVideo',{mid:d.id,ke:d.ke},user); + } + if(d.e.length === 0){ $.ccio.tm(2,$.ccio.mon[d.ke+d.id+user.auth_token],'#monitors_live',user); - $.ccio.init('dragWindows') } d.d=JSON.parse($.ccio.mon[d.ke+d.id+user.auth_token].details); $.ccio.tm('stream-element',$.ccio.mon[d.ke+d.id+user.auth_token],null,user); @@ -1903,30 +1952,35 @@ $.ccio.globalWebsocket=function(d,user){ }) break; case'mp4': - var stream = d.e.find('.stream-element'); - if(d.d.stream_flv_type==='ws'){ - if($.ccio.mon[d.ke+d.id+user.auth_token].Poseidon){ - $.ccio.mon[d.ke+d.id+user.auth_token].Poseidon.destroy() + setTimeout(function(){ + var stream = d.e.find('.stream-element'); + if(d.d.stream_flv_type==='ws'){ + if($.ccio.mon[d.ke+d.id+user.auth_token].Poseidon){ + $.ccio.mon[d.ke+d.id+user.auth_token].Poseidon.destroy() + } + try{ + $.ccio.mon[d.ke+d.id+user.auth_token].Poseidon = new Poseidon({ + video: stream[0], + auth_token:user.auth_token, + ke:d.ke, + uid:user.uid, + id:d.id, + url: url + }); + $.ccio.mon[d.ke+d.id+user.auth_token].Poseidon.start(); + }catch(err){ + setTimeout(function(){ + $.ccio.cx({f:'monitor',ff:'watch_on',id:d.id},user) + },5000) + console.log(err) + } + }else{ + stream.attr('src',$.ccio.init('location',user)+user.auth_token+'/mp4/'+d.ke+'/'+d.id+'/s.mp4') + stream[0].onerror = function(err){ + console.error(err) + } } - try{ - $.ccio.mon[d.ke+d.id+user.auth_token].Poseidon = new Poseidon({ - video: stream[0], - auth_token:user.auth_token, - ke:d.ke, - uid:user.uid, - id:d.id, - url: url - }); - $.ccio.mon[d.ke+d.id+user.auth_token].Poseidon.start(); - }catch(err){ - setTimeout(function(){ - $.ccio.cx({f:'monitor',ff:'watch_on',id:d.id},user) - },3000) - console.log(err) - } - }else{ - stream.attr('src',$.ccio.init('location',user)+user.auth_token+'/mp4/'+d.ke+'/'+d.id+'/s.mp4') - } + },2000) break; case'flv': if (flvjs.isSupported()) { @@ -2153,7 +2207,7 @@ $.ccio.globalWebsocket=function(d,user){ $.each(videos.videos,function(n,v){ if(!v||!v.mid){return} v.mon=$.ccio.mon[v.ke+v.mid+$user.auth_token]; - v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; +// v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; if(v.status>0){ // data.push({src:v,x:v.time,y:$.ccio.timeObject(v.time).diff($.ccio.timeObject(v.end),'minutes')/-1}) data[v.filename]={ @@ -2801,27 +2855,67 @@ $.pB.e.find('.stop').click(function(e){ // $.ccio.cx({f:'ffprobe',ff:'stop'}) }); //log viewer -$.log={e:$('#logs_modal'),lm:$('#log_monitors')};$.log.o=$.log.e.find('table tbody'); +$.log = { + e : $('#logs_modal'), + lm : $('#log_monitors'), + dateRange : $('#logs_daterange'), + loaded : {} +} +$.log.dateRange.daterangepicker({ + startDate:$.ccio.timeObject().subtract(moment.duration("5:00:00")), + endDate:$.ccio.timeObject().add(moment.duration("24:00:00")), + timePicker: true, + timePickerIncrement: 30, + locale: { + format: 'MM/DD/YYYY h:mm A' + } +},function(start, end, label){ + //change daterange + $.log.lm.change() +}); +$.log.table = $.log.e.find('table') $.log.e.on('shown.bs.modal', function () { $.log.lm.find('option:not(.hard)').remove() $.each($.ccio.mon,function(n,v){ - v.id=v.mid; + v.id = v.mid $.ccio.tm('option',v,'#log_monitors') }) $.log.lm.change() -}); -$.log.lm.change(function(e){ - e.v=$(this).val(); - if(e.v==='all'){e.v=''} - $.get($.ccio.init('location',$user)+$user.auth_token+'/logs/'+$user.ke+'/'+e.v,function(d){ +}) +$.log.lm.change(function(){ + e = {} + e.v = $(this).val(); + e.urlSelector = e.v+''; + if(e.v === 'all'){ + e.urlSelector = '' + } + e.dateRange = $.log.dateRange.data('daterangepicker'); + $.log.loaded.startDate = e.dateRange.startDate + $.log.loaded.endDate = e.dateRange.endDate + var url = $.ccio.init('location',$user)+$user.auth_token+'/logs/'+$user.ke+'/'+e.urlSelector+'?start='+$.ccio.init('th',$.log.loaded.startDate)+'&end='+$.ccio.init('th',$.log.loaded.endDate) + $.get(url,function(d){ + $.log.loaded.url = url + $.log.loaded.query = e.v + $.log.loaded.rows = d e.tmp=''; - $.each(d,function(n,v){ - e.tmp+=''+v.time+''+v.name+''+v.mid+''+$.ccio.init('jsontoblock',v.info)+'' - }) - $.log.o.html(e.tmp) + if(d.length === 0){ + e.tmp = '<%-cleanLang(lang.NoLogsFoundForDateRange)%>' + }else{ + $.each(d,function(n,v){ + e.tmp+=''+v.time+''+v.mid+''+$.ccio.init('jsontoblock',v.info)+'' + }) + } + $.log.table.find('tbody').html(e.tmp) +// $.log.table.bootstrapTable() $.ccio.init('ls') }) -}); +}) +$.log.e.find('[download]').click(function(){ + $.ccio.downloadJSON($.log.loaded,'Shinobi_Logs_'+(new Date())+'.json',{ + title : 'No Logs Found', + text : 'No file will be downloaded.', + }) +}) //multi monitor manager $.multimon={e:$('#multi_mon')}; $.multimon.table=$.multimon.e.find('.tableData tbody'); @@ -2988,7 +3082,7 @@ $.multimon.e.on('shown.bs.modal',function() { var img = $('#left_menu [mid="'+v.mid+'"][auth="'+v.user.auth_token+'"] [monitor="watch"]').attr('src') tmp+='' tmp+='
    ' - tmp+=''+v.name+'
    '+v.mid+''+$.ccio.init('humanReadMode',v.mode)+''+streamURL+'' + tmp+=''+v.name+'
    '+v.mid+''+v.status+''+streamURL+'' //buttons tmp+=' ' tmp+='' @@ -4062,7 +4156,7 @@ $.timelapse.drawTimeline=function(getData){ e.tmp='' $.each(videos.videos,function(n,v){ if(!v||!v.time){return} - v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; +// v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; v.videoBefore=videos.videos[n-1]; v.videoAfter=videos.videos[n+1]; // if(v.href.charAt(0)==='/'){ @@ -4075,7 +4169,7 @@ $.timelapse.drawTimeline=function(getData){ e.tmp+='
    ' e.tmp+='
    ' e.tmp+='
    '+v.filename+'
    ' - e.tmp+='' + e.tmp+='' e.tmp+='
    ' e.tmp+='
    ' e.tmp+='
    ' @@ -4449,7 +4543,8 @@ $.pwrvid.e.on('click','[preview]',function(e){ $.pwrvid.vp.find('.stream-objects .stream-detected-object').remove() }) if(e.status==1){ - $.get(e.href.split('?')[0]+'/status/2',function(d){ + $.get($.ccio.init('videoHrefToRead',e.href),function(d){ + }) } var labels=[] @@ -4778,22 +4873,28 @@ $('body') .attr('auth',e.auth) .attr('file',e.file); if(e.status==1){ - $.get(e.href.split('?')[0]+'/status/2',function(d){ + $.get($.ccio.init('videoHrefToRead',e.href),function(d){ + if(d.ok !== true)console.log(d,new Error()) }) } break; case'delete': - e.href=e.p.find('[download]').attr('href') - if(!e.href||e.href===''){ - e.href=e.p.attr('href') + e.preventDefault(); + var videoLink = e.p.find('[download]').attr('href') + var href = $(this).attr('href') + console.log('videoLink',videoLink) + console.log(href) + if(!href){ + href = $.ccio.init('location',$.users[e.auth])+e.auth+'/videos/'+e.ke+'/'+e.mid+'/'+e.file+'/delete<% if(config.useUTC === true){%>?isUTC=true<%}%>' } + console.log(href) $.confirm.e.modal('show'); $.confirm.title.text('<%-cleanLang(lang['Delete Video'])%> : '+e.file) e.html='<%-cleanLang(lang.DeleteVideoMsg)%>' - e.html+=''; + e.html+=''; $.confirm.body.html(e.html) $.confirm.click({title:'Delete Video',class:'btn-danger'},function(){ - $.getJSON($.ccio.init('location',$.users[e.auth])+e.auth+'/videos/'+e.ke+'/'+e.mid+'/'+e.file+'/delete',function(d){ + $.getJSON(href,function(d){ $.ccio.log(d) }) }); @@ -5072,7 +5173,7 @@ $('body') var n=$.ccio.mon[v.ke+v.mid+user.auth_token]; if(n){v.title=n.name+' - '+(parseInt(v.size)/1000000).toFixed(2)+'mb';} v.start=v.time; - v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; +// v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; e.ar.push(v); } }) @@ -5089,7 +5190,7 @@ $('body') eventLimit: true, events:e.ar, eventClick:function(f){ - $('#temp').html('
    ').find('[video="launch"]').click(); + $('#temp').html('
    ').find('[video="launch"]').click(); $(this).css('border-color', 'red'); } }); @@ -5120,10 +5221,10 @@ $('body') e.tmp+=''; $.each(d.videos,function(n,v){ if(v.status!==0){ - var href = $.ccio.init('location',user)+v.href + var href = $.ccio.init('videoUrlBuild',v) v.mon=$.ccio.mon[v.ke+v.mid+user.auth_token]; v.start=v.time; - v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; +// v.filename=$.ccio.init('tf',v.time)+'.'+v.ext; e.tmp+=''; e.tmp+='
    '; e.tmp+=''; @@ -5135,7 +5236,7 @@ $('body') e.tmp+='  '; e.tmp+='  '; e.tmp+='  '; - e.tmp+='  '; + e.tmp+='  '; // e.tmp+='  '; e.tmp+=''; } diff --git a/web/libs/js/now-ui-kit.js b/web/libs/js/now-ui-kit.js new file mode 100644 index 00000000..a90f2b37 --- /dev/null +++ b/web/libs/js/now-ui-kit.js @@ -0,0 +1,220 @@ +/*! + + ========================================================= + * Now-ui-kit - v1.1.0 + ========================================================= + + * Product Page: https://www.creative-tim.com/product/now-ui-kit + * Copyright 2017 Creative Tim (http://www.creative-tim.com) + * Licensed under MIT (https://github.com/creativetimofficial/now-ui-kit/blob/master/LICENSE.md) + + * Designed by www.invisionapp.com Coded by www.creative-tim.com + + ========================================================= + + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + */ + +var transparent = true; + +var transparentDemo = true; +var fixedTop = false; + +var navbar_initialized, + backgroundOrange = false, + toggle_initialized = false; + +$(document).ready(function() { + try{ + // Activate the Tooltips + $('[data-toggle="tooltip"], [rel="tooltip"]').tooltip(); + + // Activate Popovers and set color for popovers + $('[data-toggle="popover"]').each(function() { + color_class = $(this).data('color'); + $(this).popover({ + template: '' + }); + }); + }catch(err){ + + } + + // Activate the image for the navbar-collapse + nowuiKit.initNavbarImage(); + + $navbar = $('.navbar[color-on-scroll]'); + scroll_distance = $navbar.attr('color-on-scroll') || 500; + + // Check if we have the class "navbar-color-on-scroll" then add the function to remove the class "navbar-transparent" so it will transform to a plain color. + +// if ($('.navbar[color-on-scroll]').length != 0) { +// nowuiKit.checkScrollForTransparentNavbar(); +// $(window).on('scroll', nowuiKit.checkScrollForTransparentNavbar) +// } + + $('.form-control').on("focus", function() { + $(this).parent('.input-group').addClass("input-group-focus"); + }).on("blur", function() { + $(this).parent(".input-group").removeClass("input-group-focus"); + }); + + // Activate bootstrapSwitch + $('.bootstrap-switch').each(function() { + $this = $(this); + data_on_label = $this.data('on-label') || ''; + data_off_label = $this.data('off-label') || ''; + + $this.bootstrapSwitch({ + onText: data_on_label, + offText: data_off_label + }); + }); + + if ($(window).width() >= 992) { + big_image = $('.page-header-image[data-parallax="true"]'); + + $(window).on('scroll', nowuiKitDemo.checkScrollForParallax); + } + + // Activate Carousel + $('.carousel').carousel({ + interval: 4000 + }); + + $('.date-picker').each(function() { + $(this).datepicker({ + templates: { + leftArrow: '', + rightArrow: '' + } + }).on('show', function() { + $('.datepicker').addClass('open'); + + datepicker_color = $(this).data('datepicker-color'); + if (datepicker_color.length != 0) { + $('.datepicker').addClass('datepicker-' + datepicker_color + ''); + } + }).on('hide', function() { + $('.datepicker').removeClass('open'); + }); + }); + + +}); + +$(window).on('resize', function() { + nowuiKit.initNavbarImage(); +}); + +$(document).on('click', '.navbar-toggler', function() { + $toggle = $(this); + + if (nowuiKit.misc.navbar_menu_visible == 1) { + $('html').removeClass('nav-open'); + nowuiKit.misc.navbar_menu_visible = 0; + $('#bodyClick').remove(); + setTimeout(function() { + $toggle.removeClass('toggled'); + }, 550); + } else { + setTimeout(function() { + $toggle.addClass('toggled'); + }, 580); + div = '
    '; + $(div).appendTo('body').click(function() { + $('html').removeClass('nav-open'); + nowuiKit.misc.navbar_menu_visible = 0; + setTimeout(function() { + $toggle.removeClass('toggled'); + $('#bodyClick').remove(); + }, 550); + }); + + $('html').addClass('nav-open'); + nowuiKit.misc.navbar_menu_visible = 1; + } +}); + +nowuiKit = { + misc: { + navbar_menu_visible: 0 + }, + + checkScrollForTransparentNavbar: debounce(function() { + if ($(document).scrollTop() > scroll_distance) { + if (transparent) { + transparent = false; + $('.navbar[color-on-scroll]').removeClass('navbar-transparent'); + } + } else { + if (!transparent) { + transparent = true; + $('.navbar[color-on-scroll]').addClass('navbar-transparent'); + } + } + }, 17), + + initNavbarImage: function() { + var $navbar = $('.navbar').find('.navbar-translate').siblings('.navbar-collapse'); + var background_image = $navbar.data('nav-image'); + + if ($(window).width() < 991 || $('body').hasClass('burger-menu')) { + if (background_image != undefined) { + $navbar.css('background', "url('" + background_image + "')") + .removeAttr('data-nav-image') + .css('background-size', "cover") + .addClass('has-image'); + } + } else if (background_image != undefined) { + $navbar.css('background', "") + .attr('data-nav-image', '' + background_image + '') + .css('background-size', "") + .removeClass('has-image'); + } + }, + + initSliders: function() { + + } +} + + +var big_image; + +// Javascript just for Demo purpose, remove it from your project +nowuiKitDemo = { + checkScrollForParallax: debounce(function() { + var current_scroll = $(this).scrollTop(); + + oVal = ($(window).scrollTop() / 3); + big_image.css({ + 'transform': 'translate3d(0,' + oVal + 'px,0)', + '-webkit-transform': 'translate3d(0,' + oVal + 'px,0)', + '-ms-transform': 'translate3d(0,' + oVal + 'px,0)', + '-o-transform': 'translate3d(0,' + oVal + 'px,0)' + }); + + }, 6) + +} + +// Returns a function, that, as long as it continues to be invoked, will not +// be triggered. The function will be called after it stops being called for +// N milliseconds. If `immediate` is passed, trigger the function on the +// leading edge, instead of the trailing. + +function debounce(func, wait, immediate) { + var timeout; + return function() { + var context = this, + args = arguments; + clearTimeout(timeout); + timeout = setTimeout(function() { + timeout = null; + if (!immediate) func.apply(context, args); + }, wait); + if (immediate && !timeout) func.apply(context, args); + }; +}; \ No newline at end of file diff --git a/web/libs/js/popper.min.js b/web/libs/js/popper.min.js new file mode 100644 index 00000000..846d6c4f --- /dev/null +++ b/web/libs/js/popper.min.js @@ -0,0 +1,834 @@ +/* + Copyright (C) Federico Zivolo 2017 + Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). + */ +(function(e, t) { + 'object' == typeof exports && 'undefined' != typeof module ? module.exports = t() : 'function' == typeof define && define.amd ? define(t) : e.Popper = t() +})(this, function() { + 'use strict'; + + function e(e) { + return e && '[object Function]' === {}.toString.call(e) + } + + function t(e, t) { + if (1 !== e.nodeType) return []; + var o = window.getComputedStyle(e, null); + return t ? o[t] : o + } + + function o(e) { + return 'HTML' === e.nodeName ? e : e.parentNode || e.host + } + + function n(e) { + if (!e || -1 !== ['HTML', 'BODY', '#document'].indexOf(e.nodeName)) return window.document.body; + var i = t(e), + r = i.overflow, + p = i.overflowX, + s = i.overflowY; + return /(auto|scroll)/.test(r + s + p) ? e : n(o(e)) + } + + function r(e) { + var o = e && e.offsetParent, + i = o && o.nodeName; + return i && 'BODY' !== i && 'HTML' !== i ? -1 !== ['TD', 'TABLE'].indexOf(o.nodeName) && 'static' === t(o, 'position') ? r(o) : o : window.document.documentElement + } + + function p(e) { + var t = e.nodeName; + return 'BODY' !== t && ('HTML' === t || r(e.firstElementChild) === e) + } + + function s(e) { + return null === e.parentNode ? e : s(e.parentNode) + } + + function d(e, t) { + if (!e || !e.nodeType || !t || !t.nodeType) return window.document.documentElement; + var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, + i = o ? e : t, + n = o ? t : e, + a = document.createRange(); + a.setStart(i, 0), a.setEnd(n, 0); + var f = a.commonAncestorContainer; + if (e !== f && t !== f || i.contains(n)) return p(f) ? f : r(f); + var l = s(e); + return l.host ? d(l.host, t) : d(e, s(t).host) + } + + function a(e) { + var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 'top', + o = 'top' === t ? 'scrollTop' : 'scrollLeft', + i = e.nodeName; + if ('BODY' === i || 'HTML' === i) { + var n = window.document.documentElement, + r = window.document.scrollingElement || n; + return r[o] + } + return e[o] + } + + function f(e, t) { + var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], + i = a(t, 'top'), + n = a(t, 'left'), + r = o ? -1 : 1; + return e.top += i * r, e.bottom += i * r, e.left += n * r, e.right += n * r, e + } + + function l(e, t) { + var o = 'x' === t ? 'Left' : 'Top', + i = 'Left' == o ? 'Right' : 'Bottom'; + return +e['border' + o + 'Width'].split('px')[0] + +e['border' + i + 'Width'].split('px')[0] + } + + function m(e, t, o, i) { + return _(t['offset' + e], o['client' + e], o['offset' + e], ie() ? o['offset' + e] + i['margin' + ('Height' === e ? 'Top' : 'Left')] + i['margin' + ('Height' === e ? 'Bottom' : 'Right')] : 0) + } + + function h() { + var e = window.document.body, + t = window.document.documentElement, + o = ie() && window.getComputedStyle(t); + return { + height: m('Height', e, t, o), + width: m('Width', e, t, o) + } + } + + function c(e) { + return se({}, e, { + right: e.left + e.width, + bottom: e.top + e.height + }) + } + + function g(e) { + var o = {}; + if (ie()) try { + o = e.getBoundingClientRect(); + var i = a(e, 'top'), + n = a(e, 'left'); + o.top += i, o.left += n, o.bottom += i, o.right += n + } catch (e) {} else o = e.getBoundingClientRect(); + var r = { + left: o.left, + top: o.top, + width: o.right - o.left, + height: o.bottom - o.top + }, + p = 'HTML' === e.nodeName ? h() : {}, + s = p.width || e.clientWidth || r.right - r.left, + d = p.height || e.clientHeight || r.bottom - r.top, + f = e.offsetWidth - s, + m = e.offsetHeight - d; + if (f || m) { + var g = t(e); + f -= l(g, 'x'), m -= l(g, 'y'), r.width -= f, r.height -= m + } + return c(r) + } + + function u(e, o) { + var i = ie(), + r = 'HTML' === o.nodeName, + p = g(e), + s = g(o), + d = n(e), + a = t(o), + l = +a.borderTopWidth.split('px')[0], + m = +a.borderLeftWidth.split('px')[0], + h = c({ + top: p.top - s.top - l, + left: p.left - s.left - m, + width: p.width, + height: p.height + }); + if (h.marginTop = 0, h.marginLeft = 0, !i && r) { + var u = +a.marginTop.split('px')[0], + b = +a.marginLeft.split('px')[0]; + h.top -= l - u, h.bottom -= l - u, h.left -= m - b, h.right -= m - b, h.marginTop = u, h.marginLeft = b + } + return (i ? o.contains(d) : o === d && 'BODY' !== d.nodeName) && (h = f(h, o)), h + } + + function b(e) { + var t = window.document.documentElement, + o = u(e, t), + i = _(t.clientWidth, window.innerWidth || 0), + n = _(t.clientHeight, window.innerHeight || 0), + r = a(t), + p = a(t, 'left'), + s = { + top: r - o.top + o.marginTop, + left: p - o.left + o.marginLeft, + width: i, + height: n + }; + return c(s) + } + + function y(e) { + var i = e.nodeName; + return 'BODY' === i || 'HTML' === i ? !1 : 'fixed' === t(e, 'position') || y(o(e)) + } + + function w(e, t, i, r) { + var p = { + top: 0, + left: 0 + }, + s = d(e, t); + if ('viewport' === r) p = b(s); + else { + var a; + 'scrollParent' === r ? (a = n(o(e)), 'BODY' === a.nodeName && (a = window.document.documentElement)) : 'window' === r ? a = window.document.documentElement : a = r; + var f = u(a, s); + if ('HTML' === a.nodeName && !y(s)) { + var l = h(), + m = l.height, + c = l.width; + p.top += f.top - f.marginTop, p.bottom = m + f.top, p.left += f.left - f.marginLeft, p.right = c + f.left + } else p = f + } + return p.left += i, p.top += i, p.right -= i, p.bottom -= i, p + } + + function v(e) { + var t = e.width, + o = e.height; + return t * o + } + + function E(e, t, o, i, n) { + var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0; + if (-1 === e.indexOf('auto')) return e; + var p = w(o, i, r, n), + s = { + top: { + width: p.width, + height: t.top - p.top + }, + right: { + width: p.right - t.right, + height: p.height + }, + bottom: { + width: p.width, + height: p.bottom - t.bottom + }, + left: { + width: t.left - p.left, + height: p.height + } + }, + d = Object.keys(s).map(function(e) { + return se({ + key: e + }, s[e], { + area: v(s[e]) + }) + }).sort(function(e, t) { + return t.area - e.area + }), + a = d.filter(function(e) { + var t = e.width, + i = e.height; + return t >= o.clientWidth && i >= o.clientHeight + }), + f = 0 < a.length ? a[0].key : d[0].key, + l = e.split('-')[1]; + return f + (l ? '-' + l : '') + } + + function x(e, t, o) { + var i = d(t, o); + return u(o, i) + } + + function O(e) { + var t = window.getComputedStyle(e), + o = parseFloat(t.marginTop) + parseFloat(t.marginBottom), + i = parseFloat(t.marginLeft) + parseFloat(t.marginRight), + n = { + width: e.offsetWidth + i, + height: e.offsetHeight + o + }; + return n + } + + function L(e) { + var t = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' + }; + return e.replace(/left|right|bottom|top/g, function(e) { + return t[e] + }) + } + + function S(e, t, o) { + o = o.split('-')[0]; + var i = O(e), + n = { + width: i.width, + height: i.height + }, + r = -1 !== ['right', 'left'].indexOf(o), + p = r ? 'top' : 'left', + s = r ? 'left' : 'top', + d = r ? 'height' : 'width', + a = r ? 'width' : 'height'; + return n[p] = t[p] + t[d] / 2 - i[d] / 2, n[s] = o === s ? t[s] - i[a] : t[L(s)], n + } + + function T(e, t) { + return Array.prototype.find ? e.find(t) : e.filter(t)[0] + } + + function C(e, t, o) { + if (Array.prototype.findIndex) return e.findIndex(function(e) { + return e[t] === o + }); + var i = T(e, function(e) { + return e[t] === o + }); + return e.indexOf(i) + } + + function N(t, o, i) { + var n = void 0 === i ? t : t.slice(0, C(t, 'name', i)); + return n.forEach(function(t) { + t.function && console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); + var i = t.function || t.fn; + t.enabled && e(i) && (o.offsets.popper = c(o.offsets.popper), o.offsets.reference = c(o.offsets.reference), o = i(o, t)) + }), o + } + + function k() { + if (!this.state.isDestroyed) { + var e = { + instance: this, + styles: {}, + attributes: {}, + flipped: !1, + offsets: {} + }; + e.offsets.reference = x(this.state, this.popper, this.reference), e.placement = E(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.offsets.popper = S(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = 'absolute', e = N(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e)) + } + } + + function W(e, t) { + return e.some(function(e) { + var o = e.name, + i = e.enabled; + return i && o === t + }) + } + + function B(e) { + for (var t = [!1, 'ms', 'Webkit', 'Moz', 'O'], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; n < t.length - 1; n++) { + var i = t[n], + r = i ? '' + i + o : e; + if ('undefined' != typeof window.document.body.style[r]) return r + } + return null + } + + function D() { + return this.state.isDestroyed = !0, W(this.modifiers, 'applyStyle') && (this.popper.removeAttribute('x-placement'), this.popper.style.left = '', this.popper.style.position = '', this.popper.style.top = '', this.popper.style[B('transform')] = ''), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this + } + + function H(e, t, o, i) { + var r = 'BODY' === e.nodeName, + p = r ? window : e; + p.addEventListener(t, o, { + passive: !0 + }), r || H(n(p.parentNode), t, o, i), i.push(p) + } + + function P(e, t, o, i) { + o.updateBound = i, window.addEventListener('resize', o.updateBound, { + passive: !0 + }); + var r = n(e); + return H(r, 'scroll', o.updateBound, o.scrollParents), o.scrollElement = r, o.eventsEnabled = !0, o + } + + function A() { + this.state.eventsEnabled || (this.state = P(this.reference, this.options, this.state, this.scheduleUpdate)) + } + + function M(e, t) { + return window.removeEventListener('resize', t.updateBound), t.scrollParents.forEach(function(e) { + e.removeEventListener('scroll', t.updateBound) + }), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t + } + + function I() { + this.state.eventsEnabled && (window.cancelAnimationFrame(this.scheduleUpdate), this.state = M(this.reference, this.state)) + } + + function R(e) { + return '' !== e && !isNaN(parseFloat(e)) && isFinite(e) + } + + function U(e, t) { + Object.keys(t).forEach(function(o) { + var i = ''; - 1 !== ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(o) && R(t[o]) && (i = 'px'), e.style[o] = t[o] + i + }) + } + + function Y(e, t) { + Object.keys(t).forEach(function(o) { + var i = t[o]; + !1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o]) + }) + } + + function F(e, t, o) { + var i = T(e, function(e) { + var o = e.name; + return o === t + }), + n = !!i && e.some(function(e) { + return e.name === o && e.enabled && e.order < i.order + }); + if (!n) { + var r = '`' + t + '`'; + console.warn('`' + o + '`' + ' modifier is required by ' + r + ' modifier in order to work, be sure to include it before ' + r + '!') + } + return n + } + + function j(e) { + return 'end' === e ? 'start' : 'start' === e ? 'end' : e + } + + function K(e) { + var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], + o = ae.indexOf(e), + i = ae.slice(o + 1).concat(ae.slice(0, o)); + return t ? i.reverse() : i + } + + function q(e, t, o, i) { + var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), + r = +n[1], + p = n[2]; + if (!r) return e; + if (0 === p.indexOf('%')) { + var s; + switch (p) { + case '%p': + s = o; + break; + case '%': + case '%r': + default: + s = i; + } + var d = c(s); + return d[t] / 100 * r + } + if ('vh' === p || 'vw' === p) { + var a; + return a = 'vh' === p ? _(document.documentElement.clientHeight, window.innerHeight || 0) : _(document.documentElement.clientWidth, window.innerWidth || 0), a / 100 * r + } + return r + } + + function G(e, t, o, i) { + var n = [0, 0], + r = -1 !== ['right', 'left'].indexOf(i), + p = e.split(/(\+|\-)/).map(function(e) { + return e.trim() + }), + s = p.indexOf(T(p, function(e) { + return -1 !== e.search(/,|\s/) + })); + p[s] && -1 === p[s].indexOf(',') && console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); + var d = /\s*,\s*|\s+/, + a = -1 === s ? [p] : [p.slice(0, s).concat([p[s].split(d)[0]]), [p[s].split(d)[1]].concat(p.slice(s + 1))]; + return a = a.map(function(e, i) { + var n = (1 === i ? !r : r) ? 'height' : 'width', + p = !1; + return e.reduce(function(e, t) { + return '' === e[e.length - 1] && -1 !== ['+', '-'].indexOf(t) ? (e[e.length - 1] = t, p = !0, e) : p ? (e[e.length - 1] += t, p = !1, e) : e.concat(t) + }, []).map(function(e) { + return q(e, n, t, o) + }) + }), a.forEach(function(e, t) { + e.forEach(function(o, i) { + R(o) && (n[t] += o * ('-' === e[i - 1] ? -1 : 1)) + }) + }), n + } + for (var z = Math.min, V = Math.floor, _ = Math.max, X = ['native code', '[object MutationObserverConstructor]'], Q = function(e) { + return X.some(function(t) { + return -1 < (e || '').toString().indexOf(t) + }) + }, J = 'undefined' != typeof window, Z = ['Edge', 'Trident', 'Firefox'], $ = 0, ee = 0; ee < Z.length; ee += 1) + if (J && 0 <= navigator.userAgent.indexOf(Z[ee])) { + $ = 1; + break + } + var i, te = J && Q(window.MutationObserver), + oe = te ? function(e) { + var t = !1, + o = 0, + i = document.createElement('span'), + n = new MutationObserver(function() { + e(), t = !1 + }); + return n.observe(i, { + attributes: !0 + }), + function() { + t || (t = !0, i.setAttribute('x-index', o), ++o) + } + } : function(e) { + var t = !1; + return function() { + t || (t = !0, setTimeout(function() { + t = !1, e() + }, $)) + } + }, + ie = function() { + return void 0 == i && (i = -1 !== navigator.appVersion.indexOf('MSIE 10')), i + }, + ne = function(e, t) { + if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') + }, + re = function() { + function e(e, t) { + for (var o, n = 0; n < t.length; n++) o = t[n], o.enumerable = o.enumerable || !1, o.configurable = !0, 'value' in o && (o.writable = !0), Object.defineProperty(e, o.key, o) + } + return function(t, o, i) { + return o && e(t.prototype, o), i && e(t, i), t + } + }(), + pe = function(e, t, o) { + return t in e ? Object.defineProperty(e, t, { + value: o, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[t] = o, e + }, + se = Object.assign || function(e) { + for (var t, o = 1; o < arguments.length; o++) + for (var i in t = arguments[o], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); + return e + }, + de = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'], + ae = de.slice(3), + fe = { + FLIP: 'flip', + CLOCKWISE: 'clockwise', + COUNTERCLOCKWISE: 'counterclockwise' + }, + le = function() { + function t(o, i) { + var n = this, + r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}; + ne(this, t), this.scheduleUpdate = function() { + return requestAnimationFrame(n.update) + }, this.update = oe(this.update.bind(this)), this.options = se({}, t.Defaults, r), this.state = { + isDestroyed: !1, + isCreated: !1, + scrollParents: [] + }, this.reference = o.jquery ? o[0] : o, this.popper = i.jquery ? i[0] : i, this.options.modifiers = {}, Object.keys(se({}, t.Defaults.modifiers, r.modifiers)).forEach(function(e) { + n.options.modifiers[e] = se({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {}) + }), this.modifiers = Object.keys(this.options.modifiers).map(function(e) { + return se({ + name: e + }, n.options.modifiers[e]) + }).sort(function(e, t) { + return e.order - t.order + }), this.modifiers.forEach(function(t) { + t.enabled && e(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state) + }), this.update(); + var p = this.options.eventsEnabled; + p && this.enableEventListeners(), this.state.eventsEnabled = p + } + return re(t, [{ + key: 'update', + value: function() { + return k.call(this) + } + }, { + key: 'destroy', + value: function() { + return D.call(this) + } + }, { + key: 'enableEventListeners', + value: function() { + return A.call(this) + } + }, { + key: 'disableEventListeners', + value: function() { + return I.call(this) + } + }]), t + }(); + return le.Utils = ('undefined' == typeof window ? global : window).PopperUtils, le.placements = de, le.Defaults = { + placement: 'bottom', + eventsEnabled: !0, + removeOnDestroy: !1, + onCreate: function() {}, + onUpdate: function() {}, + modifiers: { + shift: { + order: 100, + enabled: !0, + fn: function(e) { + var t = e.placement, + o = t.split('-')[0], + i = t.split('-')[1]; + if (i) { + var n = e.offsets, + r = n.reference, + p = n.popper, + s = -1 !== ['bottom', 'top'].indexOf(o), + d = s ? 'left' : 'top', + a = s ? 'width' : 'height', + f = { + start: pe({}, d, r[d]), + end: pe({}, d, r[d] + r[a] - p[a]) + }; + e.offsets.popper = se({}, p, f[i]) + } + return e + } + }, + offset: { + order: 200, + enabled: !0, + fn: function(e, t) { + var o, i = t.offset, + n = e.placement, + r = e.offsets, + p = r.popper, + s = r.reference, + d = n.split('-')[0]; + return o = R(+i) ? [+i, 0] : G(i, p, s, d), 'left' === d ? (p.top += o[0], p.left -= o[1]) : 'right' === d ? (p.top += o[0], p.left += o[1]) : 'top' === d ? (p.left += o[0], p.top -= o[1]) : 'bottom' === d && (p.left += o[0], p.top += o[1]), e.popper = p, e + }, + offset: 0 + }, + preventOverflow: { + order: 300, + enabled: !0, + fn: function(e, t) { + var o = t.boundariesElement || r(e.instance.popper); + e.instance.reference === o && (o = r(o)); + var i = w(e.instance.popper, e.instance.reference, t.padding, o); + t.boundaries = i; + var n = t.priority, + p = e.offsets.popper, + s = { + primary: function(e) { + var o = p[e]; + return p[e] < i[e] && !t.escapeWithReference && (o = _(p[e], i[e])), pe({}, e, o) + }, + secondary: function(e) { + var o = 'right' === e ? 'left' : 'top', + n = p[o]; + return p[e] > i[e] && !t.escapeWithReference && (n = z(p[o], i[e] - ('right' === e ? p.width : p.height))), pe({}, o, n) + } + }; + return n.forEach(function(e) { + var t = -1 === ['left', 'top'].indexOf(e) ? 'secondary' : 'primary'; + p = se({}, p, s[t](e)) + }), e.offsets.popper = p, e + }, + priority: ['left', 'right', 'top', 'bottom'], + padding: 5, + boundariesElement: 'scrollParent' + }, + keepTogether: { + order: 400, + enabled: !0, + fn: function(e) { + var t = e.offsets, + o = t.popper, + i = t.reference, + n = e.placement.split('-')[0], + r = V, + p = -1 !== ['top', 'bottom'].indexOf(n), + s = p ? 'right' : 'bottom', + d = p ? 'left' : 'top', + a = p ? 'width' : 'height'; + return o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), e + } + }, + arrow: { + order: 500, + enabled: !0, + fn: function(e, t) { + if (!F(e.instance.modifiers, 'arrow', 'keepTogether')) return e; + var o = t.element; + if ('string' == typeof o) { + if (o = e.instance.popper.querySelector(o), !o) return e; + } else if (!e.instance.popper.contains(o)) return console.warn('WARNING: `arrow.element` must be child of its popper element!'), e; + var i = e.placement.split('-')[0], + n = e.offsets, + r = n.popper, + p = n.reference, + s = -1 !== ['left', 'right'].indexOf(i), + d = s ? 'height' : 'width', + a = s ? 'top' : 'left', + f = s ? 'left' : 'top', + l = s ? 'bottom' : 'right', + m = O(o)[d]; + p[l] - m < r[a] && (e.offsets.popper[a] -= r[a] - (p[l] - m)), p[a] + m > r[l] && (e.offsets.popper[a] += p[a] + m - r[l]); + var h = p[a] + p[d] / 2 - m / 2, + g = h - c(e.offsets.popper)[a]; + return g = _(z(r[d] - m, g), 0), e.arrowElement = o, e.offsets.arrow = {}, e.offsets.arrow[a] = Math.round(g), e.offsets.arrow[f] = '', e + }, + element: '[x-arrow]' + }, + flip: { + order: 600, + enabled: !0, + fn: function(e, t) { + if (W(e.instance.modifiers, 'inner')) return e; + if (e.flipped && e.placement === e.originalPlacement) return e; + var o = w(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement), + i = e.placement.split('-')[0], + n = L(i), + r = e.placement.split('-')[1] || '', + p = []; + switch (t.behavior) { + case fe.FLIP: + p = [i, n]; + break; + case fe.CLOCKWISE: + p = K(i); + break; + case fe.COUNTERCLOCKWISE: + p = K(i, !0); + break; + default: + p = t.behavior; + } + return p.forEach(function(s, d) { + if (i !== s || p.length === d + 1) return e; + i = e.placement.split('-')[0], n = L(i); + var a = e.offsets.popper, + f = e.offsets.reference, + l = V, + m = 'left' === i && l(a.right) > l(f.left) || 'right' === i && l(a.left) < l(f.right) || 'top' === i && l(a.bottom) > l(f.top) || 'bottom' === i && l(a.top) < l(f.bottom), + h = l(a.left) < l(o.left), + c = l(a.right) > l(o.right), + g = l(a.top) < l(o.top), + u = l(a.bottom) > l(o.bottom), + b = 'left' === i && h || 'right' === i && c || 'top' === i && g || 'bottom' === i && u, + y = -1 !== ['top', 'bottom'].indexOf(i), + w = !!t.flipVariations && (y && 'start' === r && h || y && 'end' === r && c || !y && 'start' === r && g || !y && 'end' === r && u); + (m || b || w) && (e.flipped = !0, (m || b) && (i = p[d + 1]), w && (r = j(r)), e.placement = i + (r ? '-' + r : ''), e.offsets.popper = se({}, e.offsets.popper, S(e.instance.popper, e.offsets.reference, e.placement)), e = N(e.instance.modifiers, e, 'flip')) + }), e + }, + behavior: 'flip', + padding: 5, + boundariesElement: 'viewport' + }, + inner: { + order: 700, + enabled: !1, + fn: function(e) { + var t = e.placement, + o = t.split('-')[0], + i = e.offsets, + n = i.popper, + r = i.reference, + p = -1 !== ['left', 'right'].indexOf(o), + s = -1 === ['top', 'left'].indexOf(o); + return n[p ? 'left' : 'top'] = r[t] - (s ? n[p ? 'width' : 'height'] : 0), e.placement = L(t), e.offsets.popper = c(n), e + } + }, + hide: { + order: 800, + enabled: !0, + fn: function(e) { + if (!F(e.instance.modifiers, 'hide', 'preventOverflow')) return e; + var t = e.offsets.reference, + o = T(e.instance.modifiers, function(e) { + return 'preventOverflow' === e.name + }).boundaries; + if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) { + if (!0 === e.hide) return e; + e.hide = !0, e.attributes['x-out-of-boundaries'] = '' + } else { + if (!1 === e.hide) return e; + e.hide = !1, e.attributes['x-out-of-boundaries'] = !1 + } + return e + } + }, + computeStyle: { + order: 850, + enabled: !0, + fn: function(e, t) { + var o = t.x, + i = t.y, + n = e.offsets.popper, + p = T(e.instance.modifiers, function(e) { + return 'applyStyle' === e.name + }).gpuAcceleration; + void 0 !== p && console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); + var s, d, a = void 0 === p ? t.gpuAcceleration : p, + f = r(e.instance.popper), + l = g(f), + m = { + position: n.position + }, + h = { + left: V(n.left), + top: V(n.top), + bottom: V(n.bottom), + right: V(n.right) + }, + c = 'bottom' === o ? 'top' : 'bottom', + u = 'right' === i ? 'left' : 'right', + b = B('transform'); + if (d = 'bottom' == c ? -l.height + h.bottom : h.top, s = 'right' == u ? -l.width + h.right : h.left, a && b) m[b] = 'translate3d(' + s + 'px, ' + d + 'px, 0)', m[c] = 0, m[u] = 0, m.willChange = 'transform'; + else { + var y = 'bottom' == c ? -1 : 1, + w = 'right' == u ? -1 : 1; + m[c] = d * y, m[u] = s * w, m.willChange = c + ', ' + u + } + var v = { + "x-placement": e.placement + }; + return e.attributes = se({}, v, e.attributes), e.styles = se({}, m, e.styles), e + }, + gpuAcceleration: !0, + x: 'bottom', + y: 'right' + }, + applyStyle: { + order: 900, + enabled: !0, + fn: function(e) { + return U(e.instance.popper, e.styles), Y(e.instance.popper, e.attributes), e.offsets.arrow && U(e.arrowElement, e.offsets.arrow), e + }, + onLoad: function(e, t, o, i, n) { + var r = x(n, t, e), + p = E(o.placement, r, t, e, o.modifiers.flip.boundariesElement, o.modifiers.flip.padding); + return t.setAttribute('x-placement', p), U(t, { + position: 'absolute' + }), o + }, + gpuAcceleration: void 0 + } + } + }, le +}); \ No newline at end of file diff --git a/web/libs/sass/now-ui-kit.scss b/web/libs/sass/now-ui-kit.scss new file mode 100644 index 00000000..99b53881 --- /dev/null +++ b/web/libs/sass/now-ui-kit.scss @@ -0,0 +1,57 @@ +/*! + + ========================================================= + * Now-ui-kit - v1.1.0 + ========================================================= + + * Product Page: http://www.creative-tim.com/product/now-ui-kit + * Copyright 2017 Creative Tim (http://www.creative-tim.com) + * Licensed under MIT (https://github.com/creativetimofficial/now-ui-kit/blob/master/LICENSE.md) + + * Designed by www.invisionapp.com Coded by www.creative-tim.com + + ========================================================= + + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + */ + +@import 'now-ui-kit/variables'; +@import 'now-ui-kit/mixins'; + +// Plugins CSS +@import "now-ui-kit/plugins/plugin-bootstrap-switch"; +@import "now-ui-kit/plugins/plugin-nouislider"; +@import "now-ui-kit/plugins/plugin-datepicker"; + +// Core CSS +@import "now-ui-kit/buttons"; +@import "now-ui-kit/inputs"; +@import "now-ui-kit/checkboxes-radio"; +@import "now-ui-kit/progress"; +@import "now-ui-kit/badges"; +@import "now-ui-kit/pagination"; +@import "now-ui-kit/typography"; +@import "now-ui-kit/misc"; +@import "now-ui-kit/pills"; + +// components +@import "now-ui-kit/social-buttons"; +@import "now-ui-kit/tabs"; +@import "now-ui-kit/navbar"; +@import "now-ui-kit/dropdown"; +@import "now-ui-kit/alerts"; +@import "now-ui-kit/images"; +@import "now-ui-kit/popups"; +@import "now-ui-kit/nucleo-outline"; +@import "now-ui-kit/modals"; +@import "now-ui-kit/carousel"; +@import "now-ui-kit/cards"; +@import "now-ui-kit/footers"; + +// example pages and sections +@import "now-ui-kit/example-pages"; +@import "now-ui-kit/sections"; + + +@import "now-ui-kit/responsive"; diff --git a/web/libs/sass/now-ui-kit/_alerts.scss b/web/libs/sass/now-ui-kit/_alerts.scss new file mode 100644 index 00000000..9fcf7eb5 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_alerts.scss @@ -0,0 +1,54 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. +.alert{ + border: 0; + border-radius: 0; + color: $white-color; + padding-top: .9rem; + padding-bottom: .9rem; + position: relative; + + &.alert-success{ + background-color: $success-color-alert; + } + + &.alert-danger{ + background-color: $danger-color-alert; + } + + &.alert-warning{ + background-color: $warning-color-alert; + } + + &.alert-info{ + background-color: $info-color-alert; + } + + &.alert-primary{ + background-color: $primary-color-alert; + } + + .alert-icon{ + display: block; + float: left; + margin-right: 15px; + margin-top: -1px; + } + + strong{ + text-transform: uppercase; + font-size: 12px; + } + + i.fa, + i.now-ui-icons{ + font-size: 20px; + } + + .close{ + color: $white-color; + opacity: .9; + text-shadow: none; + line-height: 0; + outline: 0; + } +} diff --git a/web/libs/sass/now-ui-kit/_badges.scss b/web/libs/sass/now-ui-kit/_badges.scss new file mode 100644 index 00000000..b57a08c3 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_badges.scss @@ -0,0 +1,39 @@ +/* badges */ +.badge{ + border-radius: 8px; + padding: 4px 8px; + text-transform: uppercase; + font-size: $font-size-mini; + line-height: 12px; + background-color: $transparent-bg; + border: $border; + margin-bottom: 5px; + border-radius: $border-radius-extreme; +} +.badge-icon{ + padding: 0.4em 0.55em; + i{ + font-size: 0.8em; + } +} +.badge-default{ + @include badge-color($default-color); +} +.badge-primary{ + @include badge-color($primary-color); +} +.badge-info{ + @include badge-color($info-color); +} +.badge-success{ + @include badge-color($success-color); +} +.badge-warning{ + @include badge-color($warning-color); +} +.badge-danger{ + @include badge-color($danger-color); +} +.badge-neutral{ + @include badge-color($white-color); +} diff --git a/web/libs/sass/now-ui-kit/_buttons.scss b/web/libs/sass/now-ui-kit/_buttons.scss new file mode 100644 index 00000000..d5948aa8 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_buttons.scss @@ -0,0 +1,158 @@ +.btn, +.navbar .navbar-nav > a.btn{ + border-width: $border-thick; + font-weight: $font-weight-normal; + font-size: $font-size-small; + line-height: $line-height; + margin: 5px 1px; + border: none; + border-radius: $border-radius-small; + padding: $padding-btn-vertical $padding-btn-horizontal; + cursor: pointer; + + @include btn-styles($default-color, $default-states-color); + + &:hover, + &:focus{ + @include opacity(1); + outline: 0 !important; + } + &:active, + &.active, + .open > &.dropdown-toggle { + @include box-shadow(none); + outline: 0 !important; + } + + &.btn-icon { + // see above for color variations + height: $btn-icon-size-regular; + min-width: $btn-icon-size-regular; + width: $btn-icon-size-regular; + padding: 0; + font-size: $btn-icon-font-size-regular; + overflow: hidden; + position: relative; + line-height: normal; + + &.btn-simple{ + padding: 0; + } + + &.btn-sm{ + height: $btn-icon-size-small; + min-width: $btn-icon-size-small; + width: $btn-icon-size-small; + + i.fa, + i.now-ui-icons{ + font-size: $btn-icon-font-size-small; + } + } + + &.btn-lg{ + height: $btn-icon-size-lg; + min-width: $btn-icon-size-lg; + width: $btn-icon-size-lg; + + i.now-ui-icons, + i.fa{ + font-size: $btn-icon-font-size-lg; + } + } + + &:not(.btn-footer) i.now-ui-icons, + &:not(.btn-footer) i.fa{ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-12px, -12px); + line-height: 1.5626rem; + width: 25px; + } + + } + + &:not(.btn-icon) .now-ui-icons{ + position: relative; + top: 1px; + } +} + +// Apply the mixin to the buttons +// .btn-default { @include btn-styles($default-color, $default-states-color); } +.btn-primary { @include btn-styles($primary-color, $primary-states-color); } +.btn-success { @include btn-styles($success-color, $success-states-color); } +.btn-info { @include btn-styles($info-color, $info-states-color); } +.btn-warning { @include btn-styles($warning-color, $warning-states-color); } +.btn-danger { @include btn-styles($danger-color, $danger-states-color); } +.btn-neutral { @include btn-styles($white-color, $white-color); } + +.btn{ + &:disabled, + &[disabled], + &.disabled{ + @include opacity(.5); + } +} +.btn-round{ + border-width: $border-thin; + border-radius: $btn-round-radius !important; + padding: $padding-btn-vertical $padding-round-horizontal; + + &.btn-simple{ + padding: $padding-btn-vertical - 1 $padding-round-horizontal - 1; + } +} +.btn-simple{ + border: $border; + border-color: $default-color; + padding: $padding-btn-vertical - 1 $padding-round-horizontal - 1; + background-color: $transparent-bg; +} + +.btn-simple, +.btn-link{ + &.disabled, + &:disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &.focus, + &:active, + &.active { + background-color: $transparent-bg; + } + } +} + +.btn-lg{ + @include btn-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large); +} +.btn-sm{ + @include btn-size($padding-small-vertical, $padding-small-horizontal, $font-size-base, $border-radius-small); +} + +.btn-link{ + border: $none; + padding: $padding-base-vertical $padding-base-horizontal; + background-color: $transparent-bg; +} + +.btn-wd { + min-width: 140px; +} +.btn-group.select{ + width: 100%; +} +.btn-group.select .btn{ + text-align: left; +} +.btn-group.select .caret{ + position: absolute; + top: 50%; + margin-top: -1px; + right: 8px; +} diff --git a/web/libs/sass/now-ui-kit/_cards.scss b/web/libs/sass/now-ui-kit/_cards.scss new file mode 100644 index 00000000..41023108 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_cards.scss @@ -0,0 +1,98 @@ +.card{ + border: 0; + border-radius: $border-radius-small; + display: inline-block; + position: relative; + overflow: hidden; + width: 100%; + margin-bottom: 20px; + box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2); + + .card-body{ + min-height: 190px; + } + + &[data-background-color="orange"]{ + background-color: $primary-color; + } + + &[data-background-color="red"]{ + background-color: $danger-color; + } + + &[data-background-color="yellow"]{ + background-color: $warning-color; + } + + &[data-background-color="blue"]{ + background-color: $info-color; + } + + &[data-background-color="green"]{ + background-color: $success-color; + } +} + +.card-signup{ + max-width: 350px; + margin: 0 auto; + + .header{ + margin-left: 20px; + margin-right: 20px; + padding: 30px 0; + } + .text-divider{ + margin-top: 30px; + margin-bottom: 0px; + text-align: center; + } + .card-body{ + padding-top: 0px; + padding-bottom: 0px; + min-height: auto; + } + + .checkbox{ + margin-top: 20px; + + label{ + margin-left: 17px; + } + .checkbox-material{ + padding-right: 12px; + } + } + + .social-line{ + margin-top: 20px; + text-align: center; + + .btn.btn-icon , + .btn.btn-icon .btn-icon -mini{ + margin-left: 5px; + margin-right: 5px; + box-shadow: 0px 5px 50px 0px rgba(0, 0, 0, 0.2); + } + } + + .footer{ + margin-bottom: 10px; + margin-top: 24px; + } +} + +.card-plain{ + background: transparent; + box-shadow: none; + + .header{ + margin-left: 0; + margin-right: 0; + } + + .content{ + padding-left: 0; + padding-right: 0; + } +} diff --git a/web/libs/sass/now-ui-kit/_carousel.scss b/web/libs/sass/now-ui-kit/_carousel.scss new file mode 100644 index 00000000..155d0ec6 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_carousel.scss @@ -0,0 +1,15 @@ +// display flex was causing errors +.carousel-item-next, +.carousel-item-prev, +.carousel-item.active{ + display: block; +} + +.carousel{ + .carousel-inner{ + box-shadow: $box-shadow-raised; + } + .now-ui-icons{ + font-size: 2em; + } +} diff --git a/web/libs/sass/now-ui-kit/_checkboxes-radio.scss b/web/libs/sass/now-ui-kit/_checkboxes-radio.scss new file mode 100644 index 00000000..9576ce06 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_checkboxes-radio.scss @@ -0,0 +1,178 @@ +.checkbox, +.radio { + margin-bottom: 12px; +} + +.checkbox label, +.radio label { + display: inline-block; + position: relative; + cursor: pointer; + padding-left: 35px; + line-height: 26px; + margin-bottom: 0; +} +.radio label{ + padding-left: 28px; +} + +.checkbox label::before, +.checkbox label::after{ + content: " "; + display: inline-block; + position: absolute; + width: 26px; + height: 26px; + left: 0; + cursor: pointer; + border-radius: 3px; + top: 0; + background-color: transparent; + border: 1px solid $light-gray; + -webkit-transition: opacity 0.3s linear; + -moz-transition: opacity 0.3s linear; + -o-transition: opacity 0.3s linear; + -ms-transition: opacity 0.3s linear; + transition: opacity 0.3s linear; +} + + .checkbox label::after{ + font-family: 'Nucleo Outline'; + content: "\ea22"; + top: 0px; + text-align: center; + font-size: 14px; + opacity: 0; + color: $dark-background; + border: 0; + background-color: inherit; +} + +.checkbox input[type="checkbox"], +.radio input[type="radio"]{ + opacity: 0; + position: absolute; + visibility: hidden; +} +.checkbox input[type="checkbox"]:checked + label::after{ + opacity: 1; +} + +.checkbox input[type="checkbox"]:disabled + label, +.radio input[type="radio"]:disabled + label { + color: $dark-gray; + opacity: .5; +} + +.checkbox input[type="checkbox"]:disabled + label::before, +.checkbox input[type="checkbox"]:disabled + label::after{ + cursor: not-allowed; +} + +.checkbox input[type="checkbox"]:disabled + label, +.radio input[type="radio"]:disabled + label{ + cursor: not-allowed; +} + +.checkbox.checkbox-circle label::before { + border-radius: 50%; +} + +.checkbox.checkbox-inline { + margin-top: 0; +} + +.checkbox-primary input[type="checkbox"]:checked + label::before { + background-color: #428bca; + border-color: #428bca; +} + +.checkbox-primary input[type="checkbox"]:checked + label::after { + color: #fff; +} + +.checkbox-danger input[type="checkbox"]:checked + label::before { + background-color: #d9534f; + border-color: #d9534f; +} + +.checkbox-danger input[type="checkbox"]:checked + label::after { + color: #fff; +} + +.checkbox-info input[type="checkbox"]:checked + label::before { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.checkbox-info input[type="checkbox"]:checked + label::after { + color: #fff; +} + +.checkbox-warning input[type="checkbox"]:checked + label::before { + background-color: #f0ad4e; + border-color: #f0ad4e; +} + +.checkbox-warning input[type="checkbox"]:checked + label::after { + color: #fff; +} + +.checkbox-success input[type="checkbox"]:checked + label::before { + background-color: #5cb85c; + border-color: #5cb85c; +} + +.checkbox-success input[type="checkbox"]:checked + label::after { + color: #fff; +} + +.radio label::before, +.radio label::after{ + content: " "; + width: 20px; + height: 20px; + border-radius: 50%; + border: 1px solid $light-gray; + display: inline-block; + position: absolute; + left: 3px; + top: 3px; + padding: 1px; + -webkit-transition: opacity 0.3s linear; + -moz-transition: opacity 0.3s linear; + -o-transition: opacity 0.3s linear; + -ms-transition: opacity 0.3s linear; + transition: opacity 0.3s linear; +} + +.radio input[type="radio"] + label:after, +.radio input[type="radio"] { + opacity: 0; +} +.radio input[type="radio"]:checked + label::after { + width: 4px; + height: 4px; + background-color: $dark-background; + border-color: $dark-background; + top: 11px; + left: 11px; + opacity: 1; +} + +.radio input[type="radio"]:checked + label::after{ + opacity: 1; +} + +.radio input[type="radio"]:disabled + label { + color: $dark-gray; +} + +.radio input[type="radio"]:disabled + label::before, +.radio input[type="radio"]:disabled + label::after { + color: $dark-gray; +} + +.radio.radio-inline { + margin-top: 0; +} diff --git a/web/libs/sass/now-ui-kit/_dropdown.scss b/web/libs/sass/now-ui-kit/_dropdown.scss new file mode 100644 index 00000000..01d9d80a --- /dev/null +++ b/web/libs/sass/now-ui-kit/_dropdown.scss @@ -0,0 +1,106 @@ +.dropdown-menu{ + border: 0; + box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.2); + border-radius: $border-radius-extra-small; + @include transition($fast-transition-time, $transition-linear); + font-size: $font-size-base; + + &.dropdown-menu-right{ + &:before{ + left:auto; + right: 10px; + } + } + + &:before{ + display: inline-block; + position: absolute; + width: 0; + height: 0; + vertical-align: middle; + content: ""; + top: -5px; + left: 10px; + right: auto; + color: $white-color; + border-bottom: .4em solid; + border-right: .4em solid transparent; + border-left: .4em solid transparent; + } + + .dropdown-item{ + font-size: $font-size-small; + padding-top: $padding-base-vertical; + padding-bottom: $padding-base-vertical; + @include transition($fast-transition-time, $transition-linear); + + &:hover, + &:focus{ + background-color: $opacity-gray-3; + } + } + + .dropdown-divider{ + background-color: $opacity-gray-5; + } + + .dropdown-header:not([href]):not([tabindex]){ + color: $default-color-opacity; + font-size: $font-size-mini; + text-transform: uppercase; + font-weight: $font-weight-bold; + } + + &.dropdown-primary{ + @include dropdown-colors(darken($primary-color, 3%),$opacity-8,$white-color, $opacity-2); + } + + &.dropdown-info{ + @include dropdown-colors(darken($info-color, 3%),$opacity-8,$white-color, $opacity-2); + } + + &.dropdown-danger{ + @include dropdown-colors(darken($danger-color, 3%),$opacity-8,$white-color, $opacity-2); + } + + &.dropdown-success{ + @include dropdown-colors(darken($success-color, 3%),$opacity-8,$white-color, $opacity-2); + } + + &.dropdown-warning{ + @include dropdown-colors(darken($warning-color, 3%),$opacity-8,$white-color, $opacity-2); + } + + .dropdown &{ + @include transform-translate-y(-25px); + visibility: hidden; + display: block; + @include opacity(0); + } + + .dropdown.show &, + &.open{ + @include opacity(1); + visibility: visible; + @include transform-translate-y(0px); + } + + .navbar .dropdown.show &{ + @include transform-translate-y(7px); + } +} + +.button-dropdown{ + padding-right: $padding-base-horizontal; + cursor: pointer; + + & .dropdown-toggle{ + padding-top: $padding-base-vertical; + padding-bottom: $padding-base-vertical; + display: block; + + &:after{ + display: none; + } + } +} diff --git a/web/libs/sass/now-ui-kit/_example-pages.scss b/web/libs/sass/now-ui-kit/_example-pages.scss new file mode 100644 index 00000000..274fb93c --- /dev/null +++ b/web/libs/sass/now-ui-kit/_example-pages.scss @@ -0,0 +1,256 @@ +// style for the landing page +.index-page{ + .page-header{ + height: 125vh; + + .container{ + > .content-center{ + top: 37%; + } + } + + .category-absolute{ + position: absolute; + top: 100vh; + margin-top: -60px; + padding: 0 15px; + width: 100%; + color: rgba(255,255,255,.5); + } + } +} +.landing-page{ + + .header{ + height: 100vh; + position: relative; + + .container{ + padding-top: 26vh; + color: #FFFFFF; + z-index: 2; + position: relative; + } + + .share{ + margin-top: 150px; + } + h1{ + font-weight: 600; + } + .title{ + color: $white-color; + } + } + + .section-team{ + .team .team-player img{ + max-width: 100px; + } + + .team-player{ + margin-bottom: 15px; + } + } + + .section-contact-us{ + .title{ + margin-bottom: 15px; + } + + .description{ + margin-bottom: 30px; + } + + .input-group, + .send-button, + .textarea-container{ + padding: 0 40px; + } + + .textarea-container{ + margin: 40px 0; + } + + a.btn{ + margin-top: 35px; + } + } +} + +// style for the profile page +.profile-page{ + + .page-header{ + min-height: 550px; + } + + .profile-container{ + color: #FFFFFF; + } + .photo-container{ + width: 123px; + height: 123px; + border-radius: 50%; + overflow: hidden; + margin: 0 auto; + box-shadow: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); + } + + .title{ + text-align: center; + margin-top: 30px; + } + + .description, + .category{ + text-align: center; + } + + h5.description{ + max-width: 700px; + margin: 20px auto 75px; + } + + .nav-align-center{ + margin-top: 30px; + } + + .content{ + max-width: 450px; + margin: 0 auto; + + .social-description{ + display: inline-block; + max-width: 150px; + width: 145px; + text-align: center; + margin: 15px 0 0px; + + h2{ + margin-bottom: 15px; + } + } + } + + .button-container{ + text-align: center; + margin-top: -106px; + } + + .collections{ + img{ + margin-bottom: 30px; + } + } + + .gallery{ + margin-top: 45px; + padding-bottom: 50px; + } +} + +.section-full-page{ + + &:after, + &:before{ + display: block; + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 2; + } + + &:before{ + background-color: rgba(0,0,0,.5); + } + + &[filter-color="purple"], + &[filter-color="primary"]{ + &:after{ + @include linear-gradient(rgba($light-gray,.26), rgba($primary-color,.95)); + + } + + } + + &[data-image]:after{ + opacity: .5; + } + + > .content, + > .footer{ + position: relative; + z-index: 4; + } + + > .content{ + min-height: calc(100vh - 80px); + } + + .full-page-background{ + position: absolute; + z-index: 1; + height: 100%; + width: 100%; + display: block; + top: 0; + left: 0; + background-size: cover; + background-position: center center; + + } + + .footer nav > ul a:not(.btn), + .footer, + .footer .copyright a{ + color: $white-color; + } + +} + +.login-page{ + + .card-login{ + border-radius: $border-radius-large; + padding-bottom: $padding-base-horizontal; + max-width: 320px; + + .btn-wd{ + min-width: 180px; + } + + .logo-container{ + width: 65px; + margin: 0 auto; + margin-bottom: 55px; + + img{ + width: 100%; + } + } + + .input-group:last-child{ + margin-bottom: 40px; + } + + &.card-plain{ + @include input-coloured-bg($opacity-5, $white-color, $white-color, $transparent-bg, $opacity-1, $opacity-2); + + .input-group-addon, + .form-group.form-group-no-border .input-group-addon, + .input-group.form-group-no-border .input-group-addon{ + color: $opacity-8; + } + } + } + + .link{ + font-size: 10px; + color: $white-color; + text-decoration: none; + } +} diff --git a/web/libs/sass/now-ui-kit/_footers.scss b/web/libs/sass/now-ui-kit/_footers.scss new file mode 100644 index 00000000..a87d8aeb --- /dev/null +++ b/web/libs/sass/now-ui-kit/_footers.scss @@ -0,0 +1,44 @@ +.footer{ + padding: 24px 0; + + &.footer-default{ + background-color: #f2f2f2; + } + + nav{ + display: inline-block; + float: left; + } + + ul{ + margin-bottom: 0; + padding: 0; + list-style: none; + + li{ + display: inline-block; + + a{ + color: inherit; + padding: $padding-base-vertical; + font-size: $font-size-small; + text-transform: uppercase; + text-decoration: none; + + &:hover{ + text-decoration: none; + } + } + } + } + + .copyright{ + font-size: $font-size-small; + } + + &:after{ + display: table; + clear: both; + content: " "; + } +} diff --git a/web/libs/sass/now-ui-kit/_images.scss b/web/libs/sass/now-ui-kit/_images.scss new file mode 100644 index 00000000..d1bb4aaf --- /dev/null +++ b/web/libs/sass/now-ui-kit/_images.scss @@ -0,0 +1,7 @@ +img{ + max-width: 100%; + border-radius: 1px; +} +.img-raised{ + box-shadow: $box-shadow-raised; +} diff --git a/web/libs/sass/now-ui-kit/_inputs.scss b/web/libs/sass/now-ui-kit/_inputs.scss new file mode 100644 index 00000000..ae7c6c5a --- /dev/null +++ b/web/libs/sass/now-ui-kit/_inputs.scss @@ -0,0 +1,264 @@ +@include form-control-placeholder($medium-gray, 1); + +.form-control { + background-color: $transparent-bg; + border: 1px solid $light-gray; + border-radius: $btn-round-radius; + color: $black-color; + line-height: normal; + font-size: $font-size-small; + @include transition-input-focus-color(); + @include box-shadow(none); + + .has-success &{ + border-color: $light-gray; + } + + &:focus{ + border: 1px solid $primary-color; + @include box-shadow(none); + outline: 0 !important; + color: $black-color; + + & + .input-group-addon, + & ~ .input-group-addon{ + border: 1px solid $primary-color; + border-left: none; + background-color: $transparent-bg; + } + } + + .has-success &, + .has-error &, + .has-success &:focus, + .has-error &:focus{ + @include box-shadow(none); + } + + .has-success &:focus{ + border-color: lighten($success-color, 5%); + } + + + .has-danger &, + .has-success &{ + &.form-control-success, + &.form-control-danger{ + background-image: none; + } + } + + .has-danger &{ + border-color: lighten($danger-color, 30%); + color: $danger-color; + background-color: rgba(222,222,222, .1); + + &:focus{ + background-color: $white-color; + } + } + + & + .form-control-feedback{ + border-radius: $border-radius-large; + font-size: $font-size-base; + margin-top: 0; + position: absolute; + left: 18px; + bottom: -20px; + vertical-align: middle; + } + + .open &{ + border-radius: $border-radius-large $border-radius-large 0 0; + border-bottom-color: transparent; + } + + & + .input-group-addon{ + background-color: $white-bg; + } +} + +.has-success, +.has-danger{ + &:after{ + font-family: 'Nucleo Outline'; + content: "\ea22"; + display: inline-block; + position: absolute; + right: 15px; + bottom: 10px; + color: $success-color; + font-size: 11px; + } + + &.input-lg{ + &:after{ + font-size: 13px; + top: 13px; + } + } +} + +.has-danger{ + &:after{ + content: "\ea53"; + color: $danger-color; + } +} + +@include input-lg-padding($padding-large-vertical, $padding-input-horizontal); +@include input-base-padding($padding-input-vertical, $padding-input-horizontal); + +.form-group.form-group-no-border, +.input-group.form-group-no-border{ + .form-control, + .form-control + .input-group-addon{ + background-color: $opacity-gray-3; + border: medium none; + &:focus, + &:active, + &:active{ + border: medium none; + background-color: $opacity-gray-5; + } + } + + .form-control{ + &:focus{ + & + .input-group-addon{ + background-color: $opacity-gray-5; + } + } + } + + .input-group-addon{ + background-color: $opacity-gray-3; + border: none; + } +} + +.has-error{ + .form-control-feedback, .control-label{ + color: $danger-color; + } +} +.has-success{ + .form-control-feedback, .control-label{ + color: $success-color; + } +} + +.input-group-addon { + background-color: $white-bg; + border: 1px solid $light-gray; + border-radius: $btn-round-radius; + color: $dark-background; + padding: $padding-base-vertical - 1 0 $padding-base-vertical - 1 $padding-base-horizontal - 1; + + @include transition-input-focus-color(); + + .has-success &, + .has-danger &{ + background-color: $white-color; + } + .has-danger .form-control:focus + &{ + color: $danger-color; + } + .has-success .form-control:focus + &{ + color: $success-color; + } + + & + .form-control, + & ~ .form-control{ + @include input-size($padding-base-vertical - 1, $padding-base-horizontal); + padding-left: 18px; + } + + i{ + width: 17px; + } +} + +.input-group-focus{ + .input-group-addon{ + background-color: $white-bg; + border-color: $primary-color; + } + + &.form-group-no-border{ + .input-group-addon{ + background-color: $opacity-gray-5; + } + } +} + +.input-group, +.form-group{ + margin-bottom: 10px; +} +.input-group[disabled]{ + .input-group-addon{ + background-color: $light-gray; + } +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-right: 0 none; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-left: 0 none; +} +.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { + background-color: $light-gray; + color: $default-color; + cursor: not-allowed; +} + +.input-group-btn .btn{ + border-width: $border-thin; + padding: $padding-btn-vertical $padding-base-horizontal; +} +.input-group-btn .btn-default:not(.btn-fill){ + border-color: $medium-gray; +} + +.input-group-btn:last-child > .btn{ + margin-left: 0; +} +textarea.form-control{ + max-width: 100%; + padding: 10px 10px 0 0; + resize: none; + border: none; + border-bottom: 1px solid $light-gray; + border-radius: 0; + line-height: 2; + + &:focus, + &:active{ + border-left: none; + border-top: none; + border-right: none; + } +} + +.has-success, +.has-danger{ + + &.form-group .form-control, + &.form-group.form-group-no-border .form-control{ + padding-right: $padding-input-horizontal + 21; + } +} + +.form-group{ + position:relative; +} +.form-group.has-error, .form-group.has-danger{ + margin-bottom: 20px; +} diff --git a/web/libs/sass/now-ui-kit/_misc.scss b/web/libs/sass/now-ui-kit/_misc.scss new file mode 100644 index 00000000..021f35a2 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_misc.scss @@ -0,0 +1,63 @@ +body{ + color: $black-color; + font-size: $font-size-base; + font-family: $sans-serif-family; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} + +.main{ + position: relative; + background: $white-color; +} +/* Animations */ +.nav-pills .nav-link, +.nav-item .nav-link, +.navbar, +.nav-tabs .nav-link{ + @include transition($general-transition-time, $transition-ease); +} + +//transition for dropdown caret +.dropdown-toggle:after, +.bootstrap-switch-label:before{ + @include transition($fast-transition-time, $transition-ease); +} + +.dropdown-toggle[aria-expanded="true"]:after{ + @include rotate-180(); +} + +.button-bar{ + display: block; + position: relative; + width: 22px; + height: 1px; + border-radius: 1px; + background: $white-bg; + + & + .button-bar{ + margin-top: 7px; + } + + &:nth-child(2){ + width: 17px; + } +} + +.open{ + @include transform-translate-y(0); + @include opacity(1); + visibility: visible; +} + +.separator{ + height: 2px; + width: 44px; + background-color: $default-color; + margin: 20px auto; + + &.separator-primary{ + background-color: $primary-color; + } +} diff --git a/web/libs/sass/now-ui-kit/_mixins.scss b/web/libs/sass/now-ui-kit/_mixins.scss new file mode 100644 index 00000000..4da58ad9 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_mixins.scss @@ -0,0 +1,14 @@ +//Utilities +@import "mixins/transparency"; + +//Components +@import "mixins/buttons"; +@import "mixins/vendor-prefixes"; +@import "mixins/inputs"; +@import "mixins/dropdown"; +@import "mixins/badges"; +@import "mixins/navbar"; +@import "mixins/popovers"; +@import "mixins/modals"; +@import "mixins/pages"; +@import "mixins/datepicker"; diff --git a/web/libs/sass/now-ui-kit/_modals.scss b/web/libs/sass/now-ui-kit/_modals.scss new file mode 100644 index 00000000..0ccbce14 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_modals.scss @@ -0,0 +1,173 @@ +// +// Modals +// Now Ui Kit Design element Dialogs +// -------------------------------------------------- +.modal-content { + + border-radius: $border-radius-small; + border: none; + box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.5); + // Modal header + // Top section of the modal w/ title and dismiss + .modal-header { + border-bottom: none; + padding-top: 24px; + padding-right: 24px; + padding-bottom: 0; + padding-left: 24px; + + & button{ + position: absolute; + right: 27px; + top: 30px; + outline: 0; + } + .title{ + margin-top: 5px; + margin-bottom: 0; + } + } + // Modal body + // Where all modal content resides (sibling of .modal-header and .modal-footer) + .modal-body { + padding-top: 24px; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + line-height: 1.9; + } + // Footer (for actions) + .modal-footer { + border-top: none; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + -webkit-justify-content: space-between; /* Safari 6.1+ */ + justify-content: space-between; + + button { + margin: 0; + padding-left: 16px; + padding-right: 16px; + width: auto; + &.pull-left { + padding-left: 5px; + padding-right: 5px; + position: relative; + left: -5px; + } + } + + } + .modal-body + .modal-footer { + padding-top: 0; + } +} +.modal-backdrop { + background: rgba(0,0,0,0.3); +} + +.modal{ + + &.modal-mini{ + p{ + text-align: center; + } + + .modal-dialog{ + max-width: 255px; + margin: 0 auto; + } + + .modal-profile{ + width: 70px; + height: 70px; + background-color: $white-color; + border-radius: 50%; + text-align: center; + line-height: 5.9; + box-shadow: 0px 5px 50px 0px rgba(0, 0, 0, 0.3); + + i{ + color: $primary-color; + font-size: 21px; + } + + &[class*="modal-profile-"]{ + i{ + color: $white-color; + } + } + + &.modal-profile-primary{ + background-color: $primary-color; + } + + &.modal-profile-danger{ + background-color: $danger-color; + } + + &.modal-profile-warning{ + background-color: $warning-color; + } + + &.modal-profile-success{ + background-color: $success-color; + } + + &.modal-profile-info{ + background-color: $info-color; + } + } + + .modal-footer{ + button{ + text-transform: uppercase; + + &:first-child{ + opacity: .5; + } + } + } + } + + &.modal-default{ + @include modal-colors($white-color, $black-color); + } + + &.modal-primary{ + @include modal-colors($primary-color, $white-color); + } + + &.modal-danger{ + @include modal-colors($danger-color, $white-color); + } + + &.modal-warning{ + @include modal-colors($warning-color, $white-color); + } + + &.modal-success{ + @include modal-colors($success-color, $white-color); + } + + &.modal-info{ + @include modal-colors($info-color, $white-color); + } + + &.show.modal-mini .modal-dialog{ + -webkit-transform: translate(0,30%); + -o-transform: translate(0,30%); + transform: translate(0,30%); + } + + .modal-header .close{ + color: $danger-color; + text-shadow: none; + + &:hover, + &:focus{ + opacity: 1; + } + } +} diff --git a/web/libs/sass/now-ui-kit/_navbar.scss b/web/libs/sass/now-ui-kit/_navbar.scss new file mode 100644 index 00000000..427b1e34 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_navbar.scss @@ -0,0 +1,193 @@ +.navbar{ + padding-top: $navbar-padding-base; + padding-bottom: $navbar-padding-base; + min-height: 53px; + margin-bottom: 20px; + box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15); + + a{ + vertical-align: middle; + + &:not(.btn):not(.dropdown-item){ + color: $white-color; + } + } + + p{ + display: inline-block; + margin: 0; + line-height: 21px; + } + + .navbar-nav{ + &.navbar-logo{ + position: absolute; + left: 0; + right: 0; + margin: 0 auto; + width: 49px; + top: -4px; + } + + .nav-link.btn{ + padding: $padding-btn-vertical $padding-btn-horizontal; + + &.btn-lg{ + padding: $padding-large-vertical $padding-large-horizontal; + } + + &.btn-sm{ + padding: $padding-small-vertical $padding-small-horizontal; + } + } + + .nav-link:not(.btn){ + text-transform: uppercase; + font-size: $font-size-mini; + padding: $padding-base-vertical $padding-base-horizontal; + line-height: $line-height-nav-link; + + i.fa + p, + i.now-ui-icons + p{ + margin-left: 5px; + } + + i.fa, + i.now-ui-icons{ + font-size: 18px; + position: relative; + top: 2px; + text-align: center; + width: 21px; + } + + i.now-ui-icons{ + top: 4px; + font-size: 16px; + } + + &.profile-photo{ + .profile-photo-small{ + width: 27px; + height: 27px; + } + } + + &.disabled{ + opacity: .5; + color: $white-color; + } + } + + .nav-item.active .nav-link:not(.btn), + .nav-item .nav-link:not(.btn):focus, + .nav-item .nav-link:not(.btn):hover, + .nav-item .nav-link:not(.btn):active{ + background-color: $opacity-2; + border-radius: $border-radius-small; + } + } + + .logo-container{ + width: 27px; + height: 27px; + overflow: hidden; + margin: 0 auto; + border-radius: 50%; + border: 1px solid transparent; + } + + .navbar-brand{ + text-transform: uppercase; + font-size: $font-size-small; + padding-top: $padding-base-vertical; + padding-bottom: $padding-base-vertical; + line-height: $line-height-nav-link; + } + + .navbar-toggler{ + width: 37px; + height: 27px; + outline: 0; + cursor: pointer; + + &.navbar-toggler-left{ + position: relative; + left: 0; + padding-left: 0; + } + + &:hover{ + & .navbar-toggler-bar.bar2{ + width: 22px; + } + } + } + + .button-dropdown{ + .navbar-toggler-bar:nth-child(2){ + width: 17px; + } + } + + &.navbar-transparent{ + background-color: $transparent-bg !important; + box-shadow: none; + color: $white-color; + padding-top: 20px; + } + + &.bg-white:not(.navbar-transparent){ + a:not(.dropdown-item){ + color: $default-color; + + &.disabled{ + opacity: .5; + color: $default-color; + } + } + + .button-bar{ + background: $default-color; + } + + .nav-item.active .nav-link:not(.btn), + .nav-item .nav-link:not(.btn):focus, + .nav-item .nav-link:not(.btn):hover, + .nav-item .nav-link:not(.btn):active{ + background-color: $opacity-gray-3; + } + + .logo-container{ + border: 1px solid $default-color; + } + } +} + +.bg-default{ + background-color: $default-color !important; +} + +.bg-primary{ + background-color: $primary-color !important; +} + +.bg-info{ + background-color: $info-color !important; +} + +.bg-success{ + background-color: $success-color !important; +} + +.bg-danger{ + background-color: $danger-color !important; +} + +.bg-warning{ + background-color: $warning-color !important; +} + +.bg-white{ + background-color: $white-color !important; +} diff --git a/web/libs/sass/now-ui-kit/_nucleo-outline.scss b/web/libs/sass/now-ui-kit/_nucleo-outline.scss new file mode 100644 index 00000000..5d44c708 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_nucleo-outline.scss @@ -0,0 +1,533 @@ +/* -------------------------------- + +Nucleo Outline Web Font - nucleoapp.com/ +License - nucleoapp.com/license/ +Created using IcoMoon - icomoon.io + +-------------------------------- */ + +@font-face { + font-family: 'Nucleo Outline'; + src: url('../fonts/nucleo-outline.eot'); + src: url('../fonts/nucleo-outline.eot') format('embedded-opentype'), + url('../fonts/nucleo-outline.woff2') format('woff2'), + url('../fonts/nucleo-outline.woff') format('woff'), + url('../fonts/nucleo-outline.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +/*------------------------ + base class definition +-------------------------*/ + +.now-ui-icons { + display: inline-block; + font: normal normal normal 14px/1 'Nucleo Outline'; + font-size: inherit; + speak: none; + text-transform: none; + /* Better Font Rendering */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/*------------------------ + change icon size +-------------------------*/ + +/*---------------------------------- + add a square/circle background +-----------------------------------*/ + +.now-ui-icons.circle { + padding: 0.33333333em; + vertical-align: -16%; + background-color: #eee; +} + +.now-ui-icons.circle { + border-radius: 50%; +} + +/*------------------------ + list icons +-------------------------*/ + +.nc-icon-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} + +.nc-icon-ul > li { + position: relative; +} + +.nc-icon-ul > li > .now-ui-icons { + position: absolute; + left: -1.57142857em; + top: 0.14285714em; + text-align: center; +} + +.nc-icon-ul > li > .now-ui-icons.circle { + top: -0.19047619em; + left: -1.9047619em; +} + +/*------------------------ + spinning icons +-------------------------*/ + +.now-ui-icons.spin { + -webkit-animation: nc-icon-spin 2s infinite linear; + -moz-animation: nc-icon-spin 2s infinite linear; + animation: nc-icon-spin 2s infinite linear; +} + +@-webkit-keyframes nc-icon-spin { + 0% { + -webkit-transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + } +} + +@-moz-keyframes nc-icon-spin { + 0% { + -moz-transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(360deg); + } +} + +@keyframes nc-icon-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + -moz-transform: rotate(360deg); + -ms-transform: rotate(360deg); + -o-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/*------------------------ + rotated/flipped icons +-------------------------*/ + +/*------------------------ + font icons +-------------------------*/ + +.now-ui-icons.ui-1_check:before{ + content: "\ea22"; +} + +.now-ui-icons.ui-1_email-85:before { + content: "\ea2a"; +} + +.now-ui-icons.arrows-1_cloud-download-93:before { + content: "\ea21"; +} + +.now-ui-icons.arrows-1_cloud-upload-94:before { + content: "\ea24"; +} + +.now-ui-icons.arrows-1_minimal-down:before { + content: "\ea39"; +} + +.now-ui-icons.arrows-1_minimal-left:before { + content: "\ea3a"; +} + +.now-ui-icons.arrows-1_minimal-right:before { + content: "\ea3b"; +} + +.now-ui-icons.arrows-1_minimal-up:before { + content: "\ea3c"; +} + +.now-ui-icons.arrows-1_refresh-69:before { + content: "\ea44"; +} + +.now-ui-icons.arrows-1_share-66:before { + content: "\ea4c"; +} + +.now-ui-icons.business_badge:before { + content: "\ea09"; +} + +.now-ui-icons.business_bank:before { + content: "\ea0a"; +} + +.now-ui-icons.business_briefcase-24:before { + content: "\ea13"; +} + +.now-ui-icons.business_bulb-63:before { + content: "\ea15"; +} + +.now-ui-icons.business_chart-bar-32:before { + content: "\ea1e"; +} + +.now-ui-icons.business_chart-pie-36:before { + content: "\ea1f"; +} + +.now-ui-icons.business_globe:before { + content: "\ea2f"; +} + +.now-ui-icons.business_money-coins:before { + content: "\ea40"; +} + +.now-ui-icons.clothes_tie-bow:before { + content: "\ea5b"; +} + +.now-ui-icons.design_vector:before { + content: "\ea61"; +} + +.now-ui-icons.design_app:before { + content: "\ea08"; +} + +.now-ui-icons.design_bullet-list-67:before { + content: "\ea14"; +} + +.now-ui-icons.design_image:before { + content: "\ea33"; +} + +.now-ui-icons.design_palette:before { + content: "\ea41"; +} + +.now-ui-icons.design_scissors:before { + content: "\ea4a"; +} + +.now-ui-icons.design-2_html5:before { + content: "\ea32"; +} + +.now-ui-icons.design-2_ruler-pencil:before { + content: "\ea48"; +} + +.now-ui-icons.emoticons_satisfied:before { + content: "\ea49"; +} + +.now-ui-icons.files_box:before { + content: "\ea12"; +} + +.now-ui-icons.files_paper:before { + content: "\ea43"; +} + +.now-ui-icons.files_single-copy-04:before { + content: "\ea52"; +} + +.now-ui-icons.health_ambulance:before { + content: "\ea07"; +} + +.now-ui-icons.loader_gear:before { + content: "\ea4e"; +} + +.now-ui-icons.loader_refresh:before { + content: "\ea44"; +} + +.now-ui-icons.location_bookmark:before { + content: "\ea10"; +} + +.now-ui-icons.location_compass-05:before { + content: "\ea25"; +} + +.now-ui-icons.location_map-big:before { + content: "\ea3d"; +} + +.now-ui-icons.location_pin:before { + content: "\ea47"; +} + +.now-ui-icons.location_world:before { + content: "\ea63"; +} + +.now-ui-icons.media-1_album:before { + content: "\ea02"; +} + +.now-ui-icons.media-1_button-pause:before { + content: "\ea16"; +} + +.now-ui-icons.media-1_button-play:before { + content: "\ea18"; +} + +.now-ui-icons.media-1_button-power:before { + content: "\ea19"; +} + +.now-ui-icons.media-1_camera-compact:before { + content: "\ea1c"; +} + +.now-ui-icons.media-2_note-03:before { + content: "\ea3f"; +} + +.now-ui-icons.media-2_sound-wave:before { + content: "\ea57"; +} + +.now-ui-icons.objects_diamond:before { + content: "\ea29"; +} + +.now-ui-icons.objects_globe:before { + content: "\ea2f"; +} + +.now-ui-icons.objects_key-25:before { + content: "\ea38"; +} + +.now-ui-icons.objects_planet:before { + content: "\ea46"; +} + +.now-ui-icons.objects_spaceship:before { + content: "\ea55"; +} + +.now-ui-icons.objects_support-17:before { + content: "\ea56"; +} + +.now-ui-icons.objects_umbrella-13:before { + content: "\ea5f"; +} + +.now-ui-icons.education_agenda-bookmark:before { + content: "\ea01"; +} + +.now-ui-icons.education_atom:before { + content: "\ea0c"; +} + +.now-ui-icons.education_glasses:before { + content: "\ea2d"; +} + +.now-ui-icons.education_hat:before { + content: "\ea30"; +} + +.now-ui-icons.education_paper:before { + content: "\ea42"; +} + +.now-ui-icons.shopping_bag-16:before { + content: "\ea0d"; +} + +.now-ui-icons.shopping_basket:before { + content: "\ea0b"; +} + +.now-ui-icons.shopping_box:before { + content: "\ea11"; +} + +.now-ui-icons.shopping_cart-simple:before { + content: "\ea1d"; +} + +.now-ui-icons.shopping_credit-card:before { + content: "\ea28"; +} + +.now-ui-icons.shopping_delivery-fast:before { + content: "\ea27"; +} + +.now-ui-icons.shopping_shop:before { + content: "\ea50"; +} + +.now-ui-icons.shopping_tag-content:before { + content: "\ea59"; +} + +.now-ui-icons.sport_trophy:before { + content: "\ea5d"; +} + +.now-ui-icons.sport_user-run:before { + content: "\ea60"; +} + +.now-ui-icons.tech_controller-modern:before { + content: "\ea26"; +} + +.now-ui-icons.tech_headphones:before { + content: "\ea31"; +} + +.now-ui-icons.tech_laptop:before { + content: "\ea36"; +} + +.now-ui-icons.tech_mobile:before { + content: "\ea3e"; +} + +.now-ui-icons.tech_tablet:before { + content: "\ea58"; +} + +.now-ui-icons.tech_tv:before { + content: "\ea5e"; +} + +.now-ui-icons.tech_watch-time:before { + content: "\ea62"; +} + +.now-ui-icons.text_align-center:before { + content: "\ea05"; +} + +.now-ui-icons.text_align-left:before { + content: "\ea06"; +} + +.now-ui-icons.text_bold:before { + content: "\ea0e"; +} + +.now-ui-icons.text_caps-small:before { + content: "\ea1b"; +} + +.now-ui-icons.gestures_tap-01:before { + content: "\ea5a"; +} + +.now-ui-icons.transportation_air-baloon:before { + content: "\ea03"; +} + +.now-ui-icons.transportation_bus-front-12:before { + content: "\ea17"; +} + +.now-ui-icons.travel_info:before { + content: "\ea04"; +} + +.now-ui-icons.travel_istanbul:before { + content: "\ea34"; +} + +.now-ui-icons.ui-1_bell-53:before { + content: "\ea0f"; +} + +.now-ui-icons.ui-1_calendar-60:before { + content: "\ea1a"; +} + +.now-ui-icons.ui-1_lock-circle-open:before { + content: "\ea35"; +} + +.now-ui-icons.ui-1_send:before { + content: "\ea4d"; +} + +.now-ui-icons.ui-1_settings-gear-63:before { + content: "\ea4e"; +} + +.now-ui-icons.ui-1_simple-add:before { + content: "\ea4f"; +} + +.now-ui-icons.ui-1_simple-delete:before { + content: "\ea54"; +} + +.now-ui-icons.ui-1_simple-remove:before { + content: "\ea53"; +} + +.now-ui-icons.ui-1_zoom-bold:before { + content: "\ea64"; +} + +.now-ui-icons.ui-2_chat-round:before { + content: "\ea20"; +} + +.now-ui-icons.ui-2_favourite-28:before { + content: "\ea2b"; +} + +.now-ui-icons.ui-2_like:before { + content: "\ea37"; +} + +.now-ui-icons.ui-2_settings-90:before { + content: "\ea4b"; +} + +.now-ui-icons.ui-2_time-alarm:before { + content: "\ea5c"; +} + +.now-ui-icons.users_circle-08:before { + content: "\ea23"; +} + +.now-ui-icons.users_single-02:before { + content: "\ea51"; +} diff --git a/web/libs/sass/now-ui-kit/_pagination.scss b/web/libs/sass/now-ui-kit/_pagination.scss new file mode 100644 index 00000000..f076d9ca --- /dev/null +++ b/web/libs/sass/now-ui-kit/_pagination.scss @@ -0,0 +1,136 @@ +.pagination{ + .page-item .page-link{ + border: 0; + border-radius: 30px !important; + transition: all .3s; + padding: 0px 11px; + margin: 0 3px; + min-width: 30px; + text-align: center; + height: 30px; + line-height: 30px; + color: $black-color; + cursor: pointer; + font-size: $font-size-base; + text-transform: uppercase; + background: transparent; + + &:hover, + &:focus{ + color: $black-color; + background-color: $opacity-gray-3; + border: none; + } + } + + .arrow-margin-left, + .arrow-margin-right{ + position: absolute; + } + + .arrow-margin-right{ + right: 0; + } + + .arrow-margin-left{ + left: 0; + } + + .page-item.active > .page-link{ + color: $light-gray; + box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2); + + &, + &:focus, + &:hover{ + background-color: $default-color; + border-color: $default-color; + color: $white-color; + } + } + + .page-item.disabled > .page-link{ + opacity: .5; + background-color: rgba(255,255,255, .2); + color: $white-color; + } + + // Colors + &.pagination-info{ + .page-item.active > .page-link{ + &, + &:focus, + &:hover{ + background-color: $brand-info; + border-color: $brand-info; + } + } + } + + &.pagination-success{ + .page-item.active > .page-link{ + &, + &:focus, + &:hover{ + background-color: $brand-success; + border-color: $brand-success; + } + } + } + + &.pagination-primary{ + .page-item.active > .page-link{ + &, + &:focus, + &:hover{ + background-color: $brand-primary; + border-color: $brand-primary; + } + } + } + + &.pagination-warning{ + .page-item.active > .page-link{ + &, + &:focus, + &:hover{ + background-color: $brand-warning; + border-color: $brand-warning; + } + } + } + + &.pagination-danger{ + .page-item.active > .page-link{ + &, + &:focus, + &:hover{ + background-color: $brand-danger; + border-color: $brand-danger; + } + } + } + + &.pagination-neutral{ + .page-item > .page-link{ + color: $white-color; + + &:focus, + &:hover{ + background-color: $opacity-2; + color: $white-color; + } + } + + .page-item.active > .page-link{ + &, + &:focus, + &:hover{ + background-color: $white-bg; + border-color: $white-bg; + color: $brand-primary; + } + } + } + +} diff --git a/web/libs/sass/now-ui-kit/_pills.scss b/web/libs/sass/now-ui-kit/_pills.scss new file mode 100644 index 00000000..c7637bef --- /dev/null +++ b/web/libs/sass/now-ui-kit/_pills.scss @@ -0,0 +1,131 @@ +.nav-pills{ + + .nav-item { + .nav-link{ + padding: 0 15.5px; + text-align: center; + height: 60px; + width: 60px; + font-weight: $font-weight-normal; + color: $dark-gray; + margin-right: 19px; + background-color: $opacity-gray-3; + border-radius: $btn-round-radius; + + &:hover{ + background-color: $opacity-gray-3; + } + + &.active{ + &, + &:focus, + &:hover{ + background-color: $dark-gray; + color: $white-color; + box-shadow: 0px 5px 35px 0px rgba(0, 0, 0, 0.3); + } + } + + &.disabled, + &:disabled, + &[disabled]{ + opacity: .5; + } + } + + i{ + display: block; + font-size: 20px; + line-height: 60px; + } + } + + &.nav-pills-neutral{ + .nav-item { + .nav-link{ + background-color: $opacity-2; + color: $white-color; + + &.active{ + &, + &:focus, + &:hover{ + background-color: $white-color; + color: $primary-color; + } + } + } + } + } + + &.nav-pills-primary{ + .nav-item { + .nav-link.active{ + &, + &:focus, + &:hover{ + background-color: $brand-primary; + } + } + } + } + + &.nav-pills-info{ + .nav-item { + .nav-link.active{ + &, + &:focus, + &:hover{ + background-color: $brand-info; + } + } + } + } + + &.nav-pills-success{ + .nav-item { + .nav-link.active{ + &, + &:focus, + &:hover{ + background-color: $brand-success; + } + } + } + } + + &.nav-pills-warning{ + .nav-item { + .nav-link.active{ + &, + &:focus, + &:hover{ + background-color: $brand-warning; + } + } + } + } + + &.nav-pills-danger{ + .nav-item { + .nav-link.active{ + &, + &:focus, + &:hover{ + background-color: $brand-danger; + } + } + } + } +} +.tab-space{ + padding: 20px 0 50px 0px; +} + +.nav-align-center{ + text-align: center; + + .nav-pills{ + display: inline-flex; + } +} diff --git a/web/libs/sass/now-ui-kit/_popups.scss b/web/libs/sass/now-ui-kit/_popups.scss new file mode 100644 index 00000000..4b41450a --- /dev/null +++ b/web/libs/sass/now-ui-kit/_popups.scss @@ -0,0 +1,85 @@ +.popover{ + font-size: $font-size-base; + box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.2); + border: none; + line-height: 1.7; + max-width: 240px; + + &.bs-popover-top .arrow:before, + &.bs-popover-left .arrow:before, + &.bs-popover-right .arrow:before, + &.bs-popover-bottom .arrow:before,{ + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-color: transparent; + } + + .popover-header{ + color: $default-color-opacity; + font-size: $font-size-base; + text-transform: capitalize; + font-weight: $font-weight-semi; + margin: 0; + margin-top: 5px; + border: none; + background-color: transparent; + } + + &:before{ + display: none; + } + + &.bs-tether-element-attached-top:after{ + border-bottom-color:$white-color; + top: -9px; + } + + &.popover-primary{ + @include popover-color($primary-color, $white-color); + } + + &.popover-info{ + @include popover-color($info-color, $white-color); + } + + &.popover-warning{ + @include popover-color($warning-color, $white-color); + } + + &.popover-danger{ + @include popover-color($danger-color, $white-color); + } + + &.popover-success{ + @include popover-color($success-color, $white-color); + } +} + + +.tooltip{ + &.bs-tooltip-right .arrow:before{ + border-right-color:$white-color; + } + + &.bs-tooltip-top .arrow:before{ + border-top-color:$white-color; + } + + &.bs-tooltip-bottom .arrow:before{ + border-bottom-color:$white-color; + } + + &.bs-tooltip-left .arrow:before{ + border-left-color:$white-color; + } +} + +.tooltip-inner{ + padding: $padding-base-vertical $padding-base-horizontal; + min-width: 130px; + background-color: $white-color; + font-size: $font-size-base; + color: inherit; + box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2); +} diff --git a/web/libs/sass/now-ui-kit/_progress.scss b/web/libs/sass/now-ui-kit/_progress.scss new file mode 100644 index 00000000..1288fc09 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_progress.scss @@ -0,0 +1,126 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. +.progress-container{ + position: relative; + + & + .progress-container, + & ~ .progress-container{ + margin-top: $margin-base-vertical; + } + .progress-badge{ + color: $default-color; + font-size: $font-size-small; + text-transform: uppercase; + + } + + .progress { + height: 1px; + border-radius: 0; + box-shadow: none; + background: $opacity-gray-8; + margin-top: 14px; + + .progress-bar { + box-shadow: none; + background-color: $default-color; + } + + .progress-value{ + position: absolute; + top: 2px; + right: 0; + color: $default-color; + font-size: $font-size-small; + } + } + + &.progress-neutral{ + .progress{ + background: rgba(255, 255, 255, .3); + } + + .progress-bar{ + background: $white-bg; + } + + .progress-value, + .progress-badge{ + color: $white-color; + } + } + + &.progress-primary{ + .progress{ + background: $primary-color-opacity; + } + + .progress-bar{ + background: $brand-primary; + } + + .progress-value, + .progress-badge{ + color: $brand-primary; + } + } + + &.progress-info{ + .progress{ + background: $info-color-opacity; + } + + .progress-bar{ + background: $brand-info; + } + + .progress-value, + .progress-badge{ + color: $brand-info; + } + } + + &.progress-success{ + .progress{ + background: $success-color-opacity; + } + + .progress-bar{ + background: $brand-success; + } + + .progress-value, + .progress-badge{ + color: $brand-success; + } + } + + &.progress-warning{ + .progress{ + background: $warning-color-opacity; + } + + .progress-bar{ + background: $brand-warning; + } + + .progress-value, + .progress-badge{ + color: $brand-warning; + } + } + + &.progress-danger{ + .progress{ + background: $danger-color-opacity; + } + + .progress-bar{ + background: $brand-danger; + } + + .progress-value, + .progress-badge{ + color: $brand-danger; + } + } +} diff --git a/web/libs/sass/now-ui-kit/_responsive.scss b/web/libs/sass/now-ui-kit/_responsive.scss new file mode 100644 index 00000000..5b8f282e --- /dev/null +++ b/web/libs/sass/now-ui-kit/_responsive.scss @@ -0,0 +1,392 @@ +@media screen and (max-width: 991px){ + .sidebar-collapse{ + @include navbar-collapse(); + + &.menu-on-left{ + .navbar-collapse{ + right: auto; + left: 0; + @include transform-translate-x(-300px); + } + } + + .nav-open &{ + .navbar-collapse{ + @include transform-translate-x(0px); + } + + .wrapper{ + @include transform-translate-x(-150px); + } + + .navbar-translate{ + @include transform-translate-x(-300px); + } + + &.menu-on-left{ + .navbar-collapse{ + @include transform-translate-x(0px); + } + + .navbar-translate{ + @include transform-translate-x(300px); + } + + .wrapper{ + @include transform-translate-x(150px); + } + + #bodyClick{ + right: auto; + left: 300px; + } + } + } + } + + .bootstrap-collapse{ + .navbar .navbar-collapse{ + background: none !important; + } + @include navbar-responsive(); + } + + .profile-photo .profile-photo-small{ + margin-left: -2px; + } + + .button-dropdown{ + display: none; + } + + .section-nucleo-icons .container .row > [class*="col-"]:first-child{ + text-align: center; + } + + .footer{ + .copyright{ + text-align: right; + } + } + + .section-nucleo-icons .icons-container{ + margin-top: 65px; + } + + .navbar-nav{ + .nav-link{ + i.fa, + i.now-ui-icons{ + opacity: .5; + } + } + } + + .section-images{ + height: 500px; + max-height: 500px; + + .hero-images-container{ + max-width: 500px; + } + + .hero-images-container-1{ + right: 10%; + top: 68%; + max-width: 269px; + } + + .hero-images-container-2{ + right: 5%; + max-width: 135px; + top: 93%; + } + } +} + +@media screen and (min-width: 992px){ + .burger-menu{ + @include navbar-collapse(); + + .nav-open & .navbar-collapse{ + @include transform-translate-x(0px); + } + + .navbar-collapse { + display: block !important; + + .navbar-nav { + margin-top: 53px; + height: 100%; + z-index: 2; + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + + .nav-item{ + margin: 0; + } + } + } + + &.menu-on-left .navbar-collapse{ + right: auto; + left: 0; + @include transform-translate-x(-300px); + } + + [class*="navbar-expand-"]{ + .navbar-nav .dropdown-menu{ + position: static; + float: none; + } + + .navbar-toggler{ + display: inline-block; + } + } + + .section-navbars .navbar-collapse{ + display: none !important; + } + + .nav-open &{ + &.menu-on-left .navbar .navbar-translate{ + @include transform-translate-x(300px); + } + + .navbar .navbar-translate{ + @include transform-translate-x(-300px); + } + + &.menu-on-left .navbar-collapse{ + @include transform-translate-x(0px); + } + + &.menu-on-left #bodyClick{ + right: auto; + left: 300px; + } + } + + &.menu-on-left .navbar-brand{ + float: right; + margin-right: 0; + margin-left: 1rem; + } + } + + .navbar-nav{ + .nav-link{ + &.profile-photo{ + padding: 0; + margin: 7px $padding-base-horizontal; + } + + &.btn:not(.btn-sm){ + margin: 0; + } + } + + .nav-item:not(:last-child){ + margin-right: 5px; + } + + } + + .section-nucleo-icons .icons-container{ + margin: 0 0 0 auto; + } + + .dropdown-menu .dropdown-item{ + color: inherit; + } + + .footer{ + .copyright{ + float: right; + } + } +} + +@media screen and (min-width: 768px){ + .image-container{ + &.image-right{ + top: 80px; + margin-left: - 100px; + margin-bottom: 130px; + } + + &.image-left{ + margin-right: -100px; + } + } +} + +@media screen and (max-width: 768px){ + .image-container{ + &.image-left{ + margin-bottom: 220px; + + p.blockquote{ + margin: 0 auto; + position: relative; + right: 0; + } + } + } + + .nav-tabs{ + display: inline-block; + width: 100%; + padding-left: 100px; + padding-right: 100px; + text-align: center; + + .nav-item > .nav-link{ + margin-bottom: 5px; + } + } + + .landing-page .section-story-overview .image-container:nth-child(2){ + margin-left: 0; + margin-bottom: 30px; + } +} + +@media screen and (max-width: 576px){ + .navbar[class*='navbar-expand-'] .container{ + margin-left: 0; + margin-right: 0; + } + + .footer{ + .copyright{ + text-align: center; + } + } + + .section-nucleo-icons{ + .icons-container{ + i{ + font-size: 30px; + + &:nth-child(6){ + font-size: 48px; + } + } + } + } + + .page-header{ + .container h6.category-absolute{ + width: 90%; + } + } +} + +@media screen and (min-width: 991px) and (max-width: 1200px){ + .section-images{ + .hero-images-container-1{ + right: 9%; + max-width: 370px; + } + + .hero-images-container-2{ + right: 2%; + max-width: 216px; + } + } +} + +@media screen and (max-width: 768px){ + .section-images{ + height: 300px; + max-height: 300px; + + .hero-images-container{ + max-width: 380px; + } + + .hero-images-container-1{ + right: 7%; + top: 87%; + max-width: 210px; + } + + .hero-images-container-2{ + right: 1%; + max-width: 133px; + top: 99%; + } + } +} + +@media screen and (max-width: 517px) { + .alert .alert-icon{ + margin-top: 10px; + } +} + +@media screen and (min-width: 1200px) { + .section-images{ + .hero-images-container-1{ + top: 51%; + right: 21%; + } + + .hero-images-container-2{ + top: 66%; + right: 14%; + } + } +} + +// Ipad responsive portrait mode +@media only screen +and (min-device-width : 768px) +and (max-device-width : 1024px) +and ( orientation : portrait){ + .section-images .hero-images-container, + .section-images .hero-images-container-1, + .section-images .hero-images-container-2{ + margin-top: -15vh; + margin-left: 80px; + } + + .section-images .hero-images-container{ + max-width: 300px; + } + + .section-images .hero-images-container-1{ + right: 28%; + top: 40%; + } + + .section-images .hero-images-container-2{ + right: 21%; + top: 55%; + } + + .index-page .category-absolute{ + top: 90vh; + } +} + +@media screen and (max-width: 580px) { + .alert{ + button.close{ + position: absolute; + right: 11px; + top: 50%; + transform: translateY(-50%); + } + } +} diff --git a/web/libs/sass/now-ui-kit/_sections.scss b/web/libs/sass/now-ui-kit/_sections.scss new file mode 100644 index 00000000..e82c49e6 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_sections.scss @@ -0,0 +1,396 @@ +.section{ + padding: 70px 0; + position: relative; + background: $white-color; + + .row + .category{ + margin-top: $margin-base-vertical; + } +} +.section-navbars{ + padding-bottom: 0; +} + +.section-full-screen{ + height: 100vh; +} +.section-signup{ + padding-top: 20vh; +} + +.page-header{ + height: 100vh; + max-height: 1050px; + padding: 0; + color: $white-color; + position: relative; + + background-position: center center; + background-size: cover; + + .page-header-image{ + position: absolute; + background-size: cover; + background-position: center center; + width: 100%; + height: 100%; + z-index: -1; + } + + footer{ + position: absolute; + bottom: 0; + width: 100%; + } + .container{ + height: 100%; + z-index: 1; + text-align: center; + position: relative; + + > .content-center{ + position: absolute; + top: 50%; + left: 50%; + + -ms-transform: translate(-50%,-50%); + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + + text-align: center; + padding: 0 15px; + color: #FFFFFF; + width: 100%; + max-width: 880px; + } + } + .category, + .description{ + color: $opacity-5; + } + + &.page-header-small{ + height: 60vh; + max-height: 440px; + } + + &:after, + &:before{ + position: absolute; + z-index: 0; + width: 100%; + height: 100%; + display: block; + left: 0; + top: 0; + content: ""; + } + + &:before{ + background-color: rgba(0,0,0,.5); + } + + &[filter-color="orange"]{ + @include linear-gradient(rgba($black-color,.20), rgba(224, 23, 3, 0.6)); + } + + .container{ + z-index: 2; + } + +} + +.clear-filter{ + &:after, + &:before{ + display: none; + } +} + +.section-story-overview{ + padding: 50px 0; + + .image-container{ + height: 335px; + position: relative; + background-position: center center; + background-size: cover; + box-shadow: $box-shadow-raised; + border-radius: .25rem; + + & + .category{ + padding-top: 15px; + } + + &.image-right{ + z-index: 2; + + + h3.title{ + margin-top: 120px; + } + } + + &.image-left{ + z-index: 1; + } + + &:nth-child(2){ + margin-top: 420px; + margin-left: -105px; + } + } + + p.blockquote{ + width: 220px; + min-height: 180px; + text-align: left; + position: absolute; + top: 376px; + right: 155px; + z-index: 0; + } +} + +.section-nucleo-icons{ + .nucleo-container img{ + width: auto; + left: 0; + top: 0; + height: 100%; + position: absolute; + } + + .nucleo-container{ + height: 335px; + position: relative; + } + + h5{ + margin-bottom: 35px; + } + + .icons-container{ + position: relative; + max-width: 450px; + height: 300px; + max-height: 300px; + margin: 0 auto; + + } + .icons-container i{ + font-size: 34px; + position: absolute; + left: 0; + top: 0; + } + + .icons-container i:nth-child(1){ + top: 5%; + left: 7%; + } + + .icons-container i:nth-child(2){ + top: 28%; + left: 24%; + } + + .icons-container i:nth-child(3){ + top: 40%; + } + + .icons-container i:nth-child(4){ + top: 18%; + left: 62%; + } + + .icons-container i:nth-child(5){ + top: 74%; + left: 3%; + } + + .icons-container i:nth-child(6){ + top: 36%; + left: 44%; + font-size: 65px; + color: #f96332; + padding: 1px; + } + + .icons-container i:nth-child(7){ + top: 59%; + left: 26%; + } + + .icons-container i:nth-child(8){ + top: 60%; + left: 69%; + } + + .icons-container i:nth-child(9){ + top: 72%; + left: 47%; + } + + .icons-container i:nth-child(10){ + top: 88%; + left: 27%; + } + + .icons-container i:nth-child(11){ + top: 31%; + left: 80%; + } + + .icons-container i:nth-child(12){ + top: 88%; + left: 68%; + } + + .icons-container i:nth-child(13){ + top: 5%; + left: 81%; + } + + .icons-container i:nth-child(14){ + top: 58%; + left: 90%; + } + + .icons-container i:nth-child(15){ + top: 6%; + left: 40%; + } +} + +.section-images{ + max-height: 670px; + height: 670px; + + .hero-images-container, + .hero-images-container-1, + .hero-images-container-2{ + margin-top: -38vh; + } + + .hero-images-container{ + max-width: 670px; + } + + .hero-images-container-1{ + max-width: 390px; + position: absolute; + top: 55%; + right: 18%; + + } + + .hero-images-container-2{ + max-width: 225px; + position: absolute; + top: 68%; + right: 12%; + } +} + + +[data-background-color="orange"]{ + background-color: $orange-bg; +} +[data-background-color="black"]{ + background-color: $black-color; +} + +[data-background-color]{ + color: $white-color; + + .title, + .social-description h2, + p, + p.blockquote, + p.blockquote small, + h1,h2,h3,h4,h5,h6,a:not(.btn):not(.dropdown-item), + .icons-container i{ + color: $white-color; + } + + .separator{ + background-color: $white-color; + } + + .navbar.bg-white p{ + color: $default-color; + } + + .description, + .social-description p{ + color: $opacity-8; + } + + p.blockquote{ + border-color: $opacity-2; + } + + //radio and checkboxes + .checkbox label::before, + .checkbox label::after, + .radio label::before, + .radio label::after{ + border-color: $opacity-2; + } + + .checkbox label::after, + .checkbox label, + .radio label{ + color: $white-color; + } + + .checkbox input[type="checkbox"]:disabled + label, + .radio input[type="radio"]:disabled + label { + color: $white-color; + } + + .radio input[type="radio"]:not(:disabled):hover + label::after, + .radio input[type="radio"]:checked + label::after { + background-color: $white-color; + border-color: $white-color; + } + + //inputs + @include input-coloured-bg($opacity-5, $white-color, $white-color, $transparent-bg, $opacity-1, $opacity-2); + + .input-group-addon, + .form-group.form-group-no-border .input-group-addon, + .input-group.form-group-no-border .input-group-addon{ + color: $opacity-8; + } + + //buttons + .btn.btn-simple{ + background-color: $transparent-bg; + border-color: $opacity-5; + color: $white-color; + + &:hover, + &:hover, + &:focus, + &:active{ + background-color: $transparent-bg; + border-color: $white-color; + } + } + + //tabs + .nav-tabs{ + > .nav-item{ + >.nav-link{ + i.now-ui-icons{ + color: $white-color; + } + } + } + } + + &.section-nucleo-icons .icons-container i:nth-child(6){ + color: $white-color; + } +} diff --git a/web/libs/sass/now-ui-kit/_social-buttons.scss b/web/libs/sass/now-ui-kit/_social-buttons.scss new file mode 100644 index 00000000..9e6b2ba7 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_social-buttons.scss @@ -0,0 +1,39 @@ +.btn-twitter{ + color: $social-twitter; + + &:hover, + &:focus, + &:active{ + color: $social-twitter-state-color; + } +} + +.btn-facebook{ + color: $social-facebook; + + &:hover, + &:focus, + &:active{ + color: $social-facebook-state-color; + } +} + +.btn-google{ + color: $social-google; + + &:hover, + &:focus, + &:active{ + color: $social-google-state-color; + } +} + +.btn-linkedin{ + color: $social-linkedin; + + &:hover, + &:focus, + &:active{ + color: $social-linkedin-state-color; + } +} diff --git a/web/libs/sass/now-ui-kit/_tabs.scss b/web/libs/sass/now-ui-kit/_tabs.scss new file mode 100644 index 00000000..7e4a32d0 --- /dev/null +++ b/web/libs/sass/now-ui-kit/_tabs.scss @@ -0,0 +1,110 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.nav-tabs { + border: 0; + padding: $padding-large-vertical $padding-base-horizontal; + + > .nav-item{ + > .nav-link{ + color: $default-color; + margin: 0; + margin-right: 5px; + background-color: $transparent-bg; + border: 1px solid $transparent-bg; + border-radius: 30px; + font-size: $font-size-base; + padding: $padding-btn-vertical $padding-round-horizontal; + line-height: $line-height-general; + + &:hover { + background-color: $transparent-bg; + } + + &.active{ + border: 1px solid $default-color; + border-radius: 30px; + } + + i.now-ui-icons{ + font-size: 14px; + position: relative; + top: 1px; + margin-right: 3px; + } + } + + &.disabled > .nav-link, + &.disabled > .nav-link:hover { + color: rgba(255,255,255,0.5); + } + } + + &.nav-tabs-neutral{ + > .nav-item{ + > .nav-link{ + color: $white-color; + + &.active{ + border-color: $opacity-5; + color: $white-color; + } + } + } + } + + &.nav-tabs-primary{ + > .nav-item{ + > .nav-link{ + &.active{ + border-color: $primary-color; + color: $primary-color; + } + } + } + } + + &.nav-tabs-info{ + > .nav-item{ + > .nav-link{ + &.active{ + border-color: $info-color; + color: $info-color; + } + } + } + } + + &.nav-tabs-danger{ + > .nav-item{ + > .nav-link{ + &.active{ + border-color: $danger-color; + color: $danger-color; + } + } + } + } + + &.nav-tabs-warning{ + > .nav-item{ + > .nav-link{ + &.active{ + border-color: $warning-color; + color: $warning-color; + } + } + } + } + + &.nav-tabs-success{ + > .nav-item{ + > .nav-link{ + &.active{ + border-color: $success-color; + color: $success-color; + } + } + } + } + +} diff --git a/web/libs/sass/now-ui-kit/_typography.scss b/web/libs/sass/now-ui-kit/_typography.scss new file mode 100644 index 00000000..16c155aa --- /dev/null +++ b/web/libs/sass/now-ui-kit/_typography.scss @@ -0,0 +1,158 @@ +button, +input, +optgroup, +select, +textarea{ + font-family: $sans-serif-family; +} +h1,h2,h3,h4,h5,h6{ + font-weight: $font-weight-normal; +} + +small{ + font-size: 60%; +} + +a{ + color: $primary-color; + &:hover, + &:focus{ + color: $primary-color; + } +} +h1, .h1 { + font-size: $font-size-h1; + line-height: 1.15; + margin-bottom: $margin-base-vertical * 2; + + small{ + font-weight: $font-weight-bold; + text-transform: uppercase; + opacity: .8; + } +} +h2, .h2{ + font-size: $font-size-h2; + margin-bottom: $margin-base-vertical * 2; +} +h3, .h3{ + font-size: $font-size-h3; + margin-bottom: $margin-base-vertical * 2; + line-height: 1.4em; +} +h4, .h4{ + font-size: $font-size-h4; + line-height: 1.45em; + margin-top: $margin-base-vertical * 2; + margin-bottom: $margin-base-vertical; + + & + .category, + &.title + .category{ + margin-top: -10px; + } +} +h5, .h5 { + font-size: $font-size-h5; + line-height: 1.4em; + margin-bottom: 15px; +} +h6, .h6{ + font-size: $font-size-h6; + font-weight: $font-weight-bold; + text-transform: uppercase; +} +p{ + line-height: 1.61em; + + .description &, + &.description{ + font-size: 1.14em; + } +} + +.title{ + font-weight: $font-weight-bold; + + &.title-up{ + text-transform: uppercase; + + a{ + color: $black-color; + text-decoration: none; + } + } + & + .category{ + margin-top: -25px; + } +} + +.description, +.card-description, +.footer-big p{ + color: $dark-gray; + font-weight: $font-weight-light; +} +.category{ + text-transform: uppercase; + font-weight: $font-weight-bold; + color: $dark-gray; +} +.text-primary { + color: $brand-primary !important; +} +.text-info { + color: $brand-info !important; +} +.text-success { + color: $brand-success !important; +} +.text-warning { + color: $brand-warning !important; +} +.text-danger { + color: $brand-danger !important; +} +.text-black{ + color: $light-black; +} + +.blockquote{ + border-left: none; + border: 1px solid $default-color; + padding: 20px; + font-size: $font-size-blockquote; + line-height: 1.8; + + small{ + color: $default-color; + font-size: $font-size-small; + text-transform: uppercase; + } + + &.blockquote-primary{ + border-color: $primary-color; + color: $primary-color; + + small{ + color: $primary-color; + } + } + + &.blockquote-danger{ + border-color: $danger-color; + color: $danger-color; + + small{ + color: $danger-color; + } + } + + &.blockquote-white{ + border-color: $opacity-8; + color: $white-color; + + small{ + color: $opacity-8; + } + } +} diff --git a/web/libs/sass/now-ui-kit/_variables.scss b/web/libs/sass/now-ui-kit/_variables.scss new file mode 100644 index 00000000..5cdcdbae --- /dev/null +++ b/web/libs/sass/now-ui-kit/_variables.scss @@ -0,0 +1,254 @@ +//== Buttons +// +//## For each of Bootstrap's buttons, define text, background and border color. + +$sans-serif-family: 'Montserrat', 'Helvetica Neue', Arial, sans-serif; + +$none: 0 !default; +$border-thin: 1px !default; +$border-thick: 2px !default; + +$white-color: #FFFFFF !default; +$white-bg: #FFFFFF !default; +$orange-bg: #e95e38 !default; + +$smoke-bg: #F5F5F5 !default; +$light-black: #444 !default; + +$black-bg: rgba(30,30,30,.97) !default; + +$black-color: #2c2c2c !default; +$black-hr: #444444 !default; + +$light-gray: #E3E3E3 !default; +$medium-gray: #DDDDDD !default; +$dark-gray: #9A9A9A !default; + +$opacity-gray-3: rgba(222,222,222, .3) !default; +$opacity-gray-5: rgba(222,222,222, .5) !default; +$opacity-gray-8: rgba(222,222,222, .8) !default; + + +$opacity-5: rgba(255,255,255, .5) !default; +$opacity-8: rgba(255,255,255, .8) !default; + +$datepicker-color-days: rgba(255,255,255, .8) !default; +$datepicker-color-old-new-days: rgba(255,255,255, .4) !default; + + +$opacity-1: rgba(255,255,255, .1) !default; +$opacity-2: rgba(255,255,255, .2) !default; + +$transparent-bg: transparent !default; +$dark-background: #555555 !default; + +$default-color: #888 !default; +$default-states-color: lighten($default-color, 6%) !default; +$default-color-opacity: rgba(182, 182, 182, .6) !default; + +$primary-color: #f96332 !default; +$primary-states-color: lighten($primary-color, 6%) !default; +$primary-color-opacity: rgba(249, 99, 50, .3) !default; +$primary-color-alert: rgba(249, 99, 50, .8) !default; + +$success-color: #18ce0f !default; +$success-states-color: lighten($success-color, 6%) !default; +$success-color-opacity: rgba(24, 206, 15, .3) !default; +$success-color-alert: rgba(24, 206, 15, .8) !default; + +$info-color: #2CA8FF !default; +$info-states-color: lighten($info-color, 6%) !default; +$info-color-opacity: rgba(44, 168, 255, .3) !default; +$info-color-alert: rgba(44, 168, 255, .8) !default; + +$warning-color: #FFB236 !default; +$warning-states-color: lighten($warning-color, 6%) !default; +$warning-color-opacity: rgba(255, 178, 54, .3) !default; +$warning-color-alert: rgba(255, 178, 54, .8) !default; + +$danger-color: #FF3636 !default; +$danger-states-color: lighten($danger-color, 6%) !default; +$danger-color-opacity: rgba(255, 54, 54, .3) !default; +$danger-color-alert: rgba(255, 54, 54, .8) !default; + +/* brand Colors */ +$brand-primary: $primary-color !default; +$brand-info: $info-color !default; +$brand-success: $success-color !default; +$brand-warning: $warning-color !default; +$brand-danger: $danger-color !default; +$brand-inverse: $black-color !default; + +$link-disabled-color: #666666 !default; + +/* light colors */ +$light-blue: rgba($primary-color, .2); +$light-azure: rgba($info-color, .2); +$light-green: rgba($success-color, .2); +$light-orange: rgba($warning-color, .2); +$light-red: rgba($danger-color, .2); + +//== Components +// + +$padding-input-vertical: 11px !default; +$padding-input-horizontal: 19px !default; + +$padding-btn-vertical: 11px !default; +$padding-btn-horizontal: 22px !default; + +$padding-base-vertical: .5rem !default; +$padding-base-horizontal: .7rem !default; + +$padding-round-horizontal: 23px !default; + +$padding-simple-vertical: 10px !default; +$padding-simple-horizontal: 17px !default; + +$padding-large-vertical: 15px !default; +$padding-large-horizontal: 48px !default; + +$padding-small-vertical: 5px !default; +$padding-small-horizontal: 15px !default; + +// $padding-xs-vertical: 1px !default; +// $padding-xs-horizontal: 5px !default; + +$padding-label-vertical: 2px !default; +$padding-label-horizontal: 12px !default; + +$margin-large-vertical: 30px !default; +$margin-base-vertical: 15px !default; + +$margin-base-horizontal: 15px !default; + +$margin-bottom: 10px !default; +$border: 1px solid !default; +$border-radius-extra-small: 0.125rem !default; +$border-radius-small: 0.1875rem !default; +$border-radius-large: 0.25rem !default; +$border-radius-extreme: 0.875rem !default; + +$border-radius-large-top: $border-radius-large $border-radius-large 0 0 !default; +$border-radius-large-bottom: 0 0 $border-radius-large $border-radius-large !default; + +$btn-round-radius: 30px !default; + +$height-base: 55px !default; + +$btn-icon-size: 3.5rem !default; +$btn-icon-size-regular: 2.375rem !default; +$btn-icon-font-size-regular: 0.9375rem !default; +$btn-icon-font-size-small: 0.6875rem !default; +$btn-icon-size-small: 1.875rem !default; +$btn-icon-font-size-lg: 1.325rem !default; +$btn-icon-size-lg: 3.6rem !default; + +$font-size-h1: 3.5em !default; // ~ 49px +$font-size-h2: 2.5em !default; // ~ 35px +$font-size-h3: 2em !default; // ~ 28px +$font-size-h4: 1.714em !default; // ~ 24px +$font-size-h5: 1.57em !default; // ~ 22px +$font-size-h6: 1em !default; // ~ 14px + +$font-paragraph: 1em !default; +$font-size-navbar: 1em !default; +$font-size-mini: 0.7142em !default; +$font-size-small: 0.8571em !default; +$font-size-base: 14px !default; +$font-size-large: 1em !default; +$font-size-large-navbar: 20px !default; +$font-size-blockquote: 1.1em !default; // ~ 15px + +$font-weight-light: 300 !default; +$font-weight-normal: 400 !default; +$font-weight-semi: 600 !default; +$font-weight-bold: 700 !default; + +$line-height-general: 1.5 !default; +$line-height-nav-link: 1.625rem !default; +$btn-icon-line-height: 2.4em !default; +$line-height: 1.35em !default; +$line-height-lg: 54px !default; + + +$border-radius-top: 10px 10px 0 0 !default; +$border-radius-bottom: 0 0 10px 10px !default; + +$dropdown-shadow: 1px 2px 3px rgba(0, 0, 0, 0.125); +$box-shadow-raised: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); + +$general-transition-time: 300ms !default; + +$slow-transition-time: 370ms !default; +$dropdown-coordinates: 29px -50px !default; + +$fast-transition-time: 150ms !default; +$select-coordinates: 50% -40px !default; + +$transition-linear: linear !default; +$transition-bezier: cubic-bezier(0.34, 1.61, 0.7, 1) !default; +$transition-ease: ease 0s; + + +//$navbar-padding-a: 9px 13px; +$navbar-margin-a: 15px 0px; + +$padding-social-a: 10px 5px; + +$navbar-margin-a-btn: 15px 0px; +$navbar-margin-a-btn-round: 16px 0px; + +$navbar-padding-a-icons: 6px 15px; +$navbar-margin-a-icons: 6px 3px; + +$navbar-padding-base: 0.625rem; +//$navbar-margin-brand: 5px 0px; + +$navbar-margin-brand-icons: 12px auto; +$navbar-margin-btn: 15px 3px; + +$height-icon-sm: 32px; +$width-icon-sm: 32px; +$padding-icon-sm: 4px; +$border-radius-icon-sm: 7px; + +$height-icon-message: 40px; +$width-icon-message: 40px; + +$height-icon-message-sm: 20px; +$width-icon-message-sm: 20px; + +$white-navbar: rgba(#FFFFFF, .96); +$primary-navbar: rgba(#34ACDC, .98); +$info-navbar: rgba(#5BCAFF, .98); +$success-navbar: rgba(#4CD964, .98); +$warning-navbar: rgba(#FF9500, .98); +$danger-navbar: rgba(#FF4C40, .98); + +$topbar-x: topbar-x !default; +$topbar-back: topbar-back !default; +$bottombar-x: bottombar-x !default; +$bottombar-back: bottombar-back !default; + +//Nucleo Icons + +$nc-font-path: '../fonts' !default; +$nc-font-size-base: 14px !default; +$nc-css-prefix: now-ui !default; +$nc-background-color: #eee !default; +$nc-li-width: (30em / 14) !default; +$nc-padding-width: (1em/3) !default; + +// Social icons color +$social-twitter: #55acee !default; +$social-twitter-state-color: darken(#55acee, 5%) !default; + +$social-facebook: #3b5998 !default; +$social-facebook-state-color: darken(#3b5998, 5%) !default; + +$social-google: #dd4b39 !default; +$social-google-state-color: darken(#dd4b39, 5%) !default; + +$social-linkedin: #0077B5 !default; +$social-linkedin-state-color: darken(#0077B5, 5%) !default; diff --git a/web/libs/sass/now-ui-kit/mixins/_badges.scss b/web/libs/sass/now-ui-kit/mixins/_badges.scss new file mode 100644 index 00000000..115b805b --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_badges.scss @@ -0,0 +1,4 @@ +@mixin badge-color($color) { + border-color: $color; + color: $color; +} diff --git a/web/libs/sass/now-ui-kit/mixins/_buttons.scss b/web/libs/sass/now-ui-kit/mixins/_buttons.scss new file mode 100644 index 00000000..27570e24 --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_buttons.scss @@ -0,0 +1,160 @@ +// Mixin for generating new styles +@mixin btn-styles($btn-color, $btn-states-color) { + background-color: $btn-color; + + &:hover, + &:focus, + &:active, + &.active, + &:active:focus, + &:active:hover, + &.active:focus, + &.active:hover, + .show > &.dropdown-toggle, + .show > &.dropdown-toggle:focus, + .show > &.dropdown-toggle:hover { + background-color: $btn-states-color; + color: $white-color; + box-shadow: none; + } + + &:hover{ + box-shadow: 0 3px 8px 0 rgba(0,0,0, 0.17); + } + + &.disabled, + &:disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &.focus, + &:active, + &.active { + background-color: $btn-color; + border-color: $btn-color; + } + } + + // btn-neutral style + @if $btn-color == $white-color{ + color: $primary-color; + + &.btn-danger{ + color: $danger-color; + + &:hover, + &:focus, + &:active{ + color: $danger-states-color; + } + } + + &.btn-info{ + color: $info-color; + + &:hover, + &:focus, + &:active{ + color: $info-states-color; + } + } + + &.btn-warning{ + color: $warning-color; + + &:hover, + &:focus, + &:active{ + color: $warning-states-color; + } + } + + &.btn-success{ + color: $success-color; + + &:hover, + &:focus, + &:active{ + color: $success-states-color; + } + } + + &.btn-default{ + color: $default-color; + + &:hover, + &:focus, + &:active{ + color: $default-states-color; + } + } + + &.active, + &:active, + &:active:focus, + &:active:hover, + &.active:focus, + &.active:hover, + .show > &.dropdown-toggle, + .show > &.dropdown-toggle:focus, + .show > &.dropdown-toggle:hover { + background-color: $white-color; + color: $primary-states-color; + box-shadow: none; + } + + &:hover, + &:focus{ + color: $primary-states-color; + + &:not(.nav-link){ + box-shadow: none; + } + + } + + } @else { + color: $white-color; + } + + &.btn-simple{ + color: $btn-color; + border-color: $btn-color; + + &:hover, + &:focus, + &:active{ + background-color: $transparent-bg; + color: $btn-states-color; + border-color: $btn-states-color; + box-shadow: none; + } + } + + &.btn-link{ + color: $btn-color; + + &:hover, + &:focus, + &:active{ + background-color: $transparent-bg; + color: $btn-states-color; + text-decoration: none; + box-shadow: none; + } + } +} + + +@mixin btn-size($padding-vertical, $padding-horizontal, $font-size, $border){ + font-size: $font-size; + border-radius: $border; + padding: $padding-vertical $padding-horizontal; + + &.btn-simple{ + padding: $padding-vertical - 1 $padding-horizontal - 1; + } + +} diff --git a/web/libs/sass/now-ui-kit/mixins/_datepicker.scss b/web/libs/sass/now-ui-kit/mixins/_datepicker.scss new file mode 100644 index 00000000..0b7e9070 --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_datepicker.scss @@ -0,0 +1,121 @@ +@mixin datepicker-colors($color) { + background-color: $color; + + th, + .day div, + table tr td span{ + color: $white-color; + } + + &:after{ + border-bottom-color: $color; + } + + &.datepicker-orient-top:after{ + border-top-color: $color; + } + + .dow{ + color: $datepicker-color-days; + } + + table tr td.old div, + table tr td.new div, + table tr td span.old, + table tr td span.new{ + color: $datepicker-color-old-new-days; + } + + table tr td span:hover, + table tr td span.focused{ + background:$opacity-1; + } + + .datepicker-switch:hover, + .prev:hover, + .next:hover, + tfoot tr th:hover { + background: $opacity-2; + } + + table tr td.active div, + table tr td.active:hover div, + table tr td.active.disabled div, + table tr td.active.disabled:hover div { + + background-color: $white-color; + color: $color; + } + + table tr td.day:hover div, + table tr td.day.focused div { + background: $opacity-2; + } + + table tr td.active:hover div, + table tr td.active:hover:hover div, + table tr td.active.disabled:hover div, + table tr td.active.disabled:hover:hover div, + table tr td.active:active div, + table tr td.active:hover:active div, + table tr td.active.disabled:active div, + table tr td.active.disabled:hover:active div, + table tr td.active.active div, + table tr td.active:hover.active div, + table tr td.active.disabled.active div, + table tr td.active.disabled:hover.active div, + table tr td.active.disabled div, + table tr td.active:hover.disabled div, + table tr td.active.disabled.disabled div, + table tr td.active.disabled:hover.disabled div, + table tr td.active[disabled] div, + table tr td.active:hover[disabled] div, + table tr td.active.disabled[disabled] div, + table tr td.active.disabled:hover[disabled] div, + table tr td span.active:hover, + table tr td span.active:hover:hover, + table tr td span.active.disabled:hover, + table tr td span.active.disabled:hover:hover, + table tr td span.active:active, + table tr td span.active:hover:active, + table tr td span.active.disabled:active, + table tr td span.active.disabled:hover:active, + table tr td span.active.active, + table tr td span.active:hover.active, + table tr td span.active.disabled.active, + table tr td span.active.disabled:hover.active, + table tr td span.active.disabled, + table tr td span.active:hover.disabled, + table tr td span.active.disabled.disabled, + table tr td span.active.disabled:hover.disabled, + table tr td span.active[disabled], + table tr td span.active:hover[disabled], + table tr td span.active.disabled[disabled], + table tr td span.active.disabled:hover[disabled]{ + background-color: $white-color; + } + + table tr td span.active:hover, + table tr td span.active:hover:hover, + table tr td span.active.disabled:hover, + table tr td span.active.disabled:hover:hover, + table tr td span.active:active, + table tr td span.active:hover:active, + table tr td span.active.disabled:active, + table tr td span.active.disabled:hover:active, + table tr td span.active.active, + table tr td span.active:hover.active, + table tr td span.active.disabled.active, + table tr td span.active.disabled:hover.active, + table tr td span.active.disabled, + table tr td span.active:hover.disabled, + table tr td span.active.disabled.disabled, + table tr td span.active.disabled:hover.disabled, + table tr td span.active[disabled], + table tr td span.active:hover[disabled], + table tr td span.active.disabled[disabled], + table tr td span.active.disabled:hover[disabled]{ + color: $color; + } + +} diff --git a/web/libs/sass/now-ui-kit/mixins/_dropdown.scss b/web/libs/sass/now-ui-kit/mixins/_dropdown.scss new file mode 100644 index 00000000..638743ee --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_dropdown.scss @@ -0,0 +1,24 @@ +@mixin dropdown-colors($brand-color, $dropdown-header-color, $dropdown-color, $background-color ) { + background-color: $brand-color; + + &:before{ + color: $brand-color; + } + + .dropdown-header:not([href]):not([tabindex]){ + color: $dropdown-header-color; + } + + .dropdown-item{ + color: $dropdown-color; + + &:hover, + &:focus{ + background-color: $background-color; + } + } + + .dropdown-divider{ + background-color: $background-color; + } +} diff --git a/web/libs/sass/now-ui-kit/mixins/_inputs.scss b/web/libs/sass/now-ui-kit/mixins/_inputs.scss new file mode 100644 index 00000000..2246982d --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_inputs.scss @@ -0,0 +1,205 @@ +@mixin input-size($padding-vertical, $padding-horizontal){ + padding: $padding-vertical $padding-horizontal; +} + +@mixin form-control-placeholder($color, $opacity){ + .form-control::-moz-placeholder{ + color: $color; + @include opacity(1); + } + .form-control:-moz-placeholder{ + color: $color; + @include opacity(1); + } + .form-control::-webkit-input-placeholder{ + color: $color; + @include opacity(1); + } + .form-control:-ms-input-placeholder{ + color: $color; + @include opacity(1); + } +} + +@mixin light-form(){ + border-radius: 0; + border:0; + padding: 0; + background-color: transparent; + +} + + +@mixin input-lg-padding($padding-vertical, $padding-horizontal) { + .form-group.form-group-no-border.input-lg, + .input-group.form-group-no-border.input-lg{ + .input-group-addon{ + padding: $padding-vertical 0 $padding-vertical $padding-horizontal; + } + + .form-control{ + padding: $padding-vertical $padding-horizontal; + + & + .input-group-addon{ + padding: $padding-vertical $padding-horizontal $padding-vertical 0; + } + } + } + + .form-group.input-lg, + .input-group.input-lg{ + .form-control{ + padding: $padding-vertical - 1 $padding-horizontal - 1; + + & + .input-group-addon{ + padding: $padding-vertical - 1 $padding-horizontal - 1 $padding-vertical - 1 0; + } + } + + .input-group-addon{ + padding: $padding-vertical - 1 0 $padding-vertical $padding-horizontal - 1; + + & + .form-control{ + padding: $padding-vertical $padding-horizontal - 1 $padding-vertical $padding-horizontal - 3; + } + } + } +} + + + +@mixin input-base-padding($padding-vertical, $padding-horizontal) { + .form-group.form-group-no-border, + .input-group.form-group-no-border{ + .form-control{ + padding: $padding-vertical $padding-horizontal; + + & + .input-group-addon{ + padding: $padding-vertical $padding-horizontal $padding-vertical 0; + } + } + + .input-group-addon{ + padding: $padding-vertical 0 $padding-vertical $padding-horizontal; + } + } + + .form-group, + .input-group{ + .form-control{ + padding: $padding-vertical - 1 $padding-horizontal - 1 $padding-vertical - 1 $padding-horizontal - 1; + + & + .input-group-addon{ + padding: $padding-vertical - 1 $padding-horizontal - 1 $padding-vertical - 1 0; + } + } + + .input-group-addon{ + padding: $padding-vertical - 1 0 $padding-vertical - 1 $padding-horizontal - 1; + + & + .form-control, + & ~ .form-control{ + padding:$padding-vertical - 1 $padding-horizontal $padding-vertical $padding-horizontal - 3; + } + } + } +} + + +//color1 = $opacity-5 +//color2 = $opacity-8 +//color3 = $white-color +//color4 = $transparent-bg +//color5 = $opacity-1 +//color6 = $opacity-2 + + +@mixin input-coloured-bg($color1, $color2, $color3, $color4, $color5, $color6) { + @include form-control-placeholder(darken($color2, 8%), 1); + + .form-control{ + border-color: $color1; + color: $color2; + + &:focus{ + border-color: $color3; + background-color: $color4; + color: $color3; + } + } + + .has-success, + .has-danger{ + &:after{ + color: $color3; + } + } + + .has-danger{ + .form-control{ + background-color: $color4; + } + } + + .input-group-addon{ + background-color: $color4; + border-color: $color1; + color: $color2; + } + + .input-group-focus{ + .input-group-addon{ + background-color: $color4; + border-color: $color3; + color: $color3; + } + } + + .form-group.form-group-no-border, + .input-group.form-group-no-border{ + .form-control{ + background-color: $color5; + color: $color2; + + &:focus, + &:active, + &:active{ + background-color: $color6; + color: $color3; + } + } + + .form-control + .input-group-addon{ + background-color: $color5; + + &:focus, + &:active, + &:active{ + background-color: $color6; + color: $color3; + } + } + + .form-control{ + &:focus{ + & + .input-group-addon{ + background-color: $color6; + color: $color3; + } + } + } + + .input-group-addon{ + background-color: $color5; + border: none; + color: $color2; + } + + &.input-group-focus{ + .input-group-addon{ + background-color: $color6; + color: $color3; + } + } + } +} diff --git a/web/libs/sass/now-ui-kit/mixins/_modals.scss b/web/libs/sass/now-ui-kit/mixins/_modals.scss new file mode 100644 index 00000000..a7962848 --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_modals.scss @@ -0,0 +1,12 @@ +@mixin modal-colors($bg-color, $color) { + .modal-content{ + background-color: $bg-color; + color: $color; + } + + .modal-header .close{ + color: $color; + } + + +} diff --git a/web/libs/sass/now-ui-kit/mixins/_navbar.scss b/web/libs/sass/now-ui-kit/mixins/_navbar.scss new file mode 100644 index 00000000..167f5591 --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_navbar.scss @@ -0,0 +1,226 @@ +@mixin navbar-responsive() { + .navbar{ + .navbar-nav{ + margin-top: 53px; + + .nav-link{ + padding-top: 0.75rem; + padding-bottom: .75rem; + } + + &.navbar-logo{ + top: 0; + height: 53px; + } + } + + .dropdown.show .dropdown-menu, + .dropdown .dropdown-menu{ + background-color: transparent; + border: 0; + transition: none; + -webkit-box-shadow: none; + box-shadow: none; + width: auto; + margin: 0 1rem; + margin-bottom: 15px; + padding-top: 0; + height: 150px; + overflow-y: scroll; + + &:before{ + display: none; + } + } + + .dropdown{ + .dropdown-item{ + padding-left: 2.5rem; + } + + .dropdown-menu{ + display: none; + } + + &.show .dropdown-menu{ + display: block; + } + } + + .dropdown-menu .dropdown-item:focus, + .dropdown-menu .dropdown-item:hover{ + color: $white-color; + } + + .navbar-translate{ + width: 100%; + position: relative; + display: flex; + -ms-flex-pack: justify!important; + justify-content: space-between!important; + -ms-flex-align: center; + align-items: center; + @include transform-translate-x(0px); + @include transition (0.50s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + } + + .navbar-toggler-bar{ + display: block; + position: relative; + width: 22px; + height: 1px; + border-radius: 1px; + background: $white-bg; + + & + .navbar-toggler-bar{ + margin-top: 7px; + } + + &.bar2{ + width: 17px; + transition: width .2s linear; + } + } + + &.bg-white:not(.navbar-transparent) .navbar-toggler-bar{ + background: $default-color; + } + + & .toggled .navbar-toggler-bar{ + width: 24px; + + & + .navbar-toggler-bar{ + margin-top: 5px; + } + } + + } + + .bar1, + .bar2, + .bar3 { + outline: 1px solid transparent; + } + .bar1 { + top: 0px; + @include bar-animation($topbar-back); + } + .bar2 { + opacity: 1; + } + .bar3 { + bottom: 0px; + @include bar-animation($bottombar-back); + } + .toggled .bar1 { + top: 6px; + @include bar-animation($topbar-x); + } + .toggled .bar2 { + opacity: 0; + } + .toggled .bar3 { + bottom: 6px; + @include bar-animation($bottombar-x); + } + + @include topbar-x-rotation(); + @include topbar-back-rotation(); + @include bottombar-x-rotation(); + @include bottombar-back-rotation(); + + @-webkit-keyframes fadeIn { + 0% {opacity: 0;} + 100% {opacity: 1;} + } + @-moz-keyframes fadeIn { + 0% {opacity: 0;} + 100% {opacity: 1;} + } + @keyframes fadeIn { + 0% {opacity: 0;} + 100% {opacity: 1;} + } +} + +@mixin navbar-collapse() { + .navbar-collapse{ + position: fixed; + display: block; + top: 0; + height: 100% !important; + width: 300px; + right: 0; + z-index: 1032; + visibility: visible; + background-color: #999; + overflow-y: visible; + border-top: none; + text-align: left; + + max-height: none !important; + + @include transform-translate-x(300px); + @include transition (0.50s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + + &:before{ + background: $brand-primary; /* For browsers that do not support gradients */ + background: -webkit-linear-gradient($brand-primary 0%, #000 80%); /* For Safari 5.1 to 6.0 */ + background: -o-linear-gradient($brand-primary 0%, #000 80%); /* For Opera 11.1 to 12.0 */ + background: -moz-linear-gradient($brand-primary 0%, #000 80%); /* For Firefox 3.6 to 15 */ + background: linear-gradient($brand-primary 0%, #000 80%); /* Standard syntax (must be last) */ + @include opacity(.76); + + display: block; + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: -1; + } + + .navbar-nav:not(.navbar-logo){ + .nav-link { + margin: 0 1rem; + margin-top: 0.3125rem; + + &:not(.btn){ + color: $white-color; + } + } + } + + .dropdown-menu .dropdown-item{ + color: $white-color; + } + } + + @include navbar-responsive(); + + + [class*="navbar-expand-"] .navbar-collapse{ + width: 300px; + } + + .wrapper{ + @include transition (0.50s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + } + + #bodyClick{ + height: 100%; + width: 100%; + position: fixed; + opacity: 1; + top: 0; + left: auto; + right: 300px; + content: ""; + z-index: 9999; + overflow-x: hidden; + background-color: transparent; + @include transition (0.50s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + } + +} diff --git a/web/libs/sass/now-ui-kit/mixins/_pages.scss b/web/libs/sass/now-ui-kit/mixins/_pages.scss new file mode 100644 index 00000000..713dfd36 --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_pages.scss @@ -0,0 +1,7 @@ +@mixin linear-gradient($color1, $color2){ + background: $color1; /* For browsers that do not support gradients */ + background: -webkit-linear-gradient(90deg, $color1 , $color2); /* For Safari 5.1 to 6.0 */ + background: -o-linear-gradient(90deg, $color1, $color2); /* For Opera 11.1 to 12.0 */ + background: -moz-linear-gradient(90deg, $color1, $color2); /* For Firefox 3.6 to 15 */ + background: linear-gradient(0deg, $color1 , $color2); /* Standard syntax */ +} diff --git a/web/libs/sass/now-ui-kit/mixins/_popovers.scss b/web/libs/sass/now-ui-kit/mixins/_popovers.scss new file mode 100644 index 00000000..ef9727aa --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_popovers.scss @@ -0,0 +1,29 @@ +@mixin popover-color($color, $text-color) { + background-color: $color; + + .popover-body{ + color: $text-color; + } + + + &.bs-popover-right .arrow:after{ + border-right-color:$color; + } + + &.bs-popover-top .arrow:after{ + border-top-color:$color; + } + + &.bs-popover-bottom .arrow:after{ + border-bottom-color:$color; + } + + &.bs-popover-left .arrow:after{ + border-left-color:$color; + } + + .popover-header{ + color: $text-color; + opacity: .6; + } +} diff --git a/web/libs/sass/now-ui-kit/mixins/_transparency.scss b/web/libs/sass/now-ui-kit/mixins/_transparency.scss new file mode 100644 index 00000000..df088adf --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_transparency.scss @@ -0,0 +1,8 @@ +// Opacity + +@mixin opacity($opacity) { + opacity: $opacity; + // IE8 filter + $opacity-ie: ($opacity * 100); + filter: #{alpha(opacity=$opacity-ie)}; +} diff --git a/web/libs/sass/now-ui-kit/mixins/_vendor-prefixes.scss b/web/libs/sass/now-ui-kit/mixins/_vendor-prefixes.scss new file mode 100644 index 00000000..a8708a5b --- /dev/null +++ b/web/libs/sass/now-ui-kit/mixins/_vendor-prefixes.scss @@ -0,0 +1,160 @@ +@mixin box-shadow($shadow...) { + -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1 + box-shadow: $shadow; +} + +@mixin transition-input-focus-color() { + -webkit-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -moz-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -o-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + -ms-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; + transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; +} + + +@mixin transition($time, $type){ + -webkit-transition: all $time $type; + -moz-transition: all $time $type; + -o-transition: all $time $type; + -ms-transition: all $time $type; + transition: all $time $type; +} + +@mixin rotate-180(){ + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + + +@mixin transform-translate-x($value){ + -webkit-transform: translate3d($value, 0, 0); + -moz-transform: translate3d($value, 0, 0); + -o-transform: translate3d($value, 0, 0); + -ms-transform: translate3d($value, 0, 0); + transform: translate3d($value, 0, 0); +} + +@mixin transform-translate-y($value){ + -webkit-transform: translate3d(0,$value,0); + -moz-transform: translate3d(0,$value,0); + -o-transform: translate3d(0,$value,0); + -ms-transform: translate3d(0,$value,0); + transform: translate3d(0,$value,0); +} + +@mixin bar-animation($type){ + -webkit-animation: $type 500ms linear 0s; + -moz-animation: $type 500ms linear 0s; + animation: $type 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; +} + +@mixin topbar-x-rotation(){ + @keyframes topbar-x { + 0% {top: 0px; transform: rotate(0deg); } + 45% {top: 6px; transform: rotate(145deg); } + 75% {transform: rotate(130deg); } + 100% {transform: rotate(135deg); } + } + @-webkit-keyframes topbar-x { + 0% {top: 0px; -webkit-transform: rotate(0deg); } + 45% {top: 6px; -webkit-transform: rotate(145deg); } + 75% {-webkit-transform: rotate(130deg); } + 100% { -webkit-transform: rotate(135deg); } + } + @-moz-keyframes topbar-x { + 0% {top: 0px; -moz-transform: rotate(0deg); } + 45% {top: 6px; -moz-transform: rotate(145deg); } + 75% {-moz-transform: rotate(130deg); } + 100% { -moz-transform: rotate(135deg); } + } +} + +@mixin topbar-back-rotation(){ + @keyframes topbar-back { + 0% { top: 6px; transform: rotate(135deg); } + 45% { transform: rotate(-10deg); } + 75% { transform: rotate(5deg); } + 100% { top: 0px; transform: rotate(0); } + } + + @-webkit-keyframes topbar-back { + 0% { top: 6px; -webkit-transform: rotate(135deg); } + 45% { -webkit-transform: rotate(-10deg); } + 75% { -webkit-transform: rotate(5deg); } + 100% { top: 0px; -webkit-transform: rotate(0); } + } + + @-moz-keyframes topbar-back { + 0% { top: 6px; -moz-transform: rotate(135deg); } + 45% { -moz-transform: rotate(-10deg); } + 75% { -moz-transform: rotate(5deg); } + 100% { top: 0px; -moz-transform: rotate(0); } + } +} + +@mixin bottombar-x-rotation(){ + @keyframes bottombar-x { + 0% {bottom: 0px; transform: rotate(0deg);} + 45% {bottom: 6px; transform: rotate(-145deg);} + 75% {transform: rotate(-130deg);} + 100% {transform: rotate(-135deg);} + } + @-webkit-keyframes bottombar-x { + 0% {bottom: 0px; -webkit-transform: rotate(0deg);} + 45% {bottom: 6px; -webkit-transform: rotate(-145deg);} + 75% {-webkit-transform: rotate(-130deg);} + 100% {-webkit-transform: rotate(-135deg);} + } + @-moz-keyframes bottombar-x { + 0% {bottom: 0px; -moz-transform: rotate(0deg);} + 45% {bottom: 6px; -moz-transform: rotate(-145deg);} + 75% {-moz-transform: rotate(-130deg);} + 100% {-moz-transform: rotate(-135deg);} + } +} + +@mixin bottombar-back-rotation{ + @keyframes bottombar-back { + 0% { bottom: 6px;transform: rotate(-135deg);} + 45% { transform: rotate(10deg);} + 75% { transform: rotate(-5deg);} + 100% { bottom: 0px;transform: rotate(0);} + } + @-webkit-keyframes bottombar-back { + 0% {bottom: 6px;-webkit-transform: rotate(-135deg);} + 45% {-webkit-transform: rotate(10deg);} + 75% {-webkit-transform: rotate(-5deg);} + 100% {bottom: 0px;-webkit-transform: rotate(0);} + } + @-moz-keyframes bottombar-back { + 0% {bottom: 6px;-moz-transform: rotate(-135deg);} + 45% {-moz-transform: rotate(10deg);} + 75% {-moz-transform: rotate(-5deg);} + 100% {bottom: 0px;-moz-transform: rotate(0);} + } + +} + + +@mixin nc-rotate($degrees, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: rotate($degrees); + -moz-transform: rotate($degrees); + -ms-transform: rotate($degrees); + -o-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin nc-flip($horiz, $vert, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: scale($horiz, $vert); + -moz-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + -o-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} diff --git a/web/libs/sass/now-ui-kit/plugins/_plugin-bootstrap-switch.scss b/web/libs/sass/now-ui-kit/plugins/_plugin-bootstrap-switch.scss new file mode 100644 index 00000000..08fe4856 --- /dev/null +++ b/web/libs/sass/now-ui-kit/plugins/_plugin-bootstrap-switch.scss @@ -0,0 +1,304 @@ +/* ======================================================================== + * bootstrap-switch - v3.3.2 + * http://www.bootstrap-switch.org + * ======================================================================== + * Copyright 2012-2013 Mattia Larentis + * http://www.apache.org/licenses/LICENSE-2.0 + */ + + + + + + + + + + + + + + //* IMPORTANT! Creative Tim Notice: this file has major changes to fit the NOW UI Kit's design. If you want to use the plugin as it was before our changes, please get the old files from http://www.bootstrap-switch.org + + + + + + + + + + + + + + + + + + + + + + + + + +.bootstrap-switch { + display: inline-block; + direction: ltr; + cursor: pointer; + border-radius: 30px; + border: 0; + position: relative; + text-align: left; + margin-bottom: 10px; + line-height: 8px; + width: 59px !important; + height: 22px; + outline: none; + z-index: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + margin-right: 20px; + background: rgba($black-color, .2); +} + +.bootstrap-switch .bootstrap-switch-container { + display: inline-flex; + top: 0; + height: 22px; + border-radius: 4px; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + width: 100px !important; +} +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off, +.bootstrap-switch .bootstrap-switch-label { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + display: inline-block !important; + height: 100%; + color: #fff; + padding: 6px 12px; + font-size: 11px; + text-indent: -5px; + line-height: 15px; + -webkit-transition: 0.25s ease-out; + transition: 0.25s ease-out; + +} +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off { + text-align: center; + z-index: 1; + float: left; + line-height: 11px; + width: 50% !important; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-brown, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-brown { + color: #fff; + background: $brand-primary; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-blue, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-blue { + color: #fff; + background: $brand-info; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-green, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-green { + color: #fff; + background: $brand-success; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-orange, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-orange { + background: $brand-warning; + color: #fff; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-red, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-red { + color: #fff; + background: $brand-danger; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { + color: #fff; +} +.bootstrap-switch .bootstrap-switch-label { + text-align: center; + z-index: 100; + color: #333333; + background: #ffffff; + width: 22px !important; + height: 22px !important; + margin: 0px -11px; + border-radius: 20px; + position: absolute; + float: left; + top: 0; + left: 50%; + padding: 0; + box-shadow: 0 1px 11px rgba(0, 0, 0, 0.25); +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{ + background-color: rgba(23, 23, 23, .4); +} +.bootstrap-switch.bootstrap-switch-on:hover .bootstrap-switch-label{ + width: 27px !important; + margin-left: -16px; +} +.bootstrap-switch.bootstrap-switch-off:hover .bootstrap-switch-label{ + width: 27px !important; + margin-left: -11px; +} +.bootstrap-switch .bootstrap-switch-handle-on { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.bootstrap-switch .bootstrap-switch-handle-off { + text-indent: 6px; +} +.bootstrap-switch input[type='radio'], +.bootstrap-switch input[type='checkbox'] { + position: absolute !important; + top: 0; + left: 0; + opacity: 0; + filter: alpha(opacity=0); + z-index: -1; +} +.bootstrap-switch input[type='radio'].form-control, +.bootstrap-switch input[type='checkbox'].form-control { + height: auto; +} +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; +} +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label { + padding: 6px 16px; + font-size: 18px; + line-height: 1.33; +} +.bootstrap-switch.bootstrap-switch-disabled, +.bootstrap-switch.bootstrap-switch-readonly, +.bootstrap-switch.bootstrap-switch-indeterminate { + cursor: default !important; +} +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default !important; +} +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { + -webkit-transition: margin-left 0.5s; + transition: margin-left 0.5s; +} +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.bootstrap-switch.bootstrap-switch-focused { + // border-color: #66afe9; + // outline: 0; + // -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + // box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +// .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label, +// .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label { +// border-bottom-right-radius: 3px; +// border-top-right-radius: 3px; +// } +// .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label, +// .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label { +// border-bottom-left-radius: 3px; +// border-top-left-radius: 3px; +// } + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-container{ + margin-left: -2px !important; +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-container{ + margin-left: -39px !important; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{ + &:before{ + background-color: #FFFFFF; + } +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-red ~ .bootstrap-switch-default{ + background-color: $brand-danger; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-orange ~ .bootstrap-switch-default{ + background-color: $brand-warning; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-green ~ .bootstrap-switch-default{ + background-color: $brand-success; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-brown ~ .bootstrap-switch-default{ + background-color: $brand-primary; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-blue ~ .bootstrap-switch-default{ + background-color: $brand-info; +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-red, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-brown, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-blue, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-orange, +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-green{ + background-color: $light-gray; +} + +.bootstrap-switch-off .bootstrap-switch-handle-on{ + opacity: 0; +} + +.bootstrap-switch-on .bootstrap-switch-handle-off{ + opacity: 0; +} diff --git a/web/libs/sass/now-ui-kit/plugins/_plugin-datepicker.scss b/web/libs/sass/now-ui-kit/plugins/_plugin-datepicker.scss new file mode 100644 index 00000000..9b748330 --- /dev/null +++ b/web/libs/sass/now-ui-kit/plugins/_plugin-datepicker.scss @@ -0,0 +1,520 @@ +/*! + * Datepicker for Bootstrap v1.7.0-dev (https://github.com/uxsolutions/bootstrap-datepicker) + * + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ + +.datepicker { + padding: 8px 6px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + direction: ltr; + @include transform-translate-y(-40px); + transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1) 0s, opacity 0.3s ease 0s, height 0s linear 0.35s; + + @include opacity(0); + visibility: hidden; + display: block; + width: 254px; + max-width: 254px; + + &.dropdown-menu:before{ + display: none; + } + + &.datepicker-primary{ + @include datepicker-colors($primary-color); + } +} +.datepicker-inline { + width: 220px; +} +.datepicker.datepicker-rtl { + direction: rtl; +} +.datepicker.datepicker-rtl.dropdown-menu { + left: auto; +} +.datepicker.datepicker-rtl table tr td span { + float: right; +} +.datepicker-dropdown { + top: 0; + left: 0; +} +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid transparent; + border-top: 0; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; +} +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-top: 0; + position: absolute; +} +.datepicker-dropdown.datepicker-orient-left:before { + left: 6px; +} +.datepicker-dropdown.datepicker-orient-left:after { + left: 7px; +} +.datepicker-dropdown.datepicker-orient-right:before { + right: 6px; +} +.datepicker-dropdown.datepicker-orient-right:after { + right: 7px; +} +.datepicker-dropdown.datepicker-orient-bottom:before { + top: -7px; +} +.datepicker-dropdown.datepicker-orient-bottom:after { + top: -6px; +} +.datepicker-dropdown.datepicker-orient-top:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid transparent; +} +.datepicker-dropdown.datepicker-orient-top:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #fff; +} +.datepicker table { + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 241px; + max-width: 241px; +} +.datepicker .day div, +.datepicker th { + @include transition($general-transition-time, $transition-ease); + text-align: center; + width: 30px; + height: 30px; + line-height: 2.2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 50%; + font-weight: $font-weight-light; + font-size: $font-size-base; + border: none; + position: relative; + cursor: pointer; +} + +.datepicker th{ + color: $primary-color; +} + +.table-condensed > tbody > tr > td, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > td, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > thead > tr > th{ + padding: 2px; + text-align: center; + cursor: pointer; +} + +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} +.datepicker table tr td.day:hover div, +.datepicker table tr td.day.focused div { + background: #eee; + cursor: pointer; +} +.datepicker table tr td.old, +.datepicker table tr td.new { + color: $default-color; +} +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: $default-color ; + cursor: default; +} +.datepicker table tr td.highlighted { + background: #d9edf7; + border-radius: 0; +} +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + background-color: #fde19a; + background-image: -moz-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: -ms-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); + background-image: -webkit-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: -o-linear-gradient(to bottom, #fdd49a, #fdf59a); + background-image: linear-gradient(to bottom, #fdd49a, #fdf59a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); + border-color: #fdf59a #fdf59a #fbed50; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #000; +} +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled] { + background-color: #fdf59a; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active { + background-color: #fbf069 \9; +} +.datepicker table tr td.today:hover:hover { + color: #000; +} +.datepicker table tr td.today.active:hover { + color: #fff; +} +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: #eee; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + background-color: #f3d17a; + background-image: -moz-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: -ms-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); + background-image: -webkit-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: -o-linear-gradient(to bottom, #f3c17a, #f3e97a); + background-image: linear-gradient(to bottom, #f3c17a, #f3e97a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); + border-color: #f3e97a #f3e97a #edde34; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled] { + background-color: #f3e97a; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active { + background-color: #efe24b \9; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + background-color: #9e9e9e; + background-image: -moz-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: -ms-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080)); + background-image: -webkit-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: -o-linear-gradient(to bottom, #b3b3b3, #808080); + background-image: linear-gradient(to bottom, #b3b3b3, #808080); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); + border-color: #808080 #808080 #595959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled] { + background-color: #808080; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active { + background-color: #666666 \9; +} +.datepicker table tr td.active div, +.datepicker table tr td.active:hover div, +.datepicker table tr td.active.disabled div, +.datepicker table tr td.active.disabled:hover div { + + background-color: $primary-color; + color: $white-color; + box-shadow: 0px 1px 10px 0px rgba(0, 0, 0, 0.2); +} +.datepicker table tr td.active:hover div, +.datepicker table tr td.active:hover:hover div, +.datepicker table tr td.active.disabled:hover div, +.datepicker table tr td.active.disabled:hover:hover div, +.datepicker table tr td.active:active div, +.datepicker table tr td.active:hover:active div, +.datepicker table tr td.active.disabled:active div, +.datepicker table tr td.active.disabled:hover:active div, +.datepicker table tr td.active.active div, +.datepicker table tr td.active:hover.active div, +.datepicker table tr td.active.disabled.active div, +.datepicker table tr td.active.disabled:hover.active div, +.datepicker table tr td.active.disabled div, +.datepicker table tr td.active:hover.disabled div, +.datepicker table tr td.active.disabled.disabled div, +.datepicker table tr td.active.disabled:hover.disabled div, +.datepicker table tr td.active[disabled] div, +.datepicker table tr td.active:hover[disabled] div, +.datepicker table tr td.active.disabled[disabled] div, +.datepicker table tr td.active.disabled:hover[disabled] div{ + background-color: $primary-color; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active { + background-color: #003399 \9; +} +.datepicker table tr td span { + display: block; + width: 41px; + height: 41px; + line-height: 41px; + float: left; + margin: 1%; + font-size: $font-size-base; + cursor: pointer; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + +} +.datepicker table tr td span:hover, +.datepicker table tr td span.focused { + background: #eee; +} +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: $default-color; + cursor: default; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + color: #fff; + background-color: $primary-color; +} +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled] { + background-color: $primary-color; + box-shadow: 0px 1px 10px 0px rgba(0, 0, 0, 0.2); +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active { + background-color: #003399 \9; +} +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: $default-color; +} +.datepicker .datepicker-switch { + width: auto; + border-radius: $border-radius-small; +} +.datepicker .datepicker-switch, +.datepicker .prev, +.datepicker .next, +.datepicker tfoot tr th { + cursor: pointer; +} + +.datepicker{ + .prev, + .next{ + width: 35px; + height: 35px; + } + + i{ + position: relative; + top: 2px; + } + + .prev i{ + left: -1px; + } + + .next i{ + right: -1px; + } +} + +.datepicker .datepicker-switch:hover, +.datepicker .prev:hover, +.datepicker .next:hover, +.datepicker tfoot tr th:hover { + background: #eee; +} +.datepicker .prev.disabled, +.datepicker .next.disabled { + visibility: hidden; +} +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} +.input-append.date .add-on, +.input-prepend.date .add-on { + cursor: pointer; +} +.input-append.date .add-on i, +.input-prepend.date .add-on i { + margin-top: 3px; +} +.input-daterange input { + text-align: center; +} +.input-daterange input:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-daterange input:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-daterange .add-on { + display: inline-block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #fff; + vertical-align: middle; + background-color: #eee; + border: 1px solid #ccc; + margin-left: -5px; + margin-right: -5px; +} diff --git a/web/libs/sass/now-ui-kit/plugins/_plugin-nouislider.scss b/web/libs/sass/now-ui-kit/plugins/_plugin-nouislider.scss new file mode 100644 index 00000000..9f28c481 --- /dev/null +++ b/web/libs/sass/now-ui-kit/plugins/_plugin-nouislider.scss @@ -0,0 +1,351 @@ +/*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */ + + +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + */ +.noUi-target, +.noUi-target * { +-webkit-touch-callout: none; +-webkit-tap-highlight-color: rgba(0,0,0,0); +-webkit-user-select: none; +-ms-touch-action: none; + touch-action: none; +-ms-user-select: none; +-moz-user-select: none; + user-select: none; +-moz-box-sizing: border-box; + box-sizing: border-box; +} +.noUi-target { + position: relative; + direction: ltr; +} +.noUi-base { + width: 100%; + height: 100%; + position: relative; + z-index: 1; /* Fix 401 */ +} +.noUi-connect { + position: absolute; + right: 0; + top: 0; + left: 0; + bottom: 0; +} +.noUi-origin { + position: absolute; + height: 0; + width: 0; +} +.noUi-handle { + position: relative; + z-index: 1; +} +.noUi-state-tap .noUi-connect, +.noUi-state-tap .noUi-origin { +-webkit-transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s; + transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s; +} +.noUi-state-drag * { + cursor: inherit !important; +} + +/* Painting and performance; + * Browsers can paint handles in their own layer. + */ +.noUi-base, +.noUi-handle { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); +} + +/* Slider size and handle placement; + */ +.noUi-horizontal { + height: 1px; +} +.noUi-horizontal .noUi-handle { + border-radius: 50%; + background-color: $white-color; + box-shadow: 0 1px 13px 0 rgba(0, 0, 0, 0.2); + height:15px; + width:15px; + cursor:pointer; + margin-left: -10px; + margin-top: -7px; +} +.noUi-vertical { + width: 18px; +} +.noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + left: -6px; + top: -17px; +} + +/* Styling; + */ +.noUi-target { + background-color: rgba(182, 182, 182, .3); + border-radius: 3px; +} +.noUi-connect { + background: $default-color; + border-radius: 3px; +-webkit-transition: background 450ms; + transition: background 450ms; +} + +/* Handles and cursors; + */ +.noUi-draggable { + cursor: ew-resize; +} +.noUi-vertical .noUi-draggable { + cursor: ns-resize; +} +.noUi-handle { + // border: 1px solid #D9D9D9; + border-radius: 3px; + background: #FFF; + cursor: default; + box-shadow: inset 0 0 1px #FFF, + inset 0 1px 7px #EBEBEB, + 0 3px 6px -3px #BBB; + -webkit-transition: $general-transition-time $transition-ease; + -moz-transition: $general-transition-time $transition-ease; + -ms-transition: $general-transition-time $transition-ease; + -o-transform: $general-transition-time $transition-ease; + transition: $general-transition-time $transition-ease; +} +.noUi-active { + -webkit-transform: scale3d(1.5,1.5,1); + -moz-transform: scale3d(1.5,1.5,1); + -ms-transform: scale3d(1.5,1.5,1); + -o-transform: scale3d(1.5,1.5,1); + transform: scale3d(1.5,1.5,1); +} + +/* Disabled state; + */ + +[disabled] .noUi-connect { + background: #B8B8B8; +} +[disabled].noUi-target, +[disabled].noUi-handle, +[disabled] .noUi-handle { + cursor: not-allowed; +} + +/* Base; + * + */ +.noUi-pips, +.noUi-pips * { +-moz-box-sizing: border-box; + box-sizing: border-box; +} +.noUi-pips { + position: absolute; + color: #999; +} + +/* Values; + * + */ +.noUi-value { + position: absolute; + text-align: center; +} +.noUi-value-sub { + color: #ccc; + font-size: 10px; +} + +/* Markings; + * + */ +.noUi-marker { + position: absolute; + background: #CCC; +} +.noUi-marker-sub { + background: #AAA; +} +.noUi-marker-large { + background: #AAA; +} + +/* Horizontal layout; + * + */ +.noUi-pips-horizontal { + padding: 10px 0; + height: 80px; + top: 100%; + left: 0; + width: 100%; +} +.noUi-value-horizontal { + -webkit-transform: translate3d(-50%,50%,0); + transform: translate3d(-50%,50%,0); +} + +.noUi-marker-horizontal.noUi-marker { + margin-left: -1px; + width: 2px; + height: 5px; +} +.noUi-marker-horizontal.noUi-marker-sub { + height: 10px; +} +.noUi-marker-horizontal.noUi-marker-large { + height: 15px; +} + +/* Vertical layout; + * + */ +.noUi-pips-vertical { + padding: 0 10px; + height: 100%; + top: 0; + left: 100%; +} +.noUi-value-vertical { + -webkit-transform: translate3d(0,50%,0); + transform: translate3d(0,50%,0); + padding-left: 25px; +} + +.noUi-marker-vertical.noUi-marker { + width: 5px; + height: 2px; + margin-top: -1px; +} +.noUi-marker-vertical.noUi-marker-sub { + width: 10px; +} +.noUi-marker-vertical.noUi-marker-large { + width: 15px; +} + +.noUi-tooltip { + display: block; + position: absolute; + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #fff; + color: #000; + padding: 5px; + text-align: center; +} +.noUi-horizontal .noUi-tooltip { +-webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + left: 50%; + bottom: 120%; +} +.noUi-vertical .noUi-tooltip { +-webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + top: 50%; + right: 120%; +} + + +.slider { + + &.slider-neutral{ + & .noUi-connect, + &.noUi-connect{ + background-color: $white-color; + } + + &.noUi-target{ + background-color: rgba(255,255,255, .3); + } + + & .noUi-handle{ + background-color: $white-color; + } + } + + &.slider-primary{ + & .noUi-connect, + &.noUi-connect{ + background-color: $primary-color; + } + + &.noUi-target{ + background-color: $primary-color-opacity; + } + + & .noUi-handle{ + background-color: $brand-primary; + } + } + + &.slider-info{ + & .noUi-connect, + &.noUi-connect{ + background-color: $brand-info; + } + + &.noUi-target{ + background-color: $info-color-opacity; + } + + & .noUi-handle{ + background-color: $brand-info; + } + } + &.slider-success{ + & .noUi-connect, + &.noUi-connect{ + background-color: $brand-success; + } + + &.noUi-target{ + background-color: $success-color-opacity; + } + + & .noUi-handle{ + background-color: $brand-success; + } + } + &.slider-warning{ + & .noUi-connect, + &.noUi-connect{ + background-color: $brand-warning; + } + + &.noUi-target{ + background-color: $warning-color-opacity; + } + + & .noUi-handle{ + background-color: $brand-warning; + } + } + &.slider-danger{ + & .noUi-connect, + &.noUi-connect{ + background-color: $brand-danger; + } + + &.noUi-target{ + background-color: $danger-color-opacity; + } + + & .noUi-handle{ + background-color: $brand-danger; + } + } + +} diff --git a/web/pages/admin.ejs b/web/pages/admin.ejs index f4609a20..af63fa70 100644 --- a/web/pages/admin.ejs +++ b/web/pages/admin.ejs @@ -113,9 +113,11 @@ $.ccio.ws.on('f',function(d){ console.log(d); switch(d.f){ case'edit_sub_account': + var account = $.ccio.subs[d.uid] $.each(d.form,function(n,v){ - $.ccio.subs[d.uid][n]=v; + account[n]=v; }); + account.detailsJSON=JSON.parse(account.details); break; case'add_sub_account': $.ccio.tm(0,d,'#sub_accounts') @@ -193,7 +195,7 @@ $.sU.e.on('click','.permission',function(e){ $.pR={e:$('#permissions'),l:$('#permissionsLabel small')};$.pR.f=$.pR.e.find('form') $.pR.e.on('change','[detail="allmonitors"]',function(e){ e.e=$(this), - e.mon=$('#monitors_section,#monitors_edit_section,#video_delete_section') + e.mon=$('.permission-view') e.details=$.pR.e.find('[name="details"]') e.json=JSON.parse(e.details.val()) if(e.e.val()=='1'){ diff --git a/web/pages/blocks/header-favicon.ejs b/web/pages/blocks/header-favicon.ejs new file mode 100644 index 00000000..b8f37bcc --- /dev/null +++ b/web/pages/blocks/header-favicon.ejs @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/web/pages/blocks/header-meta.ejs b/web/pages/blocks/header-meta.ejs new file mode 100644 index 00000000..8d5d9ae8 --- /dev/null +++ b/web/pages/blocks/header-meta.ejs @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/web/pages/blocks/header.ejs b/web/pages/blocks/header.ejs index a02bd0f6..4e58fa8d 100644 --- a/web/pages/blocks/header.ejs +++ b/web/pages/blocks/header.ejs @@ -1,10 +1,6 @@ <%-lang.Shinobi%> - - - - - +<% include header-meta.ejs %> @@ -14,18 +10,7 @@ - - - - - - - - - - - - +<% include header-favicon.ejs %> diff --git a/web/pages/blocks/logs.ejs b/web/pages/blocks/logs.ejs index c857709f..d2870a63 100644 --- a/web/pages/blocks/logs.ejs +++ b/web/pages/blocks/logs.ejs @@ -8,28 +8,42 @@
    - diff --git a/web/pages/blocks/mainpermissions.ejs b/web/pages/blocks/mainpermissions.ejs index 79d1d0e0..8ef0115d 100644 --- a/web/pages/blocks/mainpermissions.ejs +++ b/web/pages/blocks/mainpermissions.ejs @@ -1,19 +1,12 @@ -
    -
    +

    <%-lang['Can View Monitor']%>
    @@ -37,7 +37,7 @@
    <% }) %>

    -
    +

    <%-lang['Can Edit Monitor']%>
    @@ -56,7 +56,7 @@
    <% }) %>

    -