/*
 * firdaus.cv — stylesheet
 *
 * Single merged file: RyanCV vendor template (bslthemes, v2.6) sections
 * first, in their original cascade order, followed by this project's own
 * overrides last (Site Overrides) so they keep winning the cascade the
 * same way the previous site.css always did as the final <link>.
 * Trimmed of every vendor file/rule with no matching element on this page
 * (popups, carousels, forms, maps — see scripts.js's own header comment
 * for the full list). Dark mode (Template Dark) is inlined as
 * html[data-theme="dark"]-scoped rules instead of a second toggled
 * stylesheet, since a single file can't be conditionally disabled.
 */


/* Vendor CSS (Basic, Layout, Font Awesome, Gradient, New Skin, Blue,
   Template Dark)
   Dark) minified below -- not source this project maintains, so keeping
   it human-formatted here has no benefit; see git history for the
   readable version each section came from. */
html{margin-right:0!important}body{margin:0;padding:0;border:none;font-family:Poppins;font-size:14px;color:#626262;background:#d8dbe2;letter-spacing:0em;font-weight:400;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}.page{position:absolute;overflow:hidden;width:100%;height:100%}@media (max-width: 1023px){.page{overflow:visible}}*{box-sizing:border-box;-webkit-box-sizing:border-box}.container{margin:-300px 0 0 -240px;position:absolute;top:50%;left:50%;width:480px;height:600px;transform:translate(0);-webkit-transform:translateX(0px);-moz-transform:translateX(0px);-o-transform:translateX(0px);transition:all .4s ease 0s;-moz-transition:all .4s ease 0s;-webkit-transition:all .4s ease 0s;-o-transition:all .4s ease 0s}.container.opened{transform:translate(-240px);-webkit-transform:translateX(-240px);-moz-transform:translateX(-240px);-o-transform:translateX(-240px)}@media (max-width: 1072px){.container{margin:-300px 0 0 -220px;width:440px}.container.opened{transform:translate(-204px);-webkit-transform:translateX(-204px);-moz-transform:translateX(-204px);-o-transform:translateX(-204px)}}@media (max-width: 1023px){.container{margin:0 auto;position:relative;top:83px;left:0;width:auto;max-width:540px;height:auto;transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none}.container.opened{transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none}}@media (max-width: 560px){.container{margin:0 5px;top:78px;width:auto;max-width:100%}}.background{position:fixed;top:0%;left:0%;width:100%;height:100%;background-position:center center;background-repeat:no-repeat;background-size:cover;background-color:#78cc6d66}.row{margin:0 -20px;position:relative;font-size:0}.row .col{padding:20px;position:relative;display:inline-block;vertical-align:top;font-size:14px}@media (min-width: 1024px){.row .col.col-d-12{width:99.996%}.row .col.col-d-11{width:91.663%}.row .col.col-d-10{width:83.333%}.row .col.col-d-9{width:74.997%}.row .col.col-d-8{width:66.664%}.row .col.col-d-7{width:58.331%}.row .col.col-d-6{width:49.998%}.row .col.col-d-5{width:41.665%}.row .col.col-d-4{width:33.332%}.row .col.col-d-3{width:24.999%}.row .col.col-d-2{width:16.666%}.row .col.col-d-1{width:8.333%}}@media (max-width: 1023px){.row .col.col-t-12{width:99.996%}.row .col.col-t-11{width:91.663%}.row .col.col-t-10{width:83.333%}.row .col.col-t-9{width:74.997%}.row .col.col-t-8{width:66.664%}.row .col.col-t-7{width:58.331%}.row .col.col-t-6{width:49.998%}.row .col.col-t-5{width:41.665%}.row .col.col-t-4{width:33.332%}.row .col.col-t-3{width:24.999%}.row .col.col-t-2{width:16.666%}.row .col.col-t-1{width:8.333%}}.row:after{content:"";display:block;clear:both}.border-line-h:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad5b3,#fff0 70%)}.preloader{position:fixed;top:0;left:0;width:100%;height:100%;text-align:center;background:#fff;z-index:1000}.preloader .spinner{position:relative;display:inline-block;width:40px;height:40px}.preloader .spinner .double-bounce1,.preloader .spinner .double-bounce2{position:absolute;top:0;left:0;width:100%;height:100%;background:#78cc6d;opacity:1;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;-khtml-border-radius:50%}.preloader .spinner .double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s;opacity:.1}h1,h2,h3,h4,h5,h6{margin:0 0 5px;font-family:Poppins;font-size:25px;color:#171717;line-height:33px;font-weight:500}p{font-size:14px;line-height:1.6;padding:0;margin:0 0 20px}strong{font-weight:500}.lnks{position:absolute;bottom:0;left:0;width:100%;height:70px;z-index:10}.lnks:before{content:"";position:absolute;left:0;top:0;width:100%;height:1px;background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad5b3,#fff0 70%)}.lnk,.button{position:relative;float:left;width:50%;height:70px;line-height:70px;font-size:12px;color:#171717;font-weight:500;text-align:center;text-decoration:none;text-transform:uppercase;border:none}.lnk:before,.button:before{content:"";position:absolute;right:0;top:0;width:1px;height:100%;background:-moz-radial-gradient(top,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#c5cad5b3,#fff0 70%)}.lnk .ion,.button .ion,.lnk .arrow,.button .arrow{margin:0 0 0 8px;position:relative;top:-2px;display:inline-block;vertical-align:middle;font-size:18px;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.lnk .arrow,.button .arrow{top:-1px;width:14px;height:2px}.lnk .arrow:before,.button .arrow:before,.lnk .arrow:after,.button .arrow:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:#171717;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.lnk .arrow:after,.button .arrow:after{inset:auto 0 3px auto;width:8px;height:2px;transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg)}.lnk .text,.button .text{transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.lnk:last-child:before,.button:last-child:before{display:none}.lnk:hover,.button:hover,.lnk:hover .ion,.button:hover .ion{color:#78cc6d}.lnk:hover .arrow:before,.button:hover .arrow:before,.lnk:hover .arrow:after,.button:hover .arrow:after{background:#78cc6d}a{color:#626262;text-decoration:none;opacity:1;outline:none}a:hover{text-decoration:none;color:#78cc6d}ol,ul{list-style:none;margin-top:0;margin-bottom:0;padding-left:0}ul ul,ul ol,ol ol,ol ul,li{margin-bottom:0}input,textarea,button{margin:0;padding:0;display:block;font-family:Poppins;font-size:13px;width:100%;height:60px;color:#171717;background:none;border:none;border-bottom:1px solid #d8dbe2;-webkit-appearance:none;-moz-appearance:none;appearance:none;resize:none;outline:0;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s;border-radius:0;-moz-border-radius:0px;-webkit-border-radius:0px;-khtml-border-radius:0px}input:focus,textarea:focus,button:focus{color:#171717;border-bottom:1px solid #78cc6d}button{width:auto;display:inline-block;vertical-align:top;color:#171717;border-bottom:1px solid #d8dbe2;text-align:left;cursor:pointer}button:hover{border-bottom:1px solid #78cc6d}label,legend{display:block;padding-bottom:10px;font-family:Poppins;font-size:14px}input[type=checkbox],input[type=radio]{display:inline}input:focus::-webkit-input-placeholder,textarea:focus::-webkit-input-placeholder{color:#171717}input:focus:-moz-placeholder,textarea:focus:-moz-placeholder{color:#171717}input:focus::-moz-placeholder,textarea:focus::-moz-placeholder{color:#171717}input:focus:-ms-input-placeholder,textarea:focus:-ms-input-placeholder{color:#171717}.full-width{max-width:100%!important;width:100%!important}.centrize{display:table!important;table-layout:fixed!important;height:100%!important;position:relative!important}.vertical-center{display:table-cell!important;vertical-align:middle!important}.clear{clear:both}@-webkit-keyframes FlipIn{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,0deg);transform:perspective(400px) rotateY(0);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes FlipIn{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,0deg);transform:perspective(400px) rotateY(0);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes FlipOut{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotateY(-5deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes FlipOut{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotateY(-5deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@-webkit-keyframes sk-bounce{0%,to{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.header{position:absolute;left:-80px;top:15px;width:72px;z-index:100;text-align:center;opacity:1;visibility:visible;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.header.active{opacity:1!important;visibility:visible!important}.header .menu-btn{margin-bottom:8px;position:relative;display:block;height:72px;text-align:center;background:#fff;border-radius:4px;-webkit-border-radius:4px;z-index:2}.header .menu-btn span{margin-left:-13px;margin-top:-1px;position:absolute;left:50%;top:50%;display:block;width:26px;height:2px;background:#323232;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.header .menu-btn span:before,.header .menu-btn span:after{content:"";position:absolute;left:0;top:-7px;width:80%;height:100%;background:#323232;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.header .menu-btn span:after{top:auto;bottom:-7px;width:60%}.header .menu-btn:hover span,.header .menu-btn:hover span:before,.header .menu-btn:hover span:after{background:#78cc6d}.header .menu-btn:hover span:before{width:100%}.header .menu-btn:hover span:after{width:100%}.header .top-menu{width:100%;font-size:0}.header .top-menu ul li{display:block;transition:color .3s ease 0s;-moz-transition:color .3s ease 0s;-webkit-transition:color .3s ease 0s;-o-transition:color .3s ease 0s}.header .top-menu ul li:first-child a{border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;-khtml-border-radius:4px 4px 0 0}.header .top-menu ul li:last-child a{border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-khtml-border-radius:0 0 4px 4px;border:none}.header .top-menu ul li:last-child a:before{display:none}.header .top-menu ul li a{position:relative;overflow:hidden;display:block;height:72px;color:#171717;text-align:center;background:#fff}.header .top-menu ul li a:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:-moz-radial-gradient(right,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(right,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at right,#c5cad5b3,#fff0 70%)}.header .top-menu ul li a .icon{margin:-27px 0 0 -20px;position:absolute;top:50%;left:50%;width:40px;height:40px;font-size:20px;color:#171717;line-height:40px;border-radius:30px;-moz-border-radius:30px;-webkit-border-radius:30px;-khtml-border-radius:30px;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.header .top-menu ul li a .link{position:absolute;left:0;top:57%;width:100%;display:block;font-size:11px;font-weight:500;text-transform:uppercase;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.header .top-menu ul li:hover a,.header .top-menu ul li.active a,.header .top-menu ul li:hover a .icon,.header .top-menu ul li.active a .icon,.header .top-menu ul li:hover a .link,.header .top-menu ul li.active a .link{color:#78cc6d}.header .profile{padding:10px 62px 10px 18px;width:auto;height:64px;text-align:left;display:none}.header .profile .image{margin-right:14px;float:left;width:44px;font-size:0}.header .profile .image img{width:100%;height:auto;border-radius:100%;-webkit-border-radius:100%}.header .profile .title{font-size:15px;color:#323232;font-weight:500;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.header .profile .subtitle{font-size:12px;color:#78cc6d;line-height:14px;font-weight:400;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.no-sidebar .header .menu-btn,.disable-sidebar .header .menu-btn{display:none}@media (max-width: 1023px){.header{position:fixed;left:0;top:-4px;width:100%;height:72px;display:flex;align-items:center;justify-content:center}.header .top-menu{margin:0 auto;max-width:540px;display:flex;box-shadow:0 0 25px #0000000d}.header .top-menu ul{display:flex;width:100%}.header .top-menu ul li{display:block;width:100%}.header .top-menu ul li:first-child a{border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px 0 0 4px;-khtml-border-radius:4px 0 0 4px}.header .top-menu ul li:last-child a{border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-khtml-border-radius:0 4px 4px 0}.header .top-menu ul li a:before{content:"";position:absolute;left:0;bottom:0;width:1px;height:100%;background:-moz-radial-gradient(top,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#c5cad5b3,#fff0 70%)}.header .top-menu ul li:last-child a:before{display:block}.disable-sidebar.no-sticky-menu .header .menu-btn,.no-sidebar .no-sticky-menu .header .menu-btn{height:62px;visibility:visible;opacity:1;display:block}}@media (max-width: 560px){.header{padding:0 5px;width:100%}.header .top-menu{max-width:100%}.header .profile{display:block}.header .menu-btn{position:absolute;right:0;top:0;width:62px;height:62px}}.card-started{position:relative;width:100%;height:600px;z-index:11;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.card-started:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;box-shadow:10px 10px 15px #0000000d;border-radius:0 0 4px;-moz-border-radius:0 0 4px 0;-webkit-border-radius:0 0 4px 0;-khtml-border-radius:0 0 4px 0}.card-started:after{content:"";position:absolute;left:-15px;top:-15px;width:100%;height:100%;background:-moz-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:linear-gradient(135deg,#78cc6d66,#78cc6d03);border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.card-started .profile{padding:210px 50px 50px;position:relative;height:100%;background:#fff;text-align:center;z-index:10;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.card-started .profile.no-photo{padding-top:340px}.card-started .profile.no-photo .image{display:none}.card-started .profile .slide{position:absolute;overflow:hidden;left:0;top:0;width:100%;height:300px;background-color:#626262;background-repeat:no-repeat;background-position:center center;background-size:cover;border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;-khtml-border-radius:4px 4px 0 0}.card-started .profile .slide:before,.card-started .profile .slide:after{content:"";position:absolute;left:-25%;bottom:-198px;width:700px;height:200px;background:#fff;transform:rotate(12deg);-webkit-transform:rotate(12deg);-moz-transform:rotate(12deg);-o-transform:rotate(12deg)}.card-started .profile .slide:after{left:auto;right:-25%;transform:rotate(-6deg);-webkit-transform:rotate(-6deg);-moz-transform:rotate(-6deg);-o-transform:rotate(-6deg)}.card-started .profile .image{margin:0 0 20px;position:relative;display:inline-block;width:140px}.card-started .profile .image:before{content:"";position:absolute;top:10px;left:-10px;width:100%;height:100%;background:-moz-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:linear-gradient(135deg,#78cc6d66,#78cc6d03);border-radius:100%;-moz-border-radius:100%;-webkit-border-radius:100%;-khtml-border-radius:100%}.card-started .profile .image img{position:relative;display:block;width:100%;height:auto;border:3px solid #ffffff;border-radius:100%;-moz-border-radius:100%;-webkit-border-radius:100%;-khtml-border-radius:100%}.card-started .profile .title{margin:0 0 10px;font-size:32px;color:#171717;line-height:32px;font-weight:400}.card-started .profile .subtitle{margin:0 0 15px;font-size:14px;color:#78cc6d;line-height:14px;font-weight:400}.card-started .profile .social a{margin:0 6px;display:inline-block;vertical-align:middle}.card-started .profile .social a .ion,.card-started .profile .social a .fab,.card-started .profile .social a .fas{font-size:16px;color:#171717;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.card-started .profile .social a:hover .ion,.card-started .profile .social a:hover .fab,.card-started .profile .social a:hover .fas{color:#78cc6d}.card-started .profile .lnk.active.discover .arrow{transform:scaleX(-1);-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-o-transform:scaleX(-1)}@media (max-width: 560px){.card-started{height:480px}.card-started:after{display:none}.card-started .profile{padding:135px 25px 25px}.card-started .profile.no-photo{padding-top:250px}.card-started .profile .slide{height:200px}.card-started .profile .image{margin:0 0 15px;width:124px}.card-started .profile .title{font-size:28px;line-height:28px}}.card-inner{padding:0;position:absolute;overflow:hidden;left:95%;top:15px;width:120%;height:570px;background:#fff;transform-origin:center left;opacity:0;visibility:hidden;z-index:8;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;transition:visibility 1s linear,opacity .5s linear;-moz-transition:visibility 1s linear,opacity .5s linear;-webkit-transition:visibility 1s linear,opacity .5s linear;-o-transition:visibility 1s linear,opacity .5s linear}.card-inner.animated{opacity:1;visibility:visible;z-index:9}.card-inner.active{opacity:1;visibility:visible;z-index:10}.card-inner.hidden{opacity:0;visibility:hidden;z-index:9}.card-inner:before,.card-inner:after{content:"";position:absolute;top:0;left:0;right:20px;height:20px;background:#fff;z-index:10}.card-inner:after{top:auto;bottom:0}.card-inner .card-wrap{padding:30px 30px 30px 60px;position:relative;overflow-x:hidden;height:100%}@media (max-width: 1072px){.card-inner{width:115%}}@media (max-width: 1023px){.card-inner{position:relative;margin:15px 0;left:0;top:0;width:auto;height:auto;opacity:1;visibility:visible}.card-inner .card-wrap{padding:30px 30px 30px 40px;overflow:visible;height:auto}.card-inner:last-child{margin-bottom:50px}}@media (max-width: 560px){.card-inner{margin:10px 0}.card-inner .card-wrap{padding:30px}.card-inner:last-child{margin-bottom:10px}}.content{margin:0 0 60px;position:relative}.content:last-child{margin-bottom:0}.content .title{margin:0 0 15px;padding:0 0 5px;position:relative;font-size:17px;color:#171717;line-height:21px;font-weight:500}.content .title:before{content:"";position:absolute;left:-12px;top:-4px;width:30px;height:30px;background:-moz-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:linear-gradient(135deg,#78cc6d66,#78cc6d03);z-index:-1;border-radius:30px;-moz-border-radius:30px;-webkit-border-radius:30px;-khtml-border-radius:30px}.content .title:after{content:"";position:absolute;left:-60px;bottom:-15px;width:95%;height:1px;background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad5b3,#fff0 70%)}.service-items .service-item .icon{margin:0;width:60px;height:60px;text-align:center;font-size:32px;color:#78cc6d;background:-moz-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:linear-gradient(135deg,#78cc6d66,#78cc6d03);border-radius:60px;-moz-border-radius:60px;-webkit-border-radius:60px;-khtml-border-radius:60px}.service-items .service-item .icon .ion,.service-items .service-item .icon .fab,.service-items .service-item .icon .fas{display:block;line-height:60px}.service-items .service-item .name{margin:15px 0 10px;font-size:13px;color:#171717;font-weight:500;text-transform:uppercase}@media (max-width: 560px){.service-items .col:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad5b3,#fff0 70%)}}.pricing-items .pricing-item .icon{margin:0 auto;width:40px;height:40px;text-align:center;font-size:32px;color:#78cc6d}.pricing-items .pricing-item .icon .ion,.pricing-items .pricing-item .icon .fab,.pricing-items .pricing-item .icon .fas{display:block;line-height:40px}.pricing-items .pricing-item .name{margin:0 0 30px;font-size:13px;color:#171717;font-weight:500;text-transform:uppercase}.pricing-items .pricing-item .lnks .lnk{float:none;width:100%;display:block}.fuct-items .fuct-item .icon{margin:0 auto;width:60px;height:60px;text-align:center;font-size:32px;color:#78cc6d}.fuct-items .fuct-item .icon .ion,.fuct-items .fuct-item .icon .fab,.fuct-items .fuct-item .icon .fas{display:block;line-height:60px}.fuct-items .fuct-item .name{margin:0;font-size:13px;color:#171717;font-weight:500;text-transform:uppercase}.resume-title .icon,.skill-title .icon{position:relative;top:-15px;float:left;width:40px;height:40px;font-size:32px;color:#78cc6d;background:#fff}.resume-title .icon .ion,.skill-title .icon .ion,.resume-title .icon .fab,.skill-title .icon .fab,.resume-title .icon .fas,.skill-title .icon .fas{display:block;line-height:40px}.resume-title .name,.skill-title .name{margin:0 0 0 40px;font-size:13px;line-height:13px;color:#171717;font-weight:500;text-transform:uppercase}.resume-items .resume-item{position:relative;padding:20px 0}.resume-items .resume-item:after{left:-20px}.resume-items .resume-item.active .date{color:#78cc6d}.resume-items .resume-item.active .date:before{background:#78cc6d}.resume-items .resume-item .date{margin:0 0 10px;padding:0;position:relative;display:inline-block;font-size:11px;line-height:18px;color:#d8dbe2;font-weight:500;text-transform:uppercase;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.resume-items .resume-item .date:before{content:"";position:absolute;left:-25px;top:4px;width:9px;height:9px;background:#d8dbe2;border-radius:9px;-moz-border-radius:9px;-webkit-border-radius:9px;-khtml-border-radius:9px}.resume-items .resume-item .name{margin:0;font-size:13px;color:#171717;font-weight:500;text-transform:uppercase}.resume-items .resume-item .company{margin:0 0 10px;font-size:11px;color:#999;font-weight:300;text-transform:uppercase}.resume-items .resume-item p{margin:0}.skills-list ul li .name{margin:0 0 8px;font-size:14px;line-height:14px;color:#626262}.content.works .filter-menu{position:absolute;top:-9px;right:0}.content.works .filter-menu .f_btn{margin:0 0 0 15px;padding:0;position:relative;display:inline-block;vertical-align:top;height:40px;line-height:40px;font-size:13px;color:#626262;cursor:pointer;border:none}.content.works .filter-menu .f_btn.active{color:#78cc6d}.content.works .filter-menu .f_btn label{cursor:pointer}.content.works .grid-items.border-line-v:after{margin:0 0 0 -1px;content:"";position:absolute;left:50%;top:0;width:1px;height:100%;background:-moz-radial-gradient(top,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,rgba(197,202,213,.7) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#c5cad5b3,#fff0 70%)}@media (max-width: 560px){.content.works .filter-menu{top:35px;left:0;right:auto}.content.works .filter-menu button{margin:0 15px 0 0}.content.works .grid-items.border-line-v:after{display:none}}.box-item{position:relative;overflow:hidden;text-align:center}.box-item .image{position:relative}.box-item .image a{display:block;font-size:0}.box-item .image a img{position:relative;width:100%;height:auto}.box-item .image .info{position:absolute;left:0;top:0;width:100%;height:100%;display:block;opacity:0;text-align:center;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.box-item .image .info:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:-moz-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(120,204,109,.4) 0%,rgba(120,204,109,.01) 100%);background:linear-gradient(135deg,#78cc6d66,#78cc6d03);transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.box-item .image .info .ion,.box-item .image .info .fab,.box-item .image .info .fas{margin:-16px 0 0 -16px;position:absolute;left:50%;top:50%;width:32px;height:32px;font-size:32px;line-height:32px;color:#fff;transition:all .1s ease-in .4s;-moz-transition:all .1s ease-in .4s;-webkit-transition:all .1s ease-in .4s;-o-transition:all .1s ease-in .4s}.box-item .desc{padding:15px 45px 0;position:relative}.box-item .desc .name{padding:0 0 2px;display:block;font-size:13px;color:#171717;font-weight:500;text-transform:uppercase}.box-item .desc .category{margin:0;font-size:11px;color:#999;font-weight:300;text-transform:uppercase}.box-item .date{padding:10px 0 0;position:absolute;left:20px;bottom:20px;width:50px;height:50px;font-size:11px;line-height:11px;color:#171717;text-align:center;font-weight:500;text-transform:uppercase;background:#fff}.box-item .date strong{display:block;font-size:20px;line-height:20px;color:#171717;font-weight:700}.box-item:hover .image .info{opacity:1}.content.contacts .map{margin:0 0 20px;height:190px}.mfp-wrap.popup-box-inline .content{margin-bottom:40px}.mfp-wrap.popup-box-inline .image{padding:0 0 40px;font-size:0}.mfp-wrap.popup-box-inline .image img{width:100%;height:auto}.mfp-wrap.popup-box-inline .desc{padding:0 40px}.mfp-wrap.popup-box-inline .desc .post-box .blog-content{margin:0}.mfp-wrap.popup-box-inline .desc .lnk,.mfp-wrap.popup-box-inline .desc .button{height:30px;line-height:30px}.card-inner.blog-post{-webkit-animation:none;animation:none}.content.works .filter-menu .f_btn input{position:absolute;left:0;top:0;opacity:0}.header .top-menu ul li a{padding:10px 0 14px;height:auto}.header .top-menu ul li a .icon{margin:0 auto;position:relative;top:0;left:0;height:auto;line-height:normal}.header .top-menu ul li a .link{position:relative;left:0;top:0;width:100%;line-height:13px}@media (max-width: 1023px){.header .top-menu ul li a{padding-bottom:0;height:75px}}.revs-carousel .owl-dot.active{background:#78cc6d}.revs-item .text{margin-bottom:30px;padding:0 30px;position:relative;font-weight:300;font-style:italic;opacity:.65}.revs-item .text:before,.revs-item .text:after{content:"";position:absolute;left:3px;top:3px;width:14px;height:14px;background:url(../images/quote.svg) no-repeat;background-size:contain;opacity:.65}.revs-item .text:after{inset:auto 3px 3px auto;transform:scale(-1);-webkit-transform:scale(-1)}.revs-item .info .name{margin:6px 0 0;font-size:17px;font-weight:500;color:#323232}.revs-item .info .company{font-size:14px;color:#999;font-weight:400}.card-inner{transition:visibility 1s linear,opacity 0s linear;-moz-transition:visibility 1s linear,opacity 0s linear;-webkit-transition:visibility 1s linear,opacity 0s linear;-o-transition:visibility 1s linear,opacity 0s linear}.content.works .filter-menu .f_btn input{cursor:pointer}.content.skills .row .col.col-d-12 .skills-list.circles ul li,.content.skills .row .col.col-t-12 .skills-list.circles ul li{width:24%}.skills-list.circles ul li .name{position:absolute;top:130px;left:0;width:100%;text-align:center}.skills-list.list ul li .name{padding-left:30px;margin-bottom:0;position:relative}.skills-list.list ul li .name:before{content:"\f121";position:absolute;left:0;top:0;display:inline-block;font-family:Ionicons;color:#78cc6d;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.content-sidebar.active{left:0}.content-sidebar .profile{padding-top:150px;padding-bottom:0;height:auto}.content-sidebar .profile.no-photo{padding-top:270px}.content-sidebar .profile .slide{height:250px}.content-sidebar .main-menu ul li .icon{margin-right:10px;font-size:16px}.content-sidebar h2.widget-title .first-word{color:#78cc6d}.content-sidebar h2.widget-title:first-letter,.content-sidebar h2.widget-title .first-letter:first-letter{color:#78cc6d}@media (max-width: 680px){.content-sidebar.active{left:0}.post-comments .post-comment .desc .name a{display:block}.post-comments .post-comment .desc .comment-time,.post-comments .post-comment .desc .comment-date{margin:0}.post-comments .post-comment .desc span.comment-reply{position:relative;top:4px;display:block}.header .menu-btn{margin-bottom:0}}.background.gradient{background:#50a3a2;background:-webkit-linear-gradient(top left,#50a3a2 0%,#78cc6d 100%);background:linear-gradient(to bottom right,#50a3a2,#78cc6d);position:fixed;overflow:hidden;top:0;left:0;width:100%;height:100%}.bg-bubbles{position:absolute;top:0;left:0;width:100%;height:100%}.bg-bubbles li{position:absolute;list-style:none;display:block;width:80px;height:80px;background-color:#ffffff1a;bottom:-320px;-webkit-animation:square 50s infinite;animation:square 50s infinite;-webkit-transition-timing-function:linear;transition-timing-function:linear;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.bg-bubbles li:nth-child(1){left:10%}.bg-bubbles li:nth-child(2){left:20%;width:160px;height:160px;-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-duration:34s;animation-duration:34s}.bg-bubbles li:nth-child(3){left:25%;-webkit-animation-delay:4s;animation-delay:4s}.bg-bubbles li:nth-child(4){left:40%;width:120px;height:120px;-webkit-animation-duration:44s;animation-duration:44s}.bg-bubbles li:nth-child(5){left:70%}.bg-bubbles li:nth-child(6){left:80%;width:240px;height:240px;-webkit-animation-delay:3s;animation-delay:3s}.bg-bubbles li:nth-child(7){left:32%;width:320px;height:320px;-webkit-animation-delay:7s;animation-delay:7s}.bg-bubbles li:nth-child(8){left:55%;width:40px;height:40px;-webkit-animation-delay:15s;animation-delay:15s;-webkit-animation-duration:80s;animation-duration:80s}.bg-bubbles li:nth-child(9){left:25%;width:20px;height:20px;-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-duration:80s;animation-duration:80s}.bg-bubbles li:nth-child(10){left:90%;width:320px;height:320px;-webkit-animation-delay:22s;animation-delay:22s}@-webkit-keyframes square{0%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-1500px) rotate(600deg);transform:translateY(-1500px) rotate(600deg)}}@keyframes square{0%{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-1500px) rotate(600deg);transform:translateY(-1500px) rotate(600deg)}}body{font-size:16px;color:#646464;background:#fff}h1,h2,h3,h4,h5,h6{margin:0 0 25px;font-size:30px;color:#323232;line-height:1.4em;font-weight:600}h2{font-size:24px}h3{font-size:22px}p{font-size:16px;line-height:1.8em;padding:0;margin:0 0 25px}@media (max-width: 680px){h1,h2,h3,h4,h5,h6{font-size:26px}h2{font-size:23px}h3{font-size:20px}}::-webkit-scrollbar-track{-webkit-box-shadow:none;background-color:transparent}::-webkit-scrollbar{width:6px;background-color:transparent}::-webkit-scrollbar-thumb{background-color:#00000080;-webkit-border-radius:6px;border-radius:6px}.card-inner .card-wrap,.content-sidebar .sidebar-wrap,.profile .main-menu-fixed .main-menu{height:100%;overflow:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.page{position:relative;height:100%;width:100%;display:flex;justify-content:center;align-items:center}.container{margin:max(30px,calc(8vh - 10px)) 6vw;position:relative;top:0;left:0;width:100%;height:84vh;max-width:1268px;max-height:674px}.container.opened{transform:translate(0);-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0)}@media (max-width: 1199px){body{overflow:visible}.container{padding:0 15px 0 123px;position:relative;top:20px;left:0;width:auto;max-width:100%;margin:0 auto;max-width:700px;max-height:initial;height:auto;transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none}.container.opened{transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none}.page{height:auto;display:block}}@media (max-width: 560px){.container{top:0;width:auto;max-width:100%;margin:0 auto;padding:60px 0 0;max-width:400px}.container.opened{margin-left:auto;margin-right:auto}}.row{margin:0 -30px;position:relative;font-size:0}.row.border-line-v:before{display:none}.row .col.border-line-v:first-child:before{display:none}.row .col{padding:30px;font-size:16px}.row .col .col{padding-top:0;padding-bottom:20px}@media (max-width: 1199px){.row .col.col-t-12{width:99.996%}.row .col.col-t-11{width:91.663%}.row .col.col-t-10{width:83.333%}.row .col.col-t-9{width:74.997%}.row .col.col-t-8{width:66.664%}.row .col.col-t-7{width:58.331%}.row .col.col-t-6{width:49.998%}.row .col.col-t-5{width:41.665%}.row .col.col-t-4{width:33.332%}.row .col.col-t-3{width:24.999%}.row .col.col-t-2{width:16.666%}.row .col.col-t-1{width:8.333%}}@media (max-width: 560px){.row .col.col-m-12{width:99.996%}.row .col.col-m-11{width:91.663%}.row .col.col-m-10{width:83.333%}.row .col.col-m-9{width:74.997%}.row .col.col-m-8{width:66.664%}.row .col.col-m-7{width:58.331%}.row .col.col-m-6{width:49.998%}.row .col.col-m-5{width:41.665%}.row .col.col-m-4{width:33.332%}.row .col.col-m-3{width:24.999%}.row .col.col-m-2{width:16.666%}.row .col.col-m-1{width:8.333%}}.border-line-h:after{background:-moz-radial-gradient(center,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(center,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at center,#ddd,#fff0 70%)}p{font-size:16px;line-height:1.8em;margin:0 0 25px}strong{font-weight:600}.lnks{display:flex;flex-direction:row}.lnks:before{background:-moz-radial-gradient(center,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(center,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at center,#ddd,#fff0 70%)}.lnk,.button,input[type=submit]{display:block;float:none;width:100%;font-size:14px;color:#323232}.lnk:before,.button:before{background:-moz-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#ddd,#fff0 70%)}.lnk .arrow:before,.button .arrow:before,.lnk .arrow:after,.button .arrow:after{background:#323232}.button .text{padding-left:14px}input,textarea,button,input[type=submit]{padding:0 15px;font-size:16px;height:50px;color:#323232;border:2px solid #eeeeee}input:focus,textarea:focus{color:#323232;border:2px solid #78cc6d}button{color:#323232;border-bottom:1px solid #eeeeee;transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}input[type=submit]{padding:0 30px;border:1px solid #eeeeee;height:50px;line-height:50px;cursor:pointer;transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none;background:#eee;border-radius:4px;-webkit-border-radius:4px}input[type=checkbox],input[type=radio]{width:auto;height:auto;margin-right:5px}input[type=checkbox]{-webkit-appearance:checkbox}input[type=radio]{-webkit-appearance:radio}input[type=file]{padding:0;border:none;height:auto}.header{margin-right:8px;position:relative;left:0;top:15px;float:left}.disable-sidebar .header .menu-btn,.no-sidebar .header .menu-btn{height:0;visibility:hidden;opacity:0}.header .top-menu ul{margin:0;padding:0}.header .top-menu ul li a{padding:13px 3px;height:100%;color:#323232;font-size:12px;font-weight:500;text-transform:uppercase}.header .top-menu ul li a:before{background:-moz-radial-gradient(right,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(right,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at right,#ddd,#fff0 70%)}.header .top-menu ul li a .icon{margin:0 auto;position:relative;top:0;left:0;display:block;width:40px;height:30px;font-size:20px;color:#323232;line-height:30px}.header .top-menu ul li ul{display:none}@media (max-width: 1199px){.header{margin-left:-108px;position:fixed;left:auto;top:20px;width:72px;max-width:72px;height:auto;display:block;background:transparent}.header .top-menu{margin:0 auto;max-width:100%;display:block;box-shadow:none}.header .top-menu ul,.header .top-menu ul li{display:block;width:100%}.header .top-menu ul li:first-child a{border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;-khtml-border-radius:4px 4px 0 0}.header .top-menu ul li.last a{border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-khtml-border-radius:0 0 4px 4px}.header .top-menu ul li a:before{content:"";position:absolute;left:0;top:0;bottom:auto;width:100%;height:1px;background:-moz-radial-gradient(right,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(right,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at right,#ddd,#fff0 70%)}.header .top-menu ul li:last-child a:before{display:block}}#settings-toggle{border-radius:4px}#settings-toggle[aria-expanded=true]{border-radius:4px 0 0 4px}@media (max-width: 560px){.header{margin-right:0;margin-left:0;padding:0;position:fixed;left:0;right:0;top:0;width:auto;height:64px;max-width:100%;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-khtml-border-radius:0}.header.fixed{position:fixed;top:0;left:0;right:0}.header .top-menu{position:relative;margin-top:-4px;max-width:100%;display:flex;box-shadow:0 5px 10px #0000000d;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.05)}.header .top-menu:before{content:"";position:absolute;left:0;top:0;bottom:auto;width:100%;height:1px;background:-moz-radial-gradient(left,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#ddd,#fff0 70%);z-index:2}.header .top-menu ul{display:flex;overflow:auto}.header .top-menu ul li{min-width:20%}.header .top-menu ul li a{padding:13px 7px}.header .top-menu ul li a:before{width:1px;height:100%;background:-moz-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#ddd,#fff0 70%)}.header .top-menu ul li:first-child a:before{display:none}.header .top-menu ul li:last-child a{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-khtml-border-radius:0}.header .top-menu ul{background:#fff}#settings-toggle,#settings-toggle[aria-expanded=true]{border-radius:0}.settings-dropdown{border-radius:0!important}}.card-started{position:relative;float:left;width:480px;height:100%}.card-started .profile{padding:50px;position:relative;left:0%;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.card-started .profile.no-photo{padding-top:50px}.card-started .profile.no-photo .title{margin-top:240px}.card-started .profile .slide{height:52%}.card-started .profile.no-photo .slide{height:57%}.card-started .profile .slide:before,.card-started .profile .slide:after{left:-25%;bottom:-63%;width:100%;height:70%}.card-started .profile .slide:after{left:auto;right:-25%;transform:rotate(-8deg);-webkit-transform:rotate(-8deg);-moz-transform:rotate(-8deg);-o-transform:rotate(-8deg)}.card-started .profile .image{margin:80px 0 20px;width:146px}.card-started .profile .title,.content-sidebar .profile .title{font-size:34px;color:#323232}.card-started .profile .subtitle,.card-started .profile .typed-cursor{position:relative;margin:0;display:inline-block;color:#78cc6d;font-size:16px;line-height:20px;height:20px;font-weight:400}.card-started .profile .social{position:relative;margin:16px 0 0}.card-inner{padding:0;position:absolute;overflow:hidden;inset:15px 0 15px 560px;width:auto;height:auto;border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0 4px 4px 0;-khtml-border-radius:0 4px 4px 0;transition:visibility 1s linear,opacity 0s linear;-moz-transition:visibility 1s linear,opacity 0s linear;-webkit-transition:visibility 1s linear,opacity 0s linear;-o-transition:visibility 1s linear,opacity 0s linear}.card-inner:before,.card-inner:after{height:30px}.card-inner .card-wrap{padding:30px 30px 0;position:relative}@media (max-width: 1199px){.card-started{position:relative;float:none;width:auto;height:auto}.card-inner{position:relative;margin:15px 0;left:0;top:0;width:auto;height:auto;opacity:1;visibility:visible;border-radius:4px}.card-inner .card-wrap{overflow:visible;height:auto}.header .top-menu ul li:last-child a:before{display:block}.card-started .profile.no-photo .slide{height:55%}.card-started .profile.no-photo .title{margin-top:200px}}@media (max-width: 560px){.card-inner{border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px}.card-inner .card-wrap{padding:30px}.card-inner:last-child{margin-bottom:10px}.card-started .profile{height:calc(100vh - 102px);min-height:560px}}.content{margin:0 0 40px}.content:last-child{margin-bottom:30px}.content .title{margin:0;padding:0 0 30px;font-size:20px;color:#323232;line-height:21px;min-height:51px;font-weight:600;z-index:2}.content .title.no-title:before{display:none}.content .title .first-word{color:#78cc6d}.content .title:first-letter,.content .title .first-letter:first-letter{color:#78cc6d}.content .post-comments .title .first-word{color:#323232}.content .post-comments .title:first-letter,.content .post-comments .first-letter:first-letter{color:#323232}.content .title:before{background:-moz-linear-gradient(-45deg,rgba(46,202,127,.15) 0%,rgba(46,202,127,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(46,202,127,.15) 0%,rgba(46,202,127,.01) 100%);background:linear-gradient(135deg,#2eca7f26,#2eca7f03)}.content .title:after{left:-30px;right:0;bottom:-4px;width:auto;background:-moz-radial-gradient(left,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#ddd,#fff0 70%)}.text-box p{margin-top:0}.content.about p{margin-bottom:0}.content.contacts .info-list ul{margin:-11px -30px 0;font-size:0}.content.contacts .info-list ul li{padding:11px 30px;display:inline-block;vertical-align:top;width:50%}.content.contacts .info-list ul li:first-child{padding-top:11px}.content.contacts .info-list ul li:last-child{padding-bottom:11px}.content.contacts .info-list ul li:last-child:before{display:block}@media (max-width: 1199px){.content.about .row .col:first-child{padding-bottom:0}.info-list ul li,.content.contacts .info-list ul li{padding:11px 30px;display:block;width:100%}.content.about .info-list ul{margin:-11px -30px 0}}@media (max-width: 560px){.content.about .info-list ul{margin:-11px -30px 0}.content.contacts .info-list ul{margin:-11px auto 0}.content.contacts .info-list ul li{padding:11px 0;display:block;vertical-align:top;width:auto}.content.contacts .info-list ul li:first-child{padding-top:11px}.content.contacts .info-list ul li:last-child{padding-bottom:11px}.content.contacts .info-list ul li:last-child:before{display:block}}.service-items .service-item .icon{margin:0 auto;color:#fff!important;background:#78cc6d!important}.service-items .service-item .name{margin:10px 0 5px;font-size:17px;color:#323232;font-weight:500;text-transform:none}@media (max-width: 560px){.service-items .col:last-child:after{display:none}}.pricing-items .pricing-item .name{color:#323232;font-size:17px;text-transform:none}.pricing-items .pricing-item .lnks .lnk .ion{top:-2px}.fuct-items .fuct-item .name{margin:0;font-size:16px;font-weight:400;color:#646464;text-transform:none}.resume-title .icon,.skill-title .icon{top:-13px}.resume-title .name,.skill-title .name{line-height:14px;color:#323232;font-size:17px}.resume-title .name:first-child,.skill-title .name:first-child{margin-left:0}.resume-items .resume-item{padding:30px 0}.resume-items .resume-item:after{left:0}.resume-items .resume-item:last-child{padding-bottom:0}.resume-items .resume-item:last-child:after{display:none}.resume-items .resume-item.active .date{border-color:#78cc6d}.resume-items .resume-item .date{margin:0 0 11px;padding:0 5px;font-size:13px;line-height:18px;color:#ccc;font-weight:400;text-transform:none;border:1px solid #eeeeee}.resume-items .resume-item .date:before{display:none}.resume-items .resume-item .name{font-size:17px;color:#323232;font-weight:500;text-transform:none}.resume-items .resume-item .company{margin:0;font-size:14px;color:#999;font-weight:400;text-transform:none}.resume-items .resume-item p{margin:8px 0 0;line-height:normal;font-size:14px}.skills-list.list ul li .name{font-size:16px;line-height:18px}.content.works .border-line-h:after{display:none}.content.works .filter-menu{font-weight:400;z-index:2}.content.works .filter-menu .f_btn{font-size:14px;color:#646464}.content.works .filter-menu .f_btn input{position:absolute;left:0;top:0;opacity:0;cursor:pointer}.content.works .grid-items.border-line-v:after{background:-moz-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#ddd,#fff0 70%)}.content.works .grid-items .grid-item.col{padding-top:0;padding-bottom:0;margin-top:30px}@media (max-width: 560px){.content.works .filter-menu{position:relative;top:5px;left:0;right:auto}.content.works .filter-menu button{margin:0 15px 0 0}}.box-item{overflow:visible}.content.blog .row .col{padding-bottom:0}.box-item .image{overflow:hidden;z-index:2}.box-item .image a img{transition:all .6s ease 0s;-moz-transition:all .6s ease 0s;-webkit-transition:all .6s ease 0s;-o-transition:all .6s ease 0s;transform:scale(1);-webkit-transform:scale(1)}.box-item:hover .image a img{transform:scale(1.05);-webkit-transform:scale(1.05)}.box-item .desc{padding:15px 0}.content.works .box-item .desc{padding:15px 0 0}.box-item .desc .name{padding:0;display:block;font-size:17px;color:#323232;font-weight:500;text-transform:none;word-break:break-word;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.box-item .desc .category{margin:0;font-size:14px;color:#999;text-transform:none}.content.blog .box-item .desc{padding-bottom:20px}.content.works .box-item .desc .category{font-size:14px}.box-item:hover .desc .name{color:#78cc6d}@media (max-width: 560px){.content.works .filter-menu .f_btn{margin-left:0;margin-right:15px}}.content.contacts .map{margin-bottom:30px;height:240px}.contact_form .row p{display:none}.card-wrap .content.contacts .row .row .col{padding-bottom:30px}.card-wrap .content.contacts .row .row .col.col-d-6:nth-child(1){padding-right:15px}.card-wrap .content.contacts .row .row .col.col-d-6:nth-child(2){padding-left:15px}.grid-items{min-height:1px}.service-items .service-item .icon .ion,.service-items .service-item .icon .fab,.service-items .service-item .icon .fas,.service-items .service-item .icon .fa{display:block;line-height:60px}.service-items .service-item .icon .fab,.service-items .service-item .icon .fas,.service-items .service-item .icon .fa{font-size:28px}.pricing-items .pricing-item .icon .ion,.pricing-items .pricing-item .icon .fab,.pricing-items .pricing-item .icon .fas,.pricing-items .pricing-item .icon .fa{display:block}.pricing-items .pricing-item .icon .fab,.pricing-items .pricing-item .icon .fas,.pricing-items .pricing-item .icon .fa{font-size:28px}.fuct-items .fuct-item .icon .ion,.fuct-items .fuct-item .icon .fab,.fuct-items .fuct-item .icon .fas,.fuct-items .fuct-item .icon .fa{display:block;line-height:60px}.fuct-items .fuct-item .icon .fab,.fuct-items .fuct-item .icon .fas,.fuct-items .fuct-item .icon .fa{font-size:28px}.resume-title .icon .fab,.skill-title .icon .fab,.resume-title .icon .fas,.skill-title .icon .fas,.resume-title .icon .fa,.skill-title .icon .fa{font-size:28px}.resume-title .icon .ion,.skill-title .icon .ion,.resume-title .icon .fab,.skill-title .icon .fab,.resume-title .icon .fas,.skill-title .icon .fas,.resume-title .icon .fa,.skill-title .icon .fa{display:block;line-height:40px}.resume-title .icon .fab,.skill-title .icon .fab,.resume-title .icon .fas,.skill-title .icon .fas,.resume-title .icon .fa,.skill-title .icon .fa,.box-item .image .info .fab,.box-item .image .info .fas,.box-item .image .info .fa{font-size:28px}.card-started .profile .social a .ion,.card-started .profile .social a .fab,.card-started .profile .social a .fas,.card-started .profile .social a .fa,.content-sidebar .profile .social a .ion,.content-sidebar .profile .social a .fab,.content-sidebar .profile .social a .fas,.content-sidebar .profile .social a .fa{font-size:16px;color:#323232;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.content.blog .border-line-v:after{content:"";position:absolute;top:0;width:1px;height:100%;background:-moz-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,#dddddd 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#ddd,#fff0 70%);left:50%}.content.blog .box-item{text-align:initial}.content.blog .box-item .desc{padding-bottom:0;text-align:center}.content.blog .box-item .desc .name{padding-bottom:5px;font-size:17px;font-weight:500;text-transform:none}.box-item .desc .category{margin:0 0 5px;font-size:14px;color:#999}.content.works .box-item .desc .category{margin:5px 0 0;font-size:14px}.box-item .desc .text p{margin:0}.box-item .date{position:relative;left:0;top:0;bottom:auto;width:auto;height:auto;margin:0 0 11px;padding:0 5px;display:inline-block;line-height:18px;font-weight:400;font-size:13px;color:#78cc6d;background:transparent;border:1px solid #78cc6d}@media (max-width: 680px){.content.works .filter-menu .f_btn{margin-left:0;margin-right:15px}.content.blog .border-line-v:after{display:none}}blockquote p{margin-bottom:10px}.post-comments>.title{margin-top:60px}.post-comments .comments-row .col{padding-bottom:0}.post-comments .post-comment .image{float:left;width:54px;height:54px}.post-comments .post-comment .image img{width:100%;height:100%;border-radius:100%;-webkit-border-radius:100%}.post-comments .post-comment .desc{margin-left:66px;position:relative}.post-comments .post-comment .desc .name{margin:0 0 7px;position:relative;color:#78cc6d;font-weight:500}.post-comments .post-comment .desc .name a{display:block}.post-comments .post-comment .desc .comment-time,.post-comments .post-comment .desc .comment-date{margin:0 7px 0 0;padding:0;display:inline-block;font-size:14px;line-height:14px;color:#999;font-weight:400;text-transform:none;border-left:none}.post-comments .post-comment .desc .comment-date{margin:0;padding:0;border-left:none}.post-comments .post-comment .desc span.comment-reply{position:absolute;top:2px;right:0;font-size:14px;color:#323232;font-weight:500;text-transform:uppercase;-webkit-transition:all .3s ease 0s;transition:all .3s ease 0s}.post-comments .post-comment .desc span.comment-reply a:before{content:"\f21e";margin-right:5px;position:relative;left:0;display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .3s ease 0s;transition:all .3s ease 0s}.post-comments .post-comment .desc span.comment-reply a{color:#323232}.post-comments .post-comment .desc span.comment-reply a:hover{color:#78cc6d}.post-comments .post-comment .desc span.comment-reply a:hover:before{left:-4px}.post-comments .post-comment .desc .comment-text *:last-child{margin:0}.post-comment.pingback .image{display:none}.post-comment.pingback .desc{margin-left:0}.post-comments .form-comment .title{margin:60px 0 30px}.post-comments .form-comments.row .col{padding-top:0;padding-bottom:0}.comments .title.comment-reply-title{margin-bottom:10px}.comments .title.comment-reply-title:before,.comments .title.comment-reply-title:after{display:none}.post-comments .title{padding:0 0 10px;font-size:17px;line-height:26px;font-weight:500}.post-comments .title:before{display:none}@media (max-width: 1160px){.post-comments .post-comment .image{width:60px;height:60px}.post-comments .post-comment .desc{margin-left:80px}.post-comments .post-comment.pingback .desc{margin-left:0}}@media (max-width: 680px){.section .content .comment-respond .title.comment-reply-title{text-align:left}.post-comments .post-comment .image{width:40px;height:40px}.post-comments .post-comment .desc{margin-left:55px}.post-comments .post-comment.pingback .desc{margin-left:0}.card-wrap .content.contacts .row .row .col.col-d-6:nth-child(1){padding-right:30px}.card-wrap .content.contacts .row .row .col.col-d-6:nth-child(2){padding-left:30px}.card-inner:before,.card-inner:after{height:0}}.profile .main-menu-fixed{padding:75px 25px 100px;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;transition:all .5s ease-out 1s;-moz-transition:all .3s ease-out 1s;-webkit-transition:all .3s ease-out 1s;-o-transition:all .3s ease-out 1s;visibility:hidden;opacity:0}.profile .main-menu-fixed:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:#fff;opacity:.99}.profile .menu-main-menu-container,.profile .main-menu .menu{position:relative;width:100%;min-height:100%;display:flex;flex-direction:column;justify-content:center}.profile .slimScrollDiv{width:100%!important}.profile .main-menu ul{margin:0;padding:0;list-style:none}.profile .main-menu ul li a{position:relative;padding:5px 25px;font-size:28px;font-weight:500;color:#323232;display:inline-block;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.profile .main-menu ul li a .icon{position:absolute;left:0;top:0;line-height:45px;opacity:0;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.profile .main-menu .menu-main-menu-container:hover ul li a,.profile .main-menu .menu-main-menu-container:hover ul li a .icon{color:#aaa}.profile .main-menu ul li.current-menu-item a,.profile .main-menu .menu-main-menu-container ul li a:hover,.profile .main-menu ul li.current-menu-item a .icon,.profile .main-menu .menu-main-menu-container ul li a:hover .icon{color:#323232}.profile .main-menu ul li.current-menu-item a{color:#78cc6d}.card-started .profile.default-menu-open .profile-content{transition:all .02s ease .2s;-moz-transition:all .5s ease .2s;-webkit-transition:all .5s ease .2s;-o-transition:all .5s ease .2s}.card-started .profile.default-menu-open .main-menu-fixed{opacity:1;visibility:visible;transition:all .5s ease 0s;-moz-transition:all .5s ease 0s;-webkit-transition:all .5s ease 0s;-o-transition:all .5s ease 0s}.profile .main-menu .menu>ul>li,.profile .main-menu ul.menu>li{opacity:0;transform:translate3d(0,-20px,0);-webkit-transform:translate3d(0,-20px,0);transition:all 1s ease .3s;-moz-transition:all 1s ease .3s;-webkit-transition:all 1s ease .3s;-o-transition:all 1s ease .3s}.profile.default-menu-open .main-menu .menu>ul>li,.profile.default-menu-open .main-menu ul.menu>li{opacity:1;transform:translateZ(0);-webkit-transform:translate3d(0,0,0)}.profile .main-menu ul li .children_toggle{margin-left:-28px;position:relative;display:inline-block;top:4px;right:-8px;width:28px;height:28px;z-index:2;cursor:pointer}.profile .main-menu ul li ul li .children_toggle{height:18px}.profile .main-menu ul li.page_item_has_children>a:before,.profile .main-menu ul li.page_item_has_children>a:after{margin-top:-1px;content:"";position:absolute;right:0;top:50%;width:9px;height:2px;background:#666;transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-o-transform:rotate(-45deg)}.profile .main-menu ul li.page_item_has_children>a:after{right:5px;transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg)}.profile .main-menu ul li.current_page_item>a,.profile .main-menu ul li:hover>a,.profile .main-menu ul li.current_page_parent>a,.profile .main-menu ul li.current_page_ancestor>a{text-decoration:none;color:#78cc6d}.profile .main-menu ul li.page_item_has_children.current_page_item>a:before,.profile .main-menu ul li.page_item_has_children.current_page_item>a:after,.profile .main-menu ul li.page_item_has_children:hover>a:before,.profile .main-menu ul li.page_item_has_children:hover>a:after,.profile .main-menu ul li.page_item_has_children.current_page_parent>a:before,.profile .main-menu ul li.page_item_has_children.current_page_parent>a:after,.profile .main-menu ul li.page_item_has_children.current_page_ancestor>a:before,.profile .main-menu ul li.page_item_has_children.current_page_ancestor>a:after{background:#78cc6d}.profile .main-menu ul li ul{padding:10px 25px;display:none}.profile .main-menu ul li ul li a{position:relative;padding:6px 25px;font-weight:500;color:#646464;font-size:18px}.profile .main-menu ul li ul li ul li a{font-size:15px}.profile .main-menu ul li ul li:before,.profile .main-menu ul li ul li:after{display:none}.lnk .ion,.button .ion,.lnk .arrow,.button .arrow,.lnk .fa,.button .fa{margin:0 8px;position:relative;top:-1px;left:0;display:inline-block;vertical-align:middle;font-size:18px;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s}.lnk.lnk-view-menu .ion,.button.lnk-view-menu .ion,.lnk.lnk-view-menu .arrow,.button.lnk-view-menu .arrow,.lnk.lnk-view-menu .fa,.button.lnk-view-menu .fa{font-size:20px;transition:all .3s ease 0s;-moz-transition:all .3s ease 0s;-webkit-transition:all .3s ease 0s;-o-transition:all .3s ease 0s;transform:rotate(0);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg)}.default-menu-open .lnk.lnk-view-menu .ion,.default-menu-open .button.lnk-view-menu .ion,.default-menu-open .lnk.lnk-view-menu .arrow,.default-menu-open .button.lnk-view-menu .arrow,.default-menu-open .lnk.lnk-view-menu .fa,.default-menu-open .button.lnk-view-menu .fa{transform:rotate(90deg);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg)}.disable-sidebar.no-sticky-menu .card-inner,.no-sidebar .no-sticky-menu .card-inner{left:480px}@media (max-width: 1120px){.disable-sidebar.no-sticky-menu .card-inner,.no-sidebar .no-sticky-menu .card-inner{left:0}}@media (max-width: 680px){.container{padding-top:118px}}.header .top-menu ul.more-menu-wrap li a{border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-khtml-border-radius:0 0 4px 4px}.background{background-color:#0856c166}.preloader .spinner .double-bounce1,.preloader .spinner .double-bounce2{background:#0856c1}.lnk:hover,.button:hover,.lnk:hover .ion,.button:hover .ion{color:#0856c1}.lnk:hover .arrow:before,.button:hover .arrow:before,.lnk:hover .arrow:after,.button:hover .arrow:after{background:#0856c1}input:focus,textarea:focus,button:focus{border-bottom:1px solid #0856c1}button:hover{border-bottom:none;background-color:#0856c11a}.header .top-menu ul li:hover a,.header .top-menu ul li.active a,.header .top-menu ul li:hover a .icon,.header .top-menu ul li.active a .icon,.header .top-menu ul li:hover a .link,.header .top-menu ul li.active a .link{color:#0856c1}.card-started:after,main:after{background:-moz-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:linear-gradient(135deg,#0856c166,#0856c103)}.card-started .profile .image:before{background:-moz-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:linear-gradient(135deg,#0856c166,#0856c103)}.card-started .profile .subtitle,.card-started .profile .social a:hover .ion,.card-started .profile .social a:hover .fab,.card-started .profile .social a:hover .fas{color:#0856c1}.content .title:before{background:-moz-linear-gradient(-45deg,rgba(8,86,193,.15) 0%,rgba(8,86,193,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(8,86,193,.15) 0%,rgba(8,86,193,.01) 100%);background:linear-gradient(135deg,#0856c126,#0856c103)}.service-items .service-item .icon{color:#0856c1;background:-moz-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:linear-gradient(135deg,#0856c166,#0856c103)}.pricing-items .pricing-item .icon,.fuct-items .fuct-item .icon,.resume-title .icon,.skill-title .icon,.resume-items .resume-item.active .date{color:#0856c1}.resume-items .resume-item.active .date:before{background:#0856c1}.content.works .filter-menu .f_btn.active{color:#0856c1}.box-item .image .info:before{background:-moz-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:-webkit-linear-gradient(-45deg,rgba(8,86,193,.4) 0%,rgba(8,86,193,.01) 100%);background:linear-gradient(135deg,#0856c166,#0856c103)}.post-box .post-comments li .comment-info .name h6{color:#0856c1}.background.gradient{background:#50a3a2;background:-webkit-linear-gradient(top left,#48b1bf 0%,#0856c1 100%);background:linear-gradient(to bottom right,#48b1bf,#0856c1)}.skills-list.list ul li .name:before{color:#0856c1}input:focus,textarea:focus{border-color:#0856c1}.card-started .profile .subtitle,.card-started .profile .typed-cursor,.content .title .first-word{color:#0856c1}.content .title:first-letter,.content .title .first-letter:first-letter{color:#0856c1}.new-skin .service-items .service-item .icon{background:#0856c1!important}.resume-items .resume-item.active .date{border-color:#0856c1}.box-item:hover .desc .name{color:#0856c1}.new-skin .info-list ul li strong,.revs-carousel .owl-dot.active{background:#0856c1}html[data-theme=dark] body{color:#ffffff8c;background:#26262d}html[data-theme=dark] ::-webkit-scrollbar-thumb{background-color:#ffffff40}html[data-theme=dark] .background{background-color:#26262d!important}html[data-theme=dark] .border-line-h:after{background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad526,#fff0 70%)}html[data-theme=dark] h1,html[data-theme=dark] h2,html[data-theme=dark] h3,html[data-theme=dark] h4,html[data-theme=dark] h5,html[data-theme=dark] h6{color:#ffffffd9}html[data-theme=dark] .lnks:before{background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad526,#fff0 70%)}html[data-theme=dark] .lnk,html[data-theme=dark] .button{color:#ffffffd9}html[data-theme=dark] .lnk:before,html[data-theme=dark] .button:before{background:-moz-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#c5cad526,#fff0 70%)}html[data-theme=dark] .lnk .arrow:before,html[data-theme=dark] .button .arrow:before,html[data-theme=dark] .lnk .arrow:after,html[data-theme=dark] .button .arrow:after{background:#ffffffd9}html[data-theme=dark] a{color:#ffffff8c}html[data-theme=dark] th,html[data-theme=dark] td,html[data-theme=dark] input,html[data-theme=dark] textarea,html[data-theme=dark] button{color:#ffffffd9}html[data-theme=dark] input:focus,html[data-theme=dark] textarea:focus,html[data-theme=dark] button:focus{color:#ffffffd9}html[data-theme=dark] button{color:#ffffffd9}html[data-theme=dark] input:focus::-webkit-input-placeholder,html[data-theme=dark] textarea:focus::-webkit-input-placeholder{color:#ffffffd9}html[data-theme=dark] input:focus:-moz-placeholder,html[data-theme=dark] textarea:focus:-moz-placeholder{color:#ffffffd9}html[data-theme=dark] input:focus::-moz-placeholder,html[data-theme=dark] textarea:focus::-moz-placeholder{color:#ffffffd9}html[data-theme=dark] input:focus:-ms-input-placeholder,html[data-theme=dark] textarea:focus:-ms-input-placeholder{color:#ffffffd9}html[data-theme=dark] .header .top-menu ul li a,html[data-theme=dark] .header .menu-btn{color:#ffffffd9;background:#31313a}html[data-theme=dark] .header .menu-btn span,html[data-theme=dark] .header .menu-btn span:before,html[data-theme=dark] .header .menu-btn span:after{background:#ffffffd9}html[data-theme=dark] .header .top-menu ul li a:before{background:-moz-radial-gradient(right,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(right,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at right,#c5cad526,#fff0 70%)}html[data-theme=dark] .header .top-menu ul li a .icon{color:#ffffffd9}@media (max-width: 1240px){html[data-theme=dark] .header .top-menu{box-shadow:0 0 25px #0000001a}html[data-theme=dark] .header .top-menu ul li a:before{background:-moz-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#c5cad526,#fff0 70%)}}@media (max-width: 1240px){html[data-theme=dark] .header{background:#31313a}}html[data-theme=dark] .card-started:after{background:#31313a;opacity:.3}html[data-theme=dark] .card-started .profile{background:#31313a}html[data-theme=dark] .card-started .profile .slide:before,html[data-theme=dark] .card-started .profile .slide:after{background:#31313a}html[data-theme=dark] .card-started .profile .image img{border-color:#31313a;background-color:#31313a}html[data-theme=dark] .card-started .profile .title{color:#ffffffd9}html[data-theme=dark] .card-started .profile .social a .ion,html[data-theme=dark] .card-started .profile .social a .fab,html[data-theme=dark] .card-started .profile .social a .fas{color:#ffffff8c}html[data-theme=dark] .card-inner{background:#31313a}html[data-theme=dark] .card-inner:before,html[data-theme=dark] .card-inner:after{background:#31313a}html[data-theme=dark] .content .title{color:#ffffffd9}html[data-theme=dark] .content .title:after{background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad526,#fff0 70%)}html[data-theme=dark] .service-items .service-item .name{color:#ffffffd9}@media (max-width: 560px){html[data-theme=dark] .service-items .col:after{background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad526,#fff0 70%)}}html[data-theme=dark] .pricing-items .pricing-item .name,html[data-theme=dark] .fuct-items .fuct-item .name{color:#ffffffd9}html[data-theme=dark] .resume-title .icon,html[data-theme=dark] .skill-title .icon{background:transparent}html[data-theme=dark] .resume-title .name,html[data-theme=dark] .skill-title .name,html[data-theme=dark] .resume-items .resume-item .name,html[data-theme=dark] .skills-list ul li .name,html[data-theme=dark] .content.works .filter-menu .f_btn{color:#ffffffd9}html[data-theme=dark] .content.works .grid-items.border-line-v:after{background:-moz-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#c5cad526,#fff0 70%)}html[data-theme=dark] .box-item .desc .name,html[data-theme=dark] .post-box .post-comments li .comment-info .name,html[data-theme=dark] .post-box .post-comments li .comment-info .name a{color:#ffffffd9}html[data-theme=dark] .post-box .post-comments li .comment-info .name h6 span{color:#ffffff8c}html[data-theme=dark] .background.gradient{background:#17171b!important;background:-webkit-linear-gradient(top left,#17171b 0%,#28282f 100%)!important;background:linear-gradient(to bottom right,#17171b,#28282f)!important}html[data-theme=dark] .bg-bubbles li{background-color:#ffffff05!important}html[data-theme=dark] .content .title .first-word{color:#ffffffd9}html[data-theme=dark] .content .title:first-letter{color:#ffffffd9}html[data-theme=dark] .content.blog .border-line-v:after{background:-moz-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(top,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at top,#c5cad526,#fff0 70%)}html[data-theme=dark] input,html[data-theme=dark] textarea,html[data-theme=dark] button,html[data-theme=dark] input[type=submit]{border-color:#666}html[data-theme=dark] .content-sidebar h2.widget-title .first-word{color:#ffffffd9}html[data-theme=dark] .post-comments .title .title_inner:first-letter{color:#ffffffd9}html[data-theme=dark] .content .post-comments .title .first-word{color:#ffffffd9}html[data-theme=dark] .resume-items .resume-item .date{color:#666;border-color:#666}html[data-theme=dark] .post-comments .post-comment .desc span.comment-reply a,html[data-theme=dark] .post-comments .post-comment .desc span.comment-reply{color:#ffffffd9}html[data-theme=dark] .preloader{background:#3b3b42}@media (max-width: 1240px){html[data-theme=dark] .blog-single .info-list ul li,html[data-theme=dark] .content.contacts .info-list ul li{padding-left:0;padding-right:0}html[data-theme=dark] .content.contacts .info-list ul,html[data-theme=dark] .blog-single .info-list ul{margin:-11px 0 0}}html[data-theme=dark] .button .text{padding-left:0}html[data-theme=dark] .profile .main-menu-fixed:before{background:#31313a}html[data-theme=dark] .profile .main-menu ul li a,html[data-theme=dark] .profile .main-menu .menu-main-menu-container ul li a:hover,html[data-theme=dark] .profile .main-menu .menu-main-menu-container ul li a:hover .icon,html[data-theme=dark] .header .profile .title{color:#ffffffd9}html[data-theme=dark] input[type=submit]{border-color:#44454c;background:#44454c;color:#fff}html[data-theme=dark] input[type=submit]:hover{border-color:#4b4c54;background:#4b4c54}@media (max-width: 680px){html[data-theme=dark] .header .top-menu:before{background:-moz-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:-webkit-radial-gradient(left,ellipse cover,rgba(197,202,213,.15) 0%,rgba(255,255,255,0) 70%);background:radial-gradient(ellipse at left,#c5cad526,#fff0 70%)}html[data-theme=dark] .header .top-menu ul.menu{background:#31313a}}html[data-theme=dark] .revs-item .text{color:#ffffffd9}html[data-theme=dark] .revs-item .text:before,html[data-theme=dark] .revs-item .text:after{background:url(images/quote_d.svg) no-repeat;background-size:contain}html[data-theme=dark] .revs-item .info .name{color:#ffffffd9}html[data-theme=dark] .revs-item .info .company{color:#999}

/* ===========================================================================*/
/* Site Overrides — this project's own styling (no vendor equivalent)
/* ===========================================================================*/


/*
	Small additions with no equivalent in the RyanCV template — kept separate
	so the template's own files stay byte-for-byte unmodified. Everything
	else (layout, cards, tabs, carousel, chips-of-icons, etc.) is the
	template's own component CSS.
*/

/* -- <main> landmark: added around .card-started/#content-scroll for screen-
      reader navigation (no visual role) — but the vendor chains percentage
      heights through this exact spot (.container height:84vh/100% →
      .card-started height:100% → .profile height:100%) to make the home
      card fill the container on the sidebar layouts. A plain <main> has height:auto,
      which breaks that chain (100% of auto resolves to auto), so
      .card-started silently stopped filling the container's height. Give
      it 100% explicitly to pass the container's real height through. */
main {
	height: 100%;
	position: relative;
}

/* The vendor's own 6vw side margins are what actually caps the container
   (~1267px at 1440px viewport, before max-width:1268px ever binds) — raising
   max-width alone changes nothing. Shrink the margin so wide screens use a
   more standard content width, capped so it doesn't stretch unbounded on
   very wide monitors. */
@media (min-width: 1024px) {
	.container {
		margin-left: 2vw;
		margin-right: 2vw;
		max-width: 1440px;
		min-height: 600px;
	}
	#summary-card .content .row .col, #skills-card .content .row .col, #education-card .content .row .col, #experience-card .content .row .col {
		padding-bottom: 0;
	}
}

/* -- 1024-1199px: make this range match the ≥1200px desktop layout instead
      of the vendor's own "tall icon sidebar, stacked scrollable page" — the
      vendor restructures .page/.container/.header/.card-started wholesale
      at max-width:1199px (new-skin.css), so matching ≥1200px here means
      explicitly resetting each of those back to their un-scoped (desktop)
      values; letting them fall through naturally isn't possible once the
      1199px rule already won that cascade. Everything downstream (the
      #content-scroll panel, header width, sidebar height) is already
      shared with ≥1200px via the media queries above/below — this block
      only has to undo the vendor structural rules standing in the way. */
@media (min-width: 1024px) and (max-width: 1199px) {
	.page {
		display: flex;
	}

	.container {
		margin-top: 8vh;
		margin-bottom: 8vh;
		padding: 0;
		position: relative;
		top: 0;
		left: 0;
		width: 100%;
		max-width: 1268px;
		height: 84vh;
		max-height: 674px;
	}

	.header {
		margin-left: 0;
		margin-right: 8px;
		position: relative;
		left: auto;
		top: 15px;
		max-width: none;
		background: none;
		box-shadow: none;
	}

	.header .top-menu {
		margin: 0;
		max-width: none;
		box-shadow: none;
	}

	.header .top-menu ul {
		width: auto;
	}

	.header .top-menu ul li {
		width: auto;
	}

	.card-started {
		position: relative;
		float: left;
		/* width comes from the fluid clamp() rule further down (shared with
		   ≥1200px), not a fixed value here — see #content-scroll below. */
		height: 100%;
	}
}

/* -- Fix a vendor breakpoint bug: `.container { padding-top: 118px; }` only
      applies at max-width:680px (new-skin.css), with nothing to reset it
      back down for screens even narrower — so 561-680px (header is the tall
      fixed icon-sidebar) gets a bogus 118px gap that misaligns the sidebar
      from the content column, and ≤560px (header is the short 64px bar)
      gets 54px of empty gap below the header. Match padding to what each
      breakpoint's header actually needs. */
@media (max-width: 560px) {
	.container {
		padding-top: 74px;
		padding-left: 12px;
		padding-right: 12px;
	}
}

@media (min-width: 561px) and (max-width: 680px) {
	.container {
		padding-top: 0;
	}
}

/* -- Modals: Download CV (language picker) / Download Contact (field picker)
      — no vendor equivalent. */
.modal-backdrop {
	position: fixed;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	background: rgba(23, 23, 23, 0.55);
	z-index: 500;
}

.modal-backdrop[hidden] {
	display: none !important;
}

.modal {
	width: 100%;
	max-width: 420px;
	max-height: 85vh;
	overflow-y: auto;
	background: #ffffff;
	border-radius: 10px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
}

.modal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 18px 22px;
	border-bottom: 1px solid #eeeeee;
}

.modal-header h2 {
	margin: 0;
	font-size: 17px;
	font-weight: 500;
	color: #323232;
}

/* The vendor's generic form-control reset (input/textarea/button, Basic
   section) sets padding, display, and text-align meant for actual text
   fields styled to look underlined — .modal-close only overrode the
   properties it happened to think of (width/height/border/etc), so those
   three leaked through unopposed: a button *class* selector normally beats
   a plain *type* selector, but the cascade is resolved per property, not
   per rule, so any property this rule doesn't set at all still falls
   through to whatever less-specific rule does set it. Everything relevant
   is listed explicitly now so nothing vendor-side can leak in again. */
.modal-close {
	appearance: none;
	-webkit-appearance: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	margin: 0;
	padding: 0;
	border: none;
	background: none;
	color: #646464;
	font-size: 22px;
	line-height: 1;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
}

/* Firefox draws its own dotted dashed dashed inner border on a <button>
   on focus, independent of the :focus-visible outline rule below — reads
   like a stray underline under the "x" glyph specifically since the glyph
   sits close to the button's bottom edge. */
.modal-close::-moz-focus-inner {
	border: 0;
	padding: 0;
}

/* The same vendor reset also puts a 1px border-bottom on every button (a
   faux-underlined form-field look) — regular button:hover/:focus/:active
   selectors are equal-or-higher specificity than a plain class, so it wins
   there even though .modal-close's own unfocused border:none already beat
   the equivalent unfocused rule. Most visible on :focus, since openModal()
   moves keyboard focus onto this button when it's the modal's first
   focusable element — reads as a stray underline right under the "x". */
.modal-close:hover,
.modal-close:focus,
.modal-close:active {
	border: none;
	text-decoration: none;
	color: #0856c1;
}

.modal-body {
	padding: 20px 22px 22px;
}

.modal-intro {
	margin: 0 0 16px;
	font-size: 14px;
	line-height: 1.5;
	color: #646464;
}

.modal-list {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.modal-list-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 14px 16px;
	border: 1px solid #eeeeee;
	border-radius: 6px;
	background: none;
	font-family: inherit;
	text-align: left;
	text-decoration: none;
	cursor: pointer;
	transition: border-color 0.2s ease, background 0.2s ease;
}

.modal-list-item:hover {
	border-color: #0856c1;
	background: rgba(8, 86, 193, 0.05);
}

.modal-list-name {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 15px;
	font-weight: 500;
	color: #323232;
}

.modal-list-name .fas,
.modal-list-name .fab {
	font-size: 14px;
	color: #0856c1;
}

html[data-theme="dark"] .modal-list-name .fas,
html[data-theme="dark"] .modal-list-name .fab {
	color: #8ab4f8;
}

.modal-list-meta {
	font-size: 12px;
	color: #646464;
}

.modal-field-list {
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
}

.modal-field-row {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 0;
	border-bottom: 1px solid #f0f0f0;
}

.modal-field-row:last-child {
	border-bottom: none;
}

.modal-field-row label {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 1;
	min-width: 0;
	cursor: pointer;
	font-size: 14px;
	color: #323232;
}

.modal-field-row .modal-field-name {
	flex: none;
	font-weight: 500;
}

.modal-field-row .modal-field-value {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: #646464;
}

/* Same vendor button-reset leak as .modal-close (see its own comment) —
   padding/display/text-align/border-bottom all made explicit here too. */
.modal-field-copy {
	flex: none;
	appearance: none;
	-webkit-appearance: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	margin: 0;
	padding: 0;
	border: none;
	background: none;
	color: #646464;
	font-size: 16px;
	text-align: center;
	cursor: pointer;
}

.modal-field-copy:hover,
.modal-field-copy:focus,
.modal-field-copy:active {
	border: none;
	color: #0856c1;
}

.modal-field-copy.copied {
	color: #2ecc71;
}

.modal-action {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	padding: 13px;
	border: none;
	border-radius: 6px;
	background: #0856c1;
	color: #ffffff;
	font-size: 13px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	cursor: pointer;
	transition: filter 0.2s ease;
}

.modal-action:hover {
	filter: brightness(1.08);
}

html[data-theme="dark"] .modal {
	background: #31313a;
}

html[data-theme="dark"] .modal-header {
	border-bottom-color: rgba(255, 255, 255, 0.08);
}

html[data-theme="dark"] .modal-header h2 {
	color: rgba(255, 255, 255, 0.85);
}

html[data-theme="dark"] .modal-intro {
	color: rgba(255, 255, 255, 0.55);
}

html[data-theme="dark"] .modal-list-item {
	border-color: rgba(255, 255, 255, 0.1);
}

html[data-theme="dark"] .modal-list-name {
	color: rgba(255, 255, 255, 0.85);
}

html[data-theme="dark"] .modal-field-row {
	border-bottom-color: rgba(255, 255, 255, 0.08);
}

html[data-theme="dark"] .modal-field-row label {
	color: rgba(255, 255, 255, 0.85);
}

html[data-theme="dark"] .modal-field-row .modal-field-value {
	color: rgba(255, 255, 255, 0.55);
}

@media (max-width: 560px) {
	.modal-header {
		padding: 14px 16px;
	}

	.modal-body {
		padding: 16px;
	}
}

/* -- Settings: a single gear item that opens Theme + Language as a small
      dropdown, instead of two always-visible nav rows. On the sidebar
      breakpoints, it's pinned to the very bottom of the sidebar — not just
      "the next item with a bit of margin above it" — so it reads as a
      genuinely separate group (settings/account) from the resume nav
      (content) above it, the same split most app sidebars use. Requires
      .header to actually have room to push into: it normally auto-sizes to
      its content, so give it an explicit height matching the space already
      available next to it (same inset #content-scroll uses), then let flex
      distribute that space with margin-top: auto on the settings menu. */
@media (min-width: 561px) {
	/* Widen the nav column (vendor default is 72px, sized for short one-word
	   labels — "EXPERIENCE"/"EDUCATION" wrap cramped at that width) to match
	   the ≥1024px sidebar; .top-menu/li/a all inherit width from .header, so
	   this one change widens the whole column at every sidebar breakpoint. */
	.header {
		width: 100px;
		/* Vendor also sets max-width:72px alongside its own width:72px at
		   561-1023px (new-skin.css) — max-width still clamps the box back
		   down to 72px even once width above wins the cascade, so it needs
		   overriding explicitly too. */
		max-width: 100px;
		display: flex;
		flex-direction: column;
	}

	.header .top-menu {
		display: flex;
		flex-direction: column;
		flex: 1;
		min-height: 0;
	}

	/* Flex items refuse to shrink below their own content's natural size by
	   default — on a short viewport, the 6 nav items' combined height can
	   exceed the sidebar's available space, and without this the *items*
	   win that fight: they overflow past .header's own bottom edge and push
	   the bottom-pinned Settings button off-screen with them. Letting this
	   list scroll internally instead keeps Settings visible no matter how
	   short the viewport gets. Scoped to .primary-menu specifically (not
	   just ":not(.settings-menu)") — setting overflow-y on an element forces
	   its overflow-x to clip too (CSS spec: an explicit non-visible
	   overflow-y pairs with implicit auto on the other axis), which would
	   clip .more-menu-wrap's own flyout child the same way. In practice this
	   rule is now a pure fallback: updateNavOverflow() (app.js) folds
	   overflow items into "More" before the list ever needs to scroll. */
	.header .top-menu ul.primary-menu {
		min-height: 0;
		overflow-y: auto;
	}

	.header .top-menu ul.settings-menu {
		margin-top: auto;
		border-radius: 0;
		box-shadow: none;
	}

	.header .top-menu ul.settings-menu li a {
		background: #fafafa;
		border-radius: 0;
	}
}

@media (min-width: 561px) and (max-width: 1023px) {
	/* .header is position:fixed here, top:20px (new-skin.css) — mirror that
	   as a matching bottom gap so the sidebar reaches down near the edge of
	   the viewport instead of stopping wherever its content happens to end.
	   Only the remaining "old" tall-icon-sidebar range still uses this —
	   ≥1024px now matches the ≥1200px desktop layout (see the 1024-1199px
	   counter-override block below), which uses relative/float positioning
	   instead of fixed, and needs the container-relative calc below it. */
	.header {
		height: calc(100vh - 40px);
	}
	main:after {
		content: '';
		position: absolute;
		left: -15px;
		top: -15px;
		width: 100%;
		height: 100%;
		border-radius: 4px;
		-moz-border-radius: 4px;
		-webkit-border-radius: 4px;
		-khtml-border-radius: 4px;
	}
	.card-started:after {
		display: none;
	}
}

@media (min-width: 1024px) {
	/* .header is float:left, position:relative here (in-flow, inside
	   .container) — percentage height resolves against .container's own
	   height (84vh, set by new-skin.css), so this matches #content-scroll's
	   own top:15px/bottom:15px inset within that same container exactly. */
	.header {
		height: calc(100% - 30px);
	}
}

/* The vendor sets `.top-menu ul { overflow: auto }` at the ≤560px mobile
   row (so the primary nav can scroll horizontally if it doesn't fit) — that
   same rule reaches .settings-menu too and would clip the dropdown's flyout
   the moment it crosses the ul's own edge. Unscoped since nothing else ever
   needs .settings-menu itself (as opposed to the primary nav ul) to clip. */
.header .top-menu ul.settings-menu {
	overflow: visible;
	/* Vendor also paints a solid white background directly on every <ul>
	   here (`.header .top-menu ul { background: #fff }`) — invisible for
	   the primary nav because each item's own opaque <a> fully covers it,
	   but the settings <a> uses a near-transparent dark-mode tint (below)
	   that let this solid white show straight through underneath it. */
	background: transparent;
}

html[data-theme="dark"] .header .top-menu ul.settings-menu li a {
	background: #31313a
}

/* The vendor's mobile row is built for a *single* <ul>: every <li> gets
   width:100% and the ul itself gets width:100%, so N items split the row
   evenly via flex-shrink. Splitting Settings (and, separately, "More") into
   their own <ul>s means that same math now runs at the ul level too — three
   ULs each claiming 100% would split three ways, badly. Give the primary
   list flex:1 to claim whatever's left (which then still shares it evenly
   among its own items, as before) and let the other two size to content —
   "More" is a single icon-only item same as Settings once it's showing at
   all, and an empty, zero-width flex item the rest of the time (hidden). */
@media (max-width: 560px) {
	.header .top-menu ul.primary-menu {
		flex: 1 1 auto;
		width: auto;
	}

	.header .top-menu ul.more-menu-wrap,
	.header .top-menu ul.settings-menu {
		flex: 0 0 auto;
		width: auto;
	}

	.header .top-menu ul.settings-menu li {
		width: auto;
	}
}

#settings-item {
	position: relative;
}

.top-menu ul li.nav-settings-item a[aria-expanded="true"] {
	color: #0856c1;
}

.settings-dropdown {
	display: flex;
	flex-direction: column;
	position: absolute;
	top: 100%;
	right: 0;
	min-width: 160px;
	max-height: calc(100vh - 20px);
	overflow-y: auto;
	background: #ffffff;
	border-radius: 4px 4px 4px 0;
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
	z-index: 220;
}

/* Sidebar layouts (tall icon rail or wide labeled column): the trigger is
   pinned to the very bottom of the sidebar, so opening downward from its
   top edge (the mobile default) runs the dropdown off the bottom of the
   viewport — the last item (Bahasa Melayu) ends up clipped/unreachable.
   Flyout to the right instead, opening *upward* from the trigger's bottom
   edge, into the open content area next to the sidebar — space that's
   guaranteed to exist above a bottom-pinned trigger. */
@media (min-width: 561px) {
	.settings-dropdown {
		top: auto;
		bottom: 0;
		left: 100%;
		right: auto;
	}
}

.settings-dropdown[hidden] {
	display: none !important;
}

.settings-row {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	gap: 10px;
	width: 100%;
	padding: 14px 20px;
	background: none;
	border: none;
	font: inherit;
	color: #323232;
	font-size: 12px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	text-align: left;
	white-space: nowrap;
	cursor: pointer;
}

.settings-row-label {
	flex: 1;
}

/* Dark Theme row: an accessible switch, not just a link — the icon still
   flips lit/unlit (see applyTheme in app.js) as a secondary cue. */
.switch {
	position: relative;
	flex: none;
	width: 34px;
	height: 20px;
	border-radius: 10px;
	background: #d5d5d5;
	transition: background 0.2s ease;
}

.switch-thumb {
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #ffffff;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
	transition: transform 0.2s ease;
}

.settings-row-theme[aria-checked="true"] .switch {
	background: #0856c1;
}

.settings-row-theme[aria-checked="true"] .switch-thumb {
	transform: translateX(14px);
}

.settings-divider {
	height: 1px;
	margin: 4px 0;
	background: #ececec;
}

@media (max-width: 560px) {
	.settings-row {
		padding: 11px 16px;
	}
}

/* Language rows: a picker, not a toggle — a checkmark marks whichever
   option is active, hidden on the rest. */
.settings-check {
	flex: none;
	opacity: 0;
	color: #0856c1;
	font-size: 14px;
}

.settings-lang-option[aria-pressed="true"] {
	color: #0856c1;
}

.settings-lang-option[aria-pressed="true"] .settings-check {
	opacity: 1;
}

html[data-theme="dark"] .settings-dropdown {
	background: #31313a;
}

html[data-theme="dark"] .settings-row {
	color: rgba(255, 255, 255, 0.85);
}

html[data-theme="dark"] .switch {
	background: rgba(255, 255, 255, 0.2);
}

html[data-theme="dark"] .settings-divider {
	background: rgba(255, 255, 255, 0.08);
}

/* Compact mobile row: Settings shows as an icon only (no "Settings" label),
   freeing width for the capped 2-3 primary sections (see updateNavOverflow
   in app.js) — the gear glyph alone is a standard, recognizable affordance.
   Its <li>/<a> still stretch to match the row's height (flex align-items),
   same as every sibling — without re-centering, the icon stays pinned to
   the top via the vendor's padding-top, leaving it looking off-center with
   dead space below where a label would otherwise sit. */
@media (max-width: 560px) {
	#settings-toggle .link {
		display: none;
	}

	#settings-toggle {
		display: flex;
		align-items: center;
		justify-content: center;
	}
}

/* Sidebar (561px+): same icon-only treatment as mobile, but here there's
   width to spare (100px column) rather than width to save — so make it a
   true square button instead of a short wide bar, centered in the column.
   Shared with ≥1024px since both use the same 100px-wide sidebar now. */
@media (min-width: 561px) {
	#settings-toggle .link {
		display: none;
	}

	#settings-toggle {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 56px;
		height: 56px;
		padding: 0;
		margin-left: 44px;
	}

	/* The vendor's own .icon sizing (new-skin.css) is 40x30 — not square —
	   sized for a *label* to sit underneath it (line 2 of a 2-line stacked
	   nav item). With the label hidden here, centering a non-square box
	   inside the button above still leaves the glyph itself looking
	   slightly off — noticeable more than the ~5px this box is short by,
	   since a non-square bounding box reads as visually unbalanced even
	   when it's technically centered. Square it and center the glyph
	   directly via flex instead of the vendor's line-height trick. */
	#settings-toggle .icon,
	#nav-more-toggle .icon {
		position: static;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 40px;
		height: 40px;
		margin: 0;
		line-height: 1;
	}
}

/* -- Mobile header: the profile name/role block above the nav row makes an
      already-tight mobile header feel thick — drop it there and rely on the
      home card below for the name/role instead. */
@media (max-width: 560px) {
	.header .profile {
		display: none;
	}
}

/* Nav row: vendor's 13px top/bottom padding is sized for a taller sidebar
   icon — a compact 64px mobile bar reads better a bit shorter. */
@media (max-width: 560px) {
	.header .top-menu ul li a {
		padding-top: 8px;
		padding-bottom: 8px;
	}
}

/* -- Subtitle: static "Role | Role | Role" text (no typed.js animation) ----
      The vendor hard-codes `height: 20px` on .subtitle, sized for typed.js's
      single-line cycling text which never wraps. Ours is static and often
      wraps to 2-3 lines — the fixed height clipped the box while the text
      visually overflowed below it uncounted, so the *next* flex sibling
      (home card: .social) rendered as if .subtitle were still one line
      tall and overlapped the overflow text. Let it size to its content. */
.card-started .profile .subtitle,
.header .profile .subtitle {
	height: auto;
}

.subtitle .role-sep {
	margin: 0 2px;
	opacity: 0.5;
}

.card-started .profile .subtitle {
	display: block;
	margin-bottom: 20px;
	line-height: 1.5;
	font-size: 16px;
}

.header .profile .subtitle {
	line-height: 1.4;
}

/* -- Content panel: continuous scroll instead of tab-switching (no vendor
      equivalent) — the template shows one .card-inner at a time via
      absolute-position + opacity/visibility swap, and below 1024px it falls
      back to a stacked, normal-flow layout (its own CSS) with anchor-scroll
      navigation instead. This makes everything ≥1024px behave the wide-
      screen way, scoped to this panel, while the left sidebar is untouched
      (see the 1024-1199px counter-override block earlier in this file for
      why the sidebar itself also needs resetting in that range). */
@media (min-width: 1024px) {
	/* .header's own width:100px is shared with 561-1023px too — see the
	   min-width:561px block further up. */

	/* .card-started was a flat 480px (vendor default) at every width down to
	   1024px — fine ≥1200px where there's room to spare, but from 1024 to
	   1199px that left #content-scroll (which gets whatever's left over)
	   doing all the shrinking by itself while the profile card stayed rigid.
	   clamp() lets it shrink too: scales with the viewport between 320px and
	   480px, and — since 40vw only exceeds 480px once the viewport itself is
	   past ~1200px — settles back to the original fixed 480px there, so nothing
	   changes at the width this was already tuned for. */
	.card-started {
		width: clamp(320px, 40vw, 480px);
	}

	/* One continuous "sheet" background behind every stacked section — without
	   it, each .card-inner is an independent white box floating on the blue
	   page background with a gap between, which reads as disconnected/odd
	   once more than one is visible at a time (this panel shows all of them
	   at once, not one-at-a-time like the vendor's original tab behavior).
	   left tracks .card-started's own width (108px = 100px header + 8px
	   header margin-right, both fixed) so the two never drift out of sync. */
	#content-scroll {
		position: absolute;
		left: calc(108px + clamp(320px, 40vw, 480px));
		right: 0;
		top: 15px;
		bottom: 15px;
		overflow-y: auto;
		overflow-x: hidden;
		background: #ffffff;
		border-radius: 0 4px 4px 0;
		box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
	}

	#content-scroll .card-inner {
		position: relative;
		left: auto;
		right: auto;
		top: auto;
		bottom: auto;
		width: auto;
		height: auto;
		margin-top: 0;
		margin-bottom: 0;
		background: transparent;
		border-radius: 0;
		opacity: 1;
		visibility: visible;
	}

	#content-scroll .card-inner:last-child {
		border-bottom: none;
	}

	#content-scroll .card-inner .card-wrap {
		height: auto;
		overflow: visible;
	}

	/* Fade-at-the-edge decoration for the old fixed-height, internally
	   scrolling card — meaningless now that the whole panel scrolls together. */
	#content-scroll .card-inner:before,
	#content-scroll .card-inner:after {
		display: none;
	}
}

html[data-theme="dark"] #content-scroll {
	background: #31313a;
}

html[data-theme="dark"] #content-scroll .card-inner {
	border-bottom-color: rgba(255, 255, 255, 0.08);
}

/* -- Home card header: shorter cover + avatar centered on its edge --------
      The template's .slide is a tall (52% of card height) photo backdrop
      sized for a single-line name (typed.js cycling one role at a time);
      with a full name + pipe-joined roles that ate most of the card,
      leaving no room for anything else. Also, the whole block (image,
      title, subtitle, social, lnks) is only ever centered as a group via
      flex `justify-content:center` against the *slide's* percentage height
      — coincidental at best, and wrong the moment content length changes.
      Fix both: a short fixed-height cover, the avatar absolutely pinned to
      straddle its bottom edge, and the rest of the content flowing top-down
      below it with deliberate spacing instead of relying on centering. */
.card-started .profile {
	justify-content: flex-start;
	padding: 0 40px 60px;
	height: 100%;
	/* Content (avatar, name, roles, 4 contact rows, 2 buttons) has a fairly
	   fixed natural height — on a short-but-allowed viewport (this can be
	   forced to exactly 100% of a 600px-floor container, see min-height on
	   .container), it can be taller than the box. Scrolling alone doesn't
	   fix this: .lnks (below) is pinned with position:absolute;bottom:0, a
	   fixed point on *this* box's own (visible, unscrolled) height — adding
	   padding or scroll room above it doesn't move it, so content can still
	   render underneath it. See the ≥1200px short-viewport override below,
	   which un-pins .lnks into normal flow specifically when that matters. */
	overflow-y: auto;
}

@media (max-width: 560px) {
	.card-started .profile {
		height: auto;
		padding: 0 20px 24px;
	}
}


.card-started .profile .slide {
	position: absolute;
	top: 0;
	left: 0;
	height: 130px;
	background-color: transparent;
	background-image: linear-gradient(135deg, #48b1bf 0%, #0856c1 100%);
	border-radius: 4px 4px 0 0;
}

/* Symmetric mirrored cut — the vendor's own :before/:after end up rotated
   12deg and -8deg respectively (one from layout.css, one overridden in
   new-skin.css), which doesn't read as intentional. Match magnitude, mirror
   the sign, and rescale for the shorter cover. */
.card-started .profile .slide:before,
.card-started .profile .slide:after {
	left: -10%;
	bottom: -36px;
	width: 70%;
	height: 72px;
	transform: rotate(7deg);
}

.card-started .profile .slide:after {
	left: auto;
	right: -10%;
	transform: rotate(-7deg);
}

/* Avatar: true circle (object-fit crops the 413x472 portrait source to
   square) straddling the cover's bottom edge, centered horizontally. */
.card-started .profile .image {
	position: absolute;
	top: 130px;
	left: 50%;
	margin: 0;
	transform: translate(-50%, -50%);
	width: 108px;
	height: 108px;
	z-index: 5;
}

.card-started .profile .image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 15%;
}

/* -- Social links: icon + visible value (PDF-style contact line), not just
      an icon — so it reads as actual info (and survives a screenshot) --- */
.card-started .profile .social {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	width: 100%;
	max-width: 270px;
	margin: 0 0 24px;
	gap: 4px;
}

.card-started .profile .social a.social-link {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 6px 4px;
	color: #646464;
	font-size: 16px;
	border-radius: 6px;
	transition: background 0.2s ease, color 0.2s ease;
}

.card-started .profile .social a.social-link:hover {
	background: rgba(8, 86, 193, 0.06);
	color: #0856c1;
}

.card-started .profile .social a.social-link .fas,
.card-started .profile .social a.social-link .fab {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: rgba(8, 86, 193, 0.08);
	color: #0856c1;
	font-size: 16px;
}

/* Download CV / Download Contact buttons: vendor's own .lnk .ion spacing
   (Basic section) assumes the icon comes *after* the text (margin-left) —
   this project puts the icon first instead, so mirror that rule with the
   margin flipped rather than editing the vendor original. */
.lnk .fas,
.lnk .fab {
	margin: 0 8px 0 0;
	position: relative;
	top: -2px;
	display: inline-block;
	vertical-align: middle;
	font-size: 18px;
	transition: all 0.3s ease 0s;
}

.card-started .profile .social a.social-link .social-value {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	text-align: left;
}

html[data-theme="dark"] .card-started .profile .social a.social-link {
	color: rgba(255, 255, 255, 0.65);
}

html[data-theme="dark"] .card-started .profile .social a.social-link:hover {
	background: rgba(255, 255, 255, 0.06);
}

.card-started .profile .title {
	/* clears the avatar: slide height (130) + half the 108px avatar (54) + gap */
	margin-top: 204px;
	/* Vendor's name heading (new-skin.css) is a flat 34px at every width down
	   to 561px, then a flat 24px below that — fine until a name this long
	   (wraps to 2-3 lines) meets a 320px phone, where even 24px crowds the
	   card. Scale continuously with the viewport instead of jumping at one
	   breakpoint: 22px at the narrowest phones, ramping up to the vendor's
	   own 34px by 560px and staying there for every wider layout (sidebar or
	   desktop), where the card already has room to spare. */
	font-size: clamp(22px, 5vw + 6px, 26px);
	line-height: 1.25;
	margin-bottom: 20px;
}

@media (max-width: 560px) {
	.card-started .profile .social {
		margin-bottom: 56px;
	}
}

/* -- Works: project cards have no thumbnail image, so give the text room ---
      Left-aligned, not centered (vendor default) — a multi-line description
      reads faster left-aligned than centered, and it matches every other
      card's text (summary, experience, awards) elsewhere on the page. */
.content.works .box-item {
	text-align: left;
}

.content.works .box-item .desc {
	padding: 12px 2px 0;
}

.content.works .box-item .desc .text {
	margin-top: 6px;
	font-size: 14px;
	line-height: 1.55;
	color: #646464;
}

html[data-theme="dark"] .content.works .box-item .desc .text {
	color: rgba(255, 255, 255, 0.55);
}

.tech-chips {
	margin-top: 10px;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.tech-chips .chip {
	padding: 3px 9px;
	font-size: 14px;
	color: #646464;
	background: rgba(153, 153, 153, 0.1);
	border-radius: 999px;
}

html[data-theme="dark"] .tech-chips .chip {
	color: rgba(255, 255, 255, 0.55);
	background: rgba(255, 255, 255, 0.08);
}

.content.works .box-item .date {
	margin-bottom: 6px;
	color: #0856c1;
	border-color: #0856c1;
}

/* -- Works: banner placeholder above each project card (no vendor
      equivalent) — until a real screenshot is supplied via the project's
      optional `image` field (app.js), show a gradient + category icon.
      aspect-ratio (not a fixed height) keeps the same proportions at any
      card width, instead of a fixed 140px getting relatively more
      "letterboxed" the wider the card gets (up to ~850px on a large
      desktop, vs ~310px on a phone — over 5:1 vs under 3:1 for the exact
      same 140px height). */
/* Gradient always fills the banner — a category icon centered on it until
   a real screenshot is supplied (.work-banner-placeholder), then that
   screenshot sits inset on top of it instead of replacing it
   (.work-banner-photo) — so every project reads as the same "brand" banner
   whether or not it has a photo yet, rather than a plain image banner
   sitting next to gradient ones. */
.work-banner {
	aspect-ratio: 2 / 1;
	height: auto;
	margin-bottom: 12px;
	padding: 1px;
	border-radius: 6px;
	display: flex;
	align-items: center;
	justify-content: center;
	background-image: linear-gradient(135deg, #48b1bf 0%, #0856c1 100%);
}

.work-banner-placeholder .fas,
.work-banner-placeholder .fab {
	font-size: 32px;
	color: rgba(255, 255, 255, 0.85);
}

/* The photo itself: inset from the gradient edge (the padding above) so
   the gradient shows through as a mat around it, like a photo on colored
   paper — the white border is what actually separates "photo" from
   "background" rather than relying on the mat gap alone. Same border in
   both themes, since it's a deliberate frame accent, not theme-adaptive. */
.work-banner-photo {
	position: relative;
	width: 100%;
	height: 100%;
	border-radius: 4px;
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center;
	cursor: pointer;
	transition: transform 0.15s ease;
	--stroke-pos: 1px;
    --stroke-neg: -1px;
    --stroke-color: rgba(255, 255, 255, 0.2);
    filter: drop-shadow(var(--stroke-pos) 0 0 var(--stroke-color))
      drop-shadow(var(--stroke-neg) 0 var(--stroke-color))
      drop-shadow(0 var(--stroke-pos) 0 var(--stroke-color))
      drop-shadow(0 var(--stroke-neg) 0 var(--stroke-color))
      drop-shadow(var(--stroke-pos) var(--stroke-pos) 0 var(--stroke-color))
      drop-shadow(var(--stroke-pos) var(--stroke-neg) 0 var(--stroke-color))
      drop-shadow(var(--stroke-neg) var(--stroke-pos) 0 var(--stroke-color))
      drop-shadow(var(--stroke-neg) var(--stroke-neg) 0 var(--stroke-color));
}

/* Hover/focus affordance: a dark scrim + magnifying-glass icon that fades
   and scales in — the only other signal this is clickable is the cursor,
   easy to miss on a touch device or at a glance. Pure CSS (::after), no
   markup change needed — same icon font already loaded for every other
   icon on the page. pointer-events:none so the overlay itself never
   intercepts the click meant for .work-banner-photo underneath it. */
.work-banner-photo::after {
	content: "\f00e";
	font-family: "Font Awesome 6 Free";
	font-weight: 900;
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 4px;
	background: rgba(0, 0, 0, 0.4);
	color: #ffffff;
	font-size: 28px;
	opacity: 0;
	transform: scale(0.8);
	transition: opacity 0.2s ease, transform 0.2s ease;
	pointer-events: none;
}

.work-banner-photo:hover::after,
.work-banner-photo:focus-visible::after {
	opacity: 1;
	transform: scale(1);
}

/* -- Project screenshot zoom modal: much larger than the CV/Contact form
      modals (.modal's own 420px max-width), and the same gradient mat +
      white-framed photo treatment as .work-banner/.work-banner-photo
      (the grid thumb), just scaled up, so the full-size view reads as the
      same "card" rather than a bare image dropped on the dark backdrop.
      The close button floats over its corner instead of a header bar. */
.image-modal-backdrop {
	padding: 40px;
}

.image-modal {
	position: relative;
	width: auto;
	max-width: 90vw;
	max-height: 90vh;
	background-image: linear-gradient(135deg, #48b1bf 0%, #0856c1 100%);
	border-radius: 10px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
	overflow: visible;
}

.image-modal-img {
	display: block;
	max-width: calc(90vw - 40px);
	max-height: calc(90vh - 40px);
	width: auto;
	height: auto;
	border-radius: 6px;
	--stroke-pos: 1px;
    --stroke-neg: -1px;
    --stroke-color: rgba(255, 255, 255, 0.2);
    filter: drop-shadow(var(--stroke-pos) 0 0 var(--stroke-color)) 
      drop-shadow(var(--stroke-neg) 0 var(--stroke-color))
      drop-shadow(0 var(--stroke-pos) 0 var(--stroke-color))
      drop-shadow(0 var(--stroke-neg) 0 var(--stroke-color))
      drop-shadow(var(--stroke-pos) var(--stroke-pos) 0 var(--stroke-color)) 
      drop-shadow(var(--stroke-pos) var(--stroke-neg) 0 var(--stroke-color))
      drop-shadow(var(--stroke-neg) var(--stroke-pos) 0 var(--stroke-color))
      drop-shadow(var(--stroke-neg) var(--stroke-neg) 0 var(--stroke-color));
}

.image-modal-close {
	position: absolute;
	top: -14px;
	right: -14px;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: #ffffff;
	color: #171717;
	font-size: 20px;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
}

.image-modal-close:hover {
	color: #0856c1;
}

/* This button's circle is *always* white — it floats on the gradient/
   photo, never on the dark modal background the other close buttons sit
   on — but two separate dark-mode rules both still match plain .modal-close
   in dark mode: a vendor one (html[data-theme="dark"] button, specificity
   0,1,2) and this project's own (html[data-theme="dark"] .modal-close,
   0,2,1, meant for the CV/Contact modals' dark card background). Between
   those two the project's own rule should already win on specificity, but
   either way neither is correct *here* — this button's background never
   changes with theme, so its text shouldn't either. The compound selector
   (.modal-close.image-modal-close, two classes) outranks every plain
   single-class/attribute rule above regardless of which of those was
   actually winning, so this is the one definitive place to fix it. */
.modal-close.image-modal-close {
	color: #171717;
	background: #ffffff;
}

html[data-theme="dark"] .modal-close.image-modal-close {
	background: #31313a;
	color: #ffffff;
}

/* html[data-theme="dark"] .modal sets a dark background:#31313a (for the
   CV/Contact form modals) — .image-modal inherits the base .modal class,
   so that rule's higher specificity (attribute selector + class beats a
   plain class) would otherwise wipe out the gradient here too. Same
   gradient in both themes, same reasoning as the work-banner's. */
html[data-theme="dark"] .image-modal {
	background-image: linear-gradient(135deg, #48b1bf 0%, #0856c1 100%);
}

.content.works .box-item .desc {
	padding-top: 0;
}

.content.works .box-item .desc .name {
	margin-bottom: 0;
	font-size: 16px;
}

.content.works .box-item .desc .date {
	font-size: 16px;
    color: #646464;
    border-color: #646464;
    margin-bottom: 4px;
	padding: 0 5px;
	font-weight: 400;
    text-transform: none;
	border-radius: 4px;
	float: right;
}

.content.works .box-item .desc .category {
	font-size: 16px;
	margin-top: 0;
}

.content.works .box-item .desc .text p {
	font-size: 14.5px;
	text-align: justify;
}

.content.works .box-item .desc * {
	line-height: normal;
}

/* -- Works: two columns once there's room to spare (≥1200px matches this
      panel's own "spacious desktop" breakpoint elsewhere), instead of one
      full-width card per row stretching to ~850px — a project card's
      content (banner, title, 2-3 line description, chips) doesn't need
      that much width, and one column per row means excess scrolling to
      see every project. Below that, back to the vendor's own full-width
      col-d/col-t/col-m-12 (set in app.js) — a single column stays easiest
      to read once a card wouldn't have much more than ~300-400px to work
      with anyway. */
@media (min-width: 1200px) {
	#works-grid.grid-items .grid-item.col {
		width: 50%;
	}
	#works-grid.grid-items {
		margin-left: -12px;
		margin-right: -12px;
	}
	#works-grid.grid-items .grid-item.col {
		padding-right: 12px;
		padding-left: 12px;
	}
}

.content.works .grid-items .grid-item.col {
	margin-top: 30px;
}

/* -- Technical Skills: compact one-line-per-category list (matches the PDF
      resume) instead of the template's spacious per-group checklist. ------- */
.skills-compact {
	margin: 0;
	padding: 0;
	list-style: none;
}

.skills-compact li {
	padding: 10px 0;
	border-bottom: 1px solid #eeeeee;
	font-size: 16px;
	line-height: 1.6;
	color: #646464;
}

.skills-compact li:last-child {
	border-bottom: none;
	padding-bottom: 0;
}

.skills-compact strong {
	color: #323232;
	font-weight: 500;
}

html[data-theme="dark"] .skills-compact li {
	border-bottom-color: rgba(255, 255, 255, 0.08);
	color: rgba(255, 255, 255, 0.55);
}

html[data-theme="dark"] .skills-compact strong {
	color: rgba(255, 255, 255, 0.85);
}

@media (max-width: 560px) {
	.skills-compact li {
		padding: 8px 0;
		font-size: 14.5px;
	}
}

/* -- Awards & Recognitions: stacked list (no vendor equivalent) ------------
      A 3-column table has no good narrow-screen behavior — either the text
      gets cramped or it forces horizontal scrolling. A year badge + title +
      org reads cleanly at any width without a second, mobile-only layout. */
.awards-list {
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 0;
	list-style: none;
}

.award-item {
	display: flex;
	align-items: flex-start;
	gap: 16px;
	padding: 14px 0;
	border-bottom: 1px solid #eeeeee;
}

.award-item:last-child {
	border-bottom: none;
	padding-bottom: 0;
}

.award-year {
	flex: none;
	width: 44px;
	padding-top: 1px;
	color: #0856c1;
	font-weight: 600;
}

.award-body {
	flex: 1;
	min-width: 0;
}

.award-title {
	font-weight: 600;
	color: #323232;
}

.award-org {
	margin-top: 2px;
	color: #646464;
}

html[data-theme="dark"] .award-item {
	border-bottom-color: rgba(255, 255, 255, 0.08);
}

html[data-theme="dark"] .award-title {
	color: rgba(255, 255, 255, 0.85);
}

html[data-theme="dark"] .award-org {
	color: rgba(255, 255, 255, 0.55);
}

/* Same sizes at every width, same as the rest of this list's page — a
   card list this short doesn't need a separate, smaller mobile scale. */
@media (max-width: 560px) {
	.award-item {
		gap: 12px;
		padding: 10px 0;
	}

	.award-year {
		width: 38px;
	}
}

/* -- Education: same year-badge + body layout as Awards (no vendor
      equivalent) — a vertical timeline reads as a *progression* of several
      steps, which looks odd for a single highest-qualification entry; a
      plain badge + degree + org reads correctly whether there's one entry
      or several, with no separate "not a timeline" variant needed. */
.education-list {
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 0;
	list-style: none;
}

.education-item {
	display: flex;
	align-items: flex-start;
	gap: 16px;
	padding: 14px 0;
	border-bottom: 1px solid #eeeeee;
}

.education-item:last-child {
	border-bottom: none;
	padding-bottom: 0;
}

.education-year {
	flex: none;
	width: 44px;
	padding-top: 1px;
	color: #0856c1;
	font-size: 16px;
	font-weight: 600;
}

.education-body {
	flex: 1;
	min-width: 0;
}

.education-degree {
	font-size: 16px;
	font-weight: 600;
	color: #323232;
}

.education-org {
	margin-top: 2px;
	font-size: 16px;
	color: #646464;
}

html[data-theme="dark"] .education-item {
	border-bottom-color: rgba(255, 255, 255, 0.08);
}

html[data-theme="dark"] .education-degree {
	color: rgba(255, 255, 255, 0.85);
}

html[data-theme="dark"] .education-org {
	color: rgba(255, 255, 255, 0.55);
}

@media (max-width: 560px) {
	.education-item {
		gap: 12px;
		padding: 10px 0;
	}

	.education-year {
		width: 38px;
	}
}

/* -- Experience: vertical left-node timeline (no template equivalent) ------ */
.resume-items.timeline {
	position: relative;
	padding-left: 28px;
	margin: 0;
	list-style: none;
}

.resume-items.timeline:before {
	content: '';
	position: absolute;
	left: 5px;
	top: 6px;
	bottom: 6px;
	width: 2px;
	background: rgba(8, 86, 193, 0.6);
}

.resume-items .timeline-item {
	position: relative;
	padding: 0 0 24px 0;
}

.resume-items .timeline-item:last-child {
	padding-bottom: 0;
}

.resume-items .timeline-item:before {
	content: '';
	position: absolute;
	left: -33px;
	top: 2px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #ffffff;
	border: 2px solid #0856c1;
	z-index: 1;
}

@media (max-width: 560px) {
	.resume-items.timeline {
		padding-left: 12px;
	}

	.resume-items .timeline-item {
		padding-bottom: 20px;
		padding-left: 20px;
	}

	/* Keeps the dot centered on the vertical line (left:13px, unchanged) —
	   shifted by exactly the 6px the padding-left above just shrunk by. */
	.resume-items .timeline-item:before {
		left: -14px;
	}

	.content-scroll {
		border-radius: 4px;
	}
}

@media (max-width: 1240px) {
    html[data-theme=dark] .header {
		background: transparent;
	}
}
/* -- Nav: group overflow items into a "More" menu whenever they don't fit --
      Which items are hidden and whether the button shows at all is computed
      in JS by measuring actual overflow (see updateNavOverflow in app.js) —
      not tied to a fixed breakpoint, so it only appears when something is
      genuinely hidden. Visibility itself is the native [hidden] attribute;
      these rules only style the *shown* state. */
#nav-more-item {
	position: relative;
}

.nav-more-menu {
	display: flex;
	flex-direction: column;
	background: #ffffff;
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
	z-index: 220;
}

/* Mobile row: a full-width bar dropping down from the fixed 64px header —
   .nav-more-item sits inline in a horizontal row there, so there's no
   single trigger edge worth anchoring a small flyout to. */
@media (max-width: 560px) {
	.nav-more-menu {
		position: fixed;
		left: 0;
		right: 0;
	}
}

/* Sidebar layouts: unlike Settings, "More" isn't pinned to a fixed spot —
   it appears wherever it lands in the vertical list once earlier items are
   folded into it, so opening downward from its top edge risks running off
   the bottom of the viewport the same way Settings' dropdown originally
   did. Flyout to the right instead, opening *upward* from the trigger's
   own bottom edge — there's reliably more room above a list item than
   below one that's already partway down a short sidebar. */
@media (min-width: 561px) {
	.nav-more-menu {
		position: absolute;
		top: auto;
		bottom: 0;
		left: 100%;
		right: auto;
		min-width: 160px;
		max-height: calc(100vh - 20px);
		overflow-y: auto;
	}
}

/* The vendor CSS sets `display` on `.top-menu ul li` (and `.nav-more-menu`
   above), so those author-origin rules always beat the native [hidden]
   UA-stylesheet rule regardless of specificity — force it explicitly. */
.nav-more-menu[hidden],
#nav-more-item[hidden],
.nav-overflow[hidden],
.nav-more-menu a[hidden] {
	display: none !important;
}

.nav-more-menu a {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	gap: 10px;
	padding: 14px 20px;
	color: #323232;
	font-size: 12px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.nav-more-menu a:hover {
	color: #0856c1;
}

.top-menu ul li.nav-more-item a[aria-expanded="true"] {
	color: #0856c1;
}

html[data-theme="dark"] .nav-more-menu {
	background: #31313a;
}

html[data-theme="dark"] .nav-more-menu a {
	color: rgba(255, 255, 255, 0.85);
}

/* -- Whitespace: the vendor's title box reserves 51px (21px text line +
      30px padding-bottom) before any body text starts, then each section
      adds another 30-40px margin below its content — sized for a template
      showing one section at a time, but stacked continuously here it reads
      as a lot of dead air between a heading and its own text, and between
      sections. Tighten both while keeping the title's colored accent/rule
      (absolutely positioned, unaffected by these height changes). */
.content .title {
	min-height: 0;
	padding: 0;
}

.content .title:after {
	display: none;
}

.content .title + .row .col {
	padding-top: 16px;
}

.content .title + .row .col ul li:first-child {
	padding-top: 0;
}

.content .title + .row .col * {
	line-height: normal;
}

.content .title + .row .col #about-summary {
	text-align: justify;
}

.content .title + .row .col h3, .content .title + .row .col .company {
	font-size: 16px;
}

.content .title + .row .col .date {
	font-size: 16px;
	color: #646464;
	border-color: #646464;
	margin-bottom: 4px;
}

.content .title + .row .col ul li {
	font-size: 16px;
	text-align: justify;
}

.content .title + .row .col ul li p {
	font-size: 14.5px;
	text-align: justify;
}

.content {
	margin: 0 0 26px 0;
}

.content:last-child {
	margin-bottom: 10px;
}

.card-inner:before, .card-inner:after {
	display: none;
}

#works-filters {
	display: none;
}

/* Tighten further on mobile: vendor's 20px section-title size and the
   generic 16px/25px-bottom-margin <p> rule are sized for a wide desktop
   column, and read as oversized/loose in a narrow, already-compact card. */
@media (max-width: 560px) {
	.card-inner .card-wrap {
		padding: 30px 20px 5px;
	}

	.card-inner {
        padding-bottom: 0 !important;
    }

	.content {
		margin-bottom: 0 !important;
	}

	.header .top-menu ul li:last-child a {
		border-radius: 0;
	}
	.container {
		max-width: 100%;
	}
}


@media (max-width: 1023px) {
	.card-inner {
        padding-bottom: 16px;
    }

    .card-inner:last-child
	{
		margin-bottom: 50px;
		padding-bottom: 0;
	}
	#content-scroll {
		background: transparent !important;
	}
}

/* ==========================================================================
   Accessibility
   ========================================================================== */

/* -- Focus visibility: the vendor resets `outline: none`/`outline: 0` on
      every <a> and every <input>/<textarea>/<button> globally (basic.css),
      with nothing anywhere restoring it — every interactive element on the
      page loses its focus indicator, making keyboard navigation unusable.
      :focus-visible (not :focus) so it only shows for keyboard/AT users,
      not on mouse clicks. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid #0856c1;
	outline-offset: 2px;
}

html[data-theme="dark"] a:focus-visible,
html[data-theme="dark"] button:focus-visible,
html[data-theme="dark"] input:focus-visible,
html[data-theme="dark"] [tabindex]:focus-visible {
	outline-color: #8ab4f8;
}

/* -- Dark mode color contrast: the brand blue (#0856c1) is 6.75:1 against
      white — comfortably AA — but only 1.9:1 against the dark card/dropdown
      background (#31313a), nowhere near the 4.5:1 text minimum (or even the
      3:1 minimum for non-text UI/border indicators). Every place that color
      is used as text, an icon, or a meaningful border needs a lighter value
      once dark mode is active. #8ab4f8 (Material dark-theme's own accent
      blue) clears 4.5:1 against every dark surface this site uses, with
      margin to spare. Selectors are duplicated here (Site Overrides) rather
      than edited in place, since the Blue section above is vendor markup
      kept unmodified. */
html[data-theme="dark"] .header .top-menu ul li:hover a,
html[data-theme="dark"] .header .top-menu ul li.active a,
html[data-theme="dark"] .header .top-menu ul li:hover a .icon,
html[data-theme="dark"] .header .top-menu ul li.active a .icon,
html[data-theme="dark"] .header .top-menu ul li:hover a .link,
html[data-theme="dark"] .header .top-menu ul li.active a .link,
html[data-theme="dark"] .card-started .profile .subtitle,
html[data-theme="dark"] .card-started .profile .social a.social-link:hover,
html[data-theme="dark"] .card-started .profile .social a.social-link .fas,
html[data-theme="dark"] .card-started .profile .social a.social-link .fab,
html[data-theme="dark"] .content.works .filter-menu .f_btn.active,
html[data-theme="dark"] .content .title .first-word,
html[data-theme="dark"] .content .title::first-letter,
html[data-theme="dark"] .content .title .first-letter:first-letter,
html[data-theme="dark"] .education-year,
html[data-theme="dark"] .lnk:hover,
html[data-theme="dark"] .lnk:hover .fas,
html[data-theme="dark"] .lnk:hover .fab,
html[data-theme="dark"] .content.works .box-item .date,
html[data-theme="dark"] .award-year,
html[data-theme="dark"] .top-menu ul li.nav-settings-item a[aria-expanded="true"],
html[data-theme="dark"] .top-menu ul li.nav-more-item a[aria-expanded="true"],
html[data-theme="dark"] .nav-more-menu a:hover,
html[data-theme="dark"] .settings-row:hover,
html[data-theme="dark"] .settings-check,
html[data-theme="dark"] .settings-lang-option[aria-pressed="true"],
html[data-theme="dark"] .modal-close:hover,
html[data-theme="dark"] .modal-field-copy:hover,
html[data-theme="dark"] .content .title + .row .col .date {
	color: #8ab4f8;
}

html[data-theme="dark"] .content.works .box-item .date,
html[data-theme="dark"] .resume-items .timeline-item:before,
html[data-theme="dark"] .modal-list-item:hover,
html[data-theme="dark"] .content .title + .row .col .date {
	border-color: #8ab4f8;
}

html[data-theme="dark"] .resume-items.timeline:before {
	background: rgba(138, 180, 248, 0.6);
}
html[data-theme="dark"] .resume-items .timeline-item:before {
	background: #31313a;
}

/* Tech chips: the existing dark-mode tint (0.55 alpha) renders at ~4.36:1
   against the chip's own dark background — just under the 4.5:1 minimum. */
html[data-theme="dark"] .tech-chips .chip {
	color: rgba(255, 255, 255, 0.65);
}

/* -- Light mode color contrast: the vendor's own #999999 secondary-text
      grey (company/org lines under each resume/project entry) is only
      2.84:1 against white — same problem as the dark-mode blue above, just
      inverted. #646464 (already used elsewhere on this page for secondary
      text) clears 4.5:1 against both white and the tech-chip background. */
.resume-items .resume-item .company,
.box-item .desc .category {
	color: #646464;
}

/* ...and the same fix needs its own dark-mode counterpart: #646464 fails
   against the dark card background (2.17:1), and there was no pre-existing
   dark override here to fall back on (only luck: the vendor's original
   #999999 happened to just clear 4.5:1 against dark by itself). */
html[data-theme="dark"] .resume-items .resume-item .company,
html[data-theme="dark"] .box-item .desc .category {
	color: #a3a3a7;
}

/* modal-close/modal-list-meta/modal-field-copy were switched to #646464
   above for the same reason — but that fails against the dark modal
   background (#31313a), so dark mode needs its own lighter grey back. */
html[data-theme="dark"] .modal-close,
html[data-theme="dark"] .modal-list-meta,
html[data-theme="dark"] .modal-field-copy {
	color: #a3a3a7;
}