Poprawna odpowiedź to właściwość CSS `text-decoration`. To właśnie ona odpowiada za dodawanie różnych „linii” do tekstu: podkreślenia (`underline`), nadkreślenia (`overline`) oraz przekreślenia (`line-through`). W praktyce zapis wygląda np. tak: `a { text-decoration: underline; }` – klasyczny przykład dla linków, albo `del { text-decoration: line-through; }` dla tekstu usuniętego. W nowszych specyfikacjach CSS (CSS Text Decoration Module Level 3) ta właściwość została trochę rozbita na bardziej szczegółowe, jak `text-decoration-line`, `text-decoration-style`, `text-decoration-color`, ale w codziennym kodowaniu dalej bardzo często używa się skrótu `text-decoration`. Moim zdaniem warto od razu kojarzyć, że `text-decoration` nie służy do zmiany kroju pisma, pogrubienia czy kursywy, tylko właśnie do „ozdabiania” tekstu dodatkowymi liniami. Dobra praktyka jest taka, żeby świadomie używać tej właściwości przy stylowaniu linków: np. usuwamy podkreślenie `a { text-decoration: none; }`, a potem przy najechaniu myszką dajemy `a:hover { text-decoration: underline; }`. Dzięki temu interfejs jest czytelniejszy, a użytkownik widzi, że element jest klikalny. Warto też wiedzieć, że `text-decoration` może przyjmować kilka wartości naraz, np. `text-decoration: underline overline;`, co rzadko się używa, ale czasem w jakichś specyficznych projektach UI może się przydać. Z mojego doświadczenia w projektach komercyjnych najczęściej korzysta się z `underline`, `none` i czasem `line-through` np. przy cenach promocyjnych: stara cena przekreślona, nowa obok. To jest taki mały szczegół CSS, ale bardzo często używany w praktyce.
W tym pytaniu łatwo się pomylić, bo wszystkie odpowiedzi wyglądają jakby miały coś wspólnego z tekstem i czcionką, ale tylko jedna faktycznie odpowiada za podkreślenia, nadkreślenia i przekreślenia. Właściwości `text-style` w ogóle nie ma w standardzie CSS – to jest dość typowy błąd: próbujemy zgadnąć nazwę „na logikę”, zamiast pamiętać faktycznie zdefiniowane właściwości z dokumentacji. W specyfikacji W3C nie znajdziemy `text-style`, więc przeglądarka i tak ją zignoruje. `font-style` jest już prawdziwą właściwością CSS, ale jej rola jest inna. Służy do określania stylu kroju pisma, czyli np. `normal`, `italic`, `oblique`. Używamy jej, gdy chcemy zrobić tekst pochylony, np. dla cytatów czy nazw własnych. Nie ma ona nic wspólnego z podkreślaniem czy przekreślaniem tekstu. Często osoby początkujące mylą sprawy wyglądu „czcionki” (fontu) z dekoracjami tekstu, ale w CSS jest to wyraźnie rozdzielone na osobne właściwości. Z kolei `font-weight` odpowiada za grubość pisma, czyli pogrubienie. Standardowe wartości to np. `normal`, `bold` albo liczby jak `400`, `700`. Kiedy chcemy uzyskać efekt pogrubionego nagłówka czy ważnego fragmentu, stosujemy właśnie `font-weight`, a nie `text-decoration`. Pogrubienie i podkreślenie to wizualnie różne efekty i w CSS mają inne mechanizmy. Za linie typu `underline`, `overline`, `line-through` zawsze odpowiada rodzina właściwości `text-decoration`. To jest ważna granica: wszystko co jest „krojem pisma” to `font-*`, a wszystko co jest „ozdobą tekstu” typu linie, styl linii, kolor linii – to `text-decoration` i jego pochodne. Mylenie tych grup prowadzi do kodu, który niby wygląda sensownie, ale po prostu nie działa, bo przeglądarka ignoruje nieistniejące lub źle użyte właściwości. Dlatego dobrze jest opierać się na oficjalnych nazwach z dokumentacji, a nie intuicji nazewniczej.