:root{--color-primary:#0a2342;--color-primary-contrast:#fff;--color-accent:#059669;--color-surface:#fff;--color-text:#1f2933;--color-muted:#6b7280;--radius:.9rem;--font-sans:"Roboto", system-ui, sans-serif;--font-serif:"Source Serif 4", Georgia, 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}.ui-btn{box-sizing:border-box;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-offset:2px;outline:2px solid #60a5fa}.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}.ui-tip{position:relative}.ui-tip:after{content:attr(data-tip);color:#fff;white-space:nowrap;opacity:0;pointer-events:none;z-index:30;background:#111827;border-radius:.4rem;padding:.25rem .5rem;font-size:.72rem;font-weight:500;transition:opacity .12s;position:absolute;top:calc(100% + 6px);right:0}.ui-tip:hover:after,.ui-tip:focus-visible:after{opacity:1}.qcard-wrap,.qcard,.qcard *{box-sizing:border-box}.qcard-wrap{flex-direction:column;align-items:flex-start;gap:.5rem;width:100%;max-width:40rem;display:flex}.qcard-wrap .qcard{width:100%;max-width:none}.qcard{background:var(--color-surface,#fff);border-radius:var(--radius,.9rem);perspective:1600px;width:100%;max-width:40rem;font-family:var(--font-sans,"Instrument Sans", system-ui, sans-serif);color:var(--color-text,#111827);border:1px solid #e7e3da;position:relative;overflow:hidden;box-shadow:0 1px 3px #00000014}.qcard__media{aspect-ratio:16/10;color:#9ca3af;background:#f3f1ec;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 .qcard__stats{z-index:3;color:#6b7280;background:#ffffffeb;border:1px solid #e7e3da;position:absolute;top:.7rem;right:.7rem;box-shadow:0 1px 2px #0000000f}.qcard .qcard__stats:hover{color:#111827;border-color:#d1d5db}.qcard__badge{text-transform:uppercase;letter-spacing:.04em;color:#2563eb;background:#eff6ff;border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:.72rem;font-weight:600;display:inline-flex}.qcard__prompt{font-family:var(--font-serif,Georgia, serif);text-wrap:pretty;margin:.75rem 0 0;font-size:1.28rem;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-actions{align-items:stretch;gap:.6rem;display:flex}.q-actions__submit{flex:1}.q-tip{color:#374151;background:#fffbeb;border:1px solid #fde68a;border-radius:.6rem;padding:.75rem .9rem;font-size:.9rem;line-height:1.5}.q-actions .q-tip__toggle.is-open{color:#b45309;background:#fffbeb;border-color:#f59e0b}.q-actions .q-tip__toggle.is-open svg{color:#f59e0b}.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-offset:1px;border-color:#0000;outline:2px solid #60a5fa}.q-input.is-correct{background:#ecfdf5;border-color:#059669}.q-input.is-wrong{background:#fef2f2;border-color:#dc2626}.q-input:disabled{cursor:default}.q-input.has-mark{padding-right:2.6rem}.q-field{position:relative}.q-field__mark{pointer-events:none;display:flex;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.q-field__mark.is-ok{color:#059669}.q-field__mark.is-bad{color:#dc2626}.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{background:#eff6ff;border-color:#60a5fa}.q-option.is-picked-correct{background:#ecfdf5;border-color:#059669}.q-option.is-picked-wrong,.q-option.is-missed-correct{background:#fef2f2;border-color:#dc2626}.q-option.is-answer{background:#ecfdf5;border-color:#059669}.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{background:#60a5fa;border-color:#60a5fa}.q-option.is-picked-correct .q-option__marker,.q-option.is-missed-correct .q-option__marker{background:#059669;border-color:#059669}.q-option.is-picked-wrong .q-option__marker,.q-option.is-answer .q-option__marker{background:#dc2626;border-color:#dc2626}.q-option.is-picked-correct .q-option__label,.q-option.is-answer .q-option__label{color:#059669}.q-option.is-picked-wrong .q-option__label,.q-option.is-missed-correct .q-option__label{color:#dc2626}.q-option__label{flex:1}.q-option__label em{font-style:italic}.q-option__verdict{flex:none;align-items:center;display:flex}.q-option__verdict.is-ok{color:#059669}.q-option__verdict.is-bad{color:#dc2626}.q-imggrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.q-imgopt{color:#9ca3af;cursor:pointer;aspect-ratio:4/3;background:#f3f1ec;border:2px solid #e7e3da;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:#60a5fa}.q-imgopt.is-picked-correct{border-color:#059669}.q-imgopt.is-picked-wrong,.q-imgopt.is-missed-correct{border-color:#dc2626}.q-imgopt__badge{color:#fff;border-radius:999px;justify-content:center;align-items:center;width:1.7rem;height:1.7rem;display:flex;position:absolute;top:.5rem;right:.5rem}.q-imgopt__badge.is-ok{background:#059669}.q-imgopt__badge.is-bad{background:#dc2626}.q-imgopt__pick{color:#fff;text-align:center;background:#111827b8;padding:.2rem;font-size:.72rem;font-weight:500;position:absolute;bottom:0;left:0;right:0}.q-match2{flex-direction:column;gap:1rem;display:flex}.q-match2__pool{background:#f9fafb;border:1px dashed #d1d5db;border-radius:.7rem;flex-wrap:wrap;align-items:center;gap:.5rem;min-height:3rem;padding:.6rem;display:flex}.q-match2__poolhint{color:#9ca3af;padding:0 .3rem;font-size:.85rem}.q-drag-item{cursor:grab;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #d1d5db}.q-drag-item:hover{border-color:#9ca3af}.q-term{font:inherit;color:var(--color-text,#111827);border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .8rem;font-size:.9rem;display:inline-flex}.q-term.is-selected{background:#eff6ff;border-color:#60a5fa}.q-term.is-placed{cursor:grab;background:#fff}.q-term__remove{color:#9ca3af;cursor:pointer;background:0 0;border:none;align-items:center;margin-left:.05rem;padding:0;display:inline-flex}.q-term__remove:hover{color:#dc2626}.q-match2__defs{flex-direction:column;gap:.6rem;display:flex}.q-match2__card{background:#f9fafb;border:1px solid #e7e3da;border-radius:.7rem;padding:.75rem .85rem}.q-match2__card.is-over{background:#eff6ff;border-color:#60a5fa}.q-match2__card.is-correct{background:#ecfdf5;border-color:#059669}.q-match2__card.is-wrong{background:#fef2f2;border-color:#dc2626}.q-match2__cardlabel{font-size:.95rem;font-weight:700}.q-match2__drops{flex-wrap:wrap;align-items:center;gap:.4rem;min-height:2rem;margin-top:.5rem;display:flex}.q-match2__placeholder{color:#9ca3af;padding:0 .2rem;font-size:.85rem}.q-cloze{font-size:1.05rem;line-height:2.4}.q-cloze__gap{min-width:7rem;font:inherit;text-align:left;color:var(--color-text,#111827);background:0 0;border:none;border-bottom:2px solid #d1d5db;padding:.15rem .4rem .05rem;font-size:1rem;display:inline-block}.q-cloze__gap:focus{border-bottom-color:#60a5fa;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-cloze__select{font:inherit;cursor:pointer;color:var(--color-text,#111827);vertical-align:baseline;background:0 0;border:none;border-bottom:2px solid #d1d5db;padding:.15rem 1.3rem .15rem .35rem;font-size:1rem;display:inline-block}.q-cloze__select:focus{border-bottom-color:#60a5fa;outline:none}.q-cloze__select.is-correct{color:#065f46;border-bottom-color:#059669}.q-cloze__select.is-wrong{color:#991b1b;border-bottom-color:#dc2626}.q-order{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.q-order__item{border-radius:.7rem;align-items:center;gap:.6rem;padding:.6rem .75rem;display:flex}.q-order__item.is-dragging{opacity:.5}.q-order__item.is-over{background:#eff6ff;border-color:#60a5fa}.q-order__item.is-correct{background:#ecfdf5;border-color:#059669}.q-order__item.is-wrong{background:#fef2f2;border-color:#dc2626}.q-order__handle{color:#9ca3af;flex:none}.q-order__pos{color:#6b7280;background:#f3f1ec;border-radius:999px;flex:none;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.8rem;font-weight:600;display:flex}.q-order__label{flex:1;font-size:.95rem}.q-solution{border-top:1px solid #e7e3da;margin-top:1.25rem;padding-top:.85rem}.q-solution>:first-child{margin-top:0}.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__explanation{color:#374151;background:#f9fafb;border-radius:.6rem;margin-top:.9rem;padding:.75rem .9rem;font-size:.9rem;line-height:1.5}.q-unsupported{color:var(--color-muted,#6b7280);text-align:center;border:1px dashed #d1d5db;border-radius:.7rem;padding:1.25rem;font-size:.9rem}.qcard__flip{transform-style:preserve-3d;transition:transform .55s;position:relative}.qcard__flip.is-flipped{transform:rotateY(180deg)}.qcard__front{backface-visibility:hidden}.qcard__back{backface-visibility:hidden;background:var(--color-surface,#fff);position:absolute;inset:0;transform:rotateY(180deg)}.q-stats{background:var(--color-surface,#fff);flex-direction:column;padding:1.25rem;display:flex;position:absolute;inset:0}.q-stats__close{z-index:2;position:absolute;top:.7rem;right:.7rem}.q-stats__head{justify-content:space-between;align-items:center;display:flex}.q-stats__title{align-items:center;gap:.5rem;font-size:1.05rem;font-weight:600;display:inline-flex}.q-stats__tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin:1rem 0;display:grid}.q-stats__tile{text-align:center;border:1px solid #e7e3da;border-radius:.7rem;padding:.7rem .3rem}.q-stats__tile.is-ok,.q-stats__tile.is-easy{background:#ecfdf5;border-color:#a7f3d0}.q-stats__tile.is-bad,.q-stats__tile.is-hard{background:#fef2f2;border-color:#fecaca}.q-stats__tile.is-med{background:#fffbeb;border-color:#fde68a}.q-stats__num{letter-spacing:-.02em;font-size:1.45rem;font-weight:700;display:block}.q-stats__tile.is-ok .q-stats__num,.q-stats__tile.is-easy .q-stats__num{color:#059669}.q-stats__tile.is-bad .q-stats__num,.q-stats__tile.is-hard .q-stats__num{color:#dc2626}.q-stats__tile.is-med .q-stats__num{color:#b45309}.q-stats__cap{color:var(--color-muted,#6b7280);font-size:.78rem}.q-stats__label{color:var(--color-muted,#6b7280);margin:0 0 .4rem;font-size:.8rem}.q-stats__list{border-top:1px solid #f3f1ec;flex:1;margin:0;padding:0 .6rem 0 0;list-style:none;overflow-y:auto}.q-stats__row{border-bottom:1px solid #f3f1ec;justify-content:space-between;align-items:center;padding:.5rem .1rem;font-size:.85rem;display:flex}.q-stats__time{color:var(--color-muted,#6b7280)}.q-stats__result{align-items:center;gap:.3rem;font-weight:500;display:inline-flex}.q-stats__result.is-ok{color:#059669}.q-stats__result.is-bad{color:#dc2626}.demo-page{min-height:100vh;font-family:var(--font-sans,"Instrument Sans", system-ui, sans-serif);color:var(--color-text,#111827);background:#f3f1ec;padding:2.5rem 1.5rem 4rem}.demo-head{max-width:44rem;margin:0 auto 2rem}.demo-head h1{font-family:var(--font-serif,Georgia, serif);letter-spacing:-.01em;margin:0;font-size:1.85rem;font-weight:600}.demo-head p{color:var(--color-muted,#6b7280);margin:.6rem 0 0;font-size:1rem;line-height:1.55}.demo-head code{background:#e7e3da;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))}}
