*{box-sizing:border-box}body{margin:0;font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;background:#f5f6f8;color:#1c1e21}.app{max-width:1100px;margin:0 auto;padding:0 16px 48px}header{display:flex;align-items:center;gap:24px;padding:14px 0}header h1{font-size:20px;margin:0}nav{display:flex;gap:4px}button{font:inherit;cursor:pointer;border:1px solid #d4d7dc;background:#fff;border-radius:8px;padding:6px 14px}button:hover{background:#f0f1f3}button.primary{background:#2563eb;border-color:#2563eb;color:#fff}button.primary:hover{background:#1d4ed8}button.danger{color:#dc2626;border-color:#fca5a5}button.tab{border:none;background:none;padding:8px 14px;border-radius:8px}button.tab.active{background:#2563eb;color:#fff}input,select{font:inherit;padding:7px 10px;border:1px solid #d4d7dc;border-radius:8px;background:#fff}.login{max-width:320px;margin:20vh auto;display:flex;flex-direction:column;gap:12px;text-align:center}.err{color:#dc2626}.center-note{text-align:center;color:#8a8f98;padding:24px}.hint{color:#8a8f98;font-size:13px;margin-top:6px}.badge{font-size:12px;background:#e5e7eb;border-radius:6px;padding:2px 8px;margin-left:8px}.meta{color:#6b7280;font-size:13px;margin-top:4px}.row-form{display:flex;gap:10px;align-items:center;margin:12px 0;flex-wrap:wrap}.row-form input{flex:1;min-width:220px}.swatches{display:flex;gap:6px}.swatch{width:24px;height:24px;border-radius:50%;border:2px solid transparent;padding:0}.swatch.sel{border-color:#1c1e21}.check{display:flex;align-items:center;gap:6px;color:#6b7280;font-size:14px}.cards{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.card{background:#fff;border-radius:10px;padding:14px;border:1px solid #e5e7eb;border-left:4px solid #e5e7eb;display:flex;flex-direction:column;gap:8px;min-width:0;overflow-wrap:anywhere}.card strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-actions{display:flex;gap:6px;flex-wrap:wrap}.card-actions button{padding:4px 10px;font-size:13px}.dropzone{border:2px dashed #c3c8d0;border-radius:12px;padding:32px;text-align:center;color:#6b7280;cursor:pointer;margin:12px 0;background:#fff}.dropzone.over{border-color:#2563eb;background:#eff6ff}.upload-row{background:#eff6ff;border-radius:8px;padding:8px 12px;margin:6px 0}.upload-row.err{background:#fef2f2;color:#dc2626}.filters{display:flex;gap:4px;margin:12px 0}.pairing-box{display:flex;gap:16px;align-items:center;margin:16px 0;flex-wrap:wrap}.pairing-code strong{font-size:34px;letter-spacing:8px;color:#16a34a;background:#f0fdf4;border:1px dashed #22c55e;border-radius:10px;padding:6px 16px}.pairing-code em{display:block;font-style:normal;color:#6b7280;font-size:13px;margin-top:6px}.week-nav{display:flex;gap:10px;align-items:center;margin:12px 0}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:8px;min-height:160px;display:flex;flex-direction:column;gap:6px}.day.today{border-color:#2563eb;box-shadow:0 0 0 1px #2563eb}.day-head{font-weight:600;font-size:14px}.day-date{color:#8a8f98;font-weight:400}.lesson-chip{text-align:left;border-left:4px solid #ccc;border-radius:8px;padding:6px 8px;display:flex;flex-direction:column;gap:2px;font-size:13px}.lesson-chip .time{color:#6b7280}.lesson-chip .cls{font-weight:600}.add-lesson{margin-top:auto;border-style:dashed;color:#8a8f98;font-size:13px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:10}.dialog{background:#fff;border-radius:14px;padding:20px 24px;width:min(680px,92vw);max-height:88vh;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.dialog h2{margin:0;font-size:18px}.dialog h3{margin:8px 0 0;font-size:15px}.dialog label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:#4b5563}.dialog select,.dialog input{width:100%}.time-row{display:flex;gap:12px}.time-row label{flex:1}.time-row input{width:100%}.content-picker{display:grid;grid-template-columns:1fr 1fr;gap:12px}.content-picker ul{list-style:none;margin:0;padding:8px;border:1px solid #e5e7eb;border-radius:8px;min-height:120px;max-height:240px;overflow-y:auto}.content-picker li{padding:4px 2px;font-size:14px;display:flex;align-items:center;gap:4px}.picked li{justify-content:space-between}.order-btns{display:flex;gap:2px}.order-btns button{padding:1px 7px;font-size:12px}.pool button{width:100%;text-align:left;border:none;background:none;padding:4px 6px;border-radius:6px}.pool button:hover{background:#f0f1f3}.dialog-actions{display:flex;gap:8px;align-items:center}.spacer{flex:1}@media (max-width: 900px){.week-grid{grid-template-columns:repeat(2,1fr)}.content-picker{grid-template-columns:1fr}}
