// Forms and input fields // // All the forms on the site. General styles. Supports most of // the Gravity Forms styles out of the box. // CSS Variables for radios and checkboxes :root { // Form element colors --color-background-input-field: var(--color-white); --color-border-forms: #d9d9d9; --color-border-forms-focus: rgba(42, 45, 62, .3); --color-button: var(--color-white); --color-button-hover: var(--color-white); --color-button-background: var(--color-east-bay); --color-button-background-hover: var(--color-valhalla); --color-checkbox: var(--color-east-bay); --color-checkbox-outline: 0 0 0 3px rgba(84, 87, 115, .2); --color-checkbox-border-hover: lighten(#545773, 15%); --color-placeholder: var(--color-paragraph); --color-placeholder-focus: var(--color-black); --opacity-placeholder: .4; --opacity-placeholder-focus: .8; // Form element settings --border-radius-checkbox: 4px; --border-radius-input-field: 4px; --border-radius-select: 0; --border-width-checkbox: 2px; --border-width-input-field: 2px; --gap-checkbox: 10px; --line-height-checkbox: var(--line-height-paragraphs); --size-checkbox-marker: 12px; --size-radio-button: 16px; --size-radio-button-marker: 8px; } // Buttons .button-wrapper { margin-bottom: 0; } // Buttons .site-main, .site-footer { button, .button, input[type="reset"], input[type="submit"], input[type="button"] { @include button(); // Button sizes &.button-small { @include button-size-small(); } &.button-large { @include button-size-large(); } // Button styles &.button-ghost { @include button-style-ghost(); } } } // Select drop downs select { background-image: url('../../svg/select.svg'); background-position: right 0 center; background-repeat: no-repeat; background-size: 40px auto; border-color: var(--color-border-forms); border-radius: var(--border-radius-select); border-style: solid; border-width: var(--border-width-input-field); color: var(--color-paragraph); font-size: var(--font-size-17); line-height: 24px; max-width: 100%; min-width: 0; padding: 15px; text-indent: 1px; transition: none; width: 100%; } // Form input elements and textareas textarea, select, input[type="text"], input[type="tel"], input[type="url"], input[type="password"], input[type="number"], input[type="month"], input[type="week"], input[type="email"], input[type="search"] { @extend %default; background-color: var(--color-background-input-field); border-color: var(--color-border-forms); border-radius: var(--border-radius-input-field); border-style: solid; border-width: var(--border-width-input-field); box-sizing: border-box; font-family: var(--font-paragraph); font-size: var(--font-size-17); line-height: 24px; margin-bottom: 0; padding: 15px; position: relative; text-decoration: none; transition: background .55s; &::placeholder { color: var(--color-placeholder); opacity: var(--opacity-placeholder); } &:focus { background-color: var(--color-background-input-field); border-color: var(--color-border-forms-focus); &::placeholder { color: var(--color-placeholder-focus); opacity: var(--opacity-placeholder-focus); } } } // Radio buttons and checkboxes input[type="radio"], input[type="checkbox"] { height: var(--size-radio-button); margin: 0; margin-top: calc((1em * var(--line-height-checkbox) - var(--size-radio-button)) / 2); opacity: 0; padding: 0; pointer-events: none; // Hide native buttons position: absolute; width: var(--size-radio-button); } // Labels for radio buttons and checkboxes input[type="radio"] + label, input[type="checkbox"] + label { align-items: flex-start; cursor: pointer; display: inline-flex; line-height: var(--line-height-checkbox); } // Custom buttons - basic style input[type="radio"] + label::before, input[type="checkbox"] + label::before { align-self: center; background-color: var(--color-white); background-position: center; background-repeat: no-repeat; border-color: var(--color-checkbox); border-style: solid; border-width: var(--border-width-checkbox); content: ''; display: inline-flex; flex-shrink: 0; height: var(--size-radio-button); margin-right: var(--gap-checkbox); position: relative; top: calc(var(--border-width-checkbox) / 2); transition: transform .2s, border .2s; width: var(--size-radio-button); } // Radio only style input[type="radio"] + label::before { border-radius: 50%; } // Checkbox only style input[type="checkbox"] + label::before { border-radius: var(--border-radius-checkbox); } // Radio button and checkbox checked states input[type="radio"]:checked + label::before, input[type="checkbox"]:checked + label::before { background-color: var(--color-checkbox); border-color: var(--color-checkbox); box-shadow: none; transition: transform .2s; } // Radio button and checkbox active states input[type="radio"]:active + label::before, input[type="checkbox"]:active + label::before { transform: scale(.8); transition: transform .2s; } // Radio button icon input[type="radio"]:checked + label::before { background-image: url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cg class='nc-icon-wrapper' fill='%23ffffff'%3E%3Ccircle cx='8' cy='8' r='8' fill='%23ffffff'%3E%3C/circle%3E%3C/g%3E%3C/svg%3E"); background-size: var(--size-radio-button-marker); } // Checkbox button icon input[type="checkbox"]:checked + label::before { background-image: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpolyline points='1 6.5 4 9.5 11 2.5' fill='none' stroke='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E"); background-size: var(--size-checkbox-marker); } // Radio button and checkbox focus states input[type="radio"]:focus + label::before, input[type="checkbox"]:focus + label::before, input[type="radio"]:checked:active + label::before, input[type="checkbox"]:checked:active + label::before { border-color: var(--color-checkbox); box-shadow: var(--color-checkbox-outline); } // Radio button and checkbox checked + active states input[type="radio"]:checked:active + label::before, input[type="checkbox"]:checked:active + label::before { transform: none; transition: none; } // Radio button and checkbox hovers /* stylelint-disable selector-max-pseudo-class */ input[type="radio"]:not(:checked):not(:focus) + label:hover::before, input[type="checkbox"]:not(:checked):not(:focus) + label:hover::before { border-color: var(--color-checkbox-border-hover); } /* stylelint-enable selector-max-pseudo-class */