.brand-sub[data-v-07b8c1f8]{letter-spacing:.1em}.btn.sm[data-v-07b8c1f8]{letter-spacing:.14em;padding:4px 14px;font-size:13px}:root{--ink:#2f2a26;--ink-soft:#5b5247;--ink-faint:#9b9183;--paper:#f3ede1;--paper-light:#faf6ec;--paper-deep:#e9e0cf;--cinnabar:#a8352b;--cinnabar-dark:#7c241e;--malachite:#3e6b4f;--indigo:#3b5a7c;--gold:#a9801f;--line:#d8ccb6;--font-body:"Songti SC", "STSong", "SimSun", "Noto Serif SC", serif;--font-title:"Kaiti SC", "STKaiti", "KaiTi", "Kai", "Noto Serif SC", serif}*{box-sizing:border-box}html{height:100%}body{font-family:var(--font-body);color:var(--ink);letter-spacing:.03em;-webkit-font-smoothing:antialiased;background-color:var(--paper);background-image:radial-gradient(900px 500px at 78% -5%,#3b5a7c0d,#0000 60%),radial-gradient(700px 480px at 8% 108%,#a8352b0a,#0000 60%);background-attachment:fixed;margin:0;line-height:1.9}body:before{content:"";z-index:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96'%3E%3Cg fill='none' stroke='%235b5247' stroke-opacity='0.07' stroke-width='1'%3E%3Ccircle cx='30' cy='28' r='12'/%3E%3Cpath d='M30 28c-6-10 4-14 12-8s8 14-2 18-12-2-10-10z'/%3E%3Cpath d='M30 28c-10-4-14 4-8 12s14 8 18-2-2-12-10-10z'/%3E%3Ccircle cx='42' cy='16' r='5' fill='%235b5247' fill-opacity='0.07'/%3E%3C/g%3E%3C/svg%3E");background-repeat:repeat;background-size:96px 96px;position:fixed;inset:0}.app-shell{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}.content{flex:1;width:100%;max-width:920px;margin:0 auto;padding:34px 22px 120px}.topbar{z-index:20;border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffffdb, #f4eee3e6), var(--paper-light);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);align-items:center;gap:18px;padding:12px 28px;display:flex;position:sticky;top:0}.brand-block{align-items:baseline;gap:12px;display:flex}.brand{font-family:var(--font-title);color:var(--ink);letter-spacing:.16em;font-size:26px;font-weight:700;text-decoration:none;position:relative}.brand:after{content:"";background:linear-gradient(90deg, var(--cinnabar), transparent);height:2px;position:absolute;bottom:-4px;left:0;right:0}.brand-sub{font-family:var(--font-title);color:var(--ink-faint);letter-spacing:.28em;font-size:15px}.topbar nav{gap:22px;margin-left:8px;display:flex}.topbar nav a{color:var(--ink-soft);letter-spacing:.16em;padding-bottom:2px;font-size:17px;font-weight:600;text-decoration:none;position:relative}.topbar nav a:hover,.topbar nav a.router-link-active{color:var(--cinnabar)}.topbar nav a.router-link-active:after{content:"";background:var(--cinnabar);width:14px;height:2px;position:absolute;bottom:-3px;left:50%;transform:translate(-50%)}.auth-area{align-items:center;gap:12px;margin-left:auto;display:flex}.user-name{color:var(--ink-soft);letter-spacing:.08em;font-size:14px}.chop{writing-mode:vertical-rl;font-family:var(--font-title);letter-spacing:.22em;color:#f7efe2;background:var(--cinnabar);border:1px solid var(--cinnabar-dark);border-radius:2px;flex-shrink:0;padding:7px 4px;font-size:13px;line-height:1.4;box-shadow:inset 0 0 0 2px #f7efe259}.page-head{align-items:flex-start;gap:18px;margin:6px 0 26px;display:flex}.head-text h1{font-family:var(--font-title);color:var(--ink);letter-spacing:.12em;margin:0;font-size:30px;font-weight:700}.head-verse{color:var(--ink-faint);letter-spacing:.2em;font-size:14px;font-family:var(--font-title);margin:8px 0 0}h2{font-family:var(--font-title);color:var(--ink);letter-spacing:.08em}.muted{color:var(--ink-faint)}.err{color:var(--cinnabar)}.ok{color:var(--malachite)}.paper-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;display:grid}.paper-card{background:var(--paper-light);border:1px solid var(--line);border-radius:4px;flex-direction:column;gap:12px;padding:22px 22px 18px;transition:box-shadow .25s,transform .25s,border-color .25s;display:flex;position:relative;box-shadow:0 2px 4px #5a4b370f}.paper-card:before{content:"";background:linear-gradient(180deg, var(--indigo), var(--cinnabar));width:4px;position:absolute;top:0;bottom:0;left:0}.paper-card:after{content:"";background:var(--gold);border:1px solid #8a6a15;border-radius:50%;width:8px;height:8px;position:absolute;top:10px;right:14px}.paper-card:hover{border-color:#c9b894;transform:translateY(-3px);box-shadow:0 12px 26px #5a4b3724}.paper-name{font-family:var(--font-title);color:var(--ink);letter-spacing:.06em;padding-left:8px;font-size:18px;font-weight:700;position:relative}.paper-meta{color:var(--ink-faint);letter-spacing:.06em;padding-left:8px;font-size:13px}.paper-card .btn{margin-top:auto}.btn{color:var(--cinnabar);border:1px solid var(--cinnabar);cursor:pointer;text-align:center;font-size:14px;font-family:var(--font-title);letter-spacing:.2em;background:0 0;border-radius:3px;padding:9px 22px;text-decoration:none;transition:background .18s,color .18s,box-shadow .18s;display:inline-block}.btn:hover{background:var(--cinnabar);color:#f7efe2;box-shadow:0 3px 10px #a8352b47}.btn.primary{background:var(--cinnabar);color:#f7efe2;border-color:var(--cinnabar-dark)}.btn.primary:hover{background:var(--cinnabar-dark)}.btn.ghost{color:var(--cinnabar);border:1px solid var(--cinnabar);background:0 0}.btn.ghost:hover{background:var(--cinnabar);color:#f7efe2}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn:disabled:hover{background:var(--cinnabar)}.practice-head{align-items:center;gap:16px;display:flex}.back{color:var(--cinnabar);letter-spacing:.12em;text-decoration:none}.back:hover{color:var(--cinnabar-dark)}.score-banner{background:var(--paper-light);border:1px solid var(--line);border-left:4px solid var(--cinnabar);font-family:var(--font-title);letter-spacing:.04em;border-radius:3px;flex-wrap:wrap;align-items:center;gap:16px;margin:20px 0;padding:14px 20px;display:flex}.score-banner b{color:var(--cinnabar);font-size:26px}.score-banner.pass{border-left-color:var(--malachite)}.score-banner.pass b{color:var(--malachite)}.score-banner.fail{border-left-color:var(--cinnabar)}.section{margin:34px 0}.section-title{font-family:var(--font-title);color:var(--ink);letter-spacing:.18em;margin:0 0 20px;padding-left:18px;font-size:22px;position:relative}.section-title:before{content:"";background:var(--cinnabar);width:3px;position:absolute;top:8px;bottom:8px;left:0}.section-title:after{content:"";background:linear-gradient(90deg, var(--line), transparent);width:100%;height:1px;position:absolute;bottom:-8px;left:0}.q-card{background:var(--paper-light);border:1px solid var(--line);border-radius:4px;margin-bottom:20px;padding:22px 24px;position:relative;box-shadow:0 2px 5px #5a4b370d}.q-card:before{content:"";background:var(--line);width:1px;position:absolute;top:14px;bottom:14px;left:14px}.q-head{align-items:flex-start;gap:12px;margin-left:12px;display:flex}.badge{font-family:var(--font-title);letter-spacing:.14em;border:1px solid;border-radius:3px;flex-shrink:0;height:fit-content;padding:1px 10px;font-size:12px}.badge.choice{color:var(--cinnabar);background:#a8352b0d;border-color:#d8a79e}.badge.open{color:var(--indigo);background:#3b5a7c0d;border-color:#a3b8ca}.q-source-row{align-items:center;gap:8px;margin-bottom:10px;display:flex}.q-source{font-family:var(--font-title);letter-spacing:.06em;color:#fff;white-space:nowrap;border-radius:3px;padding:1px 9px;font-size:12px}.q-source.real{background:var(--cinnabar)}.q-source.mock{background:var(--indigo)}.q-source-name{color:var(--ink-soft);font-size:12px}.q-num{font-family:var(--font-title);color:var(--ink-soft);font-weight:700}.q-stem{white-space:pre-wrap;color:var(--ink);margin:0;font-size:15.5px}.fav-btn{border:1px solid var(--line);color:var(--ink-faint);cursor:pointer;font-size:13px;font-family:var(--font-body);letter-spacing:.06em;background:0 0;border-radius:3px;flex-shrink:0;align-self:flex-start;margin-left:auto;padding:2px 10px}.fav-btn:hover{color:var(--gold);border-color:var(--gold)}.fav-btn.faved{color:var(--gold);background:#a9801f14;border-color:#d9b45c}.q-material{border-left:3px solid var(--line);white-space:pre-wrap;color:var(--ink-soft);background:#e9e0cf8c;border-radius:2px;margin:12px 0 0 12px;padding:12px 16px;font-size:14px}.options{flex-direction:column;gap:10px;margin:16px 0 0 12px;display:flex}.option{border:1px solid var(--line);cursor:pointer;border-radius:3px;align-items:flex-start;gap:12px;padding:11px 14px;transition:border-color .2s,background .2s,transform .15s;display:flex}.option:hover{border-color:#b9a583}.option.selected{border-color:var(--cinnabar);box-shadow:inset 3px 0 0 var(--cinnabar);background:#a8352b1f}.option.correct{border-color:var(--malachite);box-shadow:inset 3px 0 0 var(--malachite);background:#3e6b4f1f}.option.wrong{border-color:var(--cinnabar);box-shadow:inset 3px 0 0 var(--cinnabar);background:#a8352b24}.option input{accent-color:var(--cinnabar);margin-top:5px}.opt-key{font-family:var(--font-title);color:var(--cinnabar);letter-spacing:.1em;font-weight:700}.opt-text{white-space:pre-wrap;color:var(--ink)}.open-ref{margin:14px 0 0 12px}.open-ref summary{cursor:pointer;color:var(--cinnabar);font-family:var(--font-title);letter-spacing:.1em}.open-ref pre{border:1px dashed var(--line);white-space:pre-wrap;font-family:var(--font-body);color:var(--ink-soft);background:#e9e0cf80;border-radius:3px;padding:12px 14px}.open-ref .analysis{background:#a9801f12}.feedback{font-size:14.5px;font-family:var(--font-body);border-radius:3px;margin:14px 0 0 12px;padding:12px 16px}.feedback.ok{background:#3e6b4f0f;border:1px solid #bfd2c3}.feedback.no{background:#a8352b0f;border:1px solid #e2bcb6}.feedback.na{background:#a9801f0f;border:1px solid #d9c796}.fb-line{font-family:var(--font-title);letter-spacing:.04em;margin:0 0 6px}.explain{white-space:pre-wrap;color:var(--ink-soft);margin:6px 0}.kaodian{color:var(--gold);letter-spacing:.08em;margin:8px 0 0;font-size:13px}.submit-bar{z-index:20;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:linear-gradient(#faf6ece6,#faf6ecfa);justify-content:center;align-items:center;gap:24px;padding:14px;display:flex;position:fixed;bottom:0;left:0;right:0}.deck-colophon{text-align:center;color:var(--ink-faint);font-family:var(--font-title);letter-spacing:.3em;border-top:1px solid var(--line);margin-top:44px;padding-top:18px;font-size:13px}.gate-card{background:var(--paper-light);border:1px solid var(--line);text-align:center;border-radius:4px;max-width:460px;margin:40px auto;padding:32px 34px;box-shadow:0 10px 30px #5a4b3714}.gate-card h2{font-family:var(--font-title);letter-spacing:.12em;color:var(--ink);margin:14px 0 10px}.gate-card .chop{margin:0 auto}.gate-row{gap:10px;margin-top:14px;display:flex}.gate-row input,.invite-input{border:1px solid var(--line);color:var(--ink);font-family:var(--font-body);letter-spacing:.3em;background:#fff;border-radius:3px;flex:1;padding:10px 12px;font-size:14px}.gate-row input:focus,.invite-input:focus{border-color:var(--cinnabar);outline:none}.gate-form .err{margin-top:10px}.practice-wrap{align-items:flex-start;gap:20px;display:flex;position:relative}.practice-wrap:before{content:"";z-index:5;pointer-events:none;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='200'%3E%3Ctext x='50%25' y='50%25' font-size='34' fill='%23a8352b' text-anchor='middle' font-family='serif' transform='rotate(-18 160 100)'%3E绵绵汉硕路%3C/text%3E%3C/svg%3E");background-repeat:repeat;background-size:320px 200px;position:absolute;inset:0}.practice-main{flex:1;min-width:0}.prac-top{background:var(--paper-light);border:1px solid var(--line);color:var(--ink-soft);letter-spacing:.05em;border-radius:4px;flex-wrap:wrap;align-items:center;gap:18px;margin-bottom:14px;padding:10px 16px;font-size:13px;display:flex}.prac-timer{font-variant-numeric:tabular-nums;color:var(--cinnabar);font-weight:600}.prac-progress{flex:1}.prac-count{color:var(--ink);font-weight:600}.q-nav{align-items:center;gap:12px;margin:14px 0;display:flex}.q-nav-title{text-align:center;color:var(--ink);font-family:var(--font-title);letter-spacing:.12em;flex:1;font-size:15px}.q-nav.bottom{margin-top:18px}.q-nav .spacer{flex:1}.q-nav .btn:disabled{opacity:.4;cursor:not-allowed}.q-answer-time{letter-spacing:.06em;margin:12px 0 0 12px;font-size:12.5px}.q-matrix{background:var(--paper-light);border:1px solid var(--line);border-radius:4px;flex-shrink:0;width:250px;padding:12px;position:sticky;top:20px}.matrix-title{font-family:var(--font-title);letter-spacing:.14em;color:var(--ink);text-align:center;margin:0 0 8px;font-size:14px}.q-matrix-grid{grid-template-columns:repeat(5,1fr);gap:5px;max-height:calc(100vh - 160px);padding-right:2px;display:grid;overflow-y:auto}.q-cell{aspect-ratio:1;border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;font-variant-numeric:tabular-nums;background:#fff;border-radius:3px;justify-content:center;align-items:center;font-size:11px;transition:all .15s;display:flex}.q-cell:hover{border-color:var(--cinnabar);color:var(--cinnabar)}.q-cell.current{border-color:var(--cinnabar);background:var(--cinnabar);color:#fff;font-weight:600}.q-cell.done{color:var(--ink);background:#a9801f1a;border-color:#b9a583}.q-cell.ok{border-color:var(--malachite);color:var(--malachite);background:#3e6b4f24}.q-cell.no{border-color:var(--cinnabar);color:var(--cinnabar);background:#a8352b24}.q-cell.na{color:var(--gold);background:#a9801f14;border-color:#d9c796}.matrix-legend{color:var(--ink-soft);letter-spacing:.04em;flex-wrap:wrap;gap:8px 12px;margin:12px 0 0;font-size:11.5px;display:flex}.matrix-legend span{align-items:center;gap:4px;display:inline-flex}.matrix-legend .dot{border:1px solid var(--line);border-radius:2px;width:10px;height:10px;display:inline-block}.matrix-legend .dot.cur{background:var(--cinnabar);border-color:var(--cinnabar)}.matrix-legend .dot.done{background:#a9801f40}.matrix-legend .dot.ok{background:var(--malachite)}.matrix-legend .dot.no{background:var(--cinnabar)}.matrix-legend .dot.na{background:#d9c796}@media (width<=860px){.practice-wrap{flex-direction:column}.q-matrix{width:100%;position:static}.q-matrix-grid{grid-template-columns:repeat(5,1fr);max-height:200px}}.random-select-card{background:var(--paper-light);border:1px solid var(--line);border-left:3px solid var(--indigo);border-radius:4px;flex-direction:column;gap:16px;max-width:520px;padding:20px 22px;display:flex}.random-select-card .random-field{align-items:center;gap:10px;display:flex}.random-select-card .random-field>label{font-family:var(--font-title);color:var(--ink);letter-spacing:.08em;flex-shrink:0;width:46px}.random-select-card .rand-count{text-align:center;width:80px}.random-select-card .random-kinds{gap:14px;display:flex}.random-select-card .random-kinds label{cursor:pointer;color:var(--ink-soft);align-items:center;gap:5px;font-size:14px;display:flex}.random-select-card .random-kinds label.on{color:var(--cinnabar);font-weight:700}.random-select-card .random-kinds input{accent-color:var(--cinnabar)}.random-select-card .btn{align-self:flex-start}.random-select-card .random-wrong-hint{color:var(--cinnabar);margin:0;font-size:13px}.random-select-card .random-wrong-hint.empty{color:var(--ink-faint)}@media (width<=768px){.content{padding:20px 14px 96px}.topbar{flex-wrap:wrap;gap:6px 12px;padding:10px 14px}.topbar nav{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;order:3;gap:18px;width:100%;margin-left:0;padding-bottom:4px;overflow-x:auto}.topbar nav a{white-space:nowrap}.brand{font-size:22px}.brand-sub{font-size:13px}.page-head{margin:4px 0 20px}.head-text h1{font-size:26px}.prac-top{gap:6px 12px;padding:8px 12px;font-size:12.5px}.score-banner{padding:12px 14px}.random-select-card .random-kinds{flex-wrap:wrap;gap:8px 14px}}@media (width<=480px){.chop,.brand-sub{display:none}.brand{font-size:20px}.content{padding:14px 12px 88px}.topbar{padding:8px 12px}.topbar nav a{font-size:16px}.auth-area{gap:8px}.user-name{font-size:13px}.paper-grid{grid-template-columns:1fr}.paper-card{padding:16px 16px 14px}.q-card{padding:16px 12px}.q-card:before{left:6px}.q-head{margin-left:6px}.q-stem{font-size:15px}.options,.feedback,.q-material{margin-left:6px}.submit-bar{gap:12px;padding:10px 8px}.submit-bar .btn{padding:8px 16px}.prac-top{flex-wrap:wrap}.score-banner b{font-size:22px}.random-select-card .random-field{flex-wrap:wrap}.random-select-card .random-field>label{width:auto}}
