@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,wght@0,400;0,500;0,600;1,500&family=Hanken+Grotesk:wght@400;500;600&family=Inter:wght@300;400;500;600&family=Playfair+Display:wght@400;500&display=swap";@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600&family=Mr+Dafoe&family=Jost:wght@300;400;500&display=swap";:root{--bg:#0a1014;--bg2:#0e161b;--surface:#131d23;--surface2:#18242b;--surface3:#1f2d35;--accent:#79d2dc;--accent2:#a1e6ec;--accent-dim:#79d2dc1f;--accent-bdr:#79d2dc40;--on-accent:#0a1014;--text:#f5f5f0;--text2:#c4c4be;--text3:#8a8a84;--border:#2a2a2a;--border2:#333;--success:#4caf7d;--danger:#e05a5a;--warning:#d9a441;--warning-dim:#d9a4411f;--warning-bdr:#d9a44147;--radius:10px;--radius-lg:16px;--content-wide:920px;--radius-pill:20px;--radius-sm:8px;--font-display:"Fraunces", Georgia, serif;--font-body:"Hanken Grotesk", system-ui, sans-serif;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--chart-1:#79d2dc;--chart-2:#4caf7d;--chart-3:#7b8fe0;--cat-grammar:#7b8fe0;--cat-agreement:#4caf7d;--cat-prepositions:#79d2dc;--cat-pronouns:#a1e6ec;--cat-vocab:#a0afee;--cat-structure:#e05a5a;--cat-other:#a0a09a;--persona-1:#7b6ee0;--persona-2:#4caf9d;--persona-3:#e07b8f;--persona-4:#5b9bd5;--persona-5:#5bb8d5;--persona-6:#e07b6d;--persona-7:#6db8a0;--persona-8:#7be0b8;--crest-bg:#1c2a30;--crest-locked:#2a363c;--dur-fast:.14s;--dur:.24s;--ease-out:cubic-bezier(.2,.8,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--surface-glass:#131d239e;--overlay-tint:#0a101461;--glass-edge:#ffffff1a;--nav-glass:#0e161bcc;--nav-edge:#ffffff1a;--menu-glass:#0e161bd9;--menu-grad:linear-gradient(90deg, #0e161b 0%, #0e161bcc 100%);--hero-grad-end:#1a2730;--blur-card:30px;--card-grad:linear-gradient(160deg, #ffffff1f 0%, #ffffff0a 100%);--card-edge:#ffffff26;--card-shadow:0 8px 32px #00000052, inset 0 1px 0 #ffffff1a;--accent-deep:#2e5c66;--auth-glass:#ffffff0e;--auth-edge:#ffffff1f;--auth-input-bg:#ffffff0d;--auth-input-edge:#ffffff24;--glass-top:linear-gradient(90deg, transparent, #ffffff38, transparent);--bg-glow:radial-gradient(ellipse 55% 45% at 6% 4%, #79d2dc26, transparent 62%), radial-gradient(ellipse 55% 45% at 94% 6%, #79d2dc26, transparent 62%), radial-gradient(ellipse 55% 45% at 6% 96%, #79d2dc1f, transparent 62%), radial-gradient(ellipse 55% 45% at 94% 96%, #79d2dc1f, transparent 62%), radial-gradient(ellipse 70% 55% at 50% 50%, #79d2dc0d, transparent 72%);--mesh-1:#79d2dc24;--mesh-2:#79d2dc1c;--mesh-3:#79d2dc17}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Inter,sans-serif}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit}.font-display{font-family:var(--font-display)}.font-body{font-family:var(--font-body)}.btn-primary{background:linear-gradient(180deg, var(--accent2) 0%, var(--accent) 50%, var(--accent-deep) 100%);color:var(--on-accent);letter-spacing:.02em;box-shadow:0 10px 28px color-mix(in srgb, var(--accent-deep) 42%, transparent), 0 2px 6px color-mix(in srgb, var(--accent-deep) 30%, transparent), inset 0 1px 0 #ffffff73, inset 0 -3px 6px #00000038;cursor:pointer;border:1px solid #ffffff38;border-radius:16px;padding:.85rem 1.5rem;font-size:.9rem;font-weight:600;transition:transform .14s cubic-bezier(.2,.8,.3,1),box-shadow .14s;position:relative;overflow:hidden}.btn-primary:before{content:"";pointer-events:none;background:linear-gradient(105deg,#0000,#ffffff2e,#0000);width:40%;height:100%;animation:8s ease-in-out infinite btnSheen;position:absolute;top:0;left:-60%;transform:skew(-18deg)}@keyframes btnSheen{0%,to{left:-60%}45%,55%{left:130%}}.btn-primary:active{box-shadow:0 3px 10px color-mix(in srgb, var(--accent-deep) 35%, transparent), inset 0 2px 8px #0000004d, inset 0 1px 0 #ffffff40;transform:translateY(2px)scale(.985)}.btn-primary:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}@media (prefers-reduced-motion:reduce){.btn-primary:before{animation:none}}.upgrade-seal{animation:2.6s ease-in-out infinite upgradeGlow}.upgrade-sparkle{animation:2.2s ease-in-out infinite upgradeTwinkle}@keyframes upgradeGlow{0%,to{box-shadow:0 0 18px 2px var(--accent-dim)}50%{box-shadow:0 0 34px 8px var(--accent-dim)}}@keyframes upgradeTwinkle{0%,to{opacity:.25;transform:scale(.85)}50%{opacity:.9;transform:scale(1.12)}}@media (prefers-reduced-motion:reduce){.upgrade-seal,.upgrade-sparkle{animation:none!important}*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.btn-secondary{background:linear-gradient(180deg, var(--surface2) 0%, var(--surface) 100%);border:1px solid var(--border2);color:var(--text2);cursor:pointer;border-radius:16px;padding:.85rem 1.5rem;font-family:inherit;font-size:.9rem;font-weight:500;transition:transform .14s cubic-bezier(.2,.8,.3,1),box-shadow .14s;position:relative;box-shadow:0 4px 12px #0000000f,inset 0 1px #ffffff80,inset 0 -2px 4px #0000000f}.btn-secondary:hover{background:linear-gradient(180deg, var(--surface3) 0%, var(--surface2) 100%);color:var(--text)}.btn-secondary:active{transform:translateY(1px)scale(.99);box-shadow:0 2px 6px #0000000d,inset 0 2px 6px #0000001a}.btn-secondary:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.card-interactive{transition:transform .18s cubic-bezier(.25,.46,.45,.94),box-shadow .18s cubic-bezier(.25,.46,.45,.94)}.card-interactive:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000026}.card-interactive:active{box-shadow:none;transform:translateY(0)scale(.99)}.card{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius-lg);padding:1.25rem}.input{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:.75rem 1rem;font-size:.9rem;transition:border-color .2s}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text3)}.input:-webkit-autofill{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--surface2) inset;caret-color:var(--text);transition:background-color 9999s ease-in-out}.input:-webkit-autofill:hover{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--surface2) inset;caret-color:var(--text);transition:background-color 9999s ease-in-out}.input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--surface2) inset;caret-color:var(--text);transition:background-color 9999s ease-in-out}.professor-msg p{margin:0 0 12px}.professor-msg p:last-child{margin-bottom:0}.professor-msg ul,.professor-msg ol{margin:8px 0 12px 20px;padding:0}.professor-msg li{margin-bottom:6px;line-height:1.6}.professor-msg hr{border:none;border-top:1px solid #ffffff14;margin:14px 0}.professor-msg strong{color:var(--accent2);font-weight:600}.professor-msg h2{color:var(--accent2);margin:0 0 10px;font-size:1rem;font-weight:600}.professor-msg h3{margin:0 0 8px;font-size:.95rem;font-weight:600}.professor-msg code{background:var(--accent-dim);border:1px solid var(--accent-bdr);color:var(--accent2);border-radius:4px;padding:1px 6px;font-size:.85rem}[data-theme=light]{--bg:#f5f5f0;--bg2:#ebebe6;--surface:#fff;--surface2:#f0f0eb;--surface3:#e8e8e3;--accent:#1e5573;--accent2:#2e6b8a;--accent-dim:#1e55731f;--accent-bdr:#1e557340;--on-accent:#fff;--text:#1a1a1a;--text2:#5a5a55;--text3:#55554f;--border:#c4c4be;--border2:#b8b8b2;--warning:#b07d18;--warning-dim:#b07d181f;--warning-bdr:#b07d184d;--chart-1:#2e5c66;--cat-prepositions:#2e5c66;--cat-pronouns:#4a8c96;--cat-vocab:#6b7cc8;--persona-5:#3d8fb0;--persona-8:#3fa882;--crest-bg:#e8e8e3;--crest-locked:#c7c7c2;--surface-glass:#ffffff8c;--overlay-tint:#141e212e;--glass-edge:#ffffffb3;--nav-glass:#f5f7f7cc;--nav-edge:#fff9;--menu-glass:#ffffffd9;--menu-grad:linear-gradient(90deg, #fff 0%, #fffc 100%);--hero-grad-end:#f4f9fb;--blur-card:20px;--card-grad:linear-gradient(160deg, #ffffffe6 0%, #ffffff6b 100%);--card-edge:#ffffffbf;--card-shadow:0 8px 32px #1e55731f, inset 0 1px 0 #fffffff2;--accent-deep:#143d54;--auth-glass:#ffffff94;--auth-edge:#2e5c6638;--auth-input-bg:#ffffffb3;--auth-input-edge:#2e5c664d;--glass-top:linear-gradient(90deg, transparent, #2e5c6659, transparent);--bg-glow:radial-gradient(ellipse 55% 45% at 6% 4%, #1e55733d, transparent 62%), radial-gradient(ellipse 55% 45% at 94% 6%, #1e55733d, transparent 62%), radial-gradient(ellipse 55% 45% at 6% 96%, #2e6b8a33, transparent 62%), radial-gradient(ellipse 55% 45% at 94% 96%, #2e6b8a33, transparent 62%), radial-gradient(ellipse 70% 55% at 50% 50%, #1e557312, transparent 72%);--mesh-1:#1e557361;--mesh-2:#2e6b8a4d;--mesh-3:#143d543d}.app-bg{background-color:var(--bg);isolation:isolate;min-height:100vh;position:relative}[data-theme=light] .app-bg{background-color:#0000}.app-bg:before{content:"";z-index:-2;pointer-events:none;background:radial-gradient(closest-side at 20% 15%, var(--mesh-1), transparent 70%), radial-gradient(closest-side at 82% 20%, var(--mesh-2), transparent 70%), radial-gradient(closest-side at 55% 85%, var(--mesh-3), transparent 70%);filter:url(#organicWarp);background-repeat:no-repeat;animation:26s ease-in-out infinite appMeshDrift;position:fixed;inset:-25%}.app-bg:after{content:"";z-index:-1;pointer-events:none;opacity:.38;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/></filter><rect width='160' height='160' filter='url(%23n)' opacity='0.35'/></svg>");position:fixed;inset:0}@keyframes appMeshDrift{0%,to{transform:translate(0)scale(1)}33%{transform:translate(2.5%,2%)scale(1.05)}66%{transform:translate(-2%,2.5%)scale(1.04)}}@media (prefers-reduced-motion:reduce){.app-bg:before{animation:none}}[data-theme=light] .app-bg:before{filter:none;opacity:.5;background-image:url(/bg-light-2.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;animation:none}[data-theme=dark] .app-bg:before{filter:none;opacity:.5;background-image:url(/bg-dark.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;animation:none}.glass-modal{box-shadow:inset 0 1px 0 var(--glass-edge), 0 24px 60px #00000073;border:1px solid var(--glass-edge)!important}[data-fontsize=small]{font-size:14px}[data-fontsize=medium]{font-size:16px}[data-fontsize=large]{font-size:18px}[data-fontsize=xlarge]{font-size:21px}.typing-dots{gap:4px;display:inline-flex}.typing-dots span{background:var(--text3);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite typingDot}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes typingDot{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@keyframes transitionFadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes shimmer{0%{opacity:.4}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulseGreen{0%,to{transform:scale(1);box-shadow:0 0 #4caf7d80}50%{transform:scale(1.08);box-shadow:0 0 0 12px #4caf7d00}}@keyframes enterFadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.enter-fade-up{animation:enterFadeUp var(--dur) var(--ease-out)}.stagger>*{animation:enterFadeUp var(--dur) var(--ease-out) both}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:50ms}.stagger>:nth-child(3){animation-delay:.1s}.stagger>:nth-child(4){animation-delay:.15s}.stagger>:nth-child(5){animation-delay:.2s}.stagger>:nth-child(6){animation-delay:.25s}.stagger>:nth-child(7){animation-delay:.3s}.stagger>:nth-child(8){animation-delay:.35s}.stagger>:nth-child(n+9){animation-delay:.4s}@keyframes heroPop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.hero-pop{animation:heroPop var(--dur) var(--ease-out) both}@keyframes streakPulse{0%{transform:scale(1)}35%{transform:scale(1.07)}to{transform:scale(1)}}.streak-pulse{animation:streakPulse .6s var(--ease-out) 1 both}@keyframes streakGlow{0%{text-shadow:0 0 #0000}40%{text-shadow:0 0 14px var(--accent)}to{text-shadow:0 0 #0000}}.streak-celebrate{animation:streakGlow 1.1s var(--ease-out) 1 both}@keyframes evoDraw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.evo-line{stroke-dasharray:1;stroke-dashoffset:1px;animation:evoDraw .7s var(--ease-out) forwards}@keyframes evoArea{0%{opacity:0}to{opacity:1}}.evo-area{opacity:0;animation:evoArea .7s var(--ease-out) forwards;animation-delay:.12s}@keyframes modalPop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.modal-pop{animation:modalPop var(--dur) var(--ease-out) both}.auth-page{min-height:100vh;font-family:var(--font-body);position:relative}.auth-center{z-index:1;justify-content:center;align-items:center;min-height:100vh;padding:2.5rem 1.25rem;display:flex;position:relative}.auth-card{background:var(--auth-glass);-webkit-backdrop-filter:blur(26px)saturate(165%);border:1px solid var(--auth-edge);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:2rem 1.75rem;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000047}.auth-card:before{content:"";background:var(--glass-top);pointer-events:none;height:1px;position:absolute;top:0;left:0;right:0}[data-theme=light] .auth-card{box-shadow:0 20px 50px #2e5c6629}.auth-input{background:var(--auth-input-bg);border-color:var(--auth-input-edge)}.auth-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.btn-primary.auth-submit{background:linear-gradient(135deg, var(--accent), var(--accent-deep))}.fwcert{--paper:#fcfbf7;--ink:#2b2b28;--muted:#8a8e8a;--gold:#c9a24b;background:var(--paper);width:880px;height:622px;color:var(--ink);padding:18px;font-family:Jost,sans-serif;position:relative}.fwcert-frame{border:1px solid var(--accent);outline:6px solid var(--paper);outline-offset:-13px;flex-direction:column;height:100%;padding:44px;display:flex;position:relative;box-shadow:inset 0 0 0 1px #2b2b280f}.fwcert-frame:before,.fwcert-frame:after{content:"";border:1.5px solid var(--accent);opacity:.6;width:18px;height:18px;position:absolute}.fwcert-frame:before{border-bottom:0;border-right:0;top:10px;left:10px}.fwcert-frame:after{border-top:0;border-left:0;bottom:10px;right:10px}.fwcert-top{justify-content:space-between;align-items:flex-start;display:flex}.fwcert-brand{align-items:center;gap:12px;display:flex}.fwcert-crest{background:var(--deep);width:42px;height:42px;color:var(--paper);letter-spacing:.5px;border-radius:11px;place-items:center;font-size:17px;font-weight:500;display:grid}.fwcert-wordmark{flex-direction:column;line-height:1.25;display:flex}.fwcert-wordmark b{color:var(--deep);font-size:15px;font-weight:500}.fwcert-wordmark small{color:var(--muted);letter-spacing:.3px;font-size:10.5px}.fwcert-tier{text-align:right;flex-direction:column;align-items:flex-end;gap:5px;display:flex}.fwcert-lvl{letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);font-size:10.5px}.fwcert-dots{gap:5px;display:flex}.fwcert-dots i{border:1px solid var(--accent);border-radius:50%;width:7px;height:7px}.fwcert-dots i.on{background:var(--accent)}.fwcert-body{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.fwcert-eyebrow{letter-spacing:4px;text-transform:uppercase;color:var(--accent);font-size:11px;font-weight:500}.fwcert-to{color:var(--muted);letter-spacing:.4px;margin-top:18px;font-size:12.5px}.fwcert-name{color:var(--deep);margin-top:4px;font-family:Cormorant Garamond;font-size:52px;font-weight:600;line-height:1.05}.fwcert-rule{align-items:center;gap:12px;width:360px;margin:14px 0 16px;display:flex}.fwcert-rule span{background:var(--accent);opacity:.55;flex:1;height:1px}.fwcert-rule i{background:var(--accent);width:7px;height:7px;transform:rotate(45deg)}.fwcert-desc{color:#4a4e4a;font-size:13px}.fwcert-level{color:var(--deep);letter-spacing:.3px;margin-top:6px;font-family:Cormorant Garamond;font-size:27px;font-weight:600}.fwcert-cefr{color:var(--muted);letter-spacing:.6px;margin-top:5px;font-size:11px}.fwcert-foot{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.fwcert-sign,.fwcert-date{flex-direction:column;gap:6px;min-width:150px;display:flex}.fwcert-date{text-align:right;align-items:flex-end}.fwcert-line{background:#c9ccc6;width:150px;height:1px}.fwcert-cap{color:var(--muted);letter-spacing:.3px;font-size:10.5px}.fwcert-date b{color:var(--deep);font-family:Cormorant Garamond;font-size:16px;font-weight:500}.fwcert-sign:before{content:"Igor Oliveira";color:var(--deep);margin-bottom:-1px;font-family:Mr Dafoe,cursive;font-size:30px;line-height:.8}.fwcert-seal{border:1.5px solid var(--accent);border-radius:50%;flex-shrink:0;align-self:flex-end;place-items:center;width:62px;height:62px;display:grid;position:relative}.fwcert-seal:before{content:"";border:1px solid var(--accent);opacity:.45;border-radius:50%;position:absolute;inset:5px}.fwcert-seal b{letter-spacing:1px;text-transform:uppercase;color:var(--deep);text-align:center;font-size:9px;line-height:1.2}.fwcert--gold .fwcert-frame{background:linear-gradient(#fffdf6,#fcfbf7)}.fwcert--gold .fwcert-eyebrow,.fwcert--gold .fwcert-seal b{color:var(--gold)}.fwcert--gold .fwcert-rule i,.fwcert--gold .fwcert-dots i.on{background:var(--gold)}.fwcert--gold .fwcert-rule span,.fwcert--gold .fwcert-dots i,.fwcert--gold .fwcert-seal,.fwcert--gold .fwcert-seal:before,.fwcert--gold .fwcert-frame{border-color:var(--gold)}.fwcert--gold .fwcert-crest{background:linear-gradient(135deg, var(--deep), #143f63)}
