diff --git a/Zadania/Z110 - wskaźnik BMI/image042.jpg b/Zadania/Z110 - wskaźnik BMI/image042.jpg
new file mode 100644
index 0000000..98f5934
Binary files /dev/null and b/Zadania/Z110 - wskaźnik BMI/image042.jpg differ
diff --git a/Zadania/Z110 - wskaźnik BMI/index.php b/Zadania/Z110 - wskaźnik BMI/index.php
new file mode 100644
index 0000000..85658df
--- /dev/null
+++ b/Zadania/Z110 - wskaźnik BMI/index.php
@@ -0,0 +1,82 @@
+ 0 && $wzrost > 0) {
+ $bmi = $waga / (($wzrost/100) * ($wzrost/100));
+ $bmi = number_format($bmi, 2);
+ if($bmi < 16) {
+ $text = 'Wygłodzenie';
+ } elseif($bmi >= 16 && $bmi < 16.99) {
+ $text = 'Wychudzenie';
+ } elseif($bmi >= 17 && $bmi < 18.49) {
+ $text = 'Niedowaga';
+ } elseif($bmi >= 18.5 && $bmi < 24.99) {
+ $text = 'Optimum';
+ } elseif($bmi >= 25 && $bmi < 29.99) {
+ $text = 'Nadwaga';
+ } elseif($bmi >= 30 && $bmi < 34.99) {
+ $text = 'Otyłość I stopnia';
+ } elseif($bmi >= 35 && $bmi < 39.99) {
+ $text = 'Otyłość II stopnia';
+ } elseif($bmi >= 40) {
+ $text = 'Otyłość III stopnia';
+ }
+ }
+ $fullText = "
+
+ Waga: $waga kg
+ Wzrost: $wzrost cm
+ BMI: $bmi
+ Klasyfikacja: $text
+ ";
+}
+
+?>
+
+
+
+
+
+
+
Z110 - Wskaźnik BMI
+
+
+
+
+ Zadanie Z110
+ Autor: Jakub Grzegorczyk
+
+
+
+ Napisz program, który na podstawie podanej wagi (w kilogramach) i wzrostu (w centymetrach) oblicza wskaźnik BMI i wynik wyświetla na ekranie. Program powinien przyjmować dane od użytkownika w formularzu, zweryfikować, czy waga i wzrost są liczbami dodatnimi, obliczyć BMI według wzoru: BMI = waga / (wzrost²), gdzie wzrost jest konwertowany z centymetrów na metry (dzieląc przez 100), wyświetlić wynik w czytelny sposób oraz sklasyfikować BMI według następujących kategorii: - < 16: Wygłodzenie, - 16 - 16.99: Wychudzenie, - 17 - 18.49: Niedowaga, - 18.5 - 24.99: Optimum, - 25 - 29.99: Nadwaga, - 30 - 34.99: Otyłość I stopnia, - 35 - 39.99: Otyłość II stopnia, - ≥ 40: Otyłość III stopnia.
+
+
+
+
+ Sprawdź, czy waga i wzrost są liczbami za pomocą is_numeric().
+ Zweryfikuj, czy waga i wzrost są dodatnie (większe od 0).
+ Oblicz BMI według wzoru: BMI = waga / (wzrost * wzrost), gdzie wzrost w metrach to wzrost w centymetrach podzielony przez 100.
+ Sformatuj wynik BMI do 2 miejsc po przecinku za pomocą number_format() lub sprintf().
+ Użyj warunku if-elseif, aby sklasyfikować BMI na podstawie podanych zakresów.
+ Zabezpiecz dane wejściowe za pomocą htmlspecialchars() przy pobieraniu, aby chronić przed XSS.
+
+
+
+
+
+
+
+
diff --git a/Zadania/Z110 - wskaźnik BMI/style.css b/Zadania/Z110 - wskaźnik BMI/style.css
new file mode 100644
index 0000000..3eadf95
--- /dev/null
+++ b/Zadania/Z110 - wskaźnik BMI/style.css
@@ -0,0 +1,291 @@
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.2rem;
+ margin-top: 1rem;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}
diff --git a/Zadania/Z68 - punkt i prostokąt/style.css b/Zadania/Z68 - punkt i prostokąt/style.css
index f18573d..3eadf95 100644
--- a/Zadania/Z68 - punkt i prostokąt/style.css
+++ b/Zadania/Z68 - punkt i prostokąt/style.css
@@ -217,6 +217,10 @@ input[type="reset"] {
align-self: flex-start;
}
+button {
+ width: 100%;
+}
+
button:hover,
input[type="submit"]:hover,
input[type="button"]:hover,