:root{color:#1d261f;font-synthesis:none;background:#f3f5ef;font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif}body{margin:0}.shell{width:min(1080px,100% - 40px);margin:42px auto 80px}.hero{justify-content:space-between;align-items:end;gap:28px;padding:28px 4px 30px;display:flex}.eyebrow{color:#4f6d55;letter-spacing:.04em;text-transform:uppercase;margin:0 0 9px;font-size:.78rem;font-weight:800}h1{letter-spacing:-.06em;margin:0;font-size:clamp(2.2rem,5vw,4.6rem);line-height:.98}h2{margin:4px 0 0;font-size:1.35rem}p{color:#566058;line-height:1.65}.hero p:not(.eyebrow){max-width:540px;margin-bottom:0}.upload-button,button{font:inherit;cursor:pointer;color:#22442a;white-space:nowrap;background:#dcebdd;border:0;border-radius:999px;padding:13px 19px;font-weight:750}.upload-button input{display:none}button.primary{color:#fff;background:#245d35}button.secondary{color:#8a3b2e;background:#f5e5e1}button:disabled{cursor:not-allowed;opacity:.42}.notice{color:#36563b;background:#e9f1e6;border-radius:12px;margin:0 0 18px;padding:14px 17px}.panel,.empty-state{background:#fff;border:1px solid #d9ded4;border-radius:18px;margin:16px 0;padding:24px;box-shadow:0 9px 30px #2a4b2510}.section-heading{justify-content:space-between;align-items:start;gap:15px;display:flex}code{color:#7d887e}.metrics{grid-template-columns:repeat(4,1fr);gap:10px;margin:22px 0;display:grid}.metric{background:#f6f8f3;border-radius:13px;gap:8px;padding:15px;display:grid}.metric span{color:#6f786f;font-size:.85rem}.metric strong{font-size:1.65rem}.metric strong.good{color:#367d48}.metric strong.bad{color:#b14b3b}.metric strong.warn{color:#a66b21}.actions{flex-wrap:wrap;gap:9px;display:flex}.hint{margin-bottom:0;font-size:.88rem}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.92rem}th,td{text-align:left;border-bottom:1px solid #edf0eb;padding:12px 10px}th{color:#697369;text-transform:uppercase;font-size:.78rem}td:first-child{color:#8b958b}.tag{border-radius:999px;padding:4px 8px;font-size:.75rem;font-weight:750}.tag.bad{color:#9d4438;background:#fbe8e4}.tag.warn{color:#96631d;background:#fff2d9}.empty,.empty-state{color:#68736a}.empty-state{text-align:center;place-content:center;gap:9px;min-height:180px;display:grid}@media (width<=700px){.shell{width:min(100% - 24px,1080px);margin-top:20px}.hero{display:block}.upload-button{margin-top:22px;display:inline-block}.metrics{grid-template-columns:repeat(2,1fr)}.panel{padding:17px}}.editor{gap:14px;display:grid}.editor label{color:#526055;gap:6px;font-size:.86rem;font-weight:700;display:grid}.editor input,.editor textarea,.editor select{box-sizing:border-box;width:100%;font:inherit;color:#1d261f;background:#fbfcfa;border:1px solid #d4ddd2;border-radius:9px;padding:10px}.editor textarea{resize:vertical;min-height:78px}.option-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.option-grid label{color:#526055;gap:6px;font-size:.86rem;font-weight:700;display:grid}.clickable{cursor:pointer}.clickable:hover{background:#f5f8f2}.open-hint{float:right;color:#4f6d55;font-size:.78rem}:root{--paper:#f6f0e6;--ink:#25342d;--pine:#254c41;--rust:#ad583e;--line:#d7cbb9;--muted:#68736d;color:var(--ink);background:#e7dfd2;font-family:Noto Sans SC,PingFang SC,sans-serif}*{box-sizing:border-box}button,.upload-button{border-radius:0}.site-frame{background:var(--paper);max-width:1480px;min-height:100vh;margin:auto;box-shadow:0 20px 70px #25342d22}.masthead{border-bottom:1px solid var(--line);background:#f8f3eb;justify-content:space-between;align-items:center;gap:22px;min-height:79px;padding:0 28px;display:flex}.identity{align-items:center;gap:12px;min-width:280px;display:flex}.seal{border:2px solid var(--rust);width:38px;height:38px;color:var(--rust);place-items:center;font:700 24px serif;display:grid}.identity b{letter-spacing:.04em;font-family:Noto Serif SC,serif;font-size:18px;display:block}.identity small{color:var(--muted);letter-spacing:.12em;margin-top:3px;font-size:9px;display:block}.user-state{color:var(--muted);align-items:center;gap:10px;font-size:12px;display:flex}.avatar{width:29px;height:29px;color:var(--pine);background:#dcc3a7;border-radius:50%;place-items:center;font-weight:800;display:grid}.teacher-shell{min-height:calc(100vh - 79px)}.teacher-head{background:var(--pine);color:#f7f1e5;padding:35px 48px 0}.teacher-head-row{justify-content:space-between;align-items:start;gap:20px;display:flex}.teacher-head .eyebrow{color:#e5c47c;letter-spacing:.13em;font-size:11px}.teacher-head h1{letter-spacing:0;max-width:850px;margin:8px 0 28px;font:700 clamp(28px,3vw,43px)/1.3 Noto Serif SC,serif}.teacher-head-row>p{color:#d8e2d9;text-align:right;overflow-wrap:anywhere;max-width:280px;font-size:12px}.teacher-tabs{gap:28px;display:flex}.teacher-tabs button{color:#d1dfd6;background:0 0;border:0;border-bottom:3px solid #0000;padding:13px 3px;font-size:13px}.teacher-tabs button.active{color:#fff;border-color:#d9a95f}.teacher-body{padding:36px 48px 70px}.teacher-pane{min-height:440px}.teacher-pane>h2,.bank-top h2,.hero h2{margin:5px 0 15px;font:700 clamp(25px,2.5vw,34px)/1.35 Noto Serif SC,serif}.section-label{color:var(--rust);letter-spacing:.12em;margin:0;font-size:11px;font-weight:800}.intro{max-width:680px;font-size:15px}.bank-top{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:end;gap:20px;margin-bottom:25px;padding-bottom:20px;display:flex}.bank-layout{grid-template-columns:205px minmax(0,1fr);gap:28px;display:grid}.filters{border-right:1px solid var(--line);padding-right:18px}.filter{border-left:3px solid #0000;border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:13px 10px;font-size:13px;display:flex}.filter.active{border-left-color:var(--rust);background:#eee4d5}.filter b{color:var(--pine)}.catalog-status{color:var(--muted);margin:0 0 15px;font-size:12px}.content-table{background:#faf7f0}.content-table th{color:var(--pine);border-bottom:2px solid var(--ink)}.content-table td{border-bottom:1px solid var(--line);vertical-align:top}.content-table td:first-child{color:var(--ink);width:55%}.content-table td b{font-size:14px;font-weight:600;line-height:1.5;display:block}.content-table td small{color:var(--muted);margin-top:5px;font-size:11px;display:block}.tag.live{color:#296047;background:#dae9db}.archive-foot{color:var(--muted);margin:14px 0;font-size:12px}.teacher-body .primary,.teacher-body .upload-button{background:var(--pine);color:#fff;padding:11px 17px;font-size:13px}.content-view .hero{align-items:center;padding:8px 0 16px}.content-view .hero h2{font-size:25px}.content-view .notice{border-left:3px solid var(--rust);color:var(--ink);background:#efe7d8;border-radius:0}.content-view .panel,.content-view .empty-state{border-color:var(--line);box-shadow:none;background:#faf7f0;border-radius:0}.content-view .metric{background:#f0e9df;border-radius:0}.content-view button{color:var(--pine);background:#e7dfd0}.content-view button.primary{background:var(--pine);color:#fff}@media (width<=760px){.masthead{flex-wrap:wrap;padding:14px 16px}.identity{min-width:0}.user-state{font-size:11px}.teacher-head{padding:27px 20px 0}.teacher-head-row>p{display:none}.teacher-tabs{gap:16px;overflow:auto}.teacher-body{padding:25px 16px 50px}.bank-layout{grid-template-columns:1fr;gap:15px}.filters{border-right:0;gap:8px;padding:0;display:flex}.filter{flex:1}.content-table{min-width:620px}.bank-top{align-items:start}}.login-shell{color:#273a32;background:#e9e4d8;place-content:center;min-height:100vh;padding:24px;display:grid}.login-brand{align-items:center;gap:12px;margin-bottom:28px;font-family:Noto Serif SC,serif;display:flex}.login-card{background:#fbf8f0;border:1px solid #c9c2b2;width:min(420px,100vw - 48px);padding:36px;box-shadow:0 20px 50px #273a3220}.login-card h1{margin:8px 0;font-size:30px}.login-card p{color:#58675e;line-height:1.6}.login-card form{gap:16px;margin-top:24px;display:grid}.login-card label{gap:7px;font-weight:600;display:grid}.login-card input{width:100%;font:inherit;background:#fff;border:1px solid #b9b6aa;padding:12px}.login-card button{color:#fff;font:inherit;cursor:pointer;background:#2c5142;border:0;padding:12px}.login-card button:disabled{opacity:.6}.login-card .login-error{color:#9b332a;margin:0}
