@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&family=DM+Sans:wght@400;500;600&display=swap");:root{--ex-bg-page:#ffffff;--ex-bg-card:#FAFCFD;--ex-bg-card-hover:#F4F7FA;--ex-bg-section:#ffffff;--ex-text-primary:#0a0a0a;--ex-text-secondary:#374151;--ex-text-muted:#6b7280;--ex-text-faint:#9ca3af;--ex-text-inverse:#ffffff;--ex-brand:#155BD5;--ex-brand-dark:#1e3a8a;--ex-brand-tint:rgba(21,91,213,0.07);--ex-brand-tint-ring:rgba(21,91,213,0.18);--ex-brand-grad:linear-gradient(135deg,#155BD5,#4b6ccb);--ex-border:#e5e7eb;--ex-border-brand:rgba(21,91,213,0.22);--ex-shadow-card:0 1px 4px rgba(0,0,0,0.06),0 4px 16px rgba(0,0,0,0.04);--ex-shadow-hover:0 8px 24px rgba(0,0,0,0.09);--ex-shadow-btn:0 2px 8px rgba(0,0,0,0.10);--ex-green:#10b981;--ex-green-tint:rgba(16,185,129,0.10);--ex-amber:#f59e0b;--ex-amber-tint:rgba(245,158,11,0.09);--ex-red:#dc2626;--ex-red-tint:rgba(220,38,38,0.08);--ex-sky:#0ea5e9;--ex-sky-tint:rgba(14,165,233,0.09);--ex-indigo:#6366f1;--ex-indigo-tint:rgba(99,102,241,0.09);--ex-violet:#8b5cf6;--ex-violet-tint:rgba(139,92,246,0.09);--ex-ielts:#0ea5e9;--ex-ielts-dark:#0369a1;--ex-ielts-tint:rgba(14,165,233,0.07);--ex-ielts-grad:linear-gradient(135deg,#0ea5e9,#0369a1);--ex-aws:#0ea5e9;--ex-aws-dark:#0369a1;--ex-aws-tint:rgba(14,165,233,0.07);--ex-aws-grad:linear-gradient(135deg,#0ea5e9,#0369a1);--ex-btn-bg:#0a0a0a;--ex-btn-text:#ffffff;--ex-btn-border:#d1d5db;--ex-btn-radius:0.75rem;--ex-q-idle-bg:#FAFCFD;--ex-q-idle-border:#e5e7eb;--ex-q-hover-bg:#F0F4FF;--ex-q-sel-bg:rgba(21,91,213,0.08);--ex-q-sel-border:#155BD5;--ex-q-correct-bg:rgba(16,185,129,0.10);--ex-q-correct-border:#10b981;--ex-q-wrong-bg:rgba(220,38,38,0.08);--ex-q-wrong-border:#dc2626;--ex-timer-track:#e5e7eb;--ex-timer-fill:#155BD5;--ex-passage-bg:#f8fafc;--ex-passage-border:#e5e7eb;--ex-font-display:"Plus Jakarta Sans",sans-serif;--ex-font-body:"DM Sans",sans-serif}.ex-page{font-family:var(--ex-font-body);background-color:var(--ex-bg-page);color:var(--ex-text-primary);min-height:100vh;overflow-x:hidden}.ex-btn{display:inline-flex;align-items:center;gap:.5rem;border-radius:var(--ex-btn-radius);padding:.5625rem 1.25rem;font-size:.875rem;font-weight:700;font-family:var(--ex-font-display);cursor:pointer;border:1.5px solid var(--ex-btn-border);transition:background-color .15s,box-shadow .15s,transform .15s,opacity .15s;white-space:nowrap;text-decoration:none}.ex-btn,.ex-btn:hover:not(:disabled){background-color:var(--ex-btn-bg);color:var(--ex-btn-text);box-shadow:var(--ex-shadow-btn)}.ex-btn:active{transform:scale(.97)}.ex-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.ex-btn--no-hover:hover:not(:disabled){background-color:var(--ex-btn-bg);box-shadow:var(--ex-shadow-btn);color:var(--ex-btn-text);transform:none}.ex-btn--primary{border-color:var(--ex-brand)}.ex-btn--primary,.ex-btn--primary:hover:not(:disabled){background-color:var(--ex-brand);color:#ffffff;box-shadow:0 4px 14px rgba(21,91,213,.25)}.ex-btn--primary:hover:not(:disabled){transform:none}.ex-btn--submit{border-color:#17D5FF}.ex-btn--submit,.ex-btn--submit:hover:not(:disabled){background-color:#17D5FF;color:#000000;box-shadow:0 4px 14px rgba(23,213,255,.35)}.ex-btn--submit:hover:not(:disabled){transform:none}.ex-btn--back{background-color:var(--ex-btn-bg);border-color:var(--ex-btn-border);color:var(--ex-text-primary)}.ex-btn--back:hover:not(:disabled){background-color:var(--ex-bg-card-hover);color:#0a0a0a}.ex-btn--success{background-color:var(--ex-green);border-color:var(--ex-green);color:#ffffff;box-shadow:0 4px 14px rgba(16,185,129,.25)}.ex-btn--success:hover:not(:disabled){opacity:.9;transform:translateY(-1px);color:#0a0a0a}.ex-btn--start,.ex-btn--start:hover:not(:disabled){background-color:#17D5FF;border-color:#17D5FF;color:#0a0a0a;box-shadow:0 4px 14px rgba(23,213,255,.3)}.ex-btn--start:hover:not(:disabled){transform:none}.ex-btn--ghost{background-color:var(--ex-brand-tint);border-color:var(--ex-border-brand);color:var(--ex-brand);box-shadow:none}.ex-btn--ghost:hover:not(:disabled){background-color:var(--ex-brand);color:#0a0a0a;box-shadow:0 4px 14px rgba(21,91,213,.22)}.ex-btn--lg{padding:.6875rem 1.625rem;font-size:.9375rem}.ex-card{background-color:var(--ex-bg-section);border:1px solid var(--ex-border);border-radius:1rem;box-shadow:var(--ex-shadow-card);overflow:hidden}.ex-card-accent{height:4px;width:100%;flex-shrink:0}.ex-card-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem}.ex-card-body{padding:1.25rem}.ex-hero{position:relative;overflow:hidden;border-radius:1.25rem;background-color:var(--ex-bg-card);border:1px solid var(--ex-border);box-shadow:var(--ex-shadow-card)}.ex-hero-strip{height:4px;width:100%}.ex-stat{display:flex;align-items:center;gap:.75rem;background-color:var(--ex-bg-card);border:1px solid var(--ex-border);border-radius:.875rem;padding:.875rem 1rem;transition:box-shadow .2s,transform .2s}.ex-stat:hover{box-shadow:var(--ex-shadow-hover);transform:translateY(-2px)}.ex-stat-icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:.625rem;flex-shrink:0}.ex-section-card{display:flex;flex-direction:column;gap:.875rem;border-radius:1rem;border:1.5px solid var(--ex-border);padding:1.25rem;background-color:var(--ex-bg-card);box-shadow:var(--ex-shadow-card);cursor:pointer;text-align:left;transition:border-color .2s,box-shadow .2s,transform .2s;width:100%}.ex-section-card:hover{border-color:var(--ex-brand);box-shadow:var(--ex-shadow-hover);transform:translateY(-2px)}.ex-section-card--done{border-color:var(--ex-green);background-color:var(--ex-green-tint)}.ex-step,.ex-step-circle,.ex-stepper{display:flex;align-items:center}.ex-step-circle{width:2rem;height:2rem;border-radius:9999px;justify-content:center;font-size:.6875rem;font-weight:700;flex-shrink:0;border:2px solid var(--ex-border);background-color:var(--ex-bg-card);color:var(--ex-text-muted);font-family:var(--ex-font-display);transition:all .2s}.ex-step-circle--done{background-color:var(--ex-green);border-color:var(--ex-green);color:#ffffff}.ex-step-circle--active{background-color:var(--ex-brand);border-color:var(--ex-brand);color:#ffffff}.ex-step-line{height:2px;width:2.5rem;background-color:var(--ex-border);flex-shrink:0;transition:background-color .3s}.ex-step-line--done{background-color:var(--ex-green)}.ex-dots{display:flex;flex-wrap:wrap;gap:.375rem}.ex-dot{width:2.125rem;height:2.125rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:700;cursor:pointer;border:1.5px solid var(--ex-border);background-color:var(--ex-bg-card);color:var(--ex-text-muted);font-family:var(--ex-font-display);transition:all .15s}.ex-dot:hover{border-color:var(--ex-brand);color:var(--ex-brand)}.ex-dot--visited{background-color:var(--ex-brand-tint);border-color:var(--ex-border-brand);color:var(--ex-brand)}.ex-dot--answered{background-color:var(--ex-green-tint);border-color:var(--ex-green);color:#059669}.ex-dot--current{background-color:var(--ex-brand);border-color:var(--ex-brand);color:#ffffff}.ex-option{display:flex;align-items:flex-start;gap:.875rem;border-radius:var(--ex-btn-radius);border:1.5px solid var(--ex-q-idle-border);background-color:var(--ex-q-idle-bg);padding:.875rem 1rem;cursor:pointer;transition:border-color .15s,background-color .15s;font-size:.875rem;line-height:1.55;color:var(--ex-text-primary);text-align:left;width:100%}.ex-option:hover:not(:disabled){border-color:var(--ex-brand);background-color:var(--ex-q-hover-bg)}.ex-option--selected{border-color:var(--ex-q-sel-border);background-color:var(--ex-q-sel-bg)}.ex-option--correct{border-color:var(--ex-q-correct-border);background-color:var(--ex-q-correct-bg)}.ex-option--wrong{border-color:var(--ex-q-wrong-border);background-color:var(--ex-q-wrong-bg)}.ex-option:disabled{cursor:not-allowed;opacity:.8}.ex-option-letter{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:.375rem;font-size:.75rem;font-weight:800;flex-shrink:0;font-family:var(--ex-font-display);background-color:var(--ex-border);color:var(--ex-text-secondary);transition:background-color .15s,color .15s}.ex-option--selected .ex-option-letter{background-color:var(--ex-brand);color:#ffffff}.ex-option--correct .ex-option-letter{background-color:var(--ex-green);color:#ffffff}.ex-option--wrong .ex-option-letter{background-color:var(--ex-red);color:#ffffff}.ex-tfng{display:flex;gap:.5rem;flex-wrap:wrap}.ex-tfng-btn{flex:1;min-width:5rem;padding:.5rem .75rem;border-radius:var(--ex-btn-radius);border:1.5px solid var(--ex-q-idle-border);background-color:var(--ex-q-idle-bg);font-size:.8125rem;font-weight:700;font-family:var(--ex-font-display);color:var(--ex-text-secondary);cursor:pointer;text-align:center;transition:all .15s}.ex-tfng-btn:hover:not(:disabled){border-color:var(--ex-brand);color:var(--ex-brand)}.ex-tfng-btn--selected{border-color:var(--ex-brand);background-color:var(--ex-brand);color:#ffffff}.ex-tfng-btn:disabled{cursor:not-allowed;opacity:.7}.ex-blank{display:block;width:100%;border:none;border-bottom:2px solid var(--ex-brand);background:transparent;padding:.5rem .375rem;font-size:.9375rem;font-family:var(--ex-font-body);color:var(--ex-text-primary);outline:none;transition:border-color .15s}.ex-blank:focus{border-bottom-color:var(--ex-brand-dark)}.ex-blank--correct{border-bottom-color:var(--ex-green);color:#059669}.ex-blank--wrong{border-bottom-color:var(--ex-red);color:var(--ex-red)}.ex-blank-inline{display:inline-block;border:none;border-bottom:2px solid var(--ex-brand);background:transparent;padding:0 .25rem .1rem;font-size:inherit;font-family:var(--ex-font-body);font-weight:inherit;color:var(--ex-brand);outline:none;min-width:7rem;width:auto;vertical-align:baseline;transition:border-bottom-color .15s}.ex-blank-inline:focus{border-bottom-color:var(--ex-brand-dark)}.ex-blank-inline::-moz-placeholder{color:var(--ex-text-muted);font-weight:400}.ex-blank-inline::placeholder{color:var(--ex-text-muted);font-weight:400}.ex-essay{width:100%;min-height:22rem;border-radius:var(--ex-btn-radius);border:1.5px solid var(--ex-border);background-color:var(--ex-bg-card);padding:1rem 1.125rem;font-size:.9375rem;line-height:1.7;font-family:var(--ex-font-body);color:var(--ex-text-primary);resize:vertical;outline:none;transition:border-color .15s,box-shadow .15s}.ex-essay:focus{border-color:var(--ex-brand);box-shadow:0 0 0 3px var(--ex-brand-tint)}.ex-passage{background-color:var(--ex-passage-bg);border:1px solid var(--ex-passage-border);padding:1.25rem 1.5rem;font-size:.9375rem;line-height:1.85;color:var(--ex-text-primary);max-height:45vh;overflow-y:auto}.ex-disclaimer,.ex-passage{border-radius:var(--ex-btn-radius)}.ex-disclaimer{border:1px solid rgba(245,158,11,.3);background-color:rgba(245,158,11,.07);padding:1rem 1.25rem;font-size:.8125rem;line-height:1.65;color:var(--ex-text-secondary)}.ex-progress-track{height:4px;width:100%;border-radius:9999px;background-color:var(--ex-timer-track);overflow:hidden}.ex-progress-fill{height:100%;border-radius:9999px;background-color:var(--ex-brand);transition:width .6s ease}.ex-legend{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;font-size:.75rem;color:var(--ex-text-muted)}.ex-legend-dot{width:.5625rem;height:.5625rem;border-radius:9999px;flex-shrink:0}.ex-topbar{position:sticky;top:0;z-index:30;background-color:var(--ex-bg-page);border-bottom:1px solid var(--ex-border)}.ex-rec-badge{display:inline-flex;align-items:center;gap:.375rem;border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;background-color:rgba(220,38,38,.07);color:var(--ex-red);border:1px solid rgba(220,38,38,.22)}.ex-rec-dot{width:.5rem;height:.5rem;border-radius:9999px;background-color:var(--ex-red);flex-shrink:0;animation:ex-blink 1s ease-in-out infinite}@keyframes ex-blink{0%,to{opacity:1}50%{opacity:.2}}.ex-waveform{display:flex;align-items:center;gap:.1875rem;height:1.125rem}.ex-wave-bar{width:.1875rem;border-radius:9999px;background-color:var(--ex-red);animation:ex-wave .9s ease-in-out infinite alternate}.ex-wave-bar:first-child{height:35%;animation-delay:0s}.ex-wave-bar:nth-child(2){height:70%;animation-delay:.1s}.ex-wave-bar:nth-child(3){height:100%;animation-delay:.2s}.ex-wave-bar:nth-child(4){height:55%;animation-delay:.3s}.ex-wave-bar:nth-child(5){height:85%;animation-delay:.15s}.ex-wave-bar:nth-child(6){height:45%;animation-delay:.25s}.ex-wave-bar:nth-child(7){height:65%;animation-delay:.05s}@keyframes ex-wave{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}.ex-btn-record{display:inline-flex;align-items:center;gap:.5rem;border-radius:var(--ex-btn-radius);padding:.5625rem 1.125rem;font-size:.875rem;font-weight:700;font-family:var(--ex-font-display);background-color:var(--ex-brand);color:#ffffff;border:none;cursor:pointer;box-shadow:0 4px 14px rgba(21,91,213,.25);transition:opacity .2s,transform .15s}.ex-btn-record:hover{opacity:.9;transform:translateY(-1px)}.ex-btn-record--stop{background-color:var(--ex-red);animation:ex-pulse 1.8s ease-in-out infinite;box-shadow:0 4px 14px rgba(220,38,38,.3)}@keyframes ex-pulse{0%,to{box-shadow:0 0 0 0 rgba(220,38,38,.4)}50%{box-shadow:0 0 0 8px transparent}}.ex-btn-delete{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.5rem;background-color:rgba(220,38,38,.07);color:var(--ex-red);border:1px solid rgba(220,38,38,.22);cursor:pointer;flex-shrink:0;transition:background-color .2s}.ex-btn-delete:hover{background-color:rgba(220,38,38,.14)}.ex-btn-delete:disabled{opacity:.4;cursor:not-allowed}.ex-audio-row{display:flex;align-items:center;gap:.75rem;background-color:var(--ex-brand-tint);border:1px solid var(--ex-border-brand);border-radius:var(--ex-btn-radius);padding:.625rem .875rem}@keyframes ex-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.ex-skeleton{border-radius:.625rem;background:linear-gradient(90deg,var(--ex-bg-card) 0,var(--ex-border) 50%,var(--ex-bg-card) 100%);background-size:200% 100%;animation:ex-shimmer 1.6s linear infinite}@keyframes ex-spin-cw{to{transform:rotate(1turn)}}@keyframes ex-spin-ccw{to{transform:rotate(-1turn)}}.ex-ring-wrap{position:relative;display:flex;align-items:center;justify-content:center;width:5rem;height:5rem}.ex-ring-outer{inset:0;border:4px solid transparent;border-top:4px solid var(--ex-brand);animation:ex-spin-cw 1.1s linear infinite}.ex-ring-inner,.ex-ring-outer{position:absolute;border-radius:9999px}.ex-ring-inner{inset:.5rem;border:4px solid transparent;border-top:4px solid var(--ex-brand-tint-ring);animation:ex-spin-ccw 1.8s linear infinite}.ex-font-display{font-family:var(--ex-font-display)}.ex-font-body{font-family:var(--ex-font-body)}.ex-color-brand{color:var(--ex-brand)}.ex-color-primary{color:var(--ex-text-primary)}.ex-color-muted{color:var(--ex-text-muted)}.ex-color-green{color:var(--ex-green)}.ex-color-red{color:var(--ex-red)}.ex-accent-brand{background:linear-gradient(90deg,var(--ex-brand) 0,transparent 70%)}.ex-accent-green{background:linear-gradient(90deg,var(--ex-green) 0,transparent 70%)}.ex-accent-aws{background:linear-gradient(90deg,var(--ex-aws) 0,transparent 70%)}.ex-badge{display:inline-flex;align-items:center;font-size:.75rem;font-weight:700;font-family:var(--ex-font-display);padding:.25rem .75rem;border-radius:9999px;white-space:nowrap}.ex-badge--brand{background-color:var(--ex-brand-tint);color:var(--ex-brand)}.ex-badge--green{background-color:var(--ex-green-tint);color:#059669}.ex-badge--amber{background-color:var(--ex-amber-tint);color:var(--ex-amber)}.ex-badge--red{background-color:var(--ex-red-tint);color:var(--ex-red);border:1px solid rgba(220,38,38,.2)}.ex-topbar-brand{font-family:var(--ex-font-display);font-size:.875rem;font-weight:700;color:var(--ex-text-primary)}.ex-topbar-counter{font-size:.75rem;font-weight:600;color:var(--ex-text-muted)}.ex-q-label{font-size:.875rem;font-weight:700;color:var(--ex-text-primary)}.ex-q-label,.ex-q-label-sub{font-family:var(--ex-font-display)}.ex-q-label-sub{font-size:.75rem;font-weight:400;color:var(--ex-text-muted);margin-left:.375rem}.ex-scenario-label{font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ex-brand);margin-bottom:.5rem}.ex-q-text{font-size:.9375rem;font-weight:600;line-height:1.65}.ex-q-text,.ex-submit-label{font-family:var(--ex-font-display);color:var(--ex-text-primary)}.ex-submit-label{font-size:.75rem;font-weight:700}.ex-dash-stat{display:flex;flex-direction:column;gap:.3rem;background-color:var(--ex-bg-section);border:1px solid var(--ex-border);border-radius:.875rem;padding:.95rem 1.1rem;transition:box-shadow .2s,transform .2s}.ex-dash-stat:hover{box-shadow:var(--ex-shadow-hover);transform:translateY(-2px)}.ex-dash-stat-label{font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ex-text-muted)}.ex-dash-stat-value{font-family:var(--ex-font-display);font-size:1.375rem;font-weight:800;line-height:1.2;color:var(--ex-text-primary);display:inline-flex;align-items:center;gap:.375rem}.ex-dash-stat-sub{font-size:.6875rem;font-weight:600;color:var(--ex-text-muted)}.ex-dash-delta{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--ex-font-display);font-size:.6875rem;font-weight:700;padding:.125rem .5rem;border-radius:9999px;white-space:nowrap}.ex-dash-track{position:relative;height:8px;width:100%;border-radius:9999px;background-color:var(--ex-timer-track);overflow:hidden}.ex-dash-fill-prev{background-color:rgba(107,114,128,.3)}.ex-dash-fill-curr,.ex-dash-fill-prev{position:absolute;top:0;left:0;bottom:0;border-radius:9999px}.ex-dash-fill-curr{transition:width .6s ease}.ex-dash-weak{display:flex;align-items:flex-start;gap:.75rem;padding:.8rem 1rem;border-radius:.75rem;background-color:var(--ex-red-tint);border:1px solid rgba(220,38,38,.14)}.ex-dash-weak-icon{display:flex;align-items:center;justify-content:center;width:1.875rem;height:1.875rem;border-radius:.5rem;flex-shrink:0;background-color:#ffffff;color:var(--ex-red);box-shadow:0 1px 3px rgba(0,0,0,.07)}.ex-kb-board{display:grid;grid-template-columns:repeat(var(--ex-kb-cols,4),minmax(0,1fr));gap:.875rem;align-items:start}.ex-kb-col{display:flex;flex-direction:column;gap:.625rem;border-radius:.875rem;border:1px solid var(--ex-border-brand);background-color:var(--ex-brand-tint);padding:.625rem}@media (max-width:900px){.ex-kb-board{grid-template-columns:1fr}}.ex-kb-col-head{display:flex;align-items:center;gap:.5rem;padding:.375rem .375rem .125rem}.ex-kb-col-title{font-family:var(--ex-font-display);font-size:.875rem;font-weight:700;color:var(--ex-text-primary);flex:1;min-width:0}.ex-kb-col-icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:.4375rem;flex-shrink:0}.ex-kb-count{font-family:var(--ex-font-display);font-size:.625rem;font-weight:700;padding:.1rem .45rem;border-radius:9999px;color:var(--ex-text-muted)}.ex-kb-card,.ex-kb-count{background-color:var(--ex-bg-section);border:1px solid var(--ex-border)}.ex-kb-card{border-radius:.75rem;padding:.85rem;box-shadow:var(--ex-shadow-card);transition:box-shadow .2s,transform .2s}.ex-kb-card:hover{box-shadow:var(--ex-shadow-hover);transform:translateY(-2px)}.ex-kb-empty{border:1.5px dashed var(--ex-border);border-radius:.75rem;padding:1.25rem .75rem;text-align:center;font-size:.6875rem;color:var(--ex-text-faint)}