.login-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#00000073;display:flex;align-items:center;justify-content:center;padding:1rem}.login-modal{position:relative;width:100%;max-width:420px;max-height:90vh;overflow-y:auto}.login-modal-close{position:absolute;top:.5rem;right:.5rem;z-index:2;width:2rem;height:2rem;border:none;border-radius:50%;background:#0000000f;color:#666;font-size:1.25rem;line-height:1;cursor:pointer}.login-modal-card{margin:0}.auth-login{width:100%}.auth-card{background:#fff;border-radius:20px;padding:2rem 1.5rem;box-shadow:0 12px 40px #00000026;text-align:center}.auth-header{margin-bottom:1.5rem}.auth-icon{font-size:3rem;margin-bottom:.75rem}.auth-header h1{font-size:1.5rem;color:#1a1a2e;margin-bottom:.5rem}.auth-header p{color:#888;font-size:.9rem}.auth-alert{border-radius:12px;padding:1rem;margin-bottom:1rem;text-align:left}.auth-alert.warning{background:#fff8e6;border:1px solid #ffe58f}.auth-alert.warning p{color:#d48806;font-weight:600}.auth-alert.warning .sub{font-weight:400;font-size:.85rem;margin-top:.25rem}.auth-alert.error{background:#fff2f0;border:1px solid #ffccc7}.auth-alert.error p{color:#cf1322;font-size:.9rem}.auth-alert.info{background:#e6f7ff;border:1px solid #91d5ff;margin-bottom:1rem;text-align:left}.auth-alert.info p{color:#096dd9;font-size:.85rem;word-break:break-all}.auth-alert.info .mono{font-family:monospace}.auth-status.loading{padding:1.5rem 0;color:#666}.auth-code-hint{margin-top:.5rem;font-size:.75rem;color:#999;word-break:break-all;font-family:monospace}.spinner{width:36px;height:36px;border:3px solid #e8e8e8;border-top-color:#667eea;border-radius:50%;margin:0 auto .75rem;animation:spin .8s linear infinite}.auth-success{text-align:left}.success-badge{display:inline-block;background:#f6ffed;color:#389e0d;border:1px solid #b7eb8f;border-radius:8px;padding:.4rem .75rem;font-size:.9rem;font-weight:600;margin-bottom:1rem}.user-info{background:#f8f9ff;border-radius:12px;padding:1rem;margin-bottom:1rem}.info-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.5rem 0;border-bottom:1px solid #eef0f8}.info-row:last-child{border-bottom:none}.info-row .label{color:#888;font-size:.85rem;flex-shrink:0}.info-row .value{color:#333;font-size:.85rem;text-align:right;word-break:break-all}.info-row .value.mono{font-family:monospace;font-size:.75rem}.info-row .value.truncate{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{width:100%;padding:.875rem 1.5rem;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;border:none;transition:opacity .2s,transform .1s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.link-btn{display:block;text-decoration:none;text-align:center;margin-bottom:.75rem}.btn-outline{background:#fff;color:#667eea;border:1.5px solid #667eea}.auth-footer{margin-top:1.5rem;padding-top:1rem;border-top:1px solid #f0f0f0}.api-hint{font-size:.7rem;color:#bbb;word-break:break-all}.confirm-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:#0f172a7a;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:confirm-fade-in .2s ease}.confirm-dialog{width:100%;max-width:320px;padding:1.35rem 1.25rem 1.15rem;border-radius:18px;background:#fff;box-shadow:0 16px 48px #0f172a2e;animation:confirm-slide-up .22s ease}.confirm-dialog-title{margin:0;font-size:1.05rem;font-weight:700;color:#1a1a2e;text-align:center;line-height:1.4}.confirm-dialog-message{margin:.75rem 0 0;font-size:.9rem;line-height:1.65;color:#666;text-align:center}.confirm-dialog-actions{display:flex;gap:.65rem;margin-top:1.25rem}.confirm-dialog-btn{flex:1;padding:.72rem .5rem;border:none;border-radius:12px;font-size:.92rem;font-weight:600;cursor:pointer;transition:opacity .15s,transform .15s}.confirm-dialog-btn:active{transform:scale(.98)}.confirm-dialog-btn.cancel{background:#f3f4f8;color:#555}.confirm-dialog-btn.confirm{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 14px #667eea59}.confirm-dialog-btn.confirm.danger{background:linear-gradient(135deg,#ff7875,#ff4d4f);box-shadow:0 4px 14px #ff4d4f4d}@keyframes confirm-fade-in{0%{opacity:0}to{opacity:1}}@keyframes confirm-slide-up{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.exam-record-page{min-height:100vh;max-width:560px;margin:0 auto;padding:12px 12px 28px;background:#f0f2f8}.record-hero{display:flex;align-items:center;gap:.65rem;margin-bottom:.85rem;padding:.9rem 1rem;border-radius:16px;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 6px 20px #667eea47;color:#fff}.record-hero-main{flex:1;min-width:0}.record-hero h1{font-size:1.05rem;font-weight:700;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-meta{margin-top:.2rem;font-size:.75rem;opacity:.9}.record-back-btn{flex-shrink:0;width:2rem;height:2rem;padding:0;border:none;border-radius:10px;background:#fff3;color:#fff;font-size:1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.record-timer{flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding:.35rem .55rem;border-radius:10px;background:#ffffff2e;border:1px solid rgba(255,255,255,.25)}.record-timer-label{font-size:.62rem;opacity:.85}.record-timer-value{font-size:.78rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em}.record-summary{display:flex;align-items:stretch;margin-bottom:.5rem;padding:.75rem .5rem;background:#fff;border-radius:14px;box-shadow:0 2px 10px #0000000a}.summary-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:.15rem}.summary-value{font-size:1.1rem;font-weight:700;color:#1a1a2e;line-height:1.2}.summary-value.highlight{color:#667eea}.summary-label{font-size:.72rem;color:#999}.summary-divider{width:1px;background:#f0f0f0;margin:.1rem 0}.record-progress{height:4px;margin-bottom:.85rem;border-radius:999px;background:#e8ecf4;overflow:hidden}.record-progress-bar{height:100%;border-radius:999px;background:linear-gradient(90deg,#667eea,#764ba2);transition:width .25s ease}.question-stage{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:1rem;padding:0 .15rem}.question-card{flex:1;min-width:0;min-height:21rem;background:#fff;border-radius:16px;padding:1.1rem 1rem;box-shadow:0 4px 18px #0000000f}.question-head{position:relative;display:flex;align-items:center;gap:.45rem;margin-bottom:.85rem;padding-bottom:.75rem;padding-right:4.2rem;border-bottom:1px solid #f3f4f8;flex-wrap:wrap}.question-index{font-size:.88rem;color:#667eea;font-weight:700}.question-type,.question-score{font-size:.72rem;color:#666;background:#f5f6fa;padding:.18rem .5rem;border-radius:999px}.question-score{color:#d48806;background:#fff7e6}.question-content{font-size:.96rem;line-height:1.75;color:#1a1a2e;margin-bottom:1rem;white-space:pre-wrap}.question-image{max-width:100%;border-radius:8px}.option-list{display:flex;flex-direction:column;gap:.6rem}.option-item{display:flex;align-items:flex-start;gap:.65rem;width:100%;padding:.8rem .9rem;border:1.5px solid #eceef3;border-radius:12px;background:#fafbfc;text-align:left;cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s}.option-item.active{border-color:#667eea;background:linear-gradient(135deg,#f8f9ff,#f0f4ff);box-shadow:0 2px 10px #667eea26}.option-item:disabled{cursor:not-allowed;opacity:.85}.option-key{flex-shrink:0;width:1.5rem;height:1.5rem;border-radius:50%;background:#f0f0f0;color:#333;display:inline-flex;align-items:center;justify-content:center;font-size:.82rem;font-weight:600}.option-item.active .option-key{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.option-content{flex:1;font-size:.9rem;line-height:1.6;color:#333}.answer-editor{margin-top:.5rem}.answer-input,.answer-textarea{width:100%;box-sizing:border-box;border:1.5px solid #eceef3;border-radius:12px;padding:.8rem .9rem;font-size:.9rem;background:#fafbfc;transition:border-color .2s,box-shadow .2s}.answer-input:focus,.answer-textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1f;background:#fff}.answer-textarea{min-height:120px;resize:vertical}.answer-review{margin-top:1rem;padding:.85rem;border-radius:10px;background:#f8fafc;font-size:.85rem;line-height:1.6;color:#444}.nav-icon-btn{flex-shrink:0;align-self:flex-start;margin-top:10.5rem;padding:.35rem .15rem;border:none;background:transparent;color:#667eea;line-height:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.nav-icon-btn:disabled{opacity:.25;color:#999;cursor:not-allowed}.nav-chevron{width:.85rem;height:2.1rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.nav-chevron.right{transform:scaleX(-1)}.submit-btn-area{margin-top:1.5rem;min-height:3.15rem}.submit-btn{width:100%;padding:.9rem;border:none;border-radius:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;box-shadow:0 6px 18px #667eea59}.submit-btn:disabled{opacity:.7;cursor:not-allowed}.submit-btn.secondary{margin-top:1rem;background:#fff;color:#1677ff;border:1px solid #1677ff}.record-submit-tip{position:fixed;left:50%;bottom:calc(1.75rem + env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:200;margin:0;padding:.5rem 1rem;border-radius:999px;background:#1677ffeb;color:#fff;font-size:.82rem;font-weight:600;white-space:nowrap;pointer-events:none;box-shadow:0 4px 16px #1677ff59}.result-card{background:#fff;border-radius:16px;overflow:hidden;margin-bottom:1rem;box-shadow:0 4px 20px #0000000f}.result-card-hero{padding:1.25rem 1rem 1.1rem;text-align:center;background:linear-gradient(160deg,#f0f5ff,#fff 55%)}.result-card.passed .result-card-hero{background:linear-gradient(160deg,#f6ffed,#fff 55%)}.result-card.failed .result-card-hero{background:linear-gradient(160deg,#fff2f0,#fff 55%)}.result-status-pill,.result-pass-pill{display:inline-block;font-size:.72rem;padding:.2rem .55rem;border-radius:999px;font-weight:600;margin:0 .2rem .85rem}.result-status-pill{background:#1677ff1a;color:#1677ff}.result-pass-pill.pass{background:#f6ffed;color:#389e0d}.result-pass-pill.fail{background:#fff1f0;color:#cf1322}.result-score-ring{--ring-color: #1677ff;width:132px;height:132px;margin:0 auto .65rem;border-radius:50%;background:conic-gradient(var(--ring-color) 0%,var(--ring-color) var(--progress),#e8edf5 var(--progress),#e8edf5 100%);display:flex;align-items:center;justify-content:center;position:relative}.result-card.passed .result-score-ring{--ring-color: #52c41a}.result-card.failed .result-score-ring{--ring-color: #ff7875}.result-score-inner{width:108px;height:108px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 2px 12px #0000000f}.result-score-value{font-size:2rem;font-weight:700;color:#1a1a2e;line-height:1.1}.result-score-total{font-size:.82rem;color:#999;margin-top:.1rem}.result-score-caption{font-size:.85rem;color:#666;font-weight:500}.result-pass-line{margin-top:.25rem;font-size:.78rem;color:#999}.result-stats{display:flex;align-items:stretch;padding:.85rem .5rem;border-top:1px solid #f0f0f0}.result-stat{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;min-width:0;padding:0 .25rem}.result-stat-value{font-size:1.05rem;font-weight:700;color:#1a1a2e;line-height:1.2}.result-stat-value.sm{font-size:.82rem;font-weight:600}.result-stat-label{font-size:.72rem;color:#999}.result-stat-divider{width:1px;background:#f0f0f0;margin:.15rem 0}.result-back-btn{display:block;width:calc(100% - 2rem);margin:0 1rem 1rem;padding:.75rem;border:none;border-radius:12px;background:linear-gradient(135deg,#1677ff,#0958d9);color:#fff;font-size:.92rem;font-weight:600;cursor:pointer}.record-error{color:#cf1322;padding:.75rem 0;font-size:.88rem}.record-save-tip{position:fixed;left:50%;bottom:calc(1.75rem + env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:200;margin:0;padding:.5rem 1rem;border-radius:999px;background:#000000b8;color:#fff;font-size:.82rem;white-space:nowrap;pointer-events:none;box-shadow:0 4px 16px #0000002e}.question-saving{position:absolute;top:0;right:0;font-size:.72rem;color:#667eea;background:#f0f4ff;padding:.12rem .4rem;border-radius:999px;white-space:nowrap}.record-hint{color:#666;padding:1rem 0}.review-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.review-section-title{font-size:1rem;color:#1a1a2e;font-weight:700}.review-section-count{font-size:.78rem;color:#999}.review-filter-tabs{display:flex;gap:.4rem;margin-bottom:.75rem;overflow-x:auto}.review-filter-tabs button{flex-shrink:0;padding:.4rem .85rem;border:none;border-radius:999px;background:#fff;color:#666;font-size:.8rem;cursor:pointer;box-shadow:0 1px 4px #0000000d}.review-filter-tabs button.active{background:#667eea;color:#fff}.review-empty{background:#fff;border-radius:12px;padding:1.5rem;text-align:center;color:#999;font-size:.88rem;margin-bottom:.75rem}.review-question-list{margin-top:.25rem}.review-card{margin-bottom:.75rem}.review-badge{font-size:.72rem;padding:.15rem .45rem;border-radius:999px;font-weight:600}.review-badge.correct{background:#f6ffed;color:#389e0d}.review-badge.wrong{background:#fff1f0;color:#cf1322}.option-item.review{cursor:default;position:relative;flex-wrap:wrap}.option-item.review.user-correct{border-color:#52c41a;background:#f6ffed}.option-item.review.user-wrong{border-color:#ff4d4f;background:#fff1f0}.option-item.review.correct-answer{border-color:#52c41a;background:#fcffe6}.option-item.review.user-correct .option-key{background:#52c41a;color:#fff}.option-item.review.user-wrong .option-key{background:#ff4d4f;color:#fff}.option-item.review.correct-answer .option-key{background:#52c41a;color:#fff}.option-tag{flex-shrink:0;font-size:.68rem;padding:.1rem .35rem;border-radius:4px;margin-left:auto}.option-tag.user{background:#e6f4ff;color:#1677ff}.option-tag.correct{background:#f6ffed;color:#389e0d}.review-answer-block{display:flex;flex-direction:column;gap:.65rem;margin-top:.25rem}.review-row{display:flex;flex-direction:column;gap:.35rem}.review-label{font-size:.78rem;color:#888;font-weight:600}.review-value{font-size:.9rem;line-height:1.6;color:#333;padding:.65rem .75rem;border-radius:8px;background:#f8fafc;white-space:pre-wrap}.review-value.correct{background:#f6ffed;color:#389e0d}.review-value.wrong{background:#fff1f0;color:#cf1322}.review-value.highlight{background:#f6ffed;color:#237804}.review-answer-summary{display:flex;flex-direction:column;gap:.35rem;margin-top:.75rem;padding:.75rem;border-radius:8px;background:#f8fafc;font-size:.85rem;color:#555}.review-answer-summary strong{color:#1a1a2e}.review-analysis{margin-top:.85rem;padding:.85rem;border-radius:10px;background:#fffbe6;border:1px solid #ffe58f}.review-analysis-title{font-size:.82rem;font-weight:600;color:#d48806;margin-bottom:.45rem}.review-analysis-body{font-size:.88rem;line-height:1.7;color:#444;white-space:pre-wrap}.paper-detail-page{min-height:100vh;max-width:560px;margin:0 auto;padding:12px 12px 24px;background:#f0f2f8;text-align:left}.detail-hero{display:flex;align-items:flex-start;gap:.65rem;margin-bottom:.85rem;padding:1.1rem 1rem;border-radius:16px;background:linear-gradient(135deg,#ffc069,#fa8c16,#d46b08);box-shadow:0 6px 20px #fa8c1647;color:#fff}.detail-hero.status-paid{background:linear-gradient(135deg,#95de64,#52c41a,#389e0d);box-shadow:0 6px 20px #52c41a40}.detail-hero.status-closed{background:linear-gradient(135deg,#d9d9d9,#8c8c8c,#595959);box-shadow:0 6px 20px #0000001f}.detail-back-btn{flex-shrink:0;width:2rem;height:2rem;padding:0;border:none;border-radius:10px;background:#fff3;color:#fff;font-size:1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-top:.1rem}.detail-hero-main{flex:1;min-width:0}.detail-hero-main h1{font-size:1.05rem;font-weight:700;line-height:1.45;margin-bottom:.35rem;word-break:break-word}.detail-hero-desc{font-size:.78rem;opacity:.9}.detail-hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.detail-status-tag{font-size:.68rem;padding:.15rem .45rem;border-radius:999px;font-weight:600;background:#ffffff40;color:#fff}.detail-status-tag.pending,.detail-status-tag.paid{background:#ffffff47}.detail-status-tag.closed{background:#fff3}.detail-order-no{font-size:.72rem;opacity:.88;word-break:break-all}.detail-hero-price{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;padding:.35rem .5rem;border-radius:10px;background:#ffffff2e;border:1px solid rgba(255,255,255,.25)}.detail-price-label{font-size:.62rem;opacity:.85}.detail-price-value{font-size:1.1rem;font-weight:700;line-height:1.2;font-variant-numeric:tabular-nums}.detail-status,.detail-error{background:#fff;border-radius:16px;padding:2rem;text-align:center;color:#666}.detail-error p{color:#cf1322;margin-bottom:.75rem}.detail-error button{padding:.5rem 1rem;border:none;border-radius:8px;background:#fa8c16;color:#fff;cursor:pointer}.detail-card{background:#fff;border-radius:16px;padding:.25rem 1.1rem 1.1rem;box-shadow:0 4px 16px #0000000f}.detail-section{display:flex;flex-direction:column}.detail-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.7rem 0;border-bottom:1px solid #f5f5f5}.detail-row:last-child{border-bottom:none}.detail-row .label{color:#888;font-size:.84rem;flex-shrink:0}.detail-row .value{color:#333;font-size:.84rem;text-align:right;word-break:break-all}.detail-success{background:#f6ffed;border:1px solid #b7eb8f;color:#389e0d;border-radius:10px;padding:.75rem 1rem;margin-bottom:.75rem;font-size:.9rem}.pay-section{margin-top:.5rem;padding-top:.75rem;border-top:1px solid #f0f0f0}.pay-button{width:100%;padding:.9rem;border:none;border-radius:14px;background:linear-gradient(135deg,#fa8c16,#d46b08);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;box-shadow:0 6px 18px #fa8c1659}.pay-button:disabled{opacity:.6;cursor:not-allowed}.pay-button.secondary{margin-top:.75rem;background:#fff;color:#fa8c16;border:1.5px solid #fa8c16;box-shadow:none}.paper-detail-page .spinner{width:32px;height:32px;border:3px solid #e8e8e8;border-top-color:#fa8c16;border-radius:50%;margin:0 auto .75rem;animation:detail-spin .8s linear infinite}@keyframes detail-spin{to{transform:rotate(360deg)}}.index-tab{text-align:left}.guest-hint{text-align:center;padding:2rem 1rem}.guest-hint p{color:#666;margin-bottom:1rem}.index-banner{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;padding:1.5rem 1.25rem;color:#fff;margin-bottom:1rem}.index-banner h1{font-size:1.4rem;margin-bottom:.35rem}.index-banner p{font-size:.85rem;opacity:.9}.paper-filters{display:flex;gap:.5rem;margin-bottom:.75rem}.filter-input{flex:1;padding:.55rem .75rem;border:none;border-radius:10px;font-size:.9rem}.filter-search-btn{padding:.55rem .9rem;border:none;border-radius:10px;background:#667eea;color:#fff;font-weight:600;cursor:pointer}.paper-type-tabs{display:flex;gap:.5rem;margin-bottom:.75rem}.paper-type-tabs button{flex:1;padding:.45rem .5rem;border-radius:8px;border:none;background:#fff;color:#666;font-size:.8rem;cursor:pointer}.paper-type-tabs button.active{background:#667eea;color:#fff;font-weight:600}.paper-list{list-style:none;display:flex;flex-direction:column;gap:.65rem}.paper-card{background:#fff;border-radius:12px;padding:.9rem 1rem;box-shadow:0 2px 8px #0000000d}.paper-card-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;margin-top:.25rem}.paper-action-group{display:flex;flex-shrink:0;gap:.4rem}.paper-action-btn{flex-shrink:0;padding:.45rem .85rem;border:none;border-radius:999px;font-size:.8rem;font-weight:600;cursor:pointer}.paper-action-btn:disabled{opacity:.6;cursor:not-allowed}.paper-action-btn.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.paper-action-btn.secondary{background:#fff;color:#667eea;border:1px solid #667eea}.paper-action-btn.buy{background:#fff7e6;color:#d48806;border:1px solid #ffd591}.paper-title{font-size:.95rem;font-weight:600;color:#1a1a2e;margin-bottom:.35rem}.paper-meta{display:flex;flex-wrap:wrap;gap:.5rem;font-size:.75rem;color:#888;margin-bottom:.45rem}.paper-tags{display:flex;gap:.35rem}.paper-tags .tag{font-size:.7rem;padding:.15rem .45rem;border-radius:4px}.paper-tags .tag.free{background:#f6ffed;color:#389e0d}.paper-tags .tag.paid{background:#fff7e6;color:#d48806}.paper-tags .tag.ok{background:#e6f7ff;color:#096dd9}.paper-tags .tag.muted{background:#f5f5f5;color:#999}.tab-pagination{display:flex;justify-content:center;align-items:center;gap:.75rem;margin-top:1rem;font-size:.8rem;color:#666}.index-tab .spinner{width:28px;height:28px;border:3px solid #e8e8e8;border-top-color:#667eea;border-radius:50%;margin:0 auto .5rem;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mine-tab{text-align:left}.mine-tab-hero{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.85rem;padding:1.15rem 1.1rem;border-radius:16px;background:linear-gradient(135deg,#8b9cf7,#667eea 45%,#764ba2);box-shadow:0 6px 20px #667eea47;color:#fff}.mine-tab-hero-main{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1}.mine-tab-hero-avatar{flex-shrink:0;width:2.75rem;height:2.75rem;display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700;background:#ffffff40;border-radius:50%;border:2px solid rgba(255,255,255,.35)}.mine-tab-hero-text{min-width:0}.mine-tab-hero-text h1{font-size:1.15rem;font-weight:700;line-height:1.3;margin-bottom:.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mine-tab-hero-desc{font-size:.72rem;line-height:1.4;opacity:.9;word-break:break-all}.mine-tab-hero-btn{flex-shrink:0;padding:.45rem .9rem;border:1px solid rgba(255,255,255,.45);border-radius:999px;background:#fff3;color:#fff;font-size:.82rem;font-weight:600;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.mine-menu{background:#fff;border-radius:14px;overflow:hidden;margin-bottom:1rem;box-shadow:0 2px 12px #0000000f}.menu-item{width:100%;display:flex;justify-content:space-between;align-items:center;padding:1rem 1.1rem;border:none;background:#fff;font-size:.9rem;color:#333;cursor:pointer;text-align:left}.menu-item .arrow{color:#ccc;font-size:1.1rem}.debug-token-panel{background:#fffbe6;border:1px solid #ffe58f;border-radius:12px;padding:.85rem 1rem;margin-bottom:.75rem}.debug-token-title{font-size:.88rem;font-weight:600;color:#ad6800;margin-bottom:.35rem}.debug-token-hint{font-size:.75rem;color:#d48806;margin-bottom:.6rem;line-height:1.5}.debug-token-input{width:100%;box-sizing:border-box;border:1px solid #ffe58f;border-radius:8px;padding:.65rem .75rem;font-size:.78rem;font-family:monospace;resize:vertical;margin-bottom:.65rem;background:#fff}.debug-token-actions{display:flex;flex-direction:column;gap:.5rem}.debug-token-btn{width:100%;padding:.65rem;border:1px solid #faad14;border-radius:8px;background:#fff;color:#d48806;font-size:.85rem;cursor:pointer}.debug-token-btn.primary{background:#faad14;border-color:#faad14;color:#fff;font-weight:600}.debug-token-btn.danger{border-color:#ffa39e;color:#cf1322}.debug-token-status,.debug-token-success,.debug-token-error{margin-top:.55rem;font-size:.75rem;word-break:break-all}.debug-token-status{color:#8c8c8c}.debug-token-success{color:#389e0d}.debug-token-error{color:#cf1322}.mine-tab .logout-btn{width:100%;padding:.85rem;border:none;border-radius:12px;background:#fff;color:#cf1322;font-size:.9rem;font-weight:500;cursor:pointer;box-shadow:0 2px 12px #0000000f}.order-tab{text-align:left}.order-tab-hero{display:flex;align-items:center;gap:.65rem;margin-bottom:.85rem;padding:1.15rem 1.1rem;border-radius:16px;background:linear-gradient(135deg,#ffc069,#fa8c16,#d46b08);box-shadow:0 6px 20px #fa8c1647;color:#fff}.order-back-btn{flex-shrink:0;width:2rem;height:2rem;padding:0;border:none;border-radius:10px;background:#fff3;color:#fff;font-size:1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.order-tab-hero-main{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1}.order-tab-hero-icon{flex-shrink:0;width:2.75rem;height:2.75rem;display:flex;align-items:center;justify-content:center;font-size:1.35rem;background:#ffffff38;border-radius:12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.order-tab-hero-text{min-width:0}.order-tab-hero-text h1{font-size:1.2rem;font-weight:700;line-height:1.3;margin-bottom:.2rem}.order-tab-hero-desc{font-size:.78rem;line-height:1.4;opacity:.92}.order-tab-hero-badge{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:3.25rem;padding:.45rem .55rem;border-radius:12px;background:#fff3;border:1px solid rgba(255,255,255,.28);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.order-tab-hero-badge-num{font-size:1.35rem;font-weight:700;line-height:1.1}.order-tab-hero-badge-label{font-size:.68rem;opacity:.9;margin-top:.1rem}.order-filter-tabs{display:flex;gap:.4rem;margin-bottom:.75rem;overflow-x:auto}.order-filter-tabs button{flex-shrink:0;padding:.4rem .75rem;border:none;border-radius:999px;background:#fff;color:#666;font-size:.8rem;cursor:pointer;box-shadow:0 1px 4px #0000000a}.order-filter-tabs button.active{background:#fa8c16;color:#fff}.tab-error button{padding:.5rem 1rem;border:none;border-radius:8px;background:#fa8c16;color:#fff;cursor:pointer}.order-list{list-style:none;display:flex;flex-direction:column;gap:.65rem}.order-card{background:#fff;border-radius:14px;padding:.95rem 1rem;box-shadow:0 2px 10px #0000000d;border-left:3px solid #d9d9d9;transition:box-shadow .2s,transform .2s}.order-card.clickable{cursor:pointer}.order-card.clickable:active{transform:scale(.99)}.order-card.status-pending{border-left-color:#fa8c16}.order-card.status-paid{border-left-color:#52c41a}.order-card.status-closed{border-left-color:#bfbfbf}.order-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;margin-bottom:.4rem}.order-title{flex:1;font-size:.95rem;font-weight:600;color:#1a1a2e;line-height:1.45}.order-status-tag{flex-shrink:0;font-size:.68rem;padding:.18rem .5rem;border-radius:999px;font-weight:600}.order-status-tag.pending{background:#fff7e6;color:#d46b08}.order-status-tag.paid{background:#f6ffed;color:#389e0d}.order-status-tag.closed{background:#f5f5f5;color:#8c8c8c}.order-meta{font-size:.72rem;color:#999;margin-bottom:.65rem;word-break:break-all}.order-footer{display:flex;justify-content:space-between;align-items:center;padding-top:.55rem;border-top:1px solid #f5f5f5}.order-price{color:#d46b08;font-weight:700;font-size:1.05rem}.order-action{font-size:.82rem;color:#fa8c16;font-weight:600}.order-arrow{font-size:1.1rem;color:#ccc;line-height:1}.order-tab .spinner{width:28px;height:28px;border:3px solid #e8e8e8;border-top-color:#fa8c16;border-radius:50%;margin:0 auto .5rem;animation:order-spin .8s linear infinite}@keyframes order-spin{to{transform:rotate(360deg)}}.record-tab{text-align:left}.record-tab-hero{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.85rem;padding:1.15rem 1.1rem;border-radius:16px;background:linear-gradient(135deg,#69b1ff,#1677ff,#0958d9);box-shadow:0 6px 20px #1677ff38;color:#fff}.record-tab-hero-main{display:flex;align-items:center;gap:.75rem;min-width:0}.record-tab-hero-icon{flex-shrink:0;width:2.75rem;height:2.75rem;display:flex;align-items:center;justify-content:center;font-size:1.35rem;background:#ffffff38;border-radius:12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.record-tab-hero-text{min-width:0}.record-tab-hero-text h1{font-size:1.2rem;font-weight:700;line-height:1.3;margin-bottom:.2rem}.record-tab-hero-desc{font-size:.78rem;line-height:1.4;opacity:.92}.record-tab-hero-badge{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:3.25rem;padding:.45rem .55rem;border-radius:12px;background:#fff3;border:1px solid rgba(255,255,255,.28);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.record-tab-hero-badge-num{font-size:1.35rem;font-weight:700;line-height:1.1}.record-tab-hero-badge-label{font-size:.68rem;opacity:.9;margin-top:.1rem}.record-filter-tabs{display:flex;gap:.4rem;margin-bottom:.55rem;overflow-x:auto}.record-filter-tabs:last-of-type{margin-bottom:.75rem}.record-filter-tabs button{flex-shrink:0;padding:.4rem .75rem;border:none;border-radius:999px;background:#fff;color:#666;font-size:.8rem;cursor:pointer}.record-filter-tabs button.active{background:#1677ff;color:#fff}.record-list{list-style:none;display:flex;flex-direction:column;gap:.65rem}.record-card{background:#fff;border-radius:12px;padding:.9rem 1rem;box-shadow:0 2px 8px #0000000d}.record-card.clickable{cursor:pointer}.record-card-head{margin-bottom:.5rem}.record-title{font-size:.95rem;font-weight:600;color:#1a1a2e;margin-bottom:.35rem}.record-tags{display:flex;flex-wrap:wrap;gap:.35rem}.record-tags .tag{font-size:.7rem;padding:.15rem .45rem;border-radius:4px}.record-tags .tag.type{background:#f0f5ff;color:#2f54eb}.record-tags .tag.status.ongoing{background:#e6f7ff;color:#096dd9}.record-tags .tag.status.submitted,.record-tags .tag.status.pending{background:#fff7e6;color:#d48806}.record-tags .tag.status.done{background:#f6ffed;color:#389e0d}.record-tags .tag.status.timeout{background:#fff1f0;color:#cf1322}.record-meta,.record-footer{display:flex;flex-wrap:wrap;gap:.5rem .75rem;font-size:.75rem;color:#999}.record-meta{margin-bottom:.35rem}.record-score{color:#d48806;font-weight:600}.record-footer .passed{color:#389e0d;font-weight:500}.record-footer .failed{color:#cf1322;font-weight:500}.record-tab .spinner{width:28px;height:28px;border:3px solid #e8e8e8;border-top-color:#667eea;border-radius:50%;margin:0 auto .5rem;animation:record-spin .8s linear infinite}@keyframes record-spin{to{transform:rotate(360deg)}}.wrong-tab{text-align:left}.wrong-tab-hero{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.85rem;padding:1.15rem 1.1rem;border-radius:16px;background:linear-gradient(135deg,#ff9c6e,#ff7875 45%,#f5222d);box-shadow:0 6px 20px #f5222d38;color:#fff}.wrong-tab-hero-main{display:flex;align-items:center;gap:.75rem;min-width:0}.wrong-tab-hero-icon{flex-shrink:0;width:2.75rem;height:2.75rem;display:flex;align-items:center;justify-content:center;font-size:1.35rem;background:#ffffff38;border-radius:12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.wrong-tab-hero-text{min-width:0}.wrong-tab-hero-text h1{font-size:1.2rem;font-weight:700;line-height:1.3;margin-bottom:.2rem}.wrong-tab-hero-desc{font-size:.78rem;line-height:1.4;opacity:.92}.wrong-tab-hero-badge{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:3.25rem;padding:.45rem .55rem;border-radius:12px;background:#fff3;border:1px solid rgba(255,255,255,.28);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.wrong-tab-hero-badge-num{font-size:1.35rem;font-weight:700;line-height:1.1}.wrong-tab-hero-badge-label{font-size:.68rem;opacity:.9;margin-top:.1rem}.guest-hint p{margin-bottom:1rem}.guest-login-btn{padding:.65rem 1.5rem;border:none;border-radius:10px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9rem;cursor:pointer}.tab-status,.tab-empty,.tab-error{background:#fff;border-radius:12px;padding:2rem;text-align:center;color:#666}.tab-error p{color:#cf1322;margin-bottom:.75rem}.tab-error button{padding:.5rem 1rem;border:none;border-radius:8px;background:#667eea;color:#fff;cursor:pointer}.tab-pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:1rem;font-size:.85rem;color:#666}.tab-pagination button{padding:.4rem .75rem;border:1px solid #ddd;border-radius:8px;background:#fff;cursor:pointer}.tab-pagination button:disabled{opacity:.4;cursor:not-allowed}.wrong-list{list-style:none;display:flex;flex-direction:column;gap:.65rem}.wrong-card{background:#fff;border-radius:12px;padding:.9rem 1rem;box-shadow:0 2px 8px #0000000d;border-left:3px solid #ff7875}.wrong-card.clickable{cursor:pointer}.wrong-card.expanded{border-left-color:#f5222d;box-shadow:0 4px 14px #f5222d1f}.wrong-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.5rem}.wrong-type{font-size:.72rem;padding:.15rem .45rem;border-radius:4px;background:#f0f5ff;color:#2f54eb}.wrong-difficulty{font-size:.72rem;padding:.15rem .45rem;border-radius:4px;background:#f5f5f5;color:#666}.wrong-count{margin-left:auto;font-size:.72rem;padding:.15rem .45rem;border-radius:4px;background:#fff1f0;color:#cf1322;font-weight:600}.wrong-content{font-size:.9rem;line-height:1.65;color:#1a1a2e;white-space:pre-wrap;margin-bottom:.5rem}.wrong-footer{display:flex;justify-content:space-between;align-items:center;gap:.5rem;font-size:.75rem;color:#999}.wrong-expand-hint{color:#f5222d;font-weight:500}.wrong-detail{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed #f0f0f0}.wrong-detail-loading{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed #f0f0f0;font-size:.82rem;color:#999;text-align:center}.wrong-detail-error{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed #f0f0f0;text-align:center}.wrong-detail-error p{font-size:.82rem;color:#cf1322;margin-bottom:.5rem}.wrong-detail-error button{padding:.35rem .75rem;border:none;border-radius:8px;background:#667eea;color:#fff;font-size:.8rem;cursor:pointer}.wrong-detail-row{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.65rem}.wrong-detail-label{font-size:.78rem;color:#888;font-weight:600}.wrong-detail-value.answer{font-size:.9rem;color:#389e0d;font-weight:600;padding:.55rem .7rem;border-radius:8px;background:#f6ffed;white-space:pre-wrap}.wrong-detail-analysis{padding:.75rem;border-radius:10px;background:#fffbe6;border:1px solid #ffe58f}.wrong-detail-analysis-body{font-size:.88rem;line-height:1.65;color:#444;white-space:pre-wrap}.wrong-content-image,.wrong-analysis-image{max-width:100%;border-radius:8px}.wrong-detail-score{font-size:.75rem;color:#999;margin-bottom:.65rem}.wrong-option-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.65rem}.wrong-option-item{display:flex;align-items:flex-start;gap:.55rem;padding:.65rem .75rem;border:1px solid #e8e8e8;border-radius:10px;background:#fafafa}.wrong-option-item.correct{border-color:#52c41a;background:#f6ffed}.wrong-option-key{flex-shrink:0;width:1.4rem;height:1.4rem;border-radius:50%;background:#f0f0f0;color:#333;display:inline-flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:600}.wrong-option-item.correct .wrong-option-key{background:#52c41a;color:#fff}.wrong-option-content{flex:1;font-size:.88rem;line-height:1.55;color:#333}.wrong-option-tag{flex-shrink:0;font-size:.68rem;padding:.1rem .35rem;border-radius:4px;background:#f6ffed;color:#389e0d;font-weight:600}.wrong-detail-summary{margin-bottom:.65rem;padding:.55rem .7rem;border-radius:8px;background:#f8fafc;font-size:.85rem;color:#555}.wrong-detail-summary strong{color:#389e0d}.wrong-tab .spinner{width:28px;height:28px;border:3px solid #e8e8e8;border-top-color:#667eea;border-radius:50%;margin:0 auto .5rem;animation:wrong-spin .8s linear infinite}@keyframes wrong-spin{to{transform:rotate(360deg)}}.main-layout{min-height:100vh;display:flex;flex-direction:column;background:#f5f6fa}.main-content{flex:1;overflow-y:auto;padding:12px 12px 72px;-webkit-overflow-scrolling:touch}.tab-bar{position:fixed;left:0;right:0;bottom:0;z-index:100;display:flex;width:100%;height:56px;padding-bottom:env(safe-area-inset-bottom,0);background:#fff;border-top:1px solid #eee;box-shadow:0 -2px 12px #0000000f}.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:#999;font-size:.7rem;transition:color .2s}.tab-item.active{color:#667eea}.tab-icon{font-size:1.25rem;line-height:1}.tab-label{font-weight:500}.tab-item.active .tab-label{font-weight:600}.app.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:transparent}.container{width:100%;max-width:560px;text-align:center}.title{color:#fff;font-size:2.5rem;font-weight:700;margin-bottom:2rem;text-shadow:0 2px 10px rgba(0,0,0,.2)}.warning{background:#fff;border-radius:16px;padding:2rem;box-shadow:0 10px 40px #0003}.warning p{color:#666;font-size:1.1rem;margin:.5rem 0}.warning p:first-child{font-size:1.5rem;color:#ff6b6b;font-weight:600}.version-pill{margin-top:.5rem;display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;border-radius:999px;background:#ffffff2e;color:#f1f5ff;font-size:.7rem;border:1px solid rgba(255,255,255,.35);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);margin-bottom:2rem}*{margin:0;padding:0;box-sizing:border-box}html{background:#667eea}html:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(135deg,#667eea,#764ba2);pointer-events:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden;background:transparent}#root{min-height:100vh;background:transparent}
