:root{--bg:#f5f6f8;--surface:#fff;--surface-muted:#f9fafb;--border:#e4e7ec;--text:#101828;--muted:#667085;--accent:#155eef;--accent-hover:#004eeb;--accent-soft:#eef4ff;--green:#067647;--green-soft:#ecfdf3;--red:#b42318;--red-soft:#fef3f2;--radius:14px;--shadow:0 1px 2px #1018280a}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.6}a{color:inherit;text-decoration:none}button{font:inherit}.container{width:100%;max-width:820px;margin:0 auto;padding:0 20px}.site-header{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#ffffffeb;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;height:58px;display:flex}.brand{letter-spacing:-.01em;font-size:17px;font-weight:700}.brand:before{content:"";background:var(--accent);border-radius:2px;width:8px;height:8px;margin-right:8px;display:inline-block;transform:translateY(-1px)}.nav{color:var(--muted);gap:20px;font-size:14px;display:flex}.nav a:hover{color:var(--text)}.main{min-height:calc(100vh - 140px);padding-top:36px;padding-bottom:64px}.footer{color:#98a2b3;border-top:1px solid var(--border);padding-top:20px;padding-bottom:32px;font-size:12px}.hero{margin-bottom:28px}.hero-title{letter-spacing:-.02em;margin:0 0 8px;font-size:28px;line-height:1.25}.hero-sub{color:var(--muted);margin:0}.section-head{justify-content:space-between;align-items:baseline;margin:32px 0 14px;display:flex}.section-title{margin:0;font-size:17px}.section-note{color:var(--muted);font-size:13px}.subject-tabs{flex-wrap:wrap;gap:8px;margin:0 0 4px;display:flex}.subject-tab{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:14px;font-weight:500;display:inline-flex}.subject-tab:hover{border-color:var(--accent);color:var(--accent)}.subject-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.subject-tab-count{font-variant-numeric:tabular-nums;opacity:.75;font-size:12px}.subject-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.subject-card{padding:20px;transition:border-color .15s,transform .15s,box-shadow .15s;display:block}.subject-card:hover{border-color:#c7d7fe;transform:translateY(-1px);box-shadow:0 6px 18px #1018280f}.subject-title{margin:0 0 4px;font-size:17px}.subject-full{color:var(--muted);min-height:38px;font-size:13px}.stats-row{gap:22px;margin-top:16px;display:flex}.stat-value{letter-spacing:-.01em;font-size:20px;font-weight:650}.stat-label{color:var(--muted);font-size:12px}.progress{background:#eef0f3;border-radius:999px;height:6px;margin-top:16px;overflow:hidden}.progress-bar{background:var(--accent);border-radius:999px;height:100%;transition:width .3s}.subject-foot{color:var(--muted);justify-content:space-between;margin-top:8px;font-size:12px;display:flex}.badge{background:var(--accent-soft);color:var(--accent);border-radius:999px;align-items:center;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.badge-muted{background:var(--surface-muted);color:var(--muted);border:1px solid var(--border)}.badge-year{background:var(--surface);color:var(--accent);border:1px solid var(--accent)}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-title{letter-spacing:-.02em;margin:0 0 6px;font-size:24px}.page-sub{color:var(--muted);margin:0;font-size:14px}.back-link{color:var(--muted);margin-bottom:14px;font-size:13px;display:inline-block}.back-link:hover{color:var(--text)}.chapter-list{flex-direction:column;gap:10px;display:flex}.chapter-item{align-items:center;gap:16px;padding:16px 18px;display:flex}.chapter-index{background:var(--surface-muted);border:1px solid var(--border);width:30px;height:30px;color:var(--muted);border-radius:9px;flex:none;justify-content:center;align-items:center;font-size:13px;display:flex}.chapter-main{flex:1;min-width:0}.chapter-title{font-size:15px;font-weight:550}.chapter-meta{color:var(--muted);gap:14px;margin-top:4px;font-size:12px;display:flex}.chapter-meta .ok{color:var(--green)}.chapter-action{flex:none}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:6px;height:36px;padding:0 16px;font-size:14px;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn:disabled{cursor:not-allowed;opacity:.55}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-ghost:hover:not(:disabled){color:var(--accent);border-color:#c7d7fe}.btn-block{width:100%;height:44px}.start-action{align-items:center;gap:10px;display:flex}.inline-error{color:var(--red);font-size:12px}.empty{text-align:center;color:var(--muted);padding:48px 24px}.empty-title{color:var(--text);margin:0 0 6px;font-size:16px;font-weight:600}.notice{color:#93370d;background:#fffaeb;border:1px solid #fec84b;border-radius:10px;padding:14px 16px;font-size:14px}.paper-list{flex-direction:column;gap:10px;display:flex}.paper-item{align-items:center;gap:16px;padding:16px 18px;display:flex}.paper-main{flex:1;min-width:0}.paper-title{font-weight:550}.paper-meta{color:var(--muted);gap:12px;margin-top:4px;font-size:12px;display:flex}.wrong-grid{flex-direction:column;gap:12px;display:flex}.wrong-item{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.wrong-count{letter-spacing:-.02em;font-size:26px;font-weight:650}.wrong-count span{color:var(--muted);margin-left:4px;font-size:13px;font-weight:400}.practice-head{color:var(--muted);justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;font-size:13px;display:flex}.practice-count{font-variant-numeric:tabular-nums}.practice-head .back-link{margin-bottom:0}.question-card{padding:24px}.question-meta{align-items:center;gap:10px;margin-bottom:14px;display:flex}.question-stem{white-space:pre-wrap;word-break:break-word;margin:0 0 20px;font-size:17px;line-height:1.7}.options{flex-direction:column;gap:10px;display:flex}.option{text-align:left;background:var(--surface);border:1px solid var(--border);cursor:pointer;width:100%;color:var(--text);border-radius:11px;align-items:flex-start;gap:12px;padding:13px 14px;transition:border-color .12s,background .12s;display:flex}.option:hover:not(:disabled){border-color:#c7d7fe}.option:disabled{cursor:default}.option-key{border:1px solid var(--border);width:24px;height:24px;color:var(--muted);border-radius:7px;flex:none;justify-content:center;align-items:center;margin-top:1px;font-size:12px;font-weight:600;display:flex}.option-text{flex:1}.option.selected{border-color:var(--accent);background:var(--accent-soft)}.option.selected .option-key{border-color:var(--accent);background:var(--accent);color:#fff}.option.correct{background:var(--green-soft);border-color:#75e0a7}.option.correct .option-key{border-color:var(--green);background:var(--green);color:#fff}.option.wrong{background:var(--red-soft);border-color:#fda29b}.option.wrong .option-key{border-color:var(--red);background:var(--red);color:#fff}.option.dimmed{opacity:.62}.submit-row{margin-top:20px}.result{border-top:1px solid var(--border);margin-top:20px;padding-top:18px}.result-banner{align-items:center;gap:8px;margin-bottom:10px;font-weight:600;display:flex}.result-banner.ok{color:var(--green)}.result-banner.bad{color:var(--red)}.answer-line{color:var(--muted);font-size:14px}.answer-line strong{color:var(--text)}.explanation{background:var(--surface-muted);border:1px solid var(--border);color:#475467;white-space:pre-wrap;word-break:break-word;border-radius:10px;margin-top:10px;padding:14px 16px;font-size:14px}.next-row{justify-content:flex-end;margin-top:18px;display:flex}.summary{text-align:center;padding:36px 24px}.summary-score{letter-spacing:-.03em;font-size:44px;font-weight:700;line-height:1.1}.summary-score span{color:var(--muted);font-size:18px;font-weight:500}.summary-sub{color:var(--muted);margin-top:8px}.summary-stats{justify-content:center;gap:44px;margin:28px 0;display:flex}.summary-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.nav-button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.nav-button:hover{color:var(--text)}.certification-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.certification-card{padding:22px;transition:border-color .15s,transform .15s,box-shadow .15s;display:block}.certification-card:not(.locked):hover{border-color:#c7d7fe;transform:translateY(-1px);box-shadow:0 6px 18px #1018280f}.certification-card.locked{color:#98a2b3;cursor:not-allowed;box-shadow:none;background:#f2f4f7}.certification-top{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.certification-icon{background:var(--accent-soft);width:38px;height:38px;color:var(--accent);border-radius:11px;justify-content:center;align-items:center;font-size:17px;font-weight:700;display:flex}.locked .certification-icon{color:#98a2b3;background:#e4e7ec}.status-badge{border-radius:999px;align-items:center;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.status-badge.allowed{background:var(--green-soft);color:var(--green)}.status-badge.locked{color:var(--muted);background:#e4e7ec}.certification-title{margin:0 0 6px;font-size:19px}.certification-description{color:var(--muted);margin:0;font-size:14px}.certification-meta{color:var(--muted);gap:16px;margin-top:20px;font-size:13px;display:flex}.certification-action{border-top:1px solid var(--border);color:var(--accent);margin-top:18px;padding-top:14px;font-size:14px;font-weight:550}.locked .certification-action{color:#98a2b3}.narrow-page{max-width:640px;margin:0 auto}.auth-layout{justify-content:center;align-items:center;min-height:55vh;display:flex}.auth-card{width:100%;max-width:420px;padding:28px}.form-card{margin-bottom:20px;padding:22px}.form-description{margin:5px 0 18px}.field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.field-label{color:#475467;font-size:13px;font-weight:500}.input{border:1px solid var(--border);background:var(--surface);width:100%;height:42px;color:var(--text);font:inherit;border-radius:9px;outline:none;padding:0 12px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-error{color:var(--red);margin:0 0 14px;font-size:13px}.form-success{color:var(--green);margin:0 0 14px;font-size:13px}.auth-tip{color:var(--muted);text-align:center;margin:16px 0 0;font-size:12px}.account-card{margin-bottom:20px;padding:8px 20px}.account-row{border-bottom:1px solid var(--border);color:var(--muted);justify-content:space-between;align-items:center;gap:20px;padding:13px 0;font-size:14px;display:flex}.account-row strong{color:var(--text);text-align:right;font-weight:550}.initial-password{color:var(--muted);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;font-size:13px;display:flex}.initial-password code,.user-initial code,.credential-success code{color:var(--accent);letter-spacing:.03em;font-size:17px;font-weight:700}.admin-create-grid{grid-template-columns:1.5fr 1fr;gap:14px;display:grid}.admin-create .section-title{margin-bottom:18px}.check-list{flex-wrap:wrap;gap:10px;display:flex}.check-label{border:1px solid var(--border);background:var(--surface-muted);cursor:pointer;border-radius:9px;align-items:center;gap:8px;padding:8px 12px;font-size:14px;display:inline-flex}.check-label input{width:16px;height:16px;accent-color:var(--accent);margin:0}.credential-success{border-radius:var(--radius);background:var(--green-soft);color:var(--green);border:1px solid #75e0a7;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;padding:16px 20px;display:flex}.credential-success p{margin:3px 0 0;font-size:13px}.admin-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.user-search{max-width:320px}.disable-toggle{background:var(--red-soft);color:var(--red);border-color:#fda29b;margin-bottom:16px}.user-list{flex-direction:column;gap:12px;display:flex}.user-item{justify-content:space-between;align-items:flex-start;gap:24px;padding:18px 20px;display:flex}.user-main{flex:1;min-width:0}.user-phone{align-items:center;gap:10px;font-size:16px;font-weight:600;display:flex}.user-meta{color:var(--muted);margin-top:5px;font-size:12px}.user-initial{color:var(--muted);margin-top:8px;font-size:13px}.user-initial code{margin-left:6px;font-size:14px}.user-controls{flex:none;width:250px}.user-controls .btn{width:100%}@media (max-width:640px){.main{padding-top:24px}.hero-title{font-size:23px}.subject-grid{grid-template-columns:1fr}.chapter-item{flex-wrap:wrap;gap:12px}.chapter-action,.chapter-action .btn{width:100%}.question-card{padding:18px}.question-stem{font-size:16px}.wrong-item{flex-direction:column;align-items:flex-start}.paper-item{flex-wrap:wrap}.paper-item .start-action,.paper-item .btn{width:100%}.header-inner{flex-wrap:wrap;gap:8px;height:auto;min-height:58px;padding-top:10px;padding-bottom:10px}.nav{flex-wrap:wrap;justify-content:flex-end;gap:8px 12px;font-size:13px}.nav-button{font-size:13px}.certification-grid,.admin-create-grid{grid-template-columns:1fr}.admin-toolbar{flex-direction:column;align-items:stretch}.user-search{max-width:none}.user-item{flex-direction:column}.user-controls{width:100%}.credential-success{flex-direction:column;align-items:flex-start}}
