.praise-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:14px}.praise-heading h2{margin:0;font-size:20px}.praise-heading p{margin:6px 0 0;font-size:10px;color:var(--muted)}.semester-picker button{padding:9px 13px;border-radius:9px;background:#303257;color:#fff;font-size:10px}.praise-chart-panel,.praise-input-panel{max-width:none;margin-bottom:14px}.praise-chart-panel select,.praise-analyze-row select{padding:8px 28px 8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:10px}.praise-legend{display:flex;justify-content:flex-end;gap:16px;margin:0 0 8px;font-size:9px;color:var(--muted)}.praise-legend i{display:inline-block;width:8px;height:8px;margin-right:4px;border-radius:2px;background:#6ea8fe}.praise-legend .mika i{background:#ff7461}.chart-scroll{overflow-x:auto;padding:6px 0}.praise-chart{height:255px;min-width:940px;display:grid;grid-template-columns:repeat(41,1fr);gap:5px;align-items:end;border-bottom:1px solid #dfe1ea;background:repeating-linear-gradient(to top,transparent 0,transparent 49px,#eeeff4 50px)}.chart-student{height:100%;display:grid;grid-template-rows:20px 1fr 22px;align-items:end;text-align:center}.chart-student>b{font-size:8px;color:#75778a}.chart-student>span{height:100%;display:flex;align-items:flex-end;justify-content:center}.chart-student>span i{display:block;width:100%;min-height:2px;border-radius:4px 4px 0 0;background:linear-gradient(#83b9ff,#5b91e4);transition:.3s}.chart-student:nth-child(4n+2)>span i{background:linear-gradient(#8ed9c0,#55b995)}.chart-student:nth-child(4n+3)>span i{background:linear-gradient(#ffd480,#f2ad42)}.chart-student:nth-child(4n)>span i{background:linear-gradient(#b8a4ee,#8873ca)}.chart-student em{font-size:8px;font-style:normal;color:#8b8c9c}.chart-student.is-mika>span i{background:linear-gradient(#ff9b86,#ff6653);box-shadow:0 0 0 2px #ffd6ce}.chart-student.is-mika em,.chart-student.is-mika b{color:#ef604f;font-weight:800}.praise-input-grid{display:grid;grid-template-columns:1.4fr .8fr;gap:12px}.praise-text>span{display:block;margin-bottom:6px;font-size:9px;color:var(--muted)}.praise-text textarea{width:100%;resize:vertical;padding:12px;border:1px solid var(--line);border-radius:11px;font:11px/1.6 inherit}.praise-upload{display:grid;place-content:center;text-align:center;border:1px dashed #c8c8d5;border-radius:11px;background:#fafafd;cursor:pointer}.praise-upload b{font-size:11px;color:#ff765f}.praise-upload span{max-width:220px;margin:6px auto 2px;overflow:hidden;text-overflow:ellipsis;font-size:9px;color:#747589}.praise-upload small{font-size:8px;color:var(--muted)}.praise-analyze-row{display:flex;align-items:center;gap:10px;margin-top:12px}.praise-analyze-row label{display:flex;align-items:center;gap:6px;font-size:9px;color:var(--muted)}#praiseAiStatus{font-size:9px;color:#5e9875}.ai-badge{padding:5px 9px;border-radius:10px;background:#f2efff;color:#7562ba;font-size:9px}.records-head h2{margin:22px 0 4px;font-size:18px}.records-head p{margin:0 0 12px;font-size:9px;color:var(--muted)}.praise-sheet{margin-bottom:11px;padding:14px;background:#fff;border:1px solid var(--line);border-radius:13px}.praise-sheet.counted{border-color:#b8dcbf}.praise-sheet header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.praise-sheet header>div:first-child{display:flex;align-items:center;gap:8px}.praise-sheet header span{padding:4px 8px;border-radius:8px;background:#fff0ed;color:#ed6b57;font-size:8px}.praise-sheet header b{font-size:11px}.praise-sheet header small{font-size:8px;color:var(--muted)}.praise-sheet header button{padding:7px 10px;margin-left:5px;border-radius:8px;font-size:9px}.count-btn{background:#303257;color:#fff}.undo-btn{border:1px solid var(--line);background:#fff;color:#77798a}.undo-btn:disabled{opacity:.35}.sheet-scroll{overflow-x:auto}.praise-sheet table{min-width:1100px;border-collapse:separate;border-spacing:2px}.praise-sheet th,.praise-sheet td{width:24px;height:26px;padding:0;text-align:center;border-radius:4px;background:#f2f3f7;font-size:8px}.praise-sheet th{color:#7d7f8f;font-weight:500}.praise-sheet th small{display:block;font-size:6px}.praise-sheet td.yes{background:#81c89d;color:#fff;font-weight:800}.praise-sheet .mika-cell{outline:2px solid #ff8c76;outline-offset:-1px}.praise-empty{padding:30px;text-align:center;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:10px}
@media(max-width:650px){.praise-heading{display:block}.semester-picker{margin-top:10px}.praise-input-grid{grid-template-columns:1fr}.praise-upload{min-height:110px}.praise-analyze-row{flex-wrap:wrap}.praise-analyze-row .primary-btn{width:100%;order:3}.praise-sheet header{align-items:flex-start}.praise-sheet header>div:first-child{display:grid;grid-template-columns:auto 1fr}.praise-sheet header small{grid-column:1/3}.praise-sheet header>div:last-child{white-space:nowrap}.chart-scroll{margin:0 -12px;padding-left:12px}}

/* 更清晰的图表读数与妙珂专属花朵柱 */
.praise-chart{height:280px;min-width:1060px;gap:6px}.chart-student{grid-template-rows:25px 1fr 28px}.chart-student>b{font-size:11px;font-weight:700}.chart-student em{font-size:10px;font-weight:600}.chart-student>span i{position:relative}.chart-student.is-mika>span i{z-index:1;border:2px solid #ff6d59;background:linear-gradient(180deg,#ffb29e 0%,#ff765f 45%,#f65344 100%);box-shadow:0 0 0 3px #ffe1da,0 5px 12px #ff765f44}.chart-student.is-mika>span i:before{content:'🌼';position:absolute;left:50%;top:-21px;transform:translateX(-50%);font-size:19px;line-height:20px;filter:drop-shadow(0 2px 2px #d66b4538)}.chart-student.is-mika>span i:after{content:'◆';position:absolute;right:-7px;top:28%;color:#67bd83;font-size:9px;transform:rotate(28deg)}.chart-student.is-mika em{display:inline-grid;place-items:center;min-width:22px;height:22px;margin:auto;border-radius:11px;background:#fff0eb;color:#e94f3c;font-size:12px;box-shadow:0 0 0 1px #ffc3b7}.chart-student.is-mika b{font-size:12px;color:#e94f3c}
@media(max-width:650px){.praise-chart{height:270px;min-width:1060px}.chart-student>b{font-size:11px}.chart-student em{font-size:10px}}

/* 花朵纹样铺在37号柱子内部，随柱高重复显示 */
.chart-student.is-mika>span i{overflow:hidden}.chart-student.is-mika>span i:before{content:'';position:absolute;inset:2px 1px;transform:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='32' viewBox='0 0 16 32'%3E%3Cg fill='%23fff7c2' stroke='%23ffffff' stroke-width='.45'%3E%3Ccircle cx='8' cy='4' r='3'/%3E%3Ccircle cx='8' cy='12' r='3'/%3E%3Ccircle cx='4' cy='8' r='3'/%3E%3Ccircle cx='12' cy='8' r='3'/%3E%3Ccircle cx='8' cy='20' r='3'/%3E%3Ccircle cx='8' cy='28' r='3'/%3E%3Ccircle cx='4' cy='24' r='3'/%3E%3Ccircle cx='12' cy='24' r='3'/%3E%3C/g%3E%3Cg fill='%23f4a83b'%3E%3Ccircle cx='8' cy='8' r='2.1'/%3E%3Ccircle cx='8' cy='24' r='2.1'/%3E%3C/g%3E%3C/svg%3E");background-size:16px 32px;background-position:center bottom;background-repeat:repeat-y;filter:none;opacity:.9}.chart-student.is-mika>span i:after{content:'';display:none}

/* 多色、错落的小碎花 */
.chart-student.is-mika>span i:before{inset:1px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='56' viewBox='0 0 24 56'%3E%3Cg%3E%3Cg fill='%23fff0a8'%3E%3Ccircle cx='5' cy='6' r='1.25'/%3E%3Ccircle cx='5' cy='10' r='1.25'/%3E%3Ccircle cx='3' cy='8' r='1.25'/%3E%3Ccircle cx='7' cy='8' r='1.25'/%3E%3C/g%3E%3Ccircle cx='5' cy='8' r='1' fill='%23f29a42'/%3E%3Cg fill='%23d8c2ff'%3E%3Ccircle cx='17' cy='3' r='1.1'/%3E%3Ccircle cx='17' cy='7' r='1.1'/%3E%3Ccircle cx='15' cy='5' r='1.1'/%3E%3Ccircle cx='19' cy='5' r='1.1'/%3E%3C/g%3E%3Ccircle cx='17' cy='5' r='.85' fill='%237b61c7'/%3E%3Cg fill='%23b9f0dc'%3E%3Ccircle cx='12' cy='17' r='1.2'/%3E%3Ccircle cx='12' cy='21' r='1.2'/%3E%3Ccircle cx='10' cy='19' r='1.2'/%3E%3Ccircle cx='14' cy='19' r='1.2'/%3E%3C/g%3E%3Ccircle cx='12' cy='19' r='.9' fill='%233db487'/%3E%3Cg fill='%23ffc4d4'%3E%3Ccircle cx='4' cy='29' r='1.05'/%3E%3Ccircle cx='4' cy='33' r='1.05'/%3E%3Ccircle cx='2' cy='31' r='1.05'/%3E%3Ccircle cx='6' cy='31' r='1.05'/%3E%3C/g%3E%3Ccircle cx='4' cy='31' r='.8' fill='%23e85b88'/%3E%3Cg fill='%23bcdcff'%3E%3Ccircle cx='19' cy='25' r='1.3'/%3E%3Ccircle cx='19' cy='29' r='1.3'/%3E%3Ccircle cx='17' cy='27' r='1.3'/%3E%3Ccircle cx='21' cy='27' r='1.3'/%3E%3C/g%3E%3Ccircle cx='19' cy='27' r='.9' fill='%234e8fdf'/%3E%3Cg fill='%23ffe6a8'%3E%3Ccircle cx='13' cy='39' r='1'/%3E%3Ccircle cx='13' cy='43' r='1'/%3E%3Ccircle cx='11' cy='41' r='1'/%3E%3Ccircle cx='15' cy='41' r='1'/%3E%3C/g%3E%3Ccircle cx='13' cy='41' r='.8' fill='%23e59535'/%3E%3Cg fill='%23e8c8ff'%3E%3Ccircle cx='6' cy='48' r='1.2'/%3E%3Ccircle cx='6' cy='52' r='1.2'/%3E%3Ccircle cx='4' cy='50' r='1.2'/%3E%3Ccircle cx='8' cy='50' r='1.2'/%3E%3C/g%3E%3Ccircle cx='6' cy='50' r='.9' fill='%23905bcc'/%3E%3Cg fill='%23c8f2c2'%3E%3Ccircle cx='20' cy='46' r='.95'/%3E%3Ccircle cx='20' cy='50' r='.95'/%3E%3Ccircle cx='18' cy='48' r='.95'/%3E%3Ccircle cx='22' cy='48' r='.95'/%3E%3C/g%3E%3Ccircle cx='20' cy='48' r='.75' fill='%2353a95b'/%3E%3C/g%3E%3C/svg%3E");background-size:24px 56px;background-position:center 3px;background-repeat:repeat-y;opacity:.96}

/* Student names under the chart */
.praise-chart{height:330px;min-width:1230px}.chart-student{grid-template-rows:25px 1fr 25px 42px}.chart-student>small{align-self:start;writing-mode:vertical-rl;text-orientation:upright;letter-spacing:1px;margin:2px auto 0;color:#747689;font-size:9px;line-height:1;white-space:nowrap}.chart-student.is-mika>small{color:#e94f3c;font-weight:800}@media(max-width:650px){.praise-chart{height:325px;min-width:1230px}.chart-student>small{font-size:9px}}

/* Dynamic average, top-10 and top-5 benchmark lines */
.praise-chart{position:relative}.chart-student{position:relative;z-index:2}.benchmark-layer{position:absolute;z-index:3;left:0;right:0;top:25px;bottom:67px;pointer-events:none}.benchmark-line{position:absolute;left:0;right:0;border-top:1px dashed;opacity:1}.benchmark-line span{position:absolute;right:4px;bottom:3px;padding:2px 6px;border-radius:7px;background:#fff;font-size:9px;font-weight:800;white-space:nowrap;box-shadow:0 1px 4px #30325720}.benchmark-line.average{border-color:#5c78d5;color:#4764c2}.benchmark-line.top10{border-top:1px dashed #d99a00;color:#9d6900}.benchmark-line.top10 span{background:#fff6d6;border:1px solid #edc34e;color:#9d6900}.benchmark-line.top5{border-color:#ef6258;color:#d84238}
