:root{--color-primary:#111827;--color-primary-contrast:#fff;--color-accent:#059669;--color-surface:#fff;--color-text:#111827;--color-muted:#6b7280;--radius:.9rem;--font-sans:"Instrument Sans", system-ui, sans-serif}.auth-shell{min-height:100vh;font-family:var(--font-sans);color:var(--color-text);background:#f3f4f6;justify-content:center;align-items:center;padding:1rem;display:flex}.auth-card{background:var(--color-surface);border-radius:var(--radius);border:1px solid #e5e7eb;width:100%;max-width:28rem;padding:2rem;box-shadow:0 1px 3px #00000014}.auth-brand{font-size:1.5rem;font-weight:600}.auth-sub{color:var(--color-muted);margin-top:.25rem;font-size:.875rem}.auth-field{margin-top:1rem}.auth-label{font-size:.875rem;font-weight:500;display:block}.auth-input{width:100%;font:inherit;border:1px solid #d1d5db;border-radius:.5rem;margin-top:.25rem;padding:.5rem .75rem}.auth-btn{cursor:pointer;background:var(--color-primary);width:100%;color:var(--color-primary-contrast);border:none;border-radius:.5rem;margin-top:1.25rem;padding:.55rem 1rem;font-weight:500}.auth-btn:disabled{opacity:.5;cursor:not-allowed}.auth-ghost{cursor:pointer;color:var(--color-muted);background:0 0;border:none;margin-top:.75rem;padding:0;font-size:.875rem}.auth-error{color:#dc2626;margin-top:.75rem;font-size:.875rem}.auth-note{color:var(--color-accent);margin-top:.75rem;font-size:.875rem}.auth-tabs{gap:.5rem;margin-top:1rem;display:flex}.auth-tab{cursor:pointer;font:inherit;background:0 0;border:1px solid #d1d5db;border-radius:.5rem;flex:1;padding:.45rem;font-size:.85rem}.auth-tab[aria-selected=true]{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.auth-events{margin-top:1.5rem}.auth-event{color:#065f46;background:#ecfdf5;border-radius:.5rem;margin-top:.35rem;padding:.4rem .75rem;font-size:.85rem}.qcard{background:var(--color-surface,#fff);border-radius:var(--radius,.9rem);width:100%;max-width:40rem;font-family:var(--font-sans,"Instrument Sans", system-ui, sans-serif);color:var(--color-text,#111827);border:1px solid #e5e7eb;overflow:hidden;box-shadow:0 1px 3px #00000014}.qcard__media{aspect-ratio:16/10;background:#ecfdf5;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.qcard__media img{object-fit:cover;width:100%;height:100%;display:block}.qcard__media-caption{color:#fff;background:#111827b3;border-radius:.4rem;padding:.15rem .5rem;font-size:.72rem;position:absolute;bottom:.5rem;right:.5rem}.qcard__body{padding:1.5rem}.qcard__badge{text-transform:uppercase;letter-spacing:.04em;color:var(--color-accent,#059669);background:#ecfdf5;border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:.72rem;font-weight:600;display:inline-flex}.qcard__prompt{text-wrap:pretty;margin:.75rem 0 0;font-size:1.2rem;font-weight:600;line-height:1.35}.qcard__sci{font-style:italic}.qcard__hint{color:var(--color-muted,#6b7280);margin:.35rem 0 0;font-size:.85rem}.qcard__input-area{margin-top:1.25rem}.qcard__footer{flex-direction:column;gap:.75rem;margin-top:1.5rem;display:flex}.q-input{width:100%;font:inherit;color:var(--color-text,#111827);background:#fff;border:1px solid #d1d5db;border-radius:.6rem;padding:.7rem .85rem;font-size:1rem}.q-input:focus{outline:2px solid var(--color-accent,#059669);outline-offset:1px;border-color:#0000}.q-input.is-correct{background:#ecfdf5;border-color:#059669}.q-input.is-wrong{background:#fef2f2;border-color:#dc2626}.q-input:disabled{cursor:default}.q-options{flex-direction:column;gap:.6rem;display:flex}.q-option{text-align:left;width:100%;min-height:3rem;font:inherit;color:var(--color-text,#111827);cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:.7rem;align-items:center;gap:.75rem;padding:.7rem .9rem;font-size:.95rem;transition:border-color .1s,background .1s;display:flex}.q-option:hover:not(:disabled){border-color:#9ca3af}.q-option:disabled{cursor:default}.q-option.is-selected{border-color:var(--color-accent,#059669);background:#ecfdf5}.q-option.is-correct{background:#ecfdf5;border-color:#059669}.q-option.is-wrong{background:#fef2f2;border-color:#dc2626}.q-option__marker{color:#fff;border:2px solid #d1d5db;flex:none;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;display:flex}.q-option.is-radio .q-option__marker{border-radius:999px}.q-option.is-check .q-option__marker{border-radius:.4rem}.q-option.is-selected .q-option__marker,.q-option.is-correct .q-option__marker{background:var(--color-accent,#059669);border-color:var(--color-accent,#059669)}.q-option.is-wrong .q-option__marker{background:#dc2626;border-color:#dc2626}.q-option__label{flex:1}.q-option__label em{font-style:italic}.q-imggrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.q-imgopt{cursor:pointer;aspect-ratio:4/3;background:#ecfdf5;border:2px solid #e5e7eb;border-radius:.7rem;padding:0;position:relative;overflow:hidden}.q-imgopt:disabled{cursor:default}.q-imgopt img{object-fit:cover;width:100%;height:100%;display:block}.q-imgopt.is-selected{border-color:var(--color-accent,#059669)}.q-imgopt.is-correct{border-color:#059669}.q-imgopt.is-wrong{border-color:#dc2626}.q-imgopt__tick{color:#fff;border-radius:999px;justify-content:center;align-items:center;width:1.6rem;height:1.6rem;display:none;position:absolute;top:.5rem;right:.5rem}.q-imgopt.is-selected .q-imgopt__tick,.q-imgopt.is-correct .q-imgopt__tick{background:var(--color-accent,#059669);display:flex}.q-imgopt.is-wrong .q-imgopt__tick{background:#dc2626;display:flex}.q-match{flex-direction:column;gap:.6rem;display:flex}.q-match__row{grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem;display:grid}.q-match__term{background:#f9fafb;border:1px solid #e5e7eb;border-radius:.6rem;padding:.65rem .8rem;font-size:.95rem}.q-match__arrow{color:#9ca3af}.q-match__select{width:100%;font:inherit;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:.6rem;padding:.6rem .7rem;font-size:.95rem}.q-match__select.is-correct{background:#ecfdf5;border-color:#059669}.q-match__select.is-wrong{background:#fef2f2;border-color:#dc2626}.q-cloze{font-size:1.05rem;line-height:2.4}.q-cloze__gap{min-width:7rem;font:inherit;text-align:center;color:var(--color-text,#111827);background:0 0;border:none;border-bottom:2px solid #d1d5db;padding:.15rem .4rem;font-size:1rem;display:inline-block}.q-cloze__gap:focus{border-bottom-color:var(--color-accent,#059669);outline:none}.q-cloze__gap.is-correct{color:#065f46;border-bottom-color:#059669}.q-cloze__gap.is-wrong{color:#991b1b;border-bottom-color:#dc2626}.q-flashcard__back{border-top:1px dashed #e5e7eb;margin-top:1rem;padding-top:1rem;font-size:1.05rem;line-height:1.5}.q-flashcard__reveal{width:100%;color:var(--color-muted,#6b7280);font:inherit;cursor:pointer;background:#f9fafb;border:1px dashed #d1d5db;border-radius:.7rem;padding:1.25rem;font-size:.95rem}.q-solution{border-top:1px solid #f3f4f6;margin-top:1.25rem;padding-top:1.25rem}.q-solution__verdict{align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;display:inline-flex}.q-solution__verdict.is-correct{color:#059669}.q-solution__verdict.is-wrong{color:#dc2626}.q-solution__label{color:var(--color-muted,#6b7280);margin:.9rem 0 .4rem;font-size:.8rem}.q-chips{flex-wrap:wrap;gap:.4rem;display:flex}.q-chip{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:999px;padding:.25rem .7rem;font-size:.85rem;font-weight:500}.q-solution__meta{color:var(--color-muted,#6b7280);margin-top:.6rem;font-size:.85rem}.q-solution__explanation{color:#374151;background:#f9fafb;border-radius:.6rem;margin-top:.9rem;padding:.75rem .9rem;font-size:.9rem;line-height:1.5}.q-rating{grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;display:grid}.q-rating__btn{min-height:3.75rem;font:inherit;cursor:pointer;background:#fff;border:1px solid;border-radius:.7rem;flex-direction:column;align-items:center;gap:.2rem;padding:.6rem .4rem;font-size:.95rem;font-weight:600;display:flex}.q-rating__hint{opacity:.85;font-size:.72rem;font-weight:500}.q-rating__btn.again{color:#991b1b;border-color:#fecaca}.q-rating__btn.again:hover{background:#fef2f2}.q-rating__btn.hard{color:#92400e;border-color:#fde68a}.q-rating__btn.hard:hover{background:#fffbeb}.q-rating__btn.good{color:#065f46;border-color:#a7f3d0}.q-rating__btn.good:hover{background:#ecfdf5}.q-rating__btn.easy{color:#1e40af;border-color:#bfdbfe}.q-rating__btn.easy:hover{background:#eff6ff}.q-unsupported{color:var(--color-muted,#6b7280);text-align:center;border:1px dashed #d1d5db;border-radius:.7rem;padding:1.25rem;font-size:.9rem}.demo-page{min-height:100vh;font-family:var(--font-sans,"Instrument Sans", system-ui, sans-serif);color:var(--color-text,#111827);background:#f3f4f6;padding:2.5rem 1.5rem 4rem}.demo-head{max-width:44rem;margin:0 auto 2rem}.demo-head h1{letter-spacing:-.02em;margin:0;font-size:1.75rem;font-weight:700}.demo-head p{color:var(--color-muted,#6b7280);margin:.6rem 0 0;font-size:1rem;line-height:1.55}.demo-head code{background:#e5e7eb;border-radius:.3rem;padding:.05rem .35rem;font-size:.9em}.demo-grid{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));align-items:start;gap:1.5rem;max-width:88rem;margin:0 auto;display:grid}.demo-item{flex-direction:column;align-items:center;gap:.75rem;display:flex}@media (width<=480px){.qcard{border-left:none;border-right:none;border-radius:0}.q-imggrid{grid-template-columns:repeat(2,minmax(0,1fr))}.q-match__row{grid-template-columns:1fr;gap:.3rem}.q-match__arrow{display:none}.q-rating{grid-template-columns:repeat(2,minmax(0,1fr))}}.ui-btn{font-family:var(--font-sans,"Instrument Sans", system-ui, sans-serif);white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:.6rem;justify-content:center;align-items:center;gap:.5rem;font-weight:600;line-height:1;transition:background .12s,border-color .12s,color .12s,opacity .12s;display:inline-flex}.ui-btn:focus-visible{outline:2px solid var(--color-accent,#059669);outline-offset:2px}.ui-btn:disabled{opacity:.45;cursor:not-allowed}.ui-btn--block{width:100%}.ui-btn__text{display:inline-block}.ui-btn--sm{min-height:2rem;padding:.4rem .7rem;font-size:.85rem}.ui-btn--md{min-height:2.75rem;padding:.62rem 1rem;font-size:.95rem}.ui-btn--lg{min-height:3.25rem;padding:.8rem 1.25rem;font-size:1.05rem}.ui-btn--icon-only{aspect-ratio:1;gap:0;padding:0}.ui-btn--icon-only.ui-btn--sm{width:2rem}.ui-btn--icon-only.ui-btn--md{width:2.75rem}.ui-btn--icon-only.ui-btn--lg{width:3.25rem}.ui-btn--solid.ui-btn--primary{background:var(--color-primary,#111827);color:var(--color-primary-contrast,#fff)}.ui-btn--solid.ui-btn--primary:hover:not(:disabled){background:#1f2937}.ui-btn--solid.ui-btn--accent{background:var(--color-accent,#059669);color:#fff}.ui-btn--solid.ui-btn--accent:hover:not(:disabled){background:#047857}.ui-btn--solid.ui-btn--neutral{background:var(--color-muted,#6b7280);color:#fff}.ui-btn--solid.ui-btn--neutral:hover:not(:disabled){background:#4b5563}.ui-btn--solid.ui-btn--danger{color:#fff;background:#dc2626}.ui-btn--solid.ui-btn--danger:hover:not(:disabled){background:#b91c1c}.ui-btn--outline{background:#fff}.ui-btn--outline.ui-btn--primary{color:var(--color-primary,#111827);border-color:var(--color-primary,#111827)}.ui-btn--outline.ui-btn--accent{color:#047857;border-color:#a7f3d0}.ui-btn--outline.ui-btn--accent:hover:not(:disabled){background:#ecfdf5}.ui-btn--outline.ui-btn--neutral{color:#374151;border-color:#d1d5db}.ui-btn--outline.ui-btn--neutral:hover:not(:disabled){border-color:#9ca3af}.ui-btn--outline.ui-btn--danger{color:#b91c1c;border-color:#fecaca}.ui-btn--outline.ui-btn--danger:hover:not(:disabled){background:#fef2f2}.ui-btn--ghost{background:0 0}.ui-btn--ghost.ui-btn--primary{color:var(--color-primary,#111827)}.ui-btn--ghost.ui-btn--neutral{color:var(--color-muted,#6b7280)}.ui-btn--ghost.ui-btn--accent{color:#047857}.ui-btn--ghost.ui-btn--danger{color:#b91c1c}.ui-btn--ghost:hover:not(:disabled){background:#f3f4f6}
