html, body { overflow-x: hidden; } :root { --bg-color: #f0f4f8; --text-color: #333; --container-bg: #ffffff; } body.dark-mode { --bg-color: #333; --text-color: #f0f4f8; --container-bg: #444; } .afbeelding-container img.light-mode { display: block; margin: 0 auto; } .afbeelding-container img.dark-mode { display: none; margin: 0 auto; } body.dark-mode .afbeelding-container img.light-mode { display: none; margin: 0 auto; } body.dark-mode .afbeelding-container img.dark-mode { display: block; margin: 0 auto; } body { font-family: 'Poppins', sans-serif; margin: 0; padding: 0; background-color: var(--bg-color); color: var(--text-color); display: flex; flex-direction: row; min-height: 100vh; box-sizing: border-box; padding-top: 80px; opacity: 0; transition: opacity 0.5s ease-in-out; background-image: url('../../afbeeldingen/theorie-bg.webp'); background-repeat: no-repeat; background-attachment: fixed; background-position: center; background-size: 100% auto; position: relative; z-index: 0; } body::before { content: ""; position: fixed; inset: 0; background: rgba(240, 244, 248, 0.9); z-index: -1; } body.dark-mode::before { background: rgba(20, 20, 20, 0.9); } body.loaded { opacity: 1; } .header { background-color: #FFC107; padding: 10px; text-align: center; color: white; width: 100%; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.15); position: fixed; top: 0; left: 0; z-index: 10; transition: transform 0.3s ease; } .header.hidden { transform: translateY(-100%); } .header h1 { margin: 0; font-size: 2.5em; font-weight: 700; text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4); } .header-row { display: flex; justify-content: space-between; align-items: center; } .header-row h2 { margin-top: 0; } .sidebar { width: 200px; padding: 20px; background-color: transparent; border-radius: 10px; margin-right: 20px; position: fixed; top: 80px; left: 0; height: calc(100vh - 80px); z-index: 5; } .header.hidden + .sidebar { top: 0; } #mode-toggle { margin-bottom: 20px; padding: 10px; border: none; background-color: #FFC107; color: white; border-radius: 8px; cursor: pointer; width: 100%; transition: transform 0.2s, background-color 0.2s; box-shadow: 0 6px #806104; } #mode-toggle:hover { background-color: #e0a800; transform: scale(1.1); } .sidebar-links { list-style-type: none; padding: 0; margin: 0; transition: color 0.3s, border-bottom 0.3s; } .sidebar-links li { margin: 10px 0; position: relative; } .sidebar-links a { text-decoration: none; color: var(--text-color); font-size: 18px; padding: 10px; display: block; border-radius: 4px; transition: background-color 0.3s; } .sidebar-links a:hover, .sidebar-links a.active { background-color: #ddd; outline: none; } body.dark-mode .sidebar-links a:hover, body.dark-mode .sidebar-links a.active { background-color: #3f4045; border-bottom: 2px solid #03A9F4; } .afbeelding-container img.light-mode, .afbeelding-container img.dark-mode { border: none; border-radius: 0; box-shadow: none; } .container { background-color: var(--container-bg); border-radius: 17px; border: 1px solid black; box-shadow: 0 8px 20px rgba(0, 0, 0, 84), inset 0 -4px 8px rgba(0, 0, 0, 0.13); padding: 40px; max-width: 820px; margin: 20px auto; width: 90%; text-align: left; flex-grow: 1; padding-top: 40px; } .intro, .chapters { margin-bottom: 30px; } .internal-link { color: #03A9F4; text-decoration: underline; text-underline-offset: 2px; transition: color 0.2s ease; } .internal-link:hover { color: #0288D1; } h3 { display: inline-block; position: relative; color: #28a745; margin: 0 0 15px 0; line-height: 1.2; padding-bottom: 3px; text-decoration: underline; text-decoration-color: #28a745; text-decoration-thickness: 3px; text-underline-offset: 2px; } h3 + cite { display: block; margin-top: 0.5em; } cite { display: block; margin-bottom: 0.5em; } h4 { color: #03A9F4; } strong { color: #D32F2F; } h2 { margin: 2em 0 0 0; line-height: 1.2; color: #03A9F4; } hr { border: none; height: 3px; background-color: #03a9f4; border-radius: 4px; margin-top: 0.2em; margin-bottom: 2em; } .afbeelding-container { margin: 20px 0; text-align: center; } .afbeelding-container img { max-width: 100%; height: auto; object-fit: cover; border-radius: 10px; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06); border: 3px solid black; } @keyframes sway { 0% { transform: rotate(0deg); } 25% { transform: rotate(0.3deg); } 50% { transform: rotate(0deg); } 75% { transform: rotate(-0.3deg); } 100% { transform: rotate(0deg); } } .professor-img { width: 30%; height: auto; margin-right: 20px; transform-origin: bottom center; animation: sway 3s ease-in-out infinite; transition: transform 0.3s ease, box-shadow 0.3s ease; } .cards-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0.8rem; margin-top: 1rem; margin-bottom: 1.8rem; } .card { background-color: transparent; color: var(--text-color); border-radius: 10px; padding: 0rem; display: flex; flex-direction: column; gap: 0.8rem; } .card h4 { margin: 0; display: flex; align-items: center; gap: 0.5rem; } .card p { margin: 0; line-height: 1.5; } .card img { width: 100%; height: 100%; object-fit: cover; border-radius: 10px; transition: transform 0.3s ease, box-shadow 0.3s ease; border: 3px solid black; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06); } .card img clean { width: 100%; height: 100%; object-fit: cover; border-radius: 10px; transition: transform 0.3s ease; } p, li { line-height: 1.6; margin-bottom: 1em; text-shadow: 1px 1px 2px rgba(0,0,0,0.1); } .back-btn { position: fixed; bottom: 20px; right: 20px; padding: 15px 25px; background-color: #FFC107; color: white; border-radius: 10px; text-decoration: none; font-size: 1.2em; display: flex; align-items: center; gap: 10px; z-index: 1000; transition: transform 0.2s, background-color 0.2s; box-shadow: 0 6px #806104; } .back-btn:hover { background-color: #e0a800; transform: scale(1.1); } .button-grid { display: grid; grid-template-columns: repeat(2, 1fr); grid-auto-rows: 1fr; gap: 20px; justify-items: stretch; align-items: stretch; margin: 20px auto; max-width: 600px; padding: 10px; } .theorie-btn, .toes-btn, .spel-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; width: 90%; height: 80%; padding: 10px 15px; font-size: 1em; font-weight: 600; border-radius: 12px; text-align: center; transition: all 0.2s ease-in-out; box-shadow: 0 6px #00000033; text-decoration: none; color: white; } .theorie-btn { background-color: #03A9F4; box-shadow: 0 6px #01547A; } .theorie-btn:hover { background-color: #0288D1; transform: translateY(-2px) scale(1.03); box-shadow: 0 8px #01547A; } .toes-btn { background-color: #28a745; box-shadow: 0 6px #1e7e34; } .toes-btn:hover { background-color: #218838; transform: translateY(-2px) scale(1.03); box-shadow: 0 8px #1e7e34; } .spel-btn { background-color: #7E57C2; box-shadow: 0 6px #2F1B58; } .spel-btn:hover { background-color: #7E57C2; transform: translateY(-2px) scale(1.03); box-shadow: 0 6px #2F1B58; } @media (max-width: 480px) { .button-grid { grid-template-columns: 1fr 1fr; gap: 15px; padding: 5px; } .theorie-btn, .toes-btn { font-size: 0.95em; padding: 8px 12px; } } ul { list-style: none; padding-left: 20px; } ul li { position: relative; padding-left: 20px; margin-bottom: 10px; } ul li::before { content: ""; display: inline-block; width: 8px; height: 8px; background-color: #0288D1; border-radius: 50%; position: absolute; left: 0; top: 50%; transform: translateY(-50%); } .sidebar .sidebar-links { list-style: none; padding-left: 0; } .sidebar .sidebar-links li::before { content: none; } .container ul { list-style: none; padding-left: 20px; } blockquote { padding: 5px 20px; margin: 20px 0; border-left: 5px solid #03A9F4; background-color: #e7f3fc; color: #222; border-radius: 8px; transition: background-color 0.3s, color 0.3s; } body.dark-mode blockquote { background-color: #1c2b36; color: #e0e6e9; border-left: 5px solid #29b6f6; } body.dark-mode blockquote strong { color: #4fc3f7; } blockquote.remember { padding: 5px 20px; margin: 20px 0; border-left: 5px solid #28a745; background-color: #e6f4ea; color: #222; border-radius: 8px; transition: background-color 0.3s, color 0.3s; } body.dark-mode blockquote.remember { background-color: #0f3d20; color: #fff; border-left: 5px solid #28a745; } body.dark-mode blockquote.remember strong { color: #D32F2F; } blockquote.mistakes { padding: 5px 20px; margin: 20px 0; border-left: 5px solid #E53935; background-color: #ffebee; color: #222; border-radius: 8px; transition: background-color 0.3s, color 0.3s; } body.dark-mode blockquote.mistakes { background-color: #4b0000; color: #fff; border-left: 5px solid #E53935; } body.dark-mode blockquote.mistakes strong { color: #ff6f61; } .wegcode-antwoorden li:hover { background-color: #eaf6ff; cursor: pointer; } .progress-step { box-sizing: border-box; width: 100%; max-width: 1000px; margin: 10px auto; display: flex; flex-direction: column; gap: 10px; background: var(--container-bg); border-radius: 16px; align-items: center; border: 3px solid #03A9F4; padding: 20px; } .text-with-professor { display: flex; align-items: center; justify-content: flex-start; gap: 20px; width: 100%; } .text-with-professor:has(.professor-mini:empty), .text-with-professor:not(:has(img)) { justify-content: center; } .professor-mini { width: 160px; height: auto; flex-shrink: 0; } .professor-text { flex: 1; margin: 0; font-weight: 700; font-size: 1.1rem; color: #28a745; background: var(--container-bg); border-radius: 12px; padding: 14px 18px; position: relative; line-height: 1.5; margin-top: 10px; } .progress-bar { width: 100%; height: 30px; background: #e0e0e0; border-radius: 999px; overflow: hidden; position: relative; } .progress-fill { height: 100%; width: 0; background: linear-gradient(90deg, #4CAF50, #28a745); border-radius: 999px; position: relative; transition: width 0.6s ease-in-out; overflow: hidden; display: flex; align-items: center; justify-content: flex-end; padding-right: 8px; box-sizing: border-box; } .progress-fill::before { content: ""; position: absolute; top: 0; left: -50%; width: 50%; height: 100%; background: linear-gradient( 120deg, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.3) ); transform: skewX(-20deg); animation: shine 3s linear infinite; } @keyframes shine { 0% { left: -50%; } 100% { left: 100%; } } .step-counter { position: relative; font-weight: bold; color: #fff; white-space: nowrap; pointer-events: none; } @keyframes shine { 0% { left: -50%; } 100% { left: 100%; } } .step-counter { position: relative; font-weight: bold; color: #fff; white-space: nowrap; pointer-events: none; } @media (max-width: 600px) { .progress-step { width: 99%; } .text-with-professor { flex-direction: column; align-items: center; text-align: center; gap: 10px; } .professor-mini { width: 120px; } .professor-text { font-size: 1rem; margin-top: 8px; padding: 12px 16px; } .progress-bar { height: 24px; } .progress-fill { padding-right: 6px; } } .wegcode-quiz { background-color: var(--container-bg); border-radius: 16px; padding: 20px; max-width: 1000px; margin: 30px auto; border: 3px solid #03A9F4; } .quiz-title { text-align: center; margin: 5px 0 15px 0; font-size: 1.8rem; text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 2px; } .wegcode-quiz .quiz-header { display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-start; } .wegcode-quiz .quiz-header img { max-width: 250px; height: auto; flex-shrink: 0; transform-origin: bottom center; animation: sway 3s ease-in-out infinite; } .wegcode-quiz .quiz-question { flex: 1; font-size: 1.1rem; line-height: 1.5; } .wegcode-antwoorden { list-style: none; padding-left: 0; margin: 10px 0 0 0; display: flex; flex-direction: column; gap: 8px; } .wegcode-antwoorden li::before { content: none !important; } .wegcode-antwoorden li { display: flex; align-items: center; gap: 12px; background-color: white; border: 3px solid #ddd; padding: 8px 10px; border-radius: 15px; cursor: pointer; font-weight: 500; box-shadow: 0 6px #aaa; text-align: left; transition: all 0.2s; color: #000; } .wegcode-antwoorden li .letter { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; font-weight: 700; font-size: 1rem; flex-shrink: 0; } .wegcode-antwoorden li:hover { background-color: #f9f9f9; transform: scale(1.05); } .wegcode-antwoorden li.correct { background-color: #B9F289; color: #5DA223; border: 3px solid #5DA223; box-shadow: 0 6px #5DA223; } .wegcode-antwoorden li.wrong { background-color: #FF4B4B; color: white; border: 3px solid #A22323; box-shadow: 0 6px #A22323; } body.dark-mode .wegcode-quiz { background-color: #444; color: #f0f0f0; border-color: #0288D1; } body.dark-mode .wegcode-antwoorden li:hover { background-color: #f9f9f9; } body.dark-mode .wegcode-antwoorden li.correct { background-color: #B9F289; color: #000; } body.dark-mode .wegcode-antwoorden li.wrong { background-color: #FF4B4B; color: #fff; } .feedback-container { padding: 20px; border-radius: 12px; margin: 15px auto 0 auto; max-width: 780px; width: 80%; font-weight: 500; display: none; text-align: center; box-shadow: 0 6px #01547A; } .feedback-correct { background-color: #B9F289; color: #155724; border: 3px solid #5DA223; box-shadow: 0 6px #5DA223; position: relative; overflow: hidden; } .feedback-correct::before { content: ""; position: absolute; top: 0; left: -50%; width: 50%; height: 100%; background: linear-gradient( 120deg, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.3) ); transform: skewX(-20deg); animation: shine 0.5s linear; pointer-events: none; } .feedback-wrong { background-color: #f8d7da; color: #721c24; border: 3px solid #A22323; box-shadow: 0 6px #A22323; } body.dark-mode .feedback-correct { background-color: #B9F289; color: #000; } body.dark-mode .feedback-wrong { background-color: #FF4B4B; color: #fff; } table.speed-zones { width: 90%; border-collapse: separate; border-spacing: 0; margin: 20px auto; background-color: var(--container-bg); color: var(--text-color); border: 1px solid black; border-radius: 12px; overflow: hidden; } table.speed-zones th, table.speed-zones td { border: 1px solid black; padding: 8px 12px; text-align: center; } table.speed-zones thead tr:first-child { background-color: #dc3545; color: white; font-weight: 600; } table.speed-zones thead tr:nth-of-type(3) { background-color: #28a745; color: white; font-weight: 600; } table.speed-zones thead tr:nth-of-type(2), table.speed-zones thead tr:nth-of-type(4) { background-color: var(--container-bg); color: var(--text-color); font-weight: 500; } table.speed-zones tbody tr:hover { background-color: rgba(0, 0, 0, 0.05); } table.speed-zones .lightgray-cell { background-color: #e9ecef !important; color: #000 !important; } body.dark-mode table.speed-zones .lightgray-cell { background-color: #555 !important; color: #f0f0f0 !important; } body.dark-mode table.speed-zones { border: 1px solid black; box-shadow: 0 4px 12px rgba(0,0,0,0.3); } body.dark-mode table.speed-zones thead tr:first-child { background-color: #b71c1c; } body.dark-mode table.speed-zones thead tr:nth-of-type(3) { background-color: #1b5e20; } body.dark-mode table.speed-zones thead tr:nth-of-type(2), body.dark-mode table.speed-zones thead tr:nth-of-type(4) { background-color: var(--container-bg); color: var(--text-color); } body.dark-mode table.speed-zones td, body.dark-mode table.speed-zones th { border: 1px solid black; } .sanction-table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 20px auto; border: 2px solid black; border-radius: 12px; overflow: hidden; } .sanction-table th, .sanction-table td { border: 1px solid black; padding: 8px 12px; text-align: left; } .sanction-table thead th { background-color: #03A9F4; color: white; font-weight: 600; } .sanction-table .green-cell { background-color: #d4edda !important; color: #155724 !important; } .sanction-table .red-cell { background-color: #f8d7da !important; color: #721c24 !important; } .sanction-table .grey-cell { background-color: #e9ecef !important; color: #212529 !important; } .sanction-table .lightgray-cell { background-color: #e9ecef !important; color: #000 !important; } body.dark-mode .sanction-table .lightgray-cell { background-color: #555 !important; color: #f0f0f0 !important; } .sanction-table tbody tr:hover { background-color: rgba(0, 0, 0, 0.05); } body.dark-mode .sanction-table { border: 2px solid black; box-shadow: 0 4px 12px rgba(0,0,0,0.2); } body.dark-mode .sanction-table thead th { background-color: #01547A; color: white; } body.dark-mode .sanction-table td:not(.green-cell):not(.red-cell):not(.grey-cell) { background-color: #444; color: #f0f0f0; border-color: black; } #eind-navigatie { margin: 20px 0; display: flex; flex-direction: column; gap: 10px; } #eind-navigatie .nav-row { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; } @media (max-width: 1024px) { body { flex-direction: column; } .header { width: 100%; } .sidebar { position: fixed; left: 0; width: 100%; height: 50px; background-color: var(--bg-color); border-radius: 0; z-index: 11; display: flex; align-items: center; overflow-x: auto; -webkit-overflow-scrolling: touch; } .header.hidden + .sidebar { top: 0px; } #mode-toggle { max-width: 80px; } .sidebar-links { display: flex; flex-wrap: nowrap; justify-content: space-around; width: 100%; padding: 0 10px; } .sidebar-links li { margin: 0 10px; } .sidebar-links a { font-size: 16px; padding: 10px 15px; } .container { max-width: 100%; padding: 20px; border-radius: 10px; } } @media (min-width: 601px) and (max-width: 1024px) { .sidebar { display: flex; overflow-x: auto; padding: 10px 10px; height: auto; } .sidebar-links { display: flex; gap: 4px; padding-left: 20px; padding-right: 20px; } .sidebar-links li { flex: 0 0 auto; } .sidebar-links a { display: inline-block; width: fit-content; max-width: 160px; line-height: 1.3; max-height: calc(1.3em * 2); overflow: hidden; text-overflow: ellipsis; white-space: normal; word-break: break-word; padding: 5px 10px; vertical-align: top; } .sidebar-links::before, .sidebar-links::after { content: ""; flex: 0 0 20px; } } @media (max-width: 600px) { .afbeelding-container { display: flex; justify-content: center; align-items: center; margin: 20px 0; width: 100%; padding: 0; } .afbeelding-container img { display: block; max-width: 100%; height: auto; margin: 0 auto; } .card, .card img{ box-sizing:border-box; } .card img{ display:block; width:100%; height:auto; } .wegcode-quiz .quiz-header { flex-direction: column; align-items: center; text-align: center; } .wegcode-quiz .quiz-header img { max-width: 200px; } h2 { font-size: 1.3rem; margin-top: 1.5em; line-height: 1.3; } h3 { font-size: 1.1rem; margin-bottom: 20px; } p, li { font-size: 17px; line-height: 1.7; letter-spacing: 0.2px; text-shadow: none; } .card { padding: 10px; } .card p { font-size: 16.5px; } .wegcode-quiz { padding: 15px; margin: 20px auto; } .quiz-title { font-size: 1.4rem; } .wegcode-quiz .quiz-question { font-size: 1.05rem; } .wegcode-quiz .wegcode-antwoorden { width: 90%; max-width: 780px; margin: 0 auto; padding: 0; list-style: none; display: block; } .wegcode-quiz .wegcode-antwoorden li { width: 100%; padding: 14px; margin: 12px 0 0 0; box-sizing: border-box; } .progress-step { padding: 15px; gap: 8px; } .verkeersborden { gap: 10px !important; justify-content: center !important; } .verkeersborden-lang { gap: 70px !important; justify-content: center !important; } .button-grid { grid-template-columns: repeat(2, 1fr); gap: 20px; padding: 10px 10px; padding-left: 0px; padding-right: 15px; } .theorie-btn, .toes-btn, .spel-btn { min-height: 70px; padding: 10px 12px; font-size: 0.85rem; line-height: 1.25; text-align: center; display: flex; align-items: center; justify-content: center; word-break: break-word; } } @media (max-width: 480px) { html, body { margin: 0; padding: 0; } .header { padding: 10px 20px; box-sizing: border-box; } .header h1 { font-size: 1.9rem; white-space: normal; word-break: break-word; } .container { width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; padding: 10px; box-sizing: border-box; align-self: stretch; border-radius: 0; margin-bottom: 0 !important; } .afbeelding-container img { max-width: 100%; } .sidebar { overflow-x: auto; -webkit-overflow-scrolling: touch; padding-right: 20px; padding-left: 10px; } .sidebar-links { display: flex; flex-wrap: nowrap; justify-content: flex-start; gap: 10px; margin: 0; padding: 0; list-style: none; width: auto; white-space: nowrap; } .sidebar-links li { flex: 0 0 auto; min-width: max-content; } .sidebar-links a { display: block; white-space: nowrap; padding: 10px 15px; font-size: 16px; } .back-btn { padding: 12px 20px; font-size: 1em; bottom: 20px; right: 10px; } p, li { line-height: 1.4; margin-bottom: 0.8em; } #mode-toggle { max-width: 70px; } } body { font-size: clamp(14px, 3vw, 16px); } h1 { font-size: clamp(1.5rem, 5vw, 2.5rem); } h2 { font-size: clamp(1.25rem, 4vw, 1.75rem); } .table-wrapper { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 20px 0; }