diff --git a/.csscomb.json b/.csscomb.json new file mode 100644 index 000000000..a7d204b05 --- /dev/null +++ b/.csscomb.json @@ -0,0 +1,419 @@ +{ + "remove-empty-rulesets": true, + "color-case": "lower", + "block-indent": " ", + "color-shorthand": true, + "element-case": "lower", + "eof-newline": true, + "leading-zero": false, + "quotes": "single", + "sort-order-fallback": "abc", + "space-before-colon": "", + "space-after-colon": " ", + "space-before-combinator": " ", + "space-after-combinator": " ", + "space-between-declarations": "\n", + "space-before-opening-brace": " ", + "space-after-opening-brace": "\n", + "space-after-selector-delimiter": "\n", + "space-before-selector-delimiter": "", + "space-before-closing-brace": "\n", + "strip-spaces": true, + "tab-size": true, + "unitless-zero": true, + "vendor-prefix-align": true, + "sort-order": [ [ + "$variable", + "$include", + "@include", + "$import", + "-moz-animation", + "-moz-animation-delay", + "-moz-animation-direction", + "-moz-animation-duration", + "-moz-animation-iteration-count", + "-moz-animation-name", + "-moz-animation-play-state", + "-moz-animation-timing-function", + "-moz-background-clip", + "-moz-background-size", + "-moz-border-bottom-image", + "-moz-border-bottom-left-image", + "-moz-border-bottom-right-image", + "-moz-border-corner-image", + "-moz-border-image", + "-moz-border-image-outset", + "-moz-border-image-repeat", + "-moz-border-image-slice", + "-moz-border-image-source", + "-moz-border-image-width", + "-moz-border-left-image", + "-moz-border-radius", + "-moz-border-radius-bottomleft", + "-moz-border-radius-bottomright", + "-moz-border-radius-topleft", + "-moz-border-radius-topright", + "-moz-border-right-image", + "-moz-border-top-image", + "-moz-border-top-left-image", + "-moz-border-top-right-image", + "-moz-box-shadow", + "-moz-box-sizing", + "-moz-column-count", + "-moz-column-fill", + "-moz-column-gap", + "-moz-column-rule", + "-moz-column-rule-color", + "-moz-column-rule-style", + "-moz-column-rule-width", + "-moz-column-span", + "-moz-column-width", + "-moz-columns", + "-moz-flex-align", + "-moz-flex-direction", + "-moz-flex-order", + "-moz-flex-pack", + "-moz-hyphens", + "-moz-tab-size", + "-moz-text-align-last", + "-moz-transform", + "-moz-transform-origin", + "-moz-transition", + "-moz-transition-delay", + "-moz-transition-duration", + "-moz-transition-property", + "-moz-transition-timing-function", + "-ms-animation", + "-ms-animation-delay", + "-ms-animation-direction", + "-ms-animation-duration", + "-ms-animation-iteration-count", + "-ms-animation-name", + "-ms-animation-play-state", + "-ms-animation-timing-function", + "-ms-background-position-x", + "-ms-background-position-y", + "-ms-filter", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", + "-ms-flex-align", + "-ms-flex-direction", + "-ms-flex-order", + "-ms-flex-pack", + "-ms-interpolation-mode", + "-ms-overflow-x", + "-ms-overflow-y", + "-ms-text-align-last", + "-ms-text-justify", + "-ms-text-overflow", + "-ms-transform", + "-ms-transform-origin", + "-ms-transition", + "-ms-transition-delay", + "-ms-transition-duration", + "-ms-transition-property", + "-ms-transition-timing-function", + "-ms-word-break", + "-ms-word-wrap", + "-ms-writing-mode", + "-ms-zoom", + "-o-animation", + "-o-animation-delay", + "-o-animation-direction", + "-o-animation-duration", + "-o-animation-iteration-count", + "-o-animation-name", + "-o-animation-play-state", + "-o-animation-timing-function", + "-o-background-size", + "-o-border-bottom-image", + "-o-border-bottom-left-image", + "-o-border-bottom-right-image", + "-o-border-corner-image", + "-o-border-image", + "-o-border-image-outset", + "-o-border-image-repeat", + "-o-border-image-slice", + "-o-border-image-source", + "-o-border-image-width", + "-o-border-left-image", + "-o-border-right-image", + "-o-border-top-image", + "-o-border-top-left-image", + "-o-border-top-right-image", + "-o-flex-align", + "-o-flex-direction", + "-o-flex-order", + "-o-flex-pack", + "-o-tab-size", + "-o-transform", + "-o-transform-origin", + "-o-transition", + "-o-transition-delay", + "-o-transition-duration", + "-o-transition-property", + "-o-transition-timing-function", + "-webkit-animation", + "-webkit-animation-delay", + "-webkit-animation-direction", + "-webkit-animation-duration", + "-webkit-animation-iteration-count", + "-webkit-animation-name", + "-webkit-animation-play-state", + "-webkit-animation-timing-function", + "-webkit-background-clip", + "-webkit-background-size", + "-webkit-border-bottom-image", + "-webkit-border-bottom-left-image", + "-webkit-border-bottom-left-radius", + "-webkit-border-bottom-right-image", + "-webkit-border-bottom-right-radius", + "-webkit-border-corner-image", + "-webkit-border-image", + "-webkit-border-image-outset", + "-webkit-border-image-repeat", + "-webkit-border-image-slice", + "-webkit-border-image-source", + "-webkit-border-image-width", + "-webkit-border-left-image", + "-webkit-border-radius", + "-webkit-border-right-image", + "-webkit-border-top-image", + "-webkit-border-top-left-image", + "-webkit-border-top-left-radius", + "-webkit-border-top-right-image", + "-webkit-border-top-right-radius", + "-webkit-box-shadow", + "-webkit-box-sizing", + "-webkit-column-count", + "-webkit-column-fill", + "-webkit-column-gap", + "-webkit-column-rule", + "-webkit-column-rule-color", + "-webkit-column-rule-style", + "-webkit-column-rule-width", + "-webkit-column-span", + "-webkit-column-width", + "-webkit-columns", + "-webkit-filter", + "-webkit-flex-align", + "-webkit-flex-direction", + "-webkit-flex-order", + "-webkit-flex-pack", + "-webkit-hyphens", + "-webkit-overflow-scrolling", + "-webkit-text-align-last", + "-webkit-transform", + "-webkit-transform-origin", + "-webkit-transition", + "-webkit-transition-delay", + "-webkit-transition-duration", + "-webkit-transition-property", + "-webkit-transition-timing-function", + "animation", + "animation-delay", + "animation-direction", + "animation-duration", + "animation-iteration-count", + "animation-name", + "animation-play-state", + "animation-timing-function", + "background", + "background-attachment", + "background-clip", + "background-color", + "background-image", + "background-origin", + "background-position", + "background-position-x", + "background-position-y", + "background-repeat", + "background-size", + "border", + "border-bottom", + "border-bottom-color", + "border-bottom-image", + "border-bottom-left-image", + "border-bottom-left-radius", + "border-bottom-right-image", + "border-bottom-right-radius", + "border-bottom-style", + "border-bottom-width", + "border-collapse", + "border-color", + "border-corner-image", + "border-image", + "border-image-outset", + "border-image-repeat", + "border-image-slice", + "border-image-source", + "border-image-width", + "border-left", + "border-left-color", + "border-left-image", + "border-left-style", + "border-left-width", + "border-radius", + "border-right", + "border-right-color", + "border-right-image", + "border-right-style", + "border-right-width", + "border-spacing", + "border-style", + "border-top", + "border-top-color", + "border-top-image", + "border-top-left-image", + "border-top-left-radius", + "border-top-right-image", + "border-top-right-radius", + "border-top-style", + "border-top-width", + "border-width", + "bottom", + "box-decoration-break", + "box-shadow", + "box-sizing", + "break-after", + "break-before", + "break-inside", + "caption-side", + "clear", + "clip", + "color", + "column-count", + "column-fill", + "column-gap", + "column-rule", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-width", + "columns", + "content", + "counter-increment", + "counter-reset", + "cursor", + "direction", + "display", + "empty-cells", + "filter", + "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", + "flex-align", + "flex-direction", + "flex-order", + "flex-pack", + "flex-flow", + "flex-order", + "flex", + "align-self", + "align-items", + "align-content", + "justify-content", + "flex-grow", + "flex-shrink", + "flex-wrap", + "order", + "float", + + "height", + "width", + "hyphens", + "font", + "font-family", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-variant", + "font-weight", + "left", + "letter-spacing", + "line-height", + "list-style", + "list-style-image", + "list-style-position", + "list-style-type", + "margin", + "margin-bottom", + "margin-left", + "margin-right", + "margin-top", + "max-height", + "max-width", + "max-zoom", + "min-height", + "min-width", + "min-zoom", + "nav-down", + "nav-index", + "nav-left", + "nav-right", + "nav-up", + "opacity", + "orientation", + "orphans", + "outline", + "outline-color", + "outline-offset", + "outline-style", + "outline-width", + "overflow", + "overflow-x", + "overflow-y", + "padding", + "padding-bottom", + "padding-left", + "padding-right", + "padding-top", + "page-break-after", + "page-break-before", + "page-break-inside", + "pointer-events", + "position", + "quotes", + "resize", + "right", + "src", + "tab-size", + "table-layout", + "text-align", + "text-align-last", + "text-decoration", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-position", + "text-emphasis-style", + "text-indent", + "text-justify", + "text-outline", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "text-shadow", + "text-transform", + "text-wrap", + "top", + "transform", + "transform-origin", + "transition", + "transition-delay", + "transition-duration", + "transition-property", + "transition-timing-function", + "unicode-bidi", + "user-zoom", + "vertical-align", + "visibility", + "white-space", + "widows", + "word-break", + "word-spacing", + "word-wrap", + "z-index", + "zoom", + "." + ] ] +} \ No newline at end of file diff --git a/app/account/reset-password/reset-password.jade b/app/account/reset-password/reset-password.jade index ef628b810..518533768 100644 --- a/app/account/reset-password/reset-password.jade +++ b/app/account/reset-password/reset-password.jade @@ -3,11 +3,12 @@ header a.logo-link(href="/") img(src="/images/logo_mobile.svg", alt="Topcoder Logo") + .arrow + h1(class="header") PASSWORD RESET form.reset-form(name='vm.generateTokenForm', role="form", ng-submit="vm.generateTokenForm.$valid && vm.sendLink()", novalidate) - p.email-label Please enter your email address, and we'll send you a link to reset your password .validation-bar(ng-class="{ 'error-bar': (vm.generateTokenForm.email.$dirty && vm.generateTokenForm.email.$invalid), 'success-bar': (vm.generateTokenForm.email.$valid) }") @@ -16,16 +17,20 @@ .tips.email-tips(ng-show="vm.emailTips") .arrow + h3 Email Tips: p Enter your email address and we'll get back to you with a reset link .form-errors p.form-error(ng-show="vm.generateTokenForm.email.$dirty && vm.generateTokenForm.email.$invalid") Please enter a valid email address. + p.form-error(ng-show="vm.alreadySent") You already requested a reset link recently. Please check your inbox or spam folder. If you have any trouble, please contact a(href="mailto:support@topcoder.com?Subject=Unable%20to%20reset%20my%20password" target="_top") support@topcoder.com + p.form-error(ng-show="vm.emailNotFound") We couldn't find a member with that email address. Please check that you entered it correctly. If you continue to have trouble, please contact a(href="mailto:support@topcoder.com?Subject=Unable%20to%20reset%20my%20password" target="_top") support@topcoder.com + p.form-error(ng-show="vm.unkownError") We were unable to send you a reset link because of a temporary problem. Please try again. If you continue to have trouble, please contact a(href="mailto:support@topcoder.com?Subject=Unable%20to%20reset%20my%20password" target="_top") support@topcoder.com @@ -34,29 +39,39 @@ a.link(ui-sref="login") Back to Login .reset-password-container(ng-show="vm.resetTokenSent") + header + a.logo-link(href="/") + img(src="/images/logo_mobile.svg", alt="Topcoder Logo") + + .arrow + h1(class="header") Back on Track! - p We have sent you an email with a link to reset your password. + + p(class="m-b-lg") We have sent you an email with a link to reset your password. + a.link(ui-sref="login") Back to Login .reset-password-container(ng-show="vm.token") header img(src="/images/logo_mobile.svg", alt="Topcoder Logo") + .arrow + h1(class="header") CREATE NEW PASSWORD form.reset-form(name='vm.resetPasswordForm', role="form", ng-submit="vm.resetPasswordForm.$valid && vm.resetPassword()", novalidate) - .validation-bar(ng-class="{ 'success-bar': (vm.resetPasswordForm.password.$valid) }") toggle-password-with-tips .tips.password-tips(ng-show="vm.passwordFocus") .arrow + h3 Password Tips: - + p(ng-class="{ 'has-length-between-range': (vm.resetPasswordForm.password.$dirty && !vm.resetPasswordForm.password.$error.minlength && !vm.resetPasswordForm.password.$error.maxlength && !vm.resetPasswordForm.password.$error.required) }") Must be between 8 and 64 characters - + p(ng-class="{ 'has-letter': (vm.resetPasswordForm.password.$dirty && !vm.resetPasswordForm.password.$error.hasLetter) }") At least one letter - + p(ng-class="{ 'has-symbol-or-number': (vm.resetPasswordForm.password.$dirty && !vm.resetPasswordForm.password.$error.hasSymbolOrNumber) }") At least one number or symbol .form-errors diff --git a/assets/css/account/account.scss b/assets/css/account/account.scss index 1a743b9fe..d240c87e6 100644 --- a/assets/css/account/account.scss +++ b/assets/css/account/account.scss @@ -4,94 +4,92 @@ .register-container, .reset-password-container, .registered-successfully-container { - position: relative; - width: 560px; - margin: 60px auto 0; - display: flex; - flex-direction: column; - text-align: center; - justify-content: flex-start; @include font-with-weight('Merriweather Sans'); background-color: $white; border-radius: 3px; - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2); - + box-shadow: 0 1px 6px rgba(0, 0, 0, .2); + display: flex; + flex-direction: column; + justify-content: flex-start; + width: 560px; + margin: 60px auto 0; + position: relative; + text-align: center; header { - height: 70px; background-color: $gray-darkest; + border-radius: 3px 3px 0 0; display: flex; - justify-content: center; align-items: center; - border-radius: 3px 3px 0 0; + justify-content: center; + height: 70px; position: relative; - // CSS-olny Arrow &:after { - bottom: 0; - left: 50%; border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; + border-bottom-color: $white; border-color: rgba(255, 255, 255, 0); - border-bottom-color: #fff; border-width: 13px; + bottom: 0; + content: ' '; + height: 0; + width: 0; + left: 50%; margin-left: -16px; + pointer-events: none; + position: absolute; } - .logo-link img { - height: 30px; display: inline-block; + height: 30px; } } - // Basic element stylings h1 { - margin-top: 39px; + @include font-with-weight('Sofia Pro', 300); + color: $gray-darkest; + align-self: center; + width: 380px; + font-size: 20px; + line-height: 30px; margin-bottom: 40px; + margin-top: 39px; + text-transform: uppercase; @media (max-width: 767px) { margin: 30px auto; } - color: $gray-darkest; - line-height: 30px; - font-size: 20px; - @include font-with-weight('Sofia Pro', 300); - width: 380px; - align-self: center; - text-transform: uppercase; } - + header > p, + form > p { + font-size: 15px; + line-height: 20px; + padding-bottom: 20px; + } // registration sizes, remove - input[name="firstname"], input[name="lastname"] { + input[name='firstname'], + input[name='lastname'] { width: 185px; padding-right: 45px; } - - input[name="username"], input[name="email"] { + input[name='username'], + input[name='email'] { padding-right: 85px; } - - input[type="text"], + input[type='text'], toggle-password { width: 380px; } - - input:not([type="checkbox"]) { + input:not([type='checkbox']) { width: 300px; } - toggle-password { input#current-password-input { - width: 300px; - height: 20px; border: none; - outline: none; box-shadow: none; + height: 20px; + width: 300px; + outline: none; } } - .tips, .email-tips, .password-tips { @@ -99,151 +97,125 @@ left: 395px; } } - // Autocomplete .angucomplete-dropdown { - width: 100%; + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, .4); color: $gray-darkest; + width: 100%; text-align: left; - box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.4); } .angucomplete-selected-row { background-color: $primary-lighter; color: $gray-darkest; } // Autocomplete end - button { - // width: 180px; align-self: center; - // text-transform: uppercase; + margin-top: 20px; } - - // Form stylings - @include ui-form-placeholder; - - input[type="text"], + input[type='text'], toggle-password { width: 380px; } - - toggle-password { input#current-password-input { width: 300px; } } - - - - // Social section - .networks { display: block; - .network { margin-left: 30px; - &:first-child { margin-left: 0 !important; } - & a:hover { filter: brightness(80%); } - span { - color: #A3A3AE; + @include font-with-weight('Sofia Pro', 500); + color: $accent-gray; + cursor: pointer; font-size: 10px; line-height: 13px; - @include font-with-weight('Sofia Pro', 500);; - text-transform: uppercase; margin-top: 10px; - cursor: pointer; - transition: .1s all; + text-transform: uppercase; + transition: .1s all;; } } - .network:hover { span { color: $gray-darkest; } } } - .login-options { - margin-top: 15px; margin-bottom: 40px; - + margin-top: 15px; p { - color: #A3A3AE; + @include font-with-weight; + color: $accent-gray; font-size: 13px; line-height: 22px; - @include font-with-weight; text-transform: uppercase; } - .networks { display: flex; justify-content: center; - padding: 0px 10px; - + padding: 0 10px; .network { display: flex; flex-direction: column; align-items: center; - p { - color: #A3A3AE; - font-size: 10px; - line-height: 13px; @include font-with-weight('Sofia Pro', 500); - text-transform: uppercase; + color: $accent-gray; cursor: pointer; + font-size: 10px; + line-height: 13px; margin-top: 10px; + text-transform: uppercase; } - .ico { - margin-top: 22px; - width: 40px; - height: 40px; cursor: pointer; + height: 40px; + width: 40px; + margin-top: 22px; } } - .github { .ico { - color: #404041; background-image: url(/images/svg/github.svg); background-repeat: no-repeat; + color: #404041; } } .facebook { margin-left: 41px; .ico { - color: #0D72B9; background-image: url(/images/svg/facebook.svg); background-repeat: no-repeat; + color: #0d72b9; } } .google-plus { margin-left: 43px; .ico { - border: 1px solid #D1D3D4; - border-radius: 4px; - color: #EE4036; background-image: url(/images/svg/gplus.svg); + background-position: center; background-repeat: no-repeat; - background-position : center; + border: 1px solid #d1d3d4; + border-radius: 4px; + color: #ee4036; } } .twitter { margin-left: 40px; .ico { - color: #26A9E0; background-image: url(/images/svg/twitter.svg); background-repeat: no-repeat; + color: #26a9e0; } } } @@ -251,29 +223,26 @@ } // Register Link styles - .join-topcoder { + @include font-with-weight('Sofia Pro', 500); display: flex; flex-flow: row wrap; - margin-top: 30px; justify-content: center; - text-transform: uppercase; font-size: $label-small; - @include font-with-weight('Sofia Pro', 500); - + margin-top: 30px; + text-transform: uppercase; a { display: inline; } - - .redirect{ + .redirect { width: 111px; padding: 8px 10px; } } .fold-pusher { - height: 0px; - max-height: 0px; + height: 0; + max-height: 0; } .fold-wrapper { @@ -285,34 +254,28 @@ flex-flow: row wrap; justify-content: center; padding: 0 0 30px; - .copyright-notice { color: $gray-dark; } - } @media (max-width: 767px) { - .login-container, .register-container, .reset-password-container, .registered-successfully-container { width: 100%; margin: 0 auto; - h1 { width: 100%; } - form { - margin-left: 0px; - padding: 0 20px; width: 100%; - - input[type="text"], - input[type="email"], + margin-left: 0; + padding: 0 20px; + input[type='text'], + input[type='email'], toggle-password, toggle-password-with-tips { width: 100%; @@ -332,47 +295,38 @@ } } - // The separator for login options - .tc-separator { - // border: 1px solid $gray-light; - // position: relative; - // display: inline-block; - // height: 1px; - $sp-width: 340px; + +// The separator for login options +.tc-separator { + $sp-width: 340px; + display: block; + width: $sp-width; + margin: 0 auto; + position: relative; + text-align: center; + &:after { + background-color: $gray-light; + content: ' '; + display: block; + height: 1px; width: $sp-width; + overflow: hidden; + position: absolute; + top: 50%; + z-index: 99; + } + & span { + background: $white; + border: none; + display: inline-block; + font-family: 'Sofia Pro', Arial, sans-serif; + font-size: 10px; + font-weight: 500; + padding: 0 15px; position: relative; - display: block; - margin: 0 auto; text-align: center; - - &:after { - display: block; - width: $sp-width; - content: " "; - overflow: hidden; - height: 1px; - background-color: $gray-light; - position: absolute; - top: 50%; - z-index: 99; - } - - & span { - display: inline-block; - background: $white; - border: none; - z-index: 100; - position: relative; - top: 0; - padding: 0 15px; - font: { - size: 10px; - family: "Sofia Pro", Arial, sans-serif; - weight: 500; - } - text: { - align: center; - transform: uppercase; - } - } + text-transform: uppercase; + top: 0; + z-index: 100; } +} diff --git a/assets/css/account/login.scss b/assets/css/account/login.scss index d49d667ba..3b43a6c43 100644 --- a/assets/css/account/login.scss +++ b/assets/css/account/login.scss @@ -1,60 +1,49 @@ @import 'tc-includes'; .login-container { - form { display: flex; flex-flow: column wrap; justify-content: center; margin: 0 90px; - - input[type="text"], + input[type='text'], toggle-password { width: 380px; padding-right: 10px; } - toggle-password { input#current-password-input { width: 300px; } } - button { - margin-top: 20px; + p + button { + margin-top: 0; } } - .form-errors { p { margin-bottom: 20px; } } - .problem-signin { - color: #A3A3AE; + @include font-with-weight('Merriweather Sans'); + color: #a3a3ae; font-size: 12px; line-height: 15px; - @include font-with-weight('Merriweather Sans'); margin-top: 10px; - .forgot-password { - margin-top: 25px; - margin-bottom: 25px; font-size: 12px; + margin-bottom: 25px; + margin-top: 25px; } - } - - section.login-options { @media (max-width: 767px) { margin-bottom: 41px; } - @media (min-width: 768px) { margin-bottom: 60px; } - } } diff --git a/assets/css/account/register.scss b/assets/css/account/register.scss index f1313253e..3cfc30404 100644 --- a/assets/css/account/register.scss +++ b/assets/css/account/register.scss @@ -1,7 +1,6 @@ @import 'tc-includes'; .register-container { - form { display: flex; flex-flow: column wrap; @@ -9,14 +8,12 @@ width: 380px; margin-left: 90px; margin-right: 90px; - - input[type="text"], - input[type="email"], + input[type='text'], + input[type='email'], toggle-password, toggle-password-with-tips { width: 380px; } - toggle-password, toggle-password-with-tips { input#password-input, @@ -24,50 +21,47 @@ width: 300px; } } - - input[name="firstname"], input[name="lastname"] { + input[name='firstname'], + input[name='lastname'] { width: 185px; padding-right: 45px; } - - input[name="username"], input[name="email"] { + input[name='username'], + input[name='email'] { padding-right: 85px; } + button { + margin-top: 0; + } } - .form-errors { text-align: left; - p { margin: 2px 0 12px 5px; } } - .first-last-names { display: flex; flex-direction: row; justify-content: space-between; width: 380px; } - .terms { - margin-top: 10px; margin-bottom: 20px; - + margin-top: 10px; p { + color: #a3a3ae; font-size: 12px; line-height: 15px; - color: #A3A3AE; } } - // login-options section .section-break { hr { - max-width: 180px; - margin: 10px auto 20px; border: none; border-bottom: 1px solid $gray-light; + margin: 10px auto 20px; + max-width: 180px; } } } @@ -82,20 +76,19 @@ width: 100%; } } - section.login-options { margin-bottom: 41px; } } .join-topcoder { - position: initial; margin-top: 30px; + position: initial; } } toggle-password-with-tips label { - display: flex !important; - line-height: 20px !important; - padding-right: 10px !important; + display: flex !important; + line-height: 20px !important; + padding-right: 10px !important; } diff --git a/assets/css/account/reset-password.scss b/assets/css/account/reset-password.scss index 2e9d241f0..fee5f8058 100644 --- a/assets/css/account/reset-password.scss +++ b/assets/css/account/reset-password.scss @@ -1,20 +1,17 @@ @import 'tc-includes'; .reset-password-container { - form { display: flex; flex-flow: column wrap; justify-content: center; margin-left: 90px; margin-right: 90px; - - input[type="text"], - input[type="email"], + input[type='text'], + input[type='email'], toggle-password-with-tips { width: 380px; } - toggle-password, toggle-password-with-tips { input#password-input, @@ -22,25 +19,13 @@ width: 300px; } } - - .email-label { - @include font-with-weight('Merriweather Sans', 300); - font-size: 15px; - line-height: 18px; - } - button { align-self: center; } } - - p { - margin-bottom: 20px; - } - - .link { - margin-top: 25px; - margin-bottom: 25px; + .link { font-size: 12px; + margin-bottom: 25px; + margin-top: 25px; } } diff --git a/assets/css/partials/_tc-styles.scss b/assets/css/partials/_tc-styles.scss index 420dbf9d0..e1497bdff 100644 --- a/assets/css/partials/_tc-styles.scss +++ b/assets/css/partials/_tc-styles.scss @@ -18,3 +18,55 @@ html { body { min-height: 100%; } + + +// UTILITIES +// ---------------------------------------------------------------------------- +// margin and padding modifiers, adopted from Bootstrap + +$spacer: 10px !default; +$spacer-y: $spacer !default; +$spacer-x: $spacer !default; + +// Margin + +.m-a-0 { margin: 0 !important; } +.m-t-0 { margin-top: 0 !important; } +.m-r-0 { margin-right: 0 !important; } +.m-b-0 { margin-bottom: 0 !important; } +.m-l-0 { margin-left: 0 !important; } +.m-x-0 { margin-right: 0 !important; margin-left: 0 !important; } +.m-y-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +.m-a { margin: $spacer !important; } +.m-t { margin-top: $spacer-y !important; } +.m-r { margin-right: $spacer-x !important; } +.m-b { margin-bottom: $spacer-y !important; } +.m-l { margin-left: $spacer-x !important; } +.m-x { margin-right: $spacer-x !important; margin-left: $spacer-x !important; } +.m-y { margin-top: $spacer-y !important; margin-bottom: $spacer-y !important; } +.m-x-auto { margin-right: auto !important; margin-left: auto !important; } + +.m-a-md { margin: ($spacer * 1.5) !important; } +.m-t-md { margin-top: ($spacer-y * 1.5) !important; } +.m-r-md { margin-right: ($spacer-y * 1.5) !important; } +.m-b-md { margin-bottom: ($spacer-y * 1.5) !important; } +.m-l-md { margin-left: ($spacer-y * 1.5) !important; } +.m-x-md { margin-right: ($spacer-x * 1.5) !important; margin-left: ($spacer-x * 1.5) !important; } +.m-y-md { margin-top: ($spacer-y * 1.5) !important; margin-bottom: ($spacer-y * 1.5) !important; } + +.m-a-lg { margin: ($spacer * 2) !important; } +.m-t-lg { margin-top: ($spacer-y * 2) !important; } +.m-r-lg { margin-right: ($spacer-y * 2) !important; } +.m-b-lg { margin-bottom: ($spacer-y * 2) !important; } +.m-l-lg { margin-left: ($spacer-y * 2) !important; } +.m-x-lg { margin-right: ($spacer-x * 2) !important; margin-left: ($spacer-x * 2) !important; } +.m-y-lg { margin-top: ($spacer-y * 2) !important; margin-bottom: ($spacer-y * 2) !important; } + +.m-a-xl { margin: ($spacer * 3) !important; } +.m-t-xl { margin-top: ($spacer-y * 3) !important; } +.m-r-xl { margin-right: ($spacer-y * 3) !important; } +.m-b-xl { margin-bottom: ($spacer-y * 3) !important; } +.m-l-xl { margin-left: ($spacer-y * 3) !important; } +.m-x-xl { margin-right: ($spacer-x * 3) !important; margin-left: ($spacer-x * 3) !important; } +.m-y-xl { margin-top: ($spacer-y * 3) !important; margin-bottom: ($spacer-y * 3) !important; } diff --git a/assets/css/topcoder.scss b/assets/css/topcoder.scss index e20003b70..c1abc3de8 100644 --- a/assets/css/topcoder.scss +++ b/assets/css/topcoder.scss @@ -4,7 +4,6 @@ body { @include font-with-weight('Merriweather Sans', 400); background-color: $gray-lighter; - > svg { display: none; } @@ -33,21 +32,20 @@ body { @media screen and (min-device-width: 768px) { min-width: 768px; } - .notifications-container { position: static; z-index: 0; } .error { - color: #a94442; background-color: #f2dede; border-color: #ebccd1; + color: #a94442; } } .view-container { - padding-bottom: 30px; min-height: 480px; + padding-bottom: 30px; @media screen and (min-device-width: 768px) { min-width: 768px; } @@ -61,9 +59,9 @@ body { // Section loading and form styles .section-loading { + background: url(/images/ripple.gif) no-repeat center center; width: 100%; min-height: 50px; - background: url(/images/ripple.gif) no-repeat center center; } .form-errors { @@ -71,8 +69,8 @@ body { } .form-notice { + color: #58595b; font-size: 13px; - color: #58595B; } .form-error { @@ -82,20 +80,20 @@ body { .form-input-error { - padding: 10px; - margin-bottom: 10px; background-color: $error-lighter; border: 1px solid $error-light; color: $error; - text-align: left; font-size: 12px; line-height: 20px; + margin-bottom: 10px; + padding: 10px; + text-align: left; } #toast-container > div { - width: 400px; - opacity: 0.95; @include sofia-pro-light; + width: 400px; + opacity: .95; } @media (max-width: 767px) { @@ -108,8 +106,8 @@ body { // ----------------------------------------------------------- .introjs-overlay { - opacity: 0.94; background: $accent-gray-dark; + opacity: .94; } .introjs-tooltip { @@ -118,32 +116,28 @@ body { } .introjs-tooltiptext { + @include font-with-weight('Merriweather Sans', 400); color: $gray-darker; display: flex; flex-direction: column; align-items: center; - @include font-with-weight('Merriweather Sans', 400); font-size: 13px; line-height: 20px; - h1 { - margin-top: 20px; - text-align: center; @include sofia-pro-medium; - font-size: 16px; color: $gray-darkest; + font-size: 16px; line-height: 24px; + margin-top: 20px; + text-align: center; } - img { - max-width: 320px; display: none; - + max-width: 320px; @media only screen and (min-width : 768px) { display: block; } } - p { margin-top: 20px; } @@ -152,26 +146,26 @@ body { .introjs-helperLayer { background: $white; - border: 1px solid #85CCFF; - box-shadow: 0px 0px 4px 0px rgba(0, 150, 255, 0.20); + border: 1px solid #85ccff; border-radius: 6px; + box-shadow: 0 0 4px 0 rgba(0, 150, 255, .20); } .introjs-helperNumberLayer { - width: 30px; - height: 30px; - padding: 0; - line-height: 22px; - border: 3px solid $white; - background: $primary; @include sofia-pro-medium; + background: $primary; + border: 3px solid $white; + box-shadow: 0 1px 4px 0 rgba(0,0,0,.20); + height: 30px; + width: 30px; font-size: 17px; - box-shadow: 0px 1px 4px 0px rgba(0,0,0,0.20); + line-height: 22px; + padding: 0; } .introjs-tooltipbuttons { - width: 280px; float: right; + width: 280px; } // Refactor buttons when button mixins and/or style guide is done @@ -181,8 +175,8 @@ body { } .introjs-skipbutton { - float: left; @extend .tc-btn-ghost; + float: left; } @@ -194,18 +188,17 @@ body { .introjs-prevbutton { margin-right: 10px; } -.introjs-nextbutton {} + .introjs-bullets ul li { margin-right: 3px; } .introjs-bullets ul li a { - width: 5px; - height: 5px; - border-radius: 0; background-color: $gray; - + border-radius: 0; + height: 5px; + width: 5px; &.active { background-color: $primary; } @@ -220,40 +213,34 @@ body { .form-label { @include sofia-pro-medium; - font-size: 12px; color: $gray-darkest; - text-transform: uppercase; + font-size: 12px; margin-bottom: 5px; margin-top: 5px; - + text-transform: uppercase; .mandatory { - text-transform: none; color: $primary-light; float: right; + text-transform: none; } - .char-count { float: right; font-size: 11px; padding-right: 5px; } - .grey { color: $accent-gray; } } .form-errors { - position: relative; line-height: 22px; - //top: 70px; - //left: 3px; + position: relative; } .form-errors { text-align: left; - p { margin: 2px 0 12px 5px; } @@ -262,26 +249,23 @@ body { // Error and success styles .validation-bar { position: relative; - &:before { + border-radius: 3px 0 0 3px; content: ''; display: none; - position: absolute; - top: 0px; - left: 1px; height: 38px; width: 2px; - border-radius: 3px 0 0 3px; + left: 1px; + position: absolute; + top: 0; } - &.error-bar:before { - display: block; background-color: $error; + display: block; } - &.success-bar:before { - display: block; background-color: $success; + display: block; } } @@ -289,89 +273,83 @@ body { // ---------------------------------------------------------------------- // probably structure needs to be redone -$tips-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.2); +$tips-shadow: 0 1px 6px 1px rgba(0, 0, 0, .2); $tips-background: $gray-lighter; // Tip conatiner .tips { background-color: $tips-background; border-radius: 4px; - padding: 20px; - z-index: 1000; opacity: 1; - transition: all .1s ease-in-out; + padding: 20px; padding-bottom: 20px; + transition: all .1s ease-in-out; + z-index: 1000; @media screen and (min-width: 915px) { - position: absolute; + box-shadow: $tips-shadow; width: 320px; + padding-bottom: 10px; + position: absolute; text-align: left; top: -10px; - box-shadow: $tips-shadow; - padding-bottom: 0; } - // The tip container is hidden &.ng-hide { opacity: 0; } - // Tip container arrow element .arrow { display: none; - @media screen and (min-width: 915px){ + @media screen and (min-width: 915px) { display: block; - position: absolute; - left: -24px; - top: 10px; - width: 24px; height: 34px; + width: 24px; + left: -24px; overflow: hidden; - - &:after { - content: ''; position: absolute; - display: block; top: 10px; - left: 18px; - width: 12px; - height: 12px; - background-color: $tips-background; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - box-shadow: $tips-shadow; + &:after { + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + background-color: $tips-background; + box-shadow: $tips-shadow; + content: ''; + display: block; + height: 12px; + width: 12px; + left: 18px; + position: absolute; + top: 10px; } } } - h3 { @include sofia-pro-medium; - padding-bottom: 15px; font-size: 14px; + padding-bottom: 15px; @media only screen and (max-width: 915px) { font-size: 16px; } } - p { - font-size: 13px; color: $gray-darkest; + font-size: 13px; line-height: 1.3; - position: relative; padding-bottom: 10px; + position: relative; text-align: left; } - p:before { // font-family: 'FontAwesome'; @include sofia-pro-medium; - font-size: 14px; content: ''; + width: 20px; + font-size: 14px; + left: 0; position: absolute; top: 0; - left: 0; - width: 20px; } } @@ -381,13 +359,11 @@ $tips-background: $gray-lighter; p { padding-left: 20px } - p:before { - content: '\2713 '; color: $success; + content: '\2713 '; display: none; } - .has-length-between-range:before, .has-letter:before, .has-symbol-or-number:before, @@ -410,21 +386,22 @@ $switch-active-color: $primary; $switch-inactive-color: $gray; @mixin switch-transition { - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; } // Parent container .onoffswitch { - position: relative; - width: $switch-width; - height: $switch-height; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select: none; - box-sizing: border-box; - border-radius: $switch-height; - background-color: $switch-inactive-color; @include switch-transition; + background-color: $switch-inactive-color; + border-radius: $switch-height; + box-sizing: border-box; + height: $switch-height; + width: $switch-width; + position: relative; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; } .onoffswitch-checkbox { @@ -432,37 +409,38 @@ $switch-inactive-color: $gray; } .onoffswitch-label { + border-radius: $switch-height; + cursor: pointer; display: block; width: $switch-width; overflow: hidden; - cursor: pointer; - border-radius: $switch-height; } .onoffswitch-inner { + @include switch-transition; display: block; width: 200%; margin-left: -100%; - @include switch-transition; } // Pseudo-elements that slide to create background of the switch; TODO: Remove those -.onoffswitch-inner:before, .onoffswitch-inner:after { +.onoffswitch-inner:before, +.onoffswitch-inner:after { + box-sizing: border-box; + color: white; display: block; float: left; - width: 50%; height: $switch-height; - padding: 0; - line-height: $switch-height; + width: 50%; font-size: 15px; - color: white; font-weight: bold; - box-sizing: border-box; + line-height: $switch-height; + padding: 0; } .onoffswitch-checkbox + .onoffswitch-label { - background-color: $switch-inactive-color; - @include switch-transition; + @include switch-transition; + background-color: $switch-inactive-color; } .onoffswitch-checkbox:checked + .onoffswitch-label { @@ -471,7 +449,6 @@ $switch-inactive-color: $gray; // margin-left: 0; // background-color: $switch-active-color; } - & .onoffswitch-switch { right: 0; } @@ -480,35 +457,35 @@ $switch-inactive-color: $gray; // Switch is on .onoffswitch-inner:before { - content: ""; - padding-left: 10px; background-color: transparent; //$switch-active-color; color: transparent;// $switch-active-color; + content: ''; + padding-left: 10px; } // switch is off .onoffswitch-inner:after { - content: ""; - padding-right: 10px; background-color: transparent; // $switch-inactive-color; color: transparent; // $switch-inactive-color; + content: ''; + padding-right: 10px; text-align: right; } // SWITCH HANDLE .onoffswitch-switch { - display: block; + @include switch-transition; + background: $white; background-color: $white; + border: none; + border-radius: $switch-height; + bottom: 0; color: $white; - width: $switch-handle-size; + display: block; height: $switch-handle-size; - background: $white; - position: absolute; + width: $switch-handle-size; margin: $switch-handle-offset; - top: 0; - bottom: 0; + position: absolute; right: $switch-handle-offset + $switch-handle-size -1; - border: none; - border-radius: $switch-height; - @include switch-transition; + top: 0; }