english-easy/css/style.css

1058 lines
18 KiB
CSS

:root {
--ink: #1A1D23;
--ink-light: #2D3436;
--accent: #6C5CE7;
--accent-light: #A29BFE;
--accent-50: #F0EEFF;
--green: #00B894;
--green-light: #E6F9F4;
--warm: #FFEAA7;
--warm-light: #FFF9E6;
--white: #FFFFFF;
--gray-500: #636E72;
--gray-300: #B2BEC3;
--gray-100: #F5F6FA;
--shadow: 0 2px 16px rgba(108, 92, 231, 0.08);
--shadow-hover: 0 8px 30px rgba(108, 92, 231, 0.15);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
}
body {
font: 17px/1.7 -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif;
color: var(--ink);
background: var(--white);
min-height: 100vh;
display: flex;
flex-direction: column;
}
::selection {
background: var(--accent-light);
color: var(--white);
}
.container {
max-width: 1140px;
margin: 0 auto;
padding: 0 24px;
}
/* ===== HEADER ===== */
header {
background: rgba(255,255,255,0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid var(--gray-100);
position: sticky;
top: 0;
z-index: 100;
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 24px;
max-width: 1140px;
margin: 0 auto;
}
.logo {
font-size: 24px;
font-weight: 800;
color: var(--ink);
text-decoration: none;
display: flex;
align-items: center;
gap: 8px;
letter-spacing: -0.5px;
}
.logo-icon {
width: 36px;
height: 36px;
background: var(--accent);
color: var(--white);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
font-weight: 800;
}
.logo span {
color: var(--accent);
}
.nav-list {
display: flex;
list-style: none;
gap: 2px;
}
.nav-list a {
text-decoration: none;
color: var(--gray-500);
font-size: 14px;
font-weight: 600;
padding: 8px 14px;
border-radius: 8px;
transition: all 0.2s;
}
.nav-list a:hover {
color: var(--accent);
background: var(--accent-50);
}
.nav-list a.active {
color: var(--white);
background: var(--accent);
}
.menu-toggle {
display: none;
background: none;
border: none;
font-size: 28px;
cursor: pointer;
color: var(--ink);
padding: 4px;
}
/* ===== FOOTER ===== */
footer {
background: var(--ink);
color: var(--gray-300);
text-align: center;
padding: 36px 24px;
margin-top: auto;
font-size: 14px;
}
footer a {
color: var(--accent-light);
text-decoration: none;
font-weight: 600;
}
footer a:hover {
color: var(--accent);
}
/* ===== HERO ===== */
.hero {
background: linear-gradient(135deg, var(--accent-50) 0%, var(--warm-light) 50%, var(--green-light) 100%);
color: var(--ink);
padding: 100px 24px;
text-align: center;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle at 30% 50%, rgba(108,92,231,0.05) 0%, transparent 50%),
radial-gradient(circle at 70% 50%, rgba(0,184,148,0.05) 0%, transparent 50%);
pointer-events: none;
}
.hero .container {
position: relative;
}
.hero-badge {
display: inline-block;
background: var(--accent);
color: var(--white);
padding: 6px 18px;
border-radius: 20px;
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 20px;
}
.hero h1 {
font-size: 56px;
font-weight: 800;
line-height: 1.1;
margin-bottom: 16px;
letter-spacing: -1.5px;
}
.hero h1 span {
color: var(--accent);
}
.hero .highlight {
background: linear-gradient(135deg, var(--accent), var(--green));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero p {
font-size: 20px;
color: var(--gray-500);
max-width: 600px;
margin: 0 auto 36px;
line-height: 1.6;
}
.hero-buttons {
display: flex;
gap: 16px;
justify-content: center;
flex-wrap: wrap;
}
/* ===== BUTTONS ===== */
.btn {
display: inline-flex;
align-items: center;
gap: 8px;
background: var(--accent);
color: var(--white);
padding: 14px 30px;
border-radius: 12px;
font-weight: 700;
text-decoration: none;
transition: all 0.3s;
border: none;
cursor: pointer;
font-size: 16px;
box-shadow: 0 4px 14px rgba(108, 92, 231, 0.25);
}
.btn:hover {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(108, 92, 231, 0.35);
}
.btn:active {
transform: translateY(-1px);
}
.btn-outline {
background: transparent;
color: var(--accent);
border: 2px solid var(--accent);
box-shadow: none;
}
.btn-outline:hover {
background: var(--accent);
color: var(--white);
box-shadow: 0 8px 25px rgba(108, 92, 231, 0.3);
}
.btn-green {
background: var(--green);
box-shadow: 0 4px 14px rgba(0, 184, 148, 0.25);
}
.btn-green:hover {
box-shadow: 0 8px 25px rgba(0, 184, 148, 0.35);
}
.btn:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none;
}
/* ===== SECTIONS ===== */
.section {
padding: 80px 24px;
}
.section-alt {
background: var(--gray-100);
}
.section-title {
font-size: 36px;
font-weight: 800;
text-align: center;
margin-bottom: 12px;
letter-spacing: -0.5px;
}
.section-title span {
color: var(--accent);
}
.section-subtitle {
font-size: 18px;
color: var(--gray-500);
text-align: center;
margin-bottom: 48px;
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
/* ===== CARDS ===== */
.cards-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 24px;
}
.card {
background: var(--white);
border: 1px solid var(--gray-100);
border-radius: 20px;
padding: 36px 32px;
transition: all 0.3s;
box-shadow: var(--shadow);
position: relative;
overflow: hidden;
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, var(--accent), var(--green));
opacity: 0;
transition: opacity 0.3s;
}
.card:hover::before {
opacity: 1;
}
.card:hover {
transform: translateY(-6px);
box-shadow: var(--shadow-hover);
border-color: transparent;
}
.card-icon {
width: 56px;
height: 56px;
background: var(--accent-50);
border-radius: 14px;
display: flex;
align-items: center;
justify-content: center;
font-size: 26px;
margin-bottom: 20px;
transition: transform 0.3s;
}
.card:hover .card-icon {
transform: scale(1.1);
}
.card:nth-child(2) .card-icon { background: var(--green-light); }
.card:nth-child(3) .card-icon { background: var(--warm-light); }
.card:nth-child(4) .card-icon { background: var(--accent-50); }
.card:nth-child(5) .card-icon { background: var(--green-light); }
.card h3 {
font-size: 22px;
font-weight: 700;
margin-bottom: 12px;
}
.card p {
color: var(--gray-500);
margin-bottom: 20px;
line-height: 1.6;
}
.card .btn {
font-size: 14px;
padding: 10px 22px;
}
/* ===== HOW IT WORKS ===== */
.steps {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 40px;
text-align: center;
}
.step {
position: relative;
}
.step-number {
width: 56px;
height: 56px;
background: var(--accent);
color: var(--white);
font-size: 22px;
font-weight: 800;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 20px;
box-shadow: 0 4px 14px rgba(108, 92, 231, 0.3);
}
.step h3 {
font-size: 20px;
font-weight: 700;
margin-bottom: 8px;
}
.step p {
color: var(--gray-500);
font-size: 15px;
line-height: 1.6;
}
/* ===== PAGE HEADER ===== */
.page-header {
background: linear-gradient(135deg, var(--accent-50) 0%, var(--warm-light) 100%);
color: var(--ink);
padding: 64px 24px;
text-align: center;
position: relative;
}
.page-header h1 {
font-size: 42px;
font-weight: 800;
margin-bottom: 8px;
letter-spacing: -1px;
}
.page-header p {
font-size: 18px;
color: var(--gray-500);
max-width: 500px;
margin: 0 auto;
}
/* ===== VOCABULARY ===== */
.vocab-table {
width: 100%;
border-collapse: collapse;
background: var(--white);
border-radius: 16px;
overflow: hidden;
box-shadow: var(--shadow);
}
.vocab-table th {
background: var(--accent);
color: var(--white);
padding: 16px 20px;
text-align: left;
font-weight: 700;
font-size: 15px;
}
.vocab-table td {
padding: 14px 20px;
border-bottom: 1px solid var(--gray-100);
}
.vocab-table tr:last-child td {
border-bottom: none;
}
.vocab-table tr:hover td {
background: var(--accent-50);
}
.vocab-table td:first-child {
font-weight: 600;
}
.vocab-categories {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
margin-bottom: 32px;
}
.category-btn {
padding: 8px 20px;
border-radius: 20px;
border: 2px solid var(--gray-100);
background: var(--white);
cursor: pointer;
font-size: 14px;
font-weight: 600;
transition: all 0.2s;
}
.category-btn:hover {
border-color: var(--accent-light);
color: var(--accent);
}
.category-btn.active {
background: var(--accent);
color: var(--white);
border-color: var(--accent);
}
/* ===== GRAMMAR ===== */
.grammar-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 24px;
}
.grammar-card {
background: var(--white);
border: 1px solid var(--gray-100);
border-radius: 20px;
padding: 32px;
box-shadow: var(--shadow);
transition: all 0.3s;
}
.grammar-card:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-hover);
}
.grammar-card h3 {
font-size: 22px;
font-weight: 700;
margin-bottom: 12px;
color: var(--accent);
display: flex;
align-items: center;
gap: 8px;
}
.grammar-card .formula {
background: var(--accent-50);
padding: 14px 18px;
border-radius: 10px;
font-family: 'SF Mono', 'Fira Code', monospace;
font-size: 16px;
margin: 16px 0;
border-left: 4px solid var(--accent);
line-height: 1.5;
}
.grammar-card .examples {
margin-top: 12px;
}
.grammar-card .examples li {
list-style: none;
padding: 8px 0;
color: var(--gray-500);
border-bottom: 1px solid var(--gray-100);
}
.grammar-card .examples li:last-child {
border-bottom: none;
}
.grammar-card .examples li::before {
content: "→ ";
color: var(--green);
font-weight: 700;
}
/* ===== EXERCISES ===== */
.exercise {
background: var(--white);
border: 1px solid var(--gray-100);
border-radius: 20px;
padding: 32px;
margin-bottom: 24px;
box-shadow: var(--shadow);
transition: all 0.3s;
}
.exercise:hover {
box-shadow: var(--shadow-hover);
}
.exercise h3 {
font-size: 18px;
font-weight: 700;
margin-bottom: 16px;
color: var(--accent);
}
.exercise .question {
font-size: 17px;
margin-bottom: 16px;
padding: 12px 16px;
background: var(--gray-100);
border-radius: 10px;
font-weight: 500;
}
.exercise .options {
display: flex;
flex-direction: column;
gap: 10px;
}
.exercise .option {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 18px;
border: 2px solid var(--gray-100);
border-radius: 12px;
cursor: pointer;
transition: all 0.2s;
}
.exercise .option:hover {
border-color: var(--accent-light);
background: var(--accent-50);
}
.exercise .option input[type="radio"] {
accent-color: var(--accent);
width: 20px;
height: 20px;
}
.exercise .option.correct {
border-color: var(--green);
background: var(--green-light);
}
.exercise .option.wrong {
border-color: #E17055;
background: #FDF0ED;
}
.exercise .feedback {
margin-top: 14px;
padding: 12px 18px;
border-radius: 12px;
font-weight: 700;
display: none;
font-size: 15px;
}
.exercise .feedback.correct {
display: block;
background: var(--green-light);
color: var(--green);
border: 2px solid var(--green);
}
.exercise .feedback.wrong {
display: block;
background: #FDF0ED;
color: #E17055;
border: 2px solid #E17055;
}
.fill-input {
padding: 10px 16px;
border: 2px solid var(--gray-100);
border-radius: 10px;
font-size: 16px;
width: 220px;
transition: border-color 0.2s;
font-family: inherit;
}
.fill-input:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-50);
}
.fill-input.correct {
border-color: var(--green);
background: var(--green-light);
}
.fill-input.wrong {
border-color: #E17055;
background: #FDF0ED;
}
/* ===== TESTS ===== */
.test-question {
background: var(--white);
border: 1px solid var(--gray-100);
border-radius: 16px;
padding: 24px;
margin-bottom: 16px;
box-shadow: var(--shadow);
}
.test-question h4 {
font-size: 16px;
font-weight: 700;
margin-bottom: 14px;
display: flex;
align-items: center;
gap: 8px;
}
.test-question h4 .q-number {
display: inline-flex;
width: 28px;
height: 28px;
background: var(--accent-50);
color: var(--accent);
border-radius: 8px;
align-items: center;
justify-content: center;
font-size: 13px;
font-weight: 800;
}
.test-question .options {
display: flex;
flex-direction: column;
gap: 8px;
}
.test-question .option {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 16px;
border: 2px solid var(--gray-100);
border-radius: 10px;
cursor: pointer;
transition: all 0.2s;
}
.test-question .option:hover {
border-color: var(--accent-light);
background: var(--accent-50);
}
.test-question .option input[type="radio"] {
accent-color: var(--accent);
width: 18px;
height: 18px;
}
.result-box {
text-align: center;
padding: 40px;
background: linear-gradient(135deg, var(--accent-50), var(--green-light));
border-radius: 20px;
margin-top: 32px;
display: none;
}
.result-box.show {
display: block;
}
.result-box .score {
font-size: 56px;
font-weight: 800;
color: var(--accent);
}
.result-box p {
font-size: 18px;
color: var(--gray-500);
margin-top: 8px;
}
/* ===== READING ===== */
.reading-text {
background: var(--white);
border: 1px solid var(--gray-100);
border-radius: 20px;
padding: 32px;
margin-bottom: 24px;
box-shadow: var(--shadow);
transition: all 0.3s;
}
.reading-text:hover {
box-shadow: var(--shadow-hover);
}
.reading-text h3 {
font-size: 22px;
font-weight: 700;
margin-bottom: 16px;
color: var(--accent);
}
.reading-text .text-content {
line-height: 1.9;
margin-bottom: 24px;
font-size: 16px;
}
.reading-text .text-content p {
margin-bottom: 12px;
}
.reading-text .questions {
background: var(--gray-100);
padding: 20px 24px;
border-radius: 12px;
}
.reading-text .questions h4 {
font-weight: 700;
margin-bottom: 12px;
font-size: 16px;
color: var(--accent);
}
.reading-text .questions ol {
margin-left: 20px;
}
.reading-text .questions li {
margin-bottom: 8px;
color: var(--gray-500);
}
/* ===== CONTACT ===== */
.contact-form {
max-width: 600px;
margin: 0 auto;
background: var(--white);
border: 1px solid var(--gray-100);
border-radius: 20px;
padding: 44px;
box-shadow: var(--shadow);
}
.form-group {
margin-bottom: 22px;
}
.form-group label {
display: block;
font-weight: 700;
margin-bottom: 8px;
font-size: 15px;
color: var(--ink);
}
.form-group input,
.form-group textarea {
width: 100%;
padding: 14px 18px;
border: 2px solid var(--gray-100);
border-radius: 12px;
font-size: 16px;
font-family: inherit;
transition: all 0.2s;
color: var(--ink);
}
.form-group input:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-50);
}
.form-group textarea {
min-height: 130px;
resize: vertical;
}
.contact-form .btn {
width: 100%;
justify-content: center;
}
.form-message {
text-align: center;
padding: 24px;
background: var(--green-light);
color: var(--green);
border: 2px solid var(--green);
border-radius: 14px;
margin-top: 20px;
font-weight: 700;
display: none;
font-size: 16px;
}
.form-message.show {
display: block;
}
/* ===== MOTIVATION BANNER ===== */
.motivation-banner {
background: linear-gradient(135deg, var(--accent) 0%, var(--green) 100%);
color: var(--white);
padding: 40px 24px;
text-align: center;
border-radius: 20px;
margin-bottom: 32px;
}
.motivation-banner h3 {
font-size: 28px;
font-weight: 800;
margin-bottom: 8px;
}
.motivation-banner p {
font-size: 16px;
opacity: 0.9;
}
/* ===== ANIMATIONS ===== */
@keyframes fadeInUp {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.card, .step, .grammar-card, .exercise, .reading-text, .test-question {
animation: fadeInUp 0.5s ease both;
}
.card:nth-child(1) { animation-delay: 0.05s; }
.card:nth-child(2) { animation-delay: 0.1s; }
.card:nth-child(3) { animation-delay: 0.15s; }
.card:nth-child(4) { animation-delay: 0.2s; }
.card:nth-child(5) { animation-delay: 0.25s; }
/* ===== MOBILE ===== */
@media (max-width: 768px) {
.menu-toggle {
display: block;
}
.nav-list {
display: none;
flex-direction: column;
position: absolute;
top: 100%;
left: 0;
right: 0;
background: var(--white);
border-bottom: 1px solid var(--gray-100);
padding: 8px;
gap: 2px;
box-shadow: 0 8px 20px rgba(0,0,0,0.08);
}
.nav-list.open {
display: flex;
}
.nav-list a {
padding: 12px 16px;
border-radius: 10px;
}
.hero h1 {
font-size: 36px;
}
.hero p {
font-size: 18px;
}
.hero {
padding: 60px 20px;
}
.section {
padding: 48px 20px;
}
.section-title {
font-size: 28px;
}
.page-header h1 {
font-size: 32px;
}
.page-header {
padding: 44px 20px;
}
.cards-grid {
grid-template-columns: 1fr;
}
.grammar-grid {
grid-template-columns: 1fr;
}
.steps {
grid-template-columns: 1fr;
}
.vocab-table {
font-size: 14px;
}
.vocab-table th,
.vocab-table td {
padding: 10px 12px;
}
.contact-form {
padding: 24px;
}
.fill-input {
width: 100%;
}
}
@media (max-width: 480px) {
.header-inner {
padding: 10px 16px;
}
.logo {
font-size: 20px;
}
.hero {
padding: 48px 16px;
}
.hero h1 {
font-size: 28px;
}
.hero-buttons {
flex-direction: column;
align-items: center;
}
.card {
padding: 24px;
}
}