@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap');

:root {
    --ink: #13202b;
    --muted: #71808b;
    --line: #dfe7e8;
    --paper: #f7faf8;
    --white: #fff;
    --teal: #0b7770;
    --mint: #d8f0e7;
    --yellow: #f8c85a;
    --coral: #e87c67;
    --dark: #173940;
    --shadow: 0 16px 38px rgba(19, 42, 47, 0.08);
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: Manrope, sans-serif; }
a { color: inherit; text-decoration: none; }
.app { display: grid; grid-template-columns: 240px minmax(0, 1fr); height: 100vh; overflow: hidden; }
.sidebar { display: flex; flex-direction: column; height: 100vh; padding: 31px 20px; overflow-y: auto; color: #d6e8e3; background: var(--dark); }
.brand { margin: 0 12px 54px; color: #fff; font-size: 21px; font-weight: 800; letter-spacing: -1px; }
.brand span { color: var(--yellow); }
.brand-logo { display: block; max-width: 150px; max-height: 42px; object-fit: contain; object-position: left center; }
.nav-label { margin: 0 12px 14px; color: #76958f; font-size: 10px; letter-spacing: 1.6px; text-transform: uppercase; }
.nav { display: grid; gap: 6px; }
.nav a { padding: 13px 14px; border-radius: 7px; color: #9bb6b1; font-size: 13px; font-weight: 700; }
.nav a.active, .nav a:hover { color: #fff; background: #28575a; }
.nav-icon { display: inline-block; width: 25px; color: #8ed4b9; font-size: 16px; }
.sidebar-footer { margin-top: auto; padding: 21px 12px 0; border-top: 1px solid #31595b; color: #8eaaa4; font-size: 12px; }
.profile-mini { display: flex; gap: 11px; align-items: center; margin-bottom: 14px; }
.avatar { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; color: var(--dark); background: var(--yellow); font-weight: 800; }
.main { width: 100%; max-width: 1450px; height: 100vh; padding: 34px 5.5% 65px; overflow-y: auto; }
.topbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 40px; }
.eyebrow { color: var(--teal); font-size: 10px; font-weight: 800; letter-spacing: 1.8px; text-transform: uppercase; }
.topbar h1 { margin: 8px 0 0; font-size: 29px; letter-spacing: -1.4px; }
.top-actions { display: flex; gap: 17px; align-items: center; }
.status { color: var(--muted); font-size: 12px; }
.status b { color: var(--teal); }
.button { padding: 12px 17px; border: 0; border-radius: 6px; color: #fff; background: var(--teal); font: 700 12px Manrope; cursor: pointer; }
.button.yellow { color: var(--dark); background: var(--yellow); }
.hero { position: relative; display: flex; align-items: center; justify-content: space-between; min-height: 176px; margin-bottom: 26px; padding: 31px 35px; overflow: hidden; border-radius: 10px; background: var(--mint); }
.hero:after { position: absolute; right: 6%; bottom: -62px; color: #bde3d5; content: 'Aa'; font: 800 190px Manrope; letter-spacing: -22px; }
.hero-copy { position: relative; z-index: 1; }
.hero h2 { margin: 9px 0 8px; font-size: 30px; letter-spacing: -1.7px; }
.hero p { margin: 0; color: #55736e; font-size: 13px; }
.hero .button { position: relative; z-index: 1; margin-right: 20px; }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 13px; }
.stat, .panel, .text-card, .admin-card { border: 1px solid var(--line); border-radius: 7px; background: var(--white); }
.stat { padding: 20px 21px; }
.stat small { display: block; margin-bottom: 9px; color: var(--muted); font-size: 11px; }
.stat strong { font-size: 28px; letter-spacing: -1px; }
.stat strong span { margin-left: 3px; color: var(--muted); font-size: 12px; font-weight: 600; }
.trend { margin-top: 8px; color: var(--teal); font-size: 10px; font-weight: 800; }
.section-heading { display: flex; align-items: end; justify-content: space-between; margin: 34px 0 15px; }
.section-heading h3 { margin: 0; font-size: 17px; letter-spacing: -0.5px; }
.section-heading a { color: var(--teal); font-size: 12px; font-weight: 800; }
.workspace { display: grid; grid-template-columns: 1.35fr 0.65fr; gap: 18px; }
.panel { padding: 24px; box-shadow: var(--shadow); }
.panel form { display: grid; gap: 10px; }
.panel form input:not([type="hidden"]), .panel form select, .panel form textarea { width: 100%; min-height: 42px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 5px; color: var(--ink); background: #fff; font: 12px Manrope; }
.panel form textarea { min-height: 100px; resize: vertical; }
.account-extra { max-width: 520px; margin-top: 20px; }
.progress-chart { display: flex; align-items: end; height: 155px; gap: 14px; padding: 15px 5px 0; border-bottom: 1px solid var(--line); background: repeating-linear-gradient(to bottom, transparent 0, transparent 38px, #edf2f0 39px); }
.bar { position: relative; flex: 1; min-height: 25px; border-radius: 4px 4px 0 0; background: #8dcfc0; }
.bar:nth-child(2), .bar:nth-child(5) { background: var(--teal); }
.bar:after { position: absolute; top: calc(100% + 8px); width: 100%; color: var(--muted); content: attr(data-day); font-size: 10px; text-align: center; }
.recent { display: grid; gap: 12px; }
.recent-row { display: flex; justify-content: space-between; padding-bottom: 12px; border-bottom: 1px solid #edf1ef; font-size: 12px; }
.recent-row span { color: var(--muted); }
.recent-row b { color: var(--teal); }
.practice-header { display: flex; align-items: start; justify-content: space-between; margin-bottom: 24px; }
.practice-header h2 { margin: 7px 0; font-size: 25px; letter-spacing: -1px; }
.filters { display: flex; flex-wrap: wrap; gap: 8px; }
.mode-filters { margin-top: -10px; margin-bottom: 18px; }
.chip { padding: 9px 12px; border: 1px solid var(--line); border-radius: 5px; color: var(--muted); background: #fff; font: 600 11px Manrope; cursor: pointer; }
.chip.selected, .chip:hover { border-color: var(--teal); color: var(--teal); background: #edf8f3; }
.typing-layout { display: grid; grid-template-columns: 1fr 250px; gap: 18px; }
.text-card { padding: 29px; }
.prompt { min-height: 154px; color: #9da9aa; font: 500 19px/2 'DM Mono', monospace; }
.prompt .typed-correct { color: var(--teal); }
.prompt .typed-wrong { color: var(--coral); background: #fff0ed; }
.type-input { width: 100%; padding: 19px 0 0; border: 0; border-top: 1px solid var(--line); outline: 0; resize: none; color: var(--ink); background: transparent; font: 500 16px/1.8 'DM Mono', monospace; }
.keyboard-guide { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line); }
.keyboard-guide-heading { display: flex; align-items: end; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.keyboard-guide-heading h3 { margin: 5px 0 0; font-size: 14px; }
.keyboard-guide-heading > span { color: var(--muted); font-size: 10px; }
.virtual-keyboard { display: grid; gap: 6px; padding: 12px; overflow-x: auto; border: 1px solid #cfe0dc; border-radius: 7px; background: #edf5f2; }
.keyboard-row { display: flex; gap: 5px; min-width: 610px; }
.key { display: grid; min-width: 34px; height: 34px; padding: 0 7px; place-items: center; border: 1px solid #c8d8d3; border-radius: 4px; color: #48615d; background: #fff; box-shadow: 0 2px 0 #d2e1dc; font: 700 10px 'DM Mono', monospace; }
.key-Backspace, .key-Tab, .key-CapsLock, .key-Enter, .key-ShiftLeft, .key-ShiftRight { min-width: 58px; }
.key-Space { flex: 1; min-width: 240px; }
.key.is-pressed { transform: translateY(2px); border-color: var(--teal); color: #fff; background: var(--teal); box-shadow: none; }
.metric-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 18px; }
.metric { padding: 14px; border-radius: 5px; background: #f5f9f7; }
.metric small { display: block; margin-bottom: 4px; color: var(--muted); font-size: 10px; }
.metric b { font-size: 20px; }
.side-panel { display: grid; align-content: start; gap: 14px; }
.side-panel h4 { margin: 0 0 14px; font-size: 14px; }
.choice-list { display: grid; gap: 7px; }
.choice { padding: 12px; border: 1px solid var(--line); border-radius: 5px; font-size: 12px; cursor: pointer; }
.choice.selected { border-color: #a8d6c7; color: var(--dark); background: var(--mint); font-weight: 800; }
.result-banner { display: flex; align-items: center; justify-content: space-between; padding: 26px; border-radius: 7px; color: #fff; background: var(--dark); }
.result-banner h2 { margin: 7px 0; font-size: 29px; }
.result-number { color: var(--yellow); font-size: 42px; font-weight: 800; }
.admin-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.admin-card { padding: 21px; }
.admin-card b { display: block; margin: 12px 0 4px; font-size: 27px; }
.admin-card span { color: var(--muted); font-size: 11px; }
.certificate { max-width: 760px; margin: auto; padding: 50px; outline: 1px solid #9dcbbd; border: 8px solid #d7eee5; background: #fff; text-align: center; }
.certificate h2 { margin: 18px 0; font-size: 37px; letter-spacing: -2px; }
.certificate .name { margin: 28px 0 10px; color: var(--teal); font-size: 27px; font-weight: 800; }
.certificate-logo { display: block; max-width: 180px; max-height: 80px; margin: 0 auto 20px; object-fit: contain; }
.certificate p { color: var(--muted); font-size: 13px; }
.cert-stats { display: flex; justify-content: center; gap: 55px; margin: 32px 0; }
.cert-stats b { display: block; color: var(--dark); font-size: 24px; }
.cert-stats small { color: var(--muted); font-size: 10px; letter-spacing: 1px; text-transform: uppercase; }
.notice { margin-bottom: 20px; padding: 11px 15px; border: 1px solid #f2d99a; border-radius: 5px; color: #755c23; background: #fff4d9; font-size: 12px; }
.plan-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.plan-card { padding: 28px; border: 1px solid var(--line); border-radius: 7px; background: var(--white); box-shadow: var(--shadow); }
.plan-card h3 { margin: 12px 0; font-size: 23px; }
.plan-card p { min-height: 44px; color: var(--muted); font-size: 12px; line-height: 1.7; }
.plan-price { color: var(--dark); font-size: 28px; font-weight: 800; }
.plan-price small { color: var(--muted); font-size: 11px; font-weight: 600; }
.payment-note { margin-top: 18px; color: var(--muted); font-size: 11px; }
.admin-page { background: #eef5f2; }
.admin-app { display: grid; grid-template-columns: 250px minmax(0, 1fr); height: 100vh; overflow: hidden; }
.admin-sidebar { display: flex; flex-direction: column; height: 100vh; padding: 31px 20px; overflow-y: auto; color: #d6e8e3; background: var(--dark); }
.admin-sidebar .brand { display: block; margin-bottom: 48px; }
.admin-sidebar .brand small { display: block; margin-top: 5px; color: #83aaa0; font-size: 9px; letter-spacing: 1.6px; }
.admin-nav { display: grid; gap: 6px; }
.admin-nav a { padding: 13px 14px; border-radius: 7px; color: #9bb6b1; font-size: 13px; font-weight: 700; }
.admin-nav a:hover { color: #fff; background: #28575a; }
.admin-nav a:first-child { color: #fff; background: #28575a; }
.admin-nav a.active { color: #fff; background: #28575a; }
.admin-sidebar-footer { margin-top: auto; padding: 21px 12px 0; border-top: 1px solid #31595b; font-size: 12px; }
.admin-sidebar-footer a { display: block; margin-top: 12px; color: #9bb6b1; }
.admin-sidebar-footer a:hover { color: #fff; }
.admin-main { width: 100%; max-width: 1500px; height: 100vh; padding: 42px 5.5% 70px; overflow-y: auto; }
.admin-topbar { display: flex; align-items: start; justify-content: space-between; margin-bottom: 30px; }
.admin-topbar h1 { margin: 8px 0 6px; font-size: 34px; letter-spacing: -1.8px; }
.admin-topbar p { margin: 0; color: var(--muted); font-size: 13px; }
.admin-status { padding: 10px 13px; border-radius: 5px; color: var(--teal); background: var(--mint); font-size: 11px; font-weight: 800; }
.admin-overview { display: grid; grid-template-columns: repeat(4, 1fr); gap: 13px; margin-bottom: 32px; }
.admin-stat { padding: 19px 21px; border: 1px solid var(--line); border-radius: 7px; background: #fff; }
.admin-stat small, .admin-stat span { display: block; color: var(--muted); font-size: 10px; }
.admin-stat strong { display: block; margin: 7px 0 3px; color: var(--dark); font-size: 28px; }
.admin-content .admin-section { padding: 24px; border: 1px solid var(--line); border-radius: 7px; background: #fff; box-shadow: var(--shadow); }
.admin-content .admin-section + .admin-section { margin-top: 18px; }
.admin-content .admin-section { display: none; }
.admin-page[data-admin-tab="overview"] .admin-overview { display: grid; }
.admin-page[data-admin-tab="students"] #students { display: block; }
.admin-page[data-admin-tab="subscriptions"] #subscriptions,
.admin-page[data-admin-tab="subscriptions"] #payments { display: block; }
.admin-page[data-admin-tab="languages"] #languages { display: block; }
.admin-page[data-admin-tab="content"] #content { display: block; }
.admin-page[data-admin-tab="lessons"] #lessons,
.admin-page[data-admin-tab="lessons"] #tests { display: block; }
.admin-page[data-admin-tab="branding"] #branding { display: block; }
.admin-page[data-admin-tab="gateway"] #gateway { display: block; }
.admin-section { margin-top: 28px; }
.admin-form { display: grid; grid-template-columns: repeat(6, 1fr); gap: 9px; align-items: center; }
.admin-form input, .admin-form select, .admin-form textarea, .inline-form input { width: 100%; padding: 11px 12px; border: 1px solid var(--line); border-radius: 5px; color: var(--ink); background: #fff; font: 12px Manrope; }
.admin-form textarea { grid-column: span 5; min-height: 90px; resize: vertical; }
.admin-form button { white-space: nowrap; }
.gateway-form { grid-template-columns: repeat(3, 1fr); }
.admin-table { display: grid; gap: 8px; }
.admin-row { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 15px 17px; border: 1px solid var(--line); border-radius: 5px; background: #fff; font-size: 12px; }
.admin-row span { flex: 1; }
.admin-row small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; }
.admin-row em { color: var(--teal); font-size: 10px; font-style: normal; text-transform: uppercase; }
.inline-form { display: flex; gap: 7px; align-items: center; }
.inline-form input { width: 150px; }
.tag-list { display: flex; flex-wrap: wrap; gap: 8px; }
.tag-list span { padding: 8px 11px; border-radius: 5px; color: var(--teal); background: var(--mint); font-size: 12px; font-weight: 700; }
.tag-list small { margin-left: 5px; color: var(--muted); font-weight: 500; }
.content-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 14px; }
.content-list article { padding: 16px; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.content-item { display: grid; gap: 9px; padding: 16px; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.content-item input, .content-item select, .content-item textarea { width: 100%; min-height: 40px; padding: 10px; border: 1px solid var(--line); border-radius: 5px; color: var(--ink); background: #fff; font: 12px Manrope; }
.content-item textarea { min-height: 120px; resize: vertical; }
.content-list small { display: block; margin-top: 5px; color: var(--muted); font-size: 10px; }
.content-list p { color: var(--muted); font-size: 11px; line-height: 1.6; }
.lesson-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.lesson-card { display: flex; flex-direction: column; padding: 21px; border: 1px solid var(--line); border-radius: 7px; background: #fff; box-shadow: var(--shadow); }
.lesson-card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.lesson-number { padding: 5px 8px; border-radius: 4px; color: var(--teal); background: var(--mint); font-size: 10px; font-weight: 800; letter-spacing: .5px; text-transform: uppercase; }
.lesson-card h3 { margin: 10px 0 6px; font-size: 16px; }
.lesson-card > small { color: var(--muted); font-size: 10px; text-transform: capitalize; }
.lesson-card p { flex: 1; color: var(--muted); font-size: 11px; line-height: 1.7; }
.mode-note { margin-top: 14px; padding: 10px; border-left: 3px solid var(--yellow); color: #755c23; background: #fff8e5; font-size: 10px; line-height: 1.6; }
.free-access-note { margin-top: 10px !important; color: var(--teal) !important; font-size: 11px !important; font-weight: 700; }
.branding-form label { display: grid; gap: 7px; color: var(--muted); font-size: 11px; }
.branding-form input[type="file"] { padding: 9px; }
.branding-preview { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 18px; }
.branding-preview div { display: grid; gap: 7px; color: var(--muted); font-size: 10px; }
.branding-preview img { width: 150px; height: 70px; padding: 8px; border: 1px solid var(--line); border-radius: 5px; object-fit: contain; background: var(--paper); }

@media (max-width: 900px) {
    html, body { overflow: auto; }
    .app { grid-template-columns: 1fr; }
    .app, .admin-app { height: auto; min-height: 100vh; overflow: visible; }
    .sidebar { display: block; height: auto; padding: 18px 20px; overflow: visible; }
    .brand { display: inline-block; margin: 0 30px 0 0; }
    .sidebar .nav-label, .sidebar-footer { display: none; }
    .nav { display: inline-flex; gap: 3px; }
    .nav a { padding: 9px; font-size: 0; }
    .nav-icon { width: auto; font-size: 17px; }
    .main { height: auto; padding: 25px 20px 45px; overflow: visible; }
    .stats { grid-template-columns: repeat(2, 1fr); }
    .workspace, .typing-layout { grid-template-columns: 1fr; }
    .plan-grid { grid-template-columns: 1fr; }
    .hero { display: block; padding: 27px; }
    .hero .button { margin-top: 20px; }
    .side-panel { grid-template-columns: repeat(2, 1fr); }
    .admin-form, .gateway-form { grid-template-columns: repeat(2, 1fr); }
    .admin-form textarea { grid-column: span 2; }
    .content-list { grid-template-columns: 1fr 1fr; }
    .lesson-grid { grid-template-columns: 1fr 1fr; }
    .topbar { margin-bottom: 28px; }
    .top-actions .status { display: none; }
    .admin-app { grid-template-columns: 1fr; }
    .admin-sidebar { display: block; height: auto; padding: 18px 20px; overflow: visible; }
    .admin-sidebar .brand { display: inline-block; margin: 0 25px 0 0; }
    .admin-sidebar .nav-label, .admin-sidebar-footer { display: none; }
    .admin-nav { display: inline-flex; gap: 3px; }
    .admin-nav a { padding: 9px; font-size: 0; }
    .admin-nav a span { display: none; }
    .admin-main { height: auto; padding: 25px 20px 45px; overflow: visible; }
    .admin-overview { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 520px) {
    .main { padding: 22px 14px; }
    .topbar h1 { font-size: 24px; }
    .stats, .metric-grid, .admin-grid, .side-panel { grid-template-columns: 1fr 1fr; }
    .hero h2 { font-size: 25px; }
    .text-card { padding: 18px; }
    .keyboard-guide-heading { display: block; }
    .keyboard-guide-heading > span { display: block; margin-top: 6px; }
    .prompt { font-size: 15px; }
    .practice-header { display: block; }
    .filters { margin-top: 18px; }
    .result-banner { display: block; }
    .result-number { margin-top: 15px; }
    .certificate { padding: 28px 14px; }
    .certificate h2 { font-size: 28px; }
    .cert-stats { gap: 20px; }
    .admin-topbar { display: block; }
    .admin-status { display: inline-block; margin-top: 18px; }
    .admin-overview { grid-template-columns: 1fr 1fr; }
    .admin-form, .gateway-form, .content-list { grid-template-columns: 1fr; }
    .admin-form textarea { grid-column: auto; }
    .admin-row, .inline-form { align-items: stretch; flex-direction: column; }
    .inline-form input { width: 100%; }
    .branding-form { grid-template-columns: 1fr; }
    .branding-preview { display: grid; grid-template-columns: 1fr 1fr; }
    .lesson-grid { grid-template-columns: 1fr; }
}
