:root{--ink: #18202c;--muted: #525d6f;--line: #d4dce7;--bg: #f4f6f9;--card-bg: #ffffff;--panel: #f7f9fc;--primary: #1f5fa8;--primary-hover: #174984;--primary-soft: #eaf2fb;--ok: #1e6f4d;--ok-soft: #e7f6ee;--ok-border: #a8dec2;--warn: #9a5b13;--warn-soft: #fef6e6;--warn-border: #f0d090;--danger: #b93822;--danger-soft: #fbeee9;--danger-border: #efb9ad;--radius: 10px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 Noto Sans SC,PingFang SC,Microsoft YaHei,-apple-system,BlinkMacSystemFont,sans-serif;-webkit-font-smoothing:antialiased}button,input{font-family:inherit}button:focus-visible,input:focus-visible,label.radio-card:focus-within{outline:3px solid var(--primary);outline-offset:2px}.app-shell{min-height:100vh;display:flex;flex-direction:column;padding-bottom:68px}.app-header{background:var(--card-bg);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;box-shadow:0 2px 8px #18202c0a}.app-header-inner{max-width:1120px;margin:0 auto;padding:12px 16px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px}.brand-title-row{display:flex;align-items:center;gap:12px}.brand-logo{width:40px;height:40px;border-radius:9px;background:var(--primary);color:#fff;font-weight:800;font-size:21px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.brand-title{font-size:18px;margin:0;line-height:1.25}.brand-subtitle{margin:2px 0 0;font-size:12.5px;color:var(--muted)}.header-controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.subject-pill-group{display:inline-flex;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:3px;gap:4px}.subject-pill{border:none;background:transparent;color:var(--muted);font-weight:600;font-size:13.5px;padding:5px 12px;border-radius:6px;cursor:pointer}.subject-pill.active{background:var(--primary);color:#fff}.header-utility-btns{display:flex;gap:10px}.btn-link{border:none;background:none;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;padding:4px 6px;text-decoration:underline}.btn-link-danger{color:var(--danger)}.main-tabs-nav{max-width:1120px;margin:0 auto;padding:0 16px 10px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.main-tab-btn{display:flex;align-items:center;gap:10px;text-align:left;padding:10px 14px;border-radius:8px;border:1.5px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;transition:all .15s ease}.main-tab-btn:hover{border-color:var(--primary)}.main-tab-btn.active{background:var(--primary-soft);border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.tab-step{width:26px;height:26px;border-radius:50%;background:var(--line);color:var(--ink);font-weight:700;font-size:13.5px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.main-tab-btn.active .tab-step{background:var(--primary);color:#fff}.tab-text{display:flex;flex-direction:column}.tab-text strong{font-size:14.5px}.tab-text small{font-size:12px;color:var(--muted)}.app-main{flex:1}.page-container{max-width:1120px;margin:0 auto;padding:20px 16px 36px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:8px;font-size:14.5px;font-weight:600;cursor:pointer;border:1.5px solid transparent;transition:all .15s ease}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--card-bg);color:var(--primary);border-color:var(--primary)}.btn-secondary:hover{background:var(--primary-soft)}.btn-outline{background:var(--panel);color:var(--ink);border-color:var(--line)}.btn-outline:hover{border-color:var(--muted)}.btn-large{padding:13px 26px;font-size:16px}.btn-small{padding:5px 10px;font-size:12.5px;font-weight:600;border-radius:6px;border:1px solid var(--line);background:var(--card-bg);cursor:pointer}.btn-small:disabled{opacity:.45;cursor:not-allowed}.btn-small-danger{color:var(--danger);border-color:var(--danger-border)}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700}.badge-ok{background:var(--ok-soft);color:var(--ok);border:1px solid var(--ok-border)}.badge-warn{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn-border)}.badge-danger{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-border)}.badge-neutral{background:var(--panel);color:var(--muted);border:1px solid var(--line)}.hero-banner{background:var(--card-bg);border:1px solid var(--line);border-left:5px solid var(--primary);border-radius:var(--radius);padding:16px 20px;margin-bottom:18px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px}.hero-badge-row{display:flex;gap:8px;margin-bottom:6px}.hero-banner h2{margin:0 0 4px;font-size:19px}.hero-banner p{margin:0;color:var(--muted);max-width:680px}.upload-form{display:flex;flex-direction:column;gap:18px}.form-fieldset{background:var(--card-bg);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin:0}.form-legend{font-weight:700;font-size:16px;padding:0 6px;color:var(--ink)}.form-grid-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.form-field{display:flex;flex-direction:column;gap:6px}.form-label{font-weight:600;font-size:14px}.form-input{padding:10px 12px;border:1.5px solid var(--line);border-radius:8px;font-size:15px}.form-hint{font-size:12px;color:var(--muted)}.radio-card-grid{display:grid;gap:10px}.radio-card-grid-4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.radio-card-grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.radio-card{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1.5px solid var(--line);border-radius:8px;background:var(--panel);cursor:pointer;transition:all .15s ease}.radio-card:hover{border-color:var(--primary)}.radio-card.selected{background:var(--primary-soft);border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.radio-card input[type=radio]{margin-top:4px;width:18px;height:18px;accent-color:var(--primary);flex-shrink:0}.radio-card-title{font-weight:700;font-size:14.5px}.radio-card-desc{font-size:12.5px;color:var(--muted);margin-top:2px}.upload-guide-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-bottom:14px}.upload-guide-actions{display:flex;flex-wrap:wrap;gap:10px}.sr-only-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}.uploaded-photo-list{display:flex;flex-direction:column;gap:12px}.uploaded-photo-card{display:flex;flex-wrap:wrap;gap:16px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#fff}.uploaded-photo-thumb{width:220px;max-height:160px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}.uploaded-photo-detail{flex:1;min-width:240px;display:flex;flex-direction:column;gap:8px}.page-order-badge{display:inline-block;background:var(--primary);color:#fff;font-size:12px;font-weight:700;padding:2px 8px;border-radius:4px;margin-right:8px}.photo-warning-box{background:var(--warn-soft);border:1px solid var(--warn-border);color:#78440a;padding:8px 12px;border-radius:6px;font-size:13px}.photo-ok-box{background:var(--ok-soft);border:1px solid var(--ok-border);color:var(--ok);padding:6px 10px;border-radius:6px;font-size:13px}.photo-card-controls{display:flex;gap:8px;margin-top:auto}.form-submit-bar{display:flex;justify-content:flex-end}.exam-selector-bar{margin-bottom:16px}.exam-selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.section-eyebrow{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.exam-tabs-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}.exam-tab-card{text-align:left;background:var(--card-bg);border:1.5px solid var(--line);border-radius:8px;padding:12px 14px;cursor:pointer;transition:all .15s ease}.exam-tab-card.active{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 1px var(--primary)}.exam-tab-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.exam-code-badge{font-weight:800;font-size:13px;color:var(--primary)}.status-pill{font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--panel);border:1px solid var(--line)}.status-ready_to_print{background:var(--primary-soft);color:var(--primary);border-color:#b7d4f6}.status-submitted_grading,.status-diagnosing{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-border)}.status-retest_or_done,.status-done{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-border)}.exam-tab-title{font-weight:700;font-size:14.5px;margin-bottom:2px}.exam-tab-meta{font-size:12.5px;color:var(--muted)}.toast-banner{background:var(--ok-soft);border:1.5px solid var(--ok);color:var(--ink);padding:12px 16px;border-radius:8px;margin-bottom:16px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-weight:600}.task-detail-card{background:var(--card-bg);border:1px solid var(--line);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:20px}.stepper-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px}.task-main-title{margin:2px 0 0;font-size:20px}.task-meta-badges{display:flex;flex-wrap:wrap;gap:8px}.stepper-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.stepper-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;border:1.5px solid var(--line);background:var(--panel);text-align:left;cursor:pointer}.stepper-item.current{border-color:var(--primary);background:var(--primary-soft)}.stepper-item.completed{border-color:var(--ok-border);background:var(--ok-soft)}.stepper-circle{width:28px;height:28px;border-radius:50%;background:#fff;border:1.5px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex-shrink:0}.stepper-item.current .stepper-circle{background:var(--primary);color:#fff;border-color:var(--primary)}.stepper-item.completed .stepper-circle{background:var(--ok);color:#fff;border-color:var(--ok)}.stepper-label{font-weight:700;font-size:13.5px}.stepper-desc{font-size:11.5px;color:var(--muted)}.degrade-notice-bar{background:var(--warn-soft);border:1px solid var(--warn-border);padding:10px 14px;border-radius:8px;font-size:13.5px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.true-strength-card{background:var(--ok-soft);border:2px solid var(--ok-border);border-radius:var(--radius);padding:16px 18px}.true-strength-header{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.strength-icon{font-size:24px;line-height:1}.true-strength-header h3{margin:0;color:var(--ok);font-size:17.5px}.strength-sub{margin:2px 0 0;font-size:13px;color:#265942}.strength-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.strength-item{background:#fff;border:1px solid var(--ok-border);border-radius:8px;padding:12px 14px}.strength-qref{font-size:12.5px;font-weight:700;color:var(--ok)}.strength-title{font-weight:700;font-size:14.5px;margin:3px 0 5px}.strength-detail{margin:0;font-size:13px;color:var(--muted)}.three-sentence-card{background:#fff;border:1.5px solid var(--line);border-radius:var(--radius);padding:16px 18px}.three-sentence-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px}.three-sentence-header h3{margin:0;font-size:17px}.score-pill{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-border);font-weight:700;font-size:13.5px;padding:3px 10px;border-radius:6px}.three-sentence-list{display:flex;flex-direction:column;gap:10px}.sentence-row{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;border-radius:8px;background:var(--panel)}.sentence-row p{margin:0;flex:1}.sentence-tag{font-weight:700;font-size:13px;padding:2px 8px;border-radius:4px;white-space:nowrap}.sentence-good .sentence-tag{background:var(--ok-soft);color:var(--ok)}.sentence-gap .sentence-tag{background:var(--warn-soft);color:var(--warn)}.sentence-next{background:var(--primary-soft);border:1px solid #b7d4f6}.sentence-next .sentence-tag{background:var(--primary);color:#fff}.print-packs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.print-pack-card{border:1.5px solid var(--line);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;background:var(--panel)}.pack-student{border-color:var(--primary);background:#f8fbff}.pack-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.pack-pages{font-size:12px;color:var(--muted)}.print-pack-card h3{margin:0 0 10px;font-size:17px}.pack-contents-list{margin:0 0 16px;padding-left:18px;font-size:13.5px;display:flex;flex-direction:column;gap:6px;flex:1}.pack-card-actions{margin-top:auto}.loop-closure-panel{border:1.5px dashed var(--primary);border-radius:var(--radius);padding:16px 18px;background:var(--primary-soft)}.closure-step-box{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px}.closure-step-info{flex:1;min-width:260px}.closure-step-info h4{margin:6px 0 4px;font-size:16px}.closure-step-info p{margin:0;font-size:13.5px;color:var(--muted)}.closure-step-actions{display:flex;flex-wrap:wrap;gap:10px}.mobile-quick-summary{border-top:1px solid var(--line);padding-top:14px}.quick-rules-list{display:flex;flex-direction:column;gap:10px}.quick-rule-item{display:flex;gap:12px;padding:10px 14px;background:var(--panel);border:1px solid var(--line);border-radius:8px}.quick-rule-num{font-weight:800;color:var(--primary);white-space:nowrap}.quick-rule-action{color:var(--ok);margin:2px 0}.quick-rule-ev{font-size:12.5px;color:var(--muted)}.profile-top-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.profile-subtabs{display:flex;flex-wrap:wrap;gap:8px}.subtab-btn{padding:9px 15px;border-radius:8px;border:1.5px solid var(--line);background:var(--card-bg);font-weight:700;font-size:14px;cursor:pointer}.subtab-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.profile-sheet-card{background:var(--card-bg);border:1px solid var(--line);border-radius:var(--radius);padding:22px}.profile-sheet-header h2{margin:0 0 6px;font-size:21px}.profile-sheet-desc{margin:0 0 16px;color:var(--muted);font-size:14px}.progress-summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:20px}.sum-card{display:flex;align-items:center;gap:14px;padding:12px 16px;border-radius:8px;border:1px solid var(--line);background:var(--panel)}.sum-num{font-size:28px;font-weight:800;line-height:1}.sum-todo .sum-num{color:var(--danger)}.sum-passed .sum-num,.sum-done .sum-num{color:var(--ok)}.sum-label{display:flex;flex-direction:column}.sum-label small{font-size:12px;color:var(--muted)}.weakness-group{margin-top:22px}.weakness-group-title{font-size:16.5px;margin:0 0 8px;padding-left:10px;border-left:4px solid var(--primary);display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}.weakness-group-note{font-size:12.5px;font-weight:400;color:var(--muted)}.subcat-chip{display:inline-block;font-size:11.5px;font-weight:700;background:var(--primary-soft);color:var(--primary);padding:1px 7px;border-radius:4px;margin-bottom:4px}.weakness-rule-line{font-size:13px;color:var(--muted);margin-top:4px}.stage-badge{display:inline-flex;flex-direction:column;padding:4px 8px;border-radius:6px;font-size:12.5px}.stage-dots{letter-spacing:3px;font-size:16px;font-weight:800}.stage-found{background:var(--danger-soft);color:var(--danger)}.stage-passed,.stage-done{background:var(--ok-soft);color:var(--ok)}.btn-inline-link{border:none;background:none;color:var(--primary);padding:0;font-size:13.5px;font-weight:600;text-align:left;cursor:pointer;text-decoration:underline}.circle-method-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.circle-step-card{border:1px solid var(--line);border-radius:8px;padding:14px;background:var(--panel)}.circle-step-title{font-weight:800;color:var(--primary);font-size:16px}.circle-step-rule{font-weight:700;margin:4px 0 6px}.circle-step-detail{font-size:13px;color:var(--muted);margin:0 0 8px}.circle-step-example{font-size:12.5px;background:#fff;border:1px solid var(--line);padding:6px 8px;border-radius:6px}.knowledge-chapter-box{margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}.ks-block{margin:12px 0}.ks-block h4{margin:0 0 6px;font-size:15px}.ks-chain-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:8px}.ks-chain-title{font-weight:700;font-size:13.5px;color:var(--primary)}.ks-chain-text{font-size:13.5px;margin-top:3px}.print-action-bar{background:#1d2433;color:#fff;padding:12px 18px;border-radius:var(--radius);margin-bottom:16px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;position:sticky;top:12px;z-index:40}.print-action-info{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.print-action-buttons{display:flex;gap:10px}.a4-document{background:#fff;color:#1d2433;max-width:820px;margin:0 auto;padding:28px 32px;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 16px #0000000f;font-size:14px;line-height:1.65}.a4-doc-type{font-size:12px;font-weight:700;color:var(--ok);text-transform:uppercase;letter-spacing:.5px}.a4-doc-type-parent{color:var(--danger)}.a4-title{font-size:22px;margin:4px 0 6px}.a4-meta{display:flex;flex-wrap:wrap;gap:16px;font-size:12.5px;color:var(--muted);margin-bottom:10px}.a4-degrade-banner{background:#f7f1dc;border:1px solid #e3cf86;border-radius:6px;padding:8px 12px;font-size:12.5px;margin-bottom:14px}.a4-tag-warn{display:inline-block;background:#fbeee9;color:#c2452d;border:1px solid #efc9bd;padding:0 6px;border-radius:4px;font-weight:600}.a4-section h2{font-size:16.5px;margin:20px 0 8px;padding-left:10px;border-left:4px solid #c2452d}.a4-section h3{font-size:14.5px;margin:12px 0 6px}.a4-box{border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin:10px 0;background:#fff}.a4-box-good{background:#e9f5ef;border-color:#bfe0cf}.a4-box-label{font-size:12.5px;font-weight:700;color:var(--ok);margin-bottom:4px}.a4-hero{background:#fbeee9;border:1px solid #efc9bd;border-radius:8px;padding:12px 14px;margin:10px 0}.a4-hero-root{font-weight:700;font-size:15px;margin-bottom:6px}.a4-three-sentences p{margin:4px 0}.a4-figure{margin:8px 0 12px;text-align:center}.a4-exam-img{width:100%;max-width:680px;border:1px solid var(--line);border-radius:6px}.a4-figcaption{font-size:12px;color:var(--muted);margin-top:4px}.a4-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:13.5px}.a4-table th,.a4-table td{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}.a4-table th{background:var(--panel);font-weight:600}.a4-subcat{font-size:12px;color:var(--primary);font-weight:600}.a4-ok{color:var(--ok);font-weight:600}.a4-wrong{color:var(--danger);font-weight:600}.a4-muted{color:var(--muted);font-size:12.5px}.a4-group-banner{background:var(--panel);padding:6px 10px;border-radius:6px;font-size:13px;margin-bottom:8px}.a4-q-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap}.a4-q-ans-bar{margin:4px 0 8px;font-size:13.5px}.a4-tag-ev{color:var(--ok);font-weight:700;font-size:12px}.a4-tag-guess{color:var(--warn);font-weight:700;font-size:12px}.a4-student-confirm-line{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--muted)}.a4-takeaway{background:#f7f1dc;border:1px solid #e3cf86;border-radius:8px;padding:10px 14px;margin-top:12px}.a4-write-box{border:1.5px dashed #6b7485;border-radius:8px;min-height:64px;padding:8px 12px;margin:8px 0;background:#fcfdfd}.a4-write-prompt{font-size:12.5px;font-weight:600;color:#495264}.a4-chain-blank-box,.a4-chain-full-box{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:10px 12px;font-weight:600;line-height:1.8}.a4-pre-line{white-space:pre-line}.nobreak{break-inside:avoid;page-break-inside:avoid}.mobile-bottom-nav{display:none}@media (max-width: 768px){.main-tabs-nav{grid-template-columns:1fr}.mobile-bottom-nav{display:grid;grid-template-columns:repeat(3,1fr);position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:50}.mobile-nav-item{border:none;background:none;padding:12px 6px;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer}.mobile-nav-item.active{color:var(--primary);background:var(--primary-soft)}.a4-document{padding:16px}}@media print{@page{size:A4;margin:12mm}body{background:#fff!important;color:#000!important;font-size:13px}.no-print,.app-header,.mobile-bottom-nav{display:none!important}.app-shell,.page-container,.print-mode-container{padding:0!important;margin:0!important;max-width:100%!important}.a4-document,.profile-sheet-card{border:none!important;box-shadow:none!important;padding:0!important;max-width:100%!important}.a4-page-break{break-before:page;page-break-before:always}.nobreak,tr,.a4-box{break-inside:avoid;page-break-inside:avoid}}
