: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))}}.ph{--paper:#f3f1ec;--page:#fff;--line:#e7e3da;--ink:#1f2933;--soft:#6b7280;--marine:#0a2342;--marine-700:#0f2c56;--wave:#4188a0;--emerald:#059669;--emerald-bg:#ecfdf5;--emerald-line:#a7f3d0;--emerald-ink:#065f46;--red:#dc2626;--red-bg:#fef2f2;--blue:#60a5fa;--blue-bg:#eff6ff;--blue-ink:#2563eb;--amber:#f59e0b;--amber-bg:#fffbeb;--amber-line:#fde68a;--gold-ink:#a16207;--serif:"Source Serif 4", Georgia, serif;--sans:"Roboto", system-ui, sans-serif;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;flex-direction:column;display:flex;position:fixed;inset:0}.ph *,.ph :before,.ph :after{box-sizing:border-box}.ph .view{flex-direction:column;flex:1;min-height:0;display:flex}.ph .scroll{-webkit-overflow-scrolling:touch;flex:1;min-height:0;overflow-y:auto}.ph .pad{padding:4px 18px 18px}.ph .appbar{padding:calc(8px + env(safe-area-inset-top)) 18px 8px;flex:none;align-items:center;gap:12px;display:flex}.ph .greet{font-family:var(--serif);font-size:1.25rem;font-weight:600}.ph .day{color:var(--soft);margin-top:2px;font-size:.74rem}.ph .sectlabel{text-transform:uppercase;letter-spacing:.08em;color:var(--soft);margin:14px 2px 8px;font-size:.72rem;font-weight:600}.ph .avatar{background:var(--marine);color:#fff;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;font-size:.8rem;font-weight:600;display:flex}.ph .streak{white-space:nowrap;margin-left:auto;font-size:.78rem;font-weight:600}.ph .btn{font-family:var(--sans);cursor:pointer;border:none;border-radius:11px;justify-content:center;align-items:center;gap:7px;padding:10px 16px;font-size:.9rem;font-weight:600;display:inline-flex}.ph .btn:disabled{opacity:.55;cursor:default}.ph .btn.primary{background:var(--marine);color:#fff}.ph .btn.ghost{background:var(--page);border:1px solid var(--line);color:var(--ink)}.ph .btn.block{width:100%}.ph .btn.lg{padding:14px 18px;font-size:1rem}.ph .btn.sm{padding:8px 12px;font-size:.82rem}.ph .link{text-align:center;color:var(--soft);cursor:pointer;background:0 0;border:none;width:100%;margin-top:14px;font-size:.84rem;display:block}.ph .link.accent{color:var(--blue-ink);font-weight:500}.ph .login{padding:0 26px calc(40px + env(safe-area-inset-bottom));flex-direction:column;flex:1;justify-content:center;display:flex}.ph .brand{align-items:center;gap:12px;margin-bottom:28px;display:flex}.ph .brand .logo{background:var(--emerald);color:#ecfdf5;border-radius:12px;flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.ph .brand span{font-family:var(--serif);font-size:1.72rem;font-weight:600}.ph .login h2{font-family:var(--serif);margin:0 0 4px;font-size:1.7rem;font-weight:600}.ph .login p.s{color:var(--soft);margin:0 0 22px;font-size:.86rem;line-height:1.5}.ph .field{margin-bottom:12px}.ph .field label{margin-bottom:5px;font-size:.78rem;font-weight:500;display:block}.ph .input{width:100%;font:inherit;background:var(--page);color:var(--ink);border:1px solid #d1d5db;border-radius:11px;padding:11px 13px;font-size:.92rem}.ph .input::placeholder{color:#9ca3af}.ph .input:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #60a5fa38}.ph .to{color:var(--ink);font-weight:600}.ph .otp{justify-content:space-between;gap:8px;margin:4px 0 2px;display:flex}.ph .otp input{background:var(--page);text-align:center;width:100%;min-width:0;height:52px;font-family:var(--serif);font-variant-numeric:tabular-nums;color:var(--ink);border:1.5px solid #d1d5db;border-radius:10px;flex:1;font-size:1.5rem;font-weight:600}.ph .otp input:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #60a5fa40}.ph .otp.filled input{border-color:var(--marine)}.ph .otp.exp input{color:#b91c1c;background:var(--red-bg);border-color:#fecaca}.ph .resend{text-align:center;color:var(--soft);margin-top:16px;font-size:.8rem}.ph .resend.warn{color:#b91c1c;justify-content:center;align-items:center;gap:6px;width:100%;margin-top:12px;font-weight:500;display:inline-flex}.ph .hint{background:var(--blue-bg);color:#1e40af;border:1px solid #dbeafe;border-radius:11px;align-items:flex-start;gap:8px;margin-top:16px;padding:10px 12px;font-size:.78rem;line-height:1.45;display:flex}.ph .hint svg{flex:none;margin-top:1px}.ph .q-err{background:var(--red-bg);color:#b91c1c;border:1px solid #fecaca;border-radius:10px;align-items:flex-start;gap:8px;margin-top:12px;padding:9px 11px;font-size:.78rem;line-height:1.4;display:flex}.ph .q-err svg{flex:none;margin-top:1px}.ph .card{background:var(--page);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:0 1px 2px #1f29330a}.ph .card+.card{margin-top:10px}.ph .deck-h{align-items:center;gap:8px;display:flex}.ph .deck-name{font-family:var(--serif);font-size:1.05rem;font-weight:600}.ph .badge{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:2px 7px;font-size:.62rem;font-weight:700}.ph .badge.gold{color:var(--gold-ink);background:#fef9c3;border:1px solid #fde68a}.ph .badge.tag{color:var(--blue-ink);background:var(--blue-bg);border:1px solid #dbeafe}.ph .deck-meta{color:var(--soft);margin-top:3px;font-size:.74rem}.ph .bar{background:var(--paper);border-radius:999px;height:7px;margin:10px 0;overflow:hidden}.ph .bar>i{background:var(--emerald);border-radius:999px;height:100%;display:block}.ph .pills{align-items:center;gap:6px;display:flex}.ph .pill{border-radius:7px;padding:3px 8px;font-size:.72rem;font-weight:600}.ph .pill.new{color:var(--blue-ink);background:var(--blue-bg)}.ph .pill.learn{color:#92400e;background:var(--amber-bg)}.ph .pill.rev{color:var(--emerald-ink);background:var(--emerald-bg)}.ph .tabs{border-top:1px solid var(--line);background:color-mix(in srgb, var(--page) 88%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:8px 6px calc(8px + env(safe-area-inset-bottom));flex:none;display:flex}.ph .tab{color:var(--soft);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:4px 0;font-size:.64rem;font-weight:500;display:flex}.ph .tab.on{color:var(--marine)}.ph .tab svg{width:21px;height:21px}.ph .iconbtn{border:1px solid var(--line);background:var(--page);width:32px;height:32px;color:var(--soft);cursor:pointer;border-radius:9px;flex:none;justify-content:center;align-items:center;display:flex}.ph .iconbtn.bare{color:var(--ink);background:0 0;border:none;width:28px}.ph .ellip{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.ph .studybar{padding:calc(6px + env(safe-area-inset-top)) 16px 10px;flex:none;align-items:center;gap:12px;display:flex}.ph .prog{background:var(--page);border:1px solid var(--line);border-radius:999px;flex:1;height:7px;overflow:hidden}.ph .prog>i{background:var(--wave);height:100%;transition:width .25s;display:block}.ph .counts{gap:6px;font-size:.68rem;font-weight:600;display:flex}.ph .counts b{border-radius:6px;padding:2px 6px}.ph .ring{--p:0;background:conic-gradient(var(--emerald) calc(var(--p) * 1%), #e2ddd0 0);border-radius:999px;justify-content:center;align-items:center;width:92px;height:92px;margin:0 auto;display:flex}.ph .ring i{background:var(--page);border-radius:999px;flex-direction:column;justify-content:center;align-items:center;width:70px;height:70px;font-style:normal;display:flex}.ph .ring b{font-size:1.2rem;font-weight:700}.ph .ring span{color:var(--soft);font-size:.6rem}.ph .bigrow{text-align:center;gap:8px;display:flex}.ph .bigrow .b{border:1px solid var(--line);background:var(--page);border-radius:12px;flex:1;padding:12px 4px}.ph .bigrow .b b{font-size:1.5rem;font-weight:700;display:block}.ph .bigrow .b span{color:var(--soft);font-size:.66rem}.ph .bigrow .b.new b{color:var(--blue-ink)}.ph .bigrow .b.learn b{color:#b45309}.ph .bigrow .b.rev b{color:var(--emerald)}.ph .tiles{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.ph .tile{border:1px solid var(--line);text-align:center;background:var(--page);border-radius:12px;padding:11px}.ph .tile b{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700;display:block}.ph .tile span{color:var(--soft);font-size:.68rem}.ph .tile.ok{border-color:var(--emerald-line);background:var(--emerald-bg)}.ph .tile.ok b{color:var(--emerald)}.ph .tile.bad{background:var(--red-bg);border-color:#fecaca}.ph .tile.bad b{color:var(--red)}.ph .tile.score{border-color:var(--emerald-line);background:var(--emerald-bg)}.ph .tile.score b{color:var(--emerald)}.ph .chart{align-items:flex-end;gap:6px;height:84px;margin-top:6px;display:flex}.ph .chart .c{background:var(--wave);opacity:.85;border-radius:4px 4px 0 0;flex:1}.ph .chart .c.hi{background:var(--marine)}.ph .hist{margin:0;padding:0;list-style:none}.ph .hist li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 2px;font-size:.82rem;display:flex}.ph .hist li:last-child{border-bottom:0}.ph .hist .tm{color:var(--soft)}.ph .res{align-items:center;gap:4px;font-weight:500;display:inline-flex}.ph .t-ok{color:var(--emerald)}.ph .t-bad{color:var(--red)}.ph .seg{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:3px;display:flex}.ph .seg button{font:inherit;color:var(--soft);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;padding:7px;font-size:.82rem;font-weight:500}.ph .seg button.on{background:var(--page);color:var(--marine);font-weight:600;box-shadow:0 1px 2px #0000000f}.ph .search{color:#9ca3af;align-items:center;gap:8px;margin-top:10px;display:flex}.ph .search input{font:inherit;color:var(--ink);background:0 0;border:none;flex:1;font-size:.92rem}.ph .search input:focus{outline:none}.ph .qbadge{text-transform:uppercase;letter-spacing:.04em;color:var(--blue-ink);background:var(--blue-bg);border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:.64rem;font-weight:700;display:inline-flex}.ph .cat-q{font-size:.9rem;font-weight:600;line-height:1.35}.ph .cat-row{align-items:center;gap:8px;margin-top:9px;display:flex}.ph .cat-count{color:var(--soft);font-size:.74rem;font-weight:600}.ph .prof-top{text-align:center;padding:8px 0 4px}.ph .prof-top .av{background:var(--marine);color:#fff;border-radius:999px;justify-content:center;align-items:center;width:66px;height:66px;margin:0 auto 10px;font-size:1.4rem;font-weight:600;display:flex}.ph .prof-top h2{font-family:var(--serif);margin:0;font-size:1.3rem;font-weight:600}.ph .prof-top p{color:var(--soft);margin:3px 0 0;font-size:.82rem}.ph .rows{background:var(--page);border:1px solid var(--line);border-radius:14px;margin-top:16px;overflow:hidden}.ph .lrow{border-bottom:1px solid var(--line);text-align:left;width:100%;color:var(--ink);cursor:pointer;background:0 0;align-items:center;gap:12px;padding:13px 14px;font-family:inherit;font-size:.9rem;display:flex}.ph .lrow:last-child{border-bottom:0}.ph .lrow>svg{width:19px;height:19px;color:var(--soft);flex:none}.ph .lrow .val{color:var(--soft);margin-left:auto;font-size:.82rem}.ph .lrow.danger,.ph .lrow.danger>svg{color:var(--red)}.ph .session-end{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:30px;display:flex}.ph .session-end h2{font-family:var(--serif);margin:0;font-size:1.4rem}.ph .session-end p{color:var(--soft);margin:0;font-size:.86rem}@media (prefers-reduced-motion:reduce){.ph *{transition:none!important}}
