Испытание: UI-кит для формы [18/18] что еще можно оптимизировать?

Правильно ли прописаны селекторы?Или можно более правильно написать?

body {
width: 550px;
}

form {
width: 400px;
margin: 0 auto;
padding: 20px;
border-radius: 10px;
background-color: #ffffff;
box-shadow: 0 0 10px #cccccc;
}

fieldset {
padding: 10px;
border: 1px solid #34495e;
border-radius: 5px;
}

fieldset legend {
color: #34495e;
}

.half-width {
display: inline-block;
width: 50%;
margin-right: -4px;
}

label {
display: block;
margin-bottom: 5px;
margin-top: 10px;
}

input:not([type=“text”]) {
display: none;
}

input:not([type=“text”]) + label {
vertical-align: middle;
color: #7f8c8d;
}

input:not([type=“text”])+label::before {
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #ffffff;
box-shadow: 0 0 0 3px #bdc3c7;
}

input[type=“radio”] + label::before {
border-radius: 50%;
}

input:not([type=“text”]):checked+label::before {
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}

input:checked+label{
color: #1abc9c;
}

input:not([type=“text”]):disabled+label::before {
box-shadow: 0 0 0 3px #ecf0f1;
}

input:not([type=“text”]):disabled + label {
color: #ecf0f1;
}

input[type=“text”] {
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}

input[type=‘text’]:required,
input:invalid {
border-color: #e74c3c;
}

input[type=‘text’]:disabled {
color: #bdc3c7;
background: #f5f5f5;
border-color: #ecf0f1;
}

input:invalid {
color: #c0392b;
background: #f2a097;
border-color: #e74c3c;
}

input[type=checkbox],
input[type=radio]{
display: none;
}

input[id=“radio-2”]+label,
input[id=“checkbox-2”]+label{
vertical-align: middle;
color: #7f8c8d;
}
input[type=“checkbox”]+label::before,
input[type=“radio”]+label::before{
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #ffffff;
box-shadow: 0 0 0 3px #bdc3c7;
}

input[type=“radio”]+label::before{
border-radius: 50%;
}

input:not([type=“text”]):checked+label::before{
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}

input[id=“radio-1”]+label,
input[id=“checkbox-1”]+label{
color: #1abc9c;
}

input:not([type=“text”]):disabled+label::before{
box-shadow: 0 0 0 3px #ecf0f1;
}

input:not([type=“text”]):disabled + label
{
color: #ecf0f1;
}

input[type=“text”]{
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}

input:required
{
border-color: #e74c3c;
}

input[type=“text”]:disabled {
color: #bdc3c7;
background: #f5f5f5;
border-color: #ecf0f1;
}

input:invalid {
color: #c0392b;
background: #f2a097;
border-color: #e74c3c;
}
для меня оказалось очень сложно. часть подсмотрела. (большую). можно ли использовать id-?

Можно. Но, зачем?
Каждый id уникальный – а нам нужно изменять свойства для многих селекторов одновременно…

Оптимизировать?
По-разному – у меня сейчас вот так получилось, возможно с ошибками:

CSS
body {
    width: 550px;
}

form {
    width: 400px;
    margin: 0 auto;
    padding: 20px;
    border-radius: 10px;
    background-color: #ffffff;
    box-shadow: 0 0 10px #cccccc;
}

fieldset {
    padding: 10px;
    border: 1px solid #34495e;
    border-radius: 5px;
}

fieldset legend {
    color: #34495e;
}

.half-width {
    display: inline-block;
    width: 50%;
    margin-right: -4px;
}

label {
    display: block;
    margin-bottom: 5px;
    margin-top: 10px;
}


.half-width input {
    display: none;
}

.half-width input + label{
    vertical-align: middle;
    color: #7f8c8d;
}

.half-width input + label::before {
    content: "";
    display: inline-block;
    width: 7px;
    height: 7px;
    margin-right: 8px;
    vertical-align: middle;
    border: 3px solid #ffffff;
    box-shadow: 0 0 0 3px #bdc3c7;
}

.half-width input[type="radio"] + label::before {
    border-radius: 50%;
}

.half-width input:checked + label::before  {
    background: #1abc9c;
    box-shadow: 0 0 0 3px #1abc9c;
}

.half-width input:checked + label { 
    color: #1abc9c;          /* зеленый */
}

.half-width input:disabled + label::before {
    box-shadow: 0 0 0 3px #ecf0f1;   /* самый светло серый */
}

.half-width input:disabled + label {
    color: #ecf0f1;          /* самый светло серый */
}

input[type="text"] {
    width: 95%;
    height: 24px;
    margin-bottom: 10px;
    padding: 2px 5px;
    color: #000;
    border: 2px solid #bdc3c7;
    border-radius: 5px;
    vertical-align: middle;
}

input:required {
    border-color: #e74c3c;    /* красный */
}

input:disabled {
    color: #bdc3c7;
    background: #f5f5f5;    /* не очень серый */
    border-color: #ecf0f1;  /* светло-серый */
}

input:invalid {
    color: #c0392b;
    background: #f2a097;    /* светло-красный*/
    border-color: #e74c3c;  /* красный */
}
2 лайка

да, Ваш самый понятный из всех