@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Plus+Jakarta+Sans:wght@600;700;800&display=swap";:root{--color-vermilion:#d32f2f;--color-gold:#ffd54f;--color-terracotta:#bf360c;--color-cream:#fffde7;--color-charcoal:#37474f;--font-heading:"Plus Jakarta Sans", sans-serif;--font-body:"Inter", sans-serif;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--radius-s:4px;--radius-m:12px;--radius-l:24px;--bg-1:var(--color-cream);--bg-2:#fff;--fg-1:var(--color-charcoal);--fg-2:#546e7a;--accent-primary:var(--color-vermilion);--accent-secondary:var(--color-gold);--accent-tertiary:var(--color-terracotta);--border-subtle:#00000014;--border-strong:var(--color-charcoal);--primary-color:var(--accent-primary);--secondary-color:var(--accent-secondary);--text-color:var(--fg-1);--bg-color:var(--bg-1);--white:var(--bg-2);--gray-light:var(--border-subtle);--gray-dark:var(--fg-2);--success:#2e7d32}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background-color:var(--bg-color);color:var(--text-color);line-height:1.6}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:700}a{color:var(--primary-color);text-decoration:none}a:hover{text-decoration:underline}.btn{border-radius:var(--radius-m);cursor:pointer;font-family:var(--font-body);border:none;border-bottom:4px solid #0000001a;padding:.8rem 1.5rem;font-weight:600;transition:all .2s}.btn-primary{background-color:var(--accent-primary);color:#fff}.btn-primary:hover{background-color:#b71c1c;transform:translateY(-2px)}.btn-secondary{background-color:var(--accent-secondary);color:var(--fg-1)}.btn-secondary:hover{background-color:#fdd835;transform:translateY(-2px)}.btn:active{border-bottom-width:2px;transform:translateY(2px)}.app-container{flex-direction:column;max-width:900px;min-height:100vh;margin:0 auto;display:flex}header{padding:var(--space-3) var(--space-5);background-color:var(--white);color:var(--fg-1);border-bottom:2px solid var(--border-subtle);z-index:1000;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.logo{font-family:var(--font-heading);cursor:pointer;color:var(--accent-primary);align-items:center;gap:12px;font-size:1.5rem;font-weight:800;display:flex}.menu-trigger{background:var(--accent-secondary);color:var(--color-charcoal);border:2px solid var(--color-charcoal);border-bottom:4px solid var(--color-charcoal);border-radius:var(--radius-l);cursor:pointer;font-weight:800;font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:12px;padding:8px 20px;transition:all .1s;display:flex}.menu-trigger:hover{box-shadow:0 4px 0 var(--color-charcoal);transform:translateY(-2px)}.menu-trigger:active{box-shadow:none;border-bottom-width:2px;transform:translateY(2px)}.nav-overlay{background:var(--accent-primary);z-index:2000;padding:var(--space-6);opacity:0;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:fixed;inset:0}.nav-overlay.open{opacity:1;pointer-events:auto}.overlay-close{border:3px solid var(--color-charcoal);cursor:pointer;width:54px;height:54px;color:var(--color-charcoal);z-index:2001;background:#fff;border-bottom-width:6px;border-radius:50%;justify-content:center;align-items:center;font-size:2rem;transition:all .1s;display:flex;position:absolute;top:32px;right:40px}.overlay-close:active{border-bottom-width:3px;transform:translateY(2px)}.overlay-links{gap:var(--space-4);grid-template-columns:repeat(2,1fr);width:100%;max-width:600px;display:grid}@media (width<=600px){.overlay-links{gap:var(--space-3);grid-template-columns:1fr}}.tactile-nav-btn{color:var(--color-charcoal);border:3px solid var(--color-charcoal);border-bottom:8px solid var(--color-charcoal);padding:var(--space-4);border-radius:var(--radius-m);font-family:var(--font-heading);text-align:center;cursor:pointer;background:#fff;flex-direction:column;align-items:center;gap:4px;font-size:1.4rem;font-weight:800;text-decoration:none;transition:all .1s;display:flex}.tactile-nav-btn:hover{background:var(--accent-secondary);border-bottom-width:12px;transform:translateY(-4px)}.tactile-nav-btn:active{border-bottom-width:4px;transform:translateY(4px)}.tactile-nav-btn.active{background:var(--accent-secondary);border-color:var(--color-charcoal)}.tactile-nav-btn .sub-text{text-transform:uppercase;opacity:.6;font-size:.75rem;font-family:var(--font-body)}.overlay-footer{margin-top:var(--space-6);align-items:center;gap:var(--space-4);flex-direction:column;width:100%;display:flex}.user-tag{background:var(--accent-secondary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-s);font-size:.9rem;font-weight:500}main{padding:var(--space-5);flex:1}.login-screen{background-color:var(--bg-1);justify-content:center;align-items:center;height:100vh;display:flex}.card{background:var(--white);padding:var(--space-6);border-radius:var(--radius-l);text-align:center;border:2px solid var(--border-subtle);box-shadow:0 12px #0000000d}.card h1{color:var(--accent-primary);margin-bottom:var(--space-2)}.card input{border:2px solid var(--border-subtle);border-radius:var(--radius-m);width:100%;font-family:var(--font-body);margin:1.5rem 0;padding:1rem;font-size:1rem}.phase-group{margin-top:var(--space-6)}.phase-header-ui{font-family:var(--font-heading);color:var(--accent-primary);border-bottom:3px solid var(--accent-secondary);padding-bottom:var(--space-1);margin-bottom:var(--space-4);text-transform:uppercase;letter-spacing:.02em;font-size:1.5rem;font-weight:800}.map-nodes{gap:var(--space-4);margin-top:var(--space-5);flex-direction:column;display:flex}.node{align-items:center;gap:var(--space-4);padding:var(--space-4);border-radius:var(--radius-m);background:var(--white);border:2px solid var(--border-subtle);border-bottom:4px solid var(--border-subtle);cursor:pointer;transition:all .2s;display:flex}.node.locked{opacity:.5;cursor:not-allowed;filter:grayscale()}.node.unlocked:hover{border-color:var(--accent-secondary);border-bottom-color:var(--accent-secondary);transform:translateY(-4px)}.node-icon{border-radius:var(--radius-m);background:var(--border-subtle);width:60px;height:60px;font-size:1.5rem;font-weight:800;font-family:var(--font-heading);justify-content:center;align-items:center;display:flex}.node.unlocked .node-icon{background:var(--accent-secondary);color:var(--fg-1)}.node.completed .node-icon{background:var(--success);color:#fff}.node-label h3{margin:0;font-size:1.25rem}.node-label p{margin:var(--space-1) 0 0;color:var(--fg-2);font-size:.95rem}.lesson-viewer-container{background:var(--white);padding:var(--space-5);border-radius:var(--radius-l);border:2px solid var(--border-subtle);flex-direction:column;min-height:500px;display:flex;position:relative;box-shadow:0 8px #00000008}.lesson-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.exit-btn{cursor:pointer;color:var(--fg-2);background:0 0;border:none;font-size:2rem;line-height:1}.lesson-content{flex-direction:column;flex:1;display:flex}.view{flex-direction:column;flex:1;animation:.4s ease-out slideIn;display:flex}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.matching-grid{gap:var(--space-3);margin:var(--space-4) 0;grid-template-columns:1fr 1fr;display:grid}.match-btn{padding:var(--space-3);border:2px solid var(--border-subtle);border-bottom:4px solid var(--border-subtle);border-radius:var(--radius-m);cursor:pointer;font-family:var(--font-body);background:#fff;font-weight:600;transition:all .1s}.match-btn.selected{border-color:var(--accent-secondary);background:var(--color-gold);border-bottom-width:2px;transform:translateY(2px)}.match-btn.correct{border-color:var(--success);color:var(--success);cursor:default;background:#e8f5e9}.sentence-box{background:var(--bg-1);padding:var(--space-5);border-radius:var(--radius-m);font-family:var(--font-heading);text-align:center;margin:var(--space-4) 0;border:2px dashed var(--accent-primary);font-size:1.5rem}.options-row{justify-content:center;gap:var(--space-3);margin-top:var(--space-4);display:flex}.translation-input{width:100%;padding:var(--space-4);border:2px solid var(--border-subtle);border-radius:var(--radius-m);font-family:var(--font-body);margin-top:var(--space-4);text-align:center;font-size:1.2rem}.footer{padding-top:var(--space-5);justify-content:center;margin-top:auto;display:flex}.feedback-overlay{padding:var(--space-5);z-index:10;border-radius:0 0 var(--radius-l) var(--radius-l);animation:.3s ease-out slideUp;position:absolute;bottom:0;left:0;right:0}.feedback-overlay.correct{border-top:4px solid var(--success);color:#2e7d32;background:#e8f5e9}.feedback-overlay.incorrect{border-top:4px solid var(--accent-primary);color:#c62828;background:#ffebee}.feedback-content{justify-content:space-between;align-items:center;display:flex}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.intro-text{color:var(--fg-1);margin-bottom:var(--space-4);font-size:1.2rem;line-height:1.6}.lesson-viewer h2{color:var(--accent-primary);margin-bottom:var(--space-4)}.vocab-list{gap:var(--space-3);margin:var(--space-5) 0;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.vocab-item{padding:var(--space-4);background:var(--bg-1);border-radius:var(--radius-m);border:1px solid var(--border-subtle);flex-direction:column;display:flex}.vocab-item .sq{font-weight:800;font-family:var(--font-heading);color:var(--accent-primary);font-size:1.2rem}.vocab-item .en{color:var(--fg-2);margin-top:var(--space-1);font-size:1rem}.flashcard-container{align-items:center;gap:var(--space-5);flex-direction:column;max-width:500px;margin:0 auto;display:flex}.flashcard{perspective:1000px;cursor:pointer;width:100%;height:320px;position:relative}.flashcard div{backface-visibility:hidden;width:100%;height:100%;font-size:2.5rem;font-weight:700;font-family:var(--font-heading);border-radius:var(--radius-l);border:4px solid var(--accent-primary);text-align:center;padding:var(--space-4);flex-direction:column;justify-content:center;align-items:center;transition:transform .6s cubic-bezier(.4,0,.2,1);display:flex;position:absolute}.flashcard .front{background:var(--bg-1);color:var(--accent-primary);box-shadow:0 10px 0 var(--accent-primary)}.flashcard .back{background:var(--accent-secondary);color:var(--fg-1);border-color:var(--fg-1);box-shadow:0 10px 0 var(--fg-1);transform:rotateY(180deg)}.flashcard.flipped .front{transform:rotateY(180deg)}.flashcard.flipped .back{transform:rotateY(360deg)}.review-buttons{gap:var(--space-2);grid-template-columns:repeat(4,1fr);width:100%;display:grid}.btn-again{color:#fff;background:#d32f2f}.btn-hard{color:#fff;background:#f57c00}.btn-good{color:#fff;background:#388e3c}.btn-easy{color:#fff;background:#1976d2}.progress-bar{background:var(--border-subtle);border-radius:6px;width:100%;height:12px;overflow:hidden}.progress{background:var(--accent-secondary);height:100%;transition:width .3s}.hint{color:var(--fg-2);font-size:.9rem;font-style:italic}.alphabet-grid{gap:var(--space-3);margin-top:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.letter-card{background:var(--bg-1);padding:var(--space-4);border-radius:var(--radius-m);border:1px solid var(--border-subtle);gap:var(--space-4);align-items:flex-start;transition:transform .2s;display:flex}.letter-card:hover{border-color:var(--accent-secondary);transform:translateY(-2px)}.letter-card .char{font-family:var(--font-heading);color:var(--accent-primary);border-radius:var(--radius-s);border-bottom:4px solid var(--accent-secondary);background:#fff;flex-shrink:0;justify-content:center;align-items:center;width:60px;height:60px;font-size:2rem;font-weight:800;display:flex}.letter-card .details{flex:1}.letter-card .phonetic{color:var(--fg-1);font-weight:700}.letter-card .english-hint{color:var(--fg-2);margin-top:2px;font-size:.85rem}.letter-card .example-box{margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-s);background:#fff;font-size:.85rem}.letter-card .example-sq{color:var(--accent-primary);font-weight:700}.phrasebook-container{animation:.4s ease-out slideIn}.tabs{gap:var(--space-2);padding:var(--space-1);border-radius:var(--radius-m);margin-bottom:var(--space-5);background:#fff;display:flex;box-shadow:0 4px #0000000d}.tab{padding:var(--space-2);font-family:var(--font-body);cursor:pointer;border-radius:var(--radius-s);background:0 0;border:none;flex:1;font-size:1rem;font-weight:700;transition:all .2s}.tab.active{background:var(--accent-primary);color:#fff}.category-scroll{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.cat-chip{white-space:nowrap;padding:var(--space-2) var(--space-4);background:var(--bg-2);border:2px solid var(--border-subtle);border-radius:var(--radius-l);cursor:pointer;font-size:.85rem;font-weight:700;font-family:var(--font-body)}.cat-chip.active{border-color:var(--accent-secondary);background:var(--color-gold)}.phrase-card{background:var(--white);padding:var(--space-4);border-radius:var(--radius-m);border:1px solid var(--border-subtle);margin-bottom:var(--space-3);cursor:pointer;justify-content:space-between;align-items:center;transition:transform .1s;display:flex;box-shadow:0 4px #00000005}.phrase-card:active{transform:translateY(2px)}.sq-text{font-family:var(--font-heading);color:var(--accent-primary);font-size:1.25rem;font-weight:700}.en-text{color:var(--fg-2);margin-top:2px;font-size:1rem}.audio-icon{background:var(--bg-1);border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.25rem;display:flex}.bubble{max-width:85%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-m);margin-bottom:var(--space-2);position:relative}.bubble.left{border:1px solid var(--border-subtle);background:#fff;border-bottom-left-radius:0;align-self:flex-start}.bubble.right{background:var(--accent-secondary);border:1px solid var(--accent-tertiary);text-align:right;border-bottom-right-radius:0;align-self:flex-end}.no-transition div{transition:none!important}.landing-container{padding-bottom:var(--space-6);animation:.5s ease-out slideIn}.hero{text-align:center;padding:var(--space-6) 0;background:linear-gradient(135deg, var(--bg-1) 0%, var(--white) 100%);border-radius:var(--radius-l);border:2px solid var(--border-subtle);margin-bottom:var(--space-6)}.hero h1{font:var(--h1);color:var(--accent-primary);margin-bottom:var(--space-2)}.hero p{font:var(--body-large);color:var(--fg-2);max-width:700px;margin:0 auto var(--space-5)}.hero-btns{justify-content:center;gap:var(--space-3);display:flex}.feature-grid{gap:var(--space-4);margin-top:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}.feature-card{padding:var(--space-5);background:var(--white);border-radius:var(--radius-m);border:1px solid var(--border-subtle);text-align:center;transition:transform .2s;box-shadow:0 4px #00000005}.feature-card:hover{border-color:var(--accent-secondary);transform:translateY(-5px)}.feature-card h3{color:var(--accent-primary);margin-bottom:var(--space-2);font:var(--h3)}.feature-card p{color:var(--fg-2);font-size:.95rem}.story-section{border-radius:var(--radius-l);border:1px solid var(--border-subtle);padding:var(--space-5);margin-top:var(--space-6);background:#fff}.story-content{gap:var(--space-5);grid-template-columns:1fr 1.2fr;align-items:center;display:grid}@media (width<=768px){.story-content{text-align:center;grid-template-columns:1fr}}.story-text h2{font:var(--h2);color:var(--accent-primary);margin-bottom:var(--space-3)}.story-visual{background:var(--bg-1);aspect-ratio:4/3;border-radius:var(--radius-m);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.donation-section{text-align:center;margin-top:var(--space-6)}.donation-card{background:var(--accent-secondary);border:2px dashed var(--accent-tertiary);max-width:600px;padding:var(--space-5);border-radius:var(--radius-m);align-items:center;gap:var(--space-2);flex-direction:column;margin:0 auto;display:flex}.floating-coffee{bottom:var(--space-4);right:var(--space-4);background:var(--accent-secondary);cursor:pointer;z-index:1000;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:1.5rem;text-decoration:none;transition:transform .3s cubic-bezier(.175,.885,.32,1.275),box-shadow .2s;display:flex;position:fixed;box-shadow:0 4px 15px #0000001a}.floating-coffee:hover{transform:scale(1.1)rotate(5deg);box-shadow:0 6px 20px #00000026}.floating-coffee:after{content:"Buy me a macchiato";background:var(--fg-1);color:#fff;border-radius:var(--radius-s);white-space:nowrap;opacity:0;pointer-events:none;padding:4px 12px;font-size:.75rem;font-weight:600;transition:opacity .2s;position:absolute;right:60px}.floating-coffee:hover:after{opacity:1}@media (width<=600px){.floating-coffee:after{display:none}}.guest-banner{background:var(--accent-primary);color:#fff;padding:var(--space-2) var(--space-5);text-align:center;z-index:100;justify-content:center;align-items:center;gap:var(--space-3);font-size:.9rem;font-weight:700;display:flex;position:sticky;top:0}.guest-banner button{color:var(--accent-primary);border-radius:var(--radius-s);cursor:pointer;background:#fff;border:none;padding:2px 10px;font-weight:800}.password-meter{background:var(--bg-2);border-radius:3px;height:6px;margin:8px 0;display:flex;overflow:hidden}.password-meter-fill{height:100%;transition:width .3s,background-color .3s}.strength-text{text-align:right;margin-top:-4px;font-size:.75rem;font-weight:700}.dialects-container{max-width:1200px;padding:var(--space-5);margin:0 auto}.dialects-header{margin-bottom:var(--space-5)}.dialects-header h1{color:var(--accent-primary);margin:0 0 var(--space-2) 0;font-size:40px}.dialects-header p{color:var(--fg-2);max-width:800px;margin:0;font-size:18px}.dialects-tabs{gap:var(--space-2);margin-bottom:var(--space-5);border-bottom:2px solid var(--border-subtle);padding-bottom:2px;display:flex}.dialects-tab-btn{padding:var(--space-3) var(--space-4);font-family:var(--font-heading);color:var(--fg-2);cursor:pointer;background:0 0;border:none;border-bottom:4px solid #0000;font-size:16px;font-weight:700;transition:all .2s}.dialects-tab-btn:hover{color:var(--fg-1)}.dialects-tab-btn.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary)}.dialects-tab-content{animation:.3s forwards dialectsSlideUp;display:none}.dialects-tab-content.active{display:block}@keyframes dialectsSlideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.dialects-dashboard-grid{gap:var(--space-5);grid-template-columns:2fr 1fr;display:grid}@media (width<=768px){.dialects-dashboard-grid{grid-template-columns:1fr}}.dialects-card{background:var(--bg-2);border-radius:var(--radius-m);border:2px solid var(--border-subtle);border-bottom:4px solid var(--border-subtle);padding:var(--space-4);margin-bottom:var(--space-4)}.dialects-card h2{margin:0 0 var(--space-4) 0;border-left:4px solid var(--accent-secondary);padding-left:var(--space-3);font-size:32px}.dialects-card h3{margin:0 0 var(--space-2) 0;font-size:24px}.dialects-map-container{background-color:var(--bg-2);border-radius:var(--radius-m);border:2px solid var(--border-subtle);width:100%;padding:var(--space-4);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.dialects-map-image{object-fit:contain;width:100%;height:auto;max-height:500px}.dialects-map-attribution{margin-top:var(--space-2);color:var(--fg-2);font-size:.75rem}.dialects-map-attribution a{color:var(--accent-primary)}.dialects-table{border-collapse:separate;border-spacing:0;width:100%;margin-top:var(--space-3)}.dialects-table th,.dialects-table td{padding:var(--space-3);text-align:left;border-bottom:2px solid var(--border-subtle)}.dialects-table th{font-family:var(--font-heading);color:var(--fg-2);text-transform:uppercase;letter-spacing:.05em;font-size:14px;font-weight:700}.dialects-audio-btn{background:var(--bg-1);border:2px solid var(--border-subtle);border-bottom:3px solid var(--border-subtle);cursor:pointer;width:36px;height:36px;margin-left:var(--space-2);border-radius:50%;justify-content:center;align-items:center;transition:all .1s;display:inline-flex}.dialects-audio-btn:active{border-bottom-width:2px;transform:translateY(1px)}.dialects-feature-tag{padding:var(--space-1) var(--space-2);background:var(--bg-1);border:1px solid var(--border-subtle);border-radius:var(--radius-m);margin-right:var(--space-1);margin-bottom:var(--space-1);font-size:12px;display:inline-block}
