:root{--ink:#18384f;--navy:#1a3a5c;--sea:#3a9f96;--mint:#e7f4f1;--sun:#f5d76e;--paper:#f8f6f0;--white:#fff;--line:#cfe1de;--muted:#627984;--red:#c94e54;--orange:#d78639;--shadow:0 22px 60px rgba(26,58,92,.13)}
*{box-sizing:border-box}[hidden]{display:none!important}html{background:#dcebe7}body{margin:0;color:var(--ink);font-family:"Microsoft YaHei UI","PingFang SC",sans-serif;background:radial-gradient(circle at 15% 5%,#fff 0,#edf6f3 35%,#dcebe7 100%);min-height:100vh}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--sun);outline-offset:2px}.skip{position:fixed;left:12px;top:-60px;z-index:99;background:var(--navy);color:white;padding:12px}.skip:focus{top:12px}.eyebrow{color:var(--sea);font-size:12px;font-weight:900;letter-spacing:.12em}.mark{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(to bottom,#fff,var(--mint));border:1px solid var(--line);color:var(--navy);text-align:center;box-shadow:0 7px 18px rgba(26,58,92,.18)}.mark b{font-size:23px;font-weight:900;letter-spacing:.01em}.mark .ld{color:var(--sea);font-style:normal}
.login{min-height:100vh;display:grid;grid-template-columns:minmax(300px,.75fr) minmax(560px,1.25fr);align-items:stretch}.login-brand{padding:54px;display:flex;align-items:flex-start;gap:16px;background:var(--navy);color:white}.login-brand strong,.login-brand small{display:block}.login-brand strong{font-size:22px;margin:2px 0 7px}.login-brand small{color:#c9ddde}.login-card{align-self:center;width:min(760px,calc(100% - 60px));margin:auto;padding:34px;border:1px solid white;border-radius:28px;background:rgba(255,255,255,.91);box-shadow:var(--shadow)}.login-card h1{margin:7px 0;font-size:34px}.login-card>p{margin:0;color:var(--muted);line-height:1.65}.account-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:24px 0}.account-card{min-height:92px;border:1px solid var(--line);border-radius:18px;background:white;padding:13px;text-align:left}.account-card b,.account-card span,.account-card small{display:block}.account-card span{margin:5px 0;color:var(--sea);font-weight:800}.account-card small{color:var(--muted)}.account-card.on{border:2px solid var(--sea);background:var(--mint)}#loginForm{display:grid;grid-template-columns:1fr 1fr auto;gap:10px}label{display:grid;gap:6px;font-size:12px;font-weight:800}input,textarea,select{width:100%;border:1px solid var(--line);border-radius:13px;background:white;padding:12px}#loginForm button,.primary{border:0;border-radius:13px;background:var(--navy);color:white;padding:12px 18px;font-weight:900}.form-status{min-height:22px;margin-top:10px!important;color:var(--red)!important}.demo-note{display:block;color:var(--muted);font-size:11px}
.app{width:min(1240px,100%);min-height:100vh;margin:auto;background:var(--paper);box-shadow:0 0 80px rgba(26,58,92,.11);position:relative;padding:76px 0 78px 112px}.topbar{position:fixed;z-index:20;top:0;left:50%;transform:translateX(-50%);width:min(1240px,100%);height:76px;padding:10px 24px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);background:rgba(248,246,240,.96);backdrop-filter:blur(14px)}.brand-home{border:0;background:transparent;padding:0}.message-island{min-width:280px;max-width:520px;height:46px;margin:0 auto;border:0;border-radius:24px;background:var(--navy);color:white;padding:6px 16px 6px 7px;display:flex;align-items:center;gap:10px;text-align:left}.message-island i{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#5b91c7;font-style:normal;font-weight:900}.message-island b,.message-island small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-island b{font-size:13px}.message-island small{margin-top:2px;color:#cbe0e1;font-size:10px}.fafa{width:50px;height:50px;padding:0;border:2px solid white;border-radius:17px;background:var(--mint);position:relative;box-shadow:0 7px 16px rgba(26,58,92,.15)}.fafa img{width:46px;height:46px;object-fit:contain}.fafa span{position:absolute;right:34px;top:-5px;width:23px;height:23px;border-radius:50%;background:var(--sun);display:grid;place-items:center;font-weight:900}.identity{min-width:92px;height:50px;padding:6px 12px;border:1px solid var(--line);border-radius:16px;background:white;text-align:left}.identity b,.identity small{display:block}.identity b{font-size:13px}.identity small{margin-top:4px;color:var(--muted);font-size:10px}
.nav{position:fixed;z-index:15;top:76px;bottom:0;left:max(0px,calc(50% - 620px));width:112px;padding:22px 10px;background:#eef5f2;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.nav button{min-height:58px;border:0;border-radius:15px;background:transparent;display:grid;place-items:center;gap:3px;color:var(--muted)}.nav button i{font-style:normal;font-size:17px}.nav button span{font-size:12px}.nav button.on{background:white;color:var(--sea);font-weight:900;box-shadow:0 7px 18px rgba(26,58,92,.07)}#main{min-height:calc(100vh - 154px);padding:28px 32px 48px}.page-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:18px}.page-head h1{margin:5px 0 0;font-size:34px;letter-spacing:-.04em}.page-head p{margin:5px 0;color:var(--muted)}.date-chip{padding:10px 14px;border-radius:14px;background:white;border:1px solid var(--line);font-weight:800}.page-head.no-title{align-items:center;margin-bottom:14px}.page-head.no-title .eyebrow{font-size:13px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.metric{min-height:112px;padding:17px;border:1px solid var(--line);border-radius:20px;background:white}.metric small,.metric b,.metric span{display:block}.metric small{color:var(--muted)}.metric b{margin:10px 0 5px;font-size:27px}.metric span{color:var(--sea);font-size:12px}.main-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:16px;margin-top:16px}.panel{padding:20px;border:1px solid var(--line);border-radius:22px;background:white}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.panel-head h2{margin:0;font-size:19px}.panel-head small{color:var(--muted)}.task{display:grid;grid-template-columns:9px 1fr auto;gap:13px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.task:last-child{border-bottom:0}.task>i{width:9px;height:46px;border-radius:8px;background:#aab8bc}.task.high>i{background:var(--red)}.task.medium>i{background:var(--orange)}.task b,.task small,.task span{display:block}.task small{margin-top:5px;color:var(--muted)}.task span{font-size:11px;color:var(--sea);margin-top:5px}.task button,.secondary{border:1px solid var(--line);border-radius:12px;background:white;padding:9px 12px;font-weight:800}.ai-summary{padding:20px;border-radius:22px;background:var(--mint);border:1px solid #c3e3dc}.ai-summary header{display:flex;align-items:center;gap:10px}.ai-summary header img{width:90px;height:34px;object-fit:contain}.ai-summary p{line-height:1.65}.ai-summary small{color:var(--muted)}
.fafa-panel,.identity-panel{position:fixed;z-index:30;right:max(18px,calc(50% - 600px));top:82px;width:300px;padding:18px;border:1px solid var(--line);border-radius:22px 8px 22px 22px;background:white;box-shadow:var(--shadow)}.close-mini{position:absolute;right:8px;top:8px;width:29px;height:29px;border:0;border-radius:50%;background:var(--paper)}.fafa-logo{width:120px;height:42px;object-fit:contain}.fafa-panel>b,.identity-panel>b,.identity-panel>span,.identity-panel>small{display:block}.fafa-panel p,.identity-panel small{color:var(--muted);line-height:1.55}.fafa-panel textarea{margin:8px 0}.identity-panel span{margin:6px 0;color:var(--sea);font-weight:800}.identity-panel .secondary{width:100%;margin-top:14px}.compact-result{margin-top:12px;font-size:12px;line-height:1.55}.compact-result article{padding:11px;border-radius:12px;background:var(--paper)}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.toolbar button{border:1px solid var(--line);border-radius:12px;background:white;padding:10px 13px;font-weight:800}.toolbar button.on{border-color:var(--sea);background:var(--mint);color:var(--sea)}.empty{padding:32px;border:1px dashed var(--line);border-radius:18px;text-align:center;color:var(--muted)}.schedule{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.schedule article{padding:13px;border-radius:16px;background:var(--paper)}.schedule b,.schedule small{display:block}.schedule small{margin-top:5px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .wide{grid-column:1/-1}.form-grid button{align-self:end}.preview-box{margin-top:15px;padding:16px;border-radius:18px;background:var(--mint)}.preview-box h3{margin:0 0 8px}.status-pill{display:inline-block;padding:4px 8px;border-radius:8px;background:var(--sun);font-size:11px;font-weight:900}.import-layout,.book-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:16px}.import-list article,.book-list article,.audit-list article{padding:13px 0;border-bottom:1px solid var(--line)}.import-list b,.import-list span,.book-list b,.book-list span,.audit-list b,.audit-list span{display:block}.import-list span,.book-list span,.audit-list span{margin-top:4px;color:var(--muted);font-size:12px}.pdf-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px}.pdf-stage{height:620px;border-radius:18px;background:#dce8e6;position:relative;overflow:hidden}.pdf-stage object{width:100%;height:100%;border:0}.annotation-layer,.draw-surface{position:absolute;inset:0}.annotation-layer{pointer-events:none}.draw-surface{z-index:3;cursor:crosshair;background:transparent}.annotation-mark{position:absolute;border:3px solid var(--red);background:rgba(245,215,110,.25);border-radius:8px}.annotation-mark.text:after{content:"批注";position:absolute;left:0;top:-24px;padding:3px 7px;border-radius:7px;background:var(--navy);color:white;font-size:10px}.annotate-tools{display:grid;gap:10px}.annotate-tools button{width:100%}dialog{width:min(920px,calc(100% - 30px));max-height:90vh;padding:0;border:0;border-radius:26px;background:var(--paper);box-shadow:0 35px 90px rgba(26,58,92,.3)}dialog::backdrop{background:rgba(18,42,59,.46);backdrop-filter:blur(5px)}.dialog-head{position:sticky;top:0;z-index:2;height:62px;padding:10px 14px;display:grid;grid-template-columns:100px 1fr 100px;align-items:center;background:rgba(248,246,240,.96);border-bottom:1px solid var(--line)}.dialog-head button{border:0;background:transparent;text-align:left;font-weight:900}.dialog-head strong{text-align:center}#dialogBody{padding:24px}.toast{position:fixed;z-index:80;left:50%;bottom:24px;transform:translate(-50%,20px);padding:12px 18px;border-radius:14px;background:var(--navy);color:white;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
.pdf-stage.browsing .draw-surface{pointer-events:none}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mode-switch button.on{background:var(--navy);border-color:var(--navy);color:white}.response-tip{padding:12px 14px;border-radius:13px;background:var(--mint)}body.large-text{font-size:18px}body.large-text .demo-note,body.large-text .task span,body.large-text .identity small,body.large-text .message-island small{font-size:14px}body.large-text .task small,body.large-text .page-head p,body.large-text label{font-size:16px}body.large-text button,body.large-text input,body.large-text textarea,body.large-text select{font-size:17px}
@media(max-width:860px){.login{display:block;padding:24px}.login-brand{padding:10px;background:transparent;color:var(--ink)}.login-brand small{color:var(--muted)}.login-card{width:100%;margin-top:24px;padding:24px}.account-grid{grid-template-columns:repeat(2,1fr)}#loginForm{grid-template-columns:1fr}.app{padding:70px 0 76px}.topbar{height:70px;padding:8px 12px;gap:7px}.mark{width:48px;height:48px}.message-island{min-width:0;flex:1}.message-island small{display:none}.fafa{width:46px;height:46px}.fafa img{width:42px;height:42px}.identity{min-width:68px;padding:5px 8px}.identity small{font-size:9px}.nav{left:0;right:0;top:auto;bottom:0;width:100%;height:76px;padding:5px 8px calc(5px + env(safe-area-inset-bottom));display:flex;flex-direction:row;border-right:0;border-top:1px solid var(--line)}.nav button{flex:1;min-height:62px}.nav button i{font-size:16px}#main{padding:20px 16px 32px}.page-head h1{font-size:28px}.metric-grid{grid-template-columns:repeat(2,1fr)}.main-grid,.import-layout,.book-layout,.pdf-layout{grid-template-columns:1fr}.schedule{grid-template-columns:repeat(2,1fr)}.fafa-panel,.identity-panel{left:10px;right:10px;top:auto;bottom:84px;width:auto}.pdf-stage{height:520px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}}
@media(min-width:700px) and (max-width:860px){.login{padding:34px}.login-card{max-width:780px}.account-grid{grid-template-columns:repeat(3,1fr)}#main{padding:26px 28px 42px}.main-grid,.import-layout,.book-layout{grid-template-columns:1.15fr .85fr}.pdf-layout{grid-template-columns:minmax(0,1fr) 240px}.pdf-stage{height:650px}.schedule{grid-template-columns:repeat(3,1fr)}.fafa-panel,.identity-panel{left:auto;right:20px;width:340px}.page-head h1{font-size:32px}}
@media(max-width:430px){.login{padding:14px}.login-card{padding:19px;border-radius:22px}.login-card h1{font-size:27px}.account-grid{gap:7px}.account-card{min-height:82px;padding:10px}.identity small{display:none}.identity{min-width:50px}.message-island{padding-right:8px}.message-island b{font-size:11px}.metric{min-height:96px;padding:13px}.metric b{font-size:23px}.page-head{align-items:start}.date-chip{font-size:11px}.task{grid-template-columns:7px 1fr}.task>button{grid-column:2;justify-self:start}.panel{padding:15px}.ai-summary{padding:16px}#dialogBody{padding:17px}.dialog-head{grid-template-columns:80px 1fr 80px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.compact-result ul{margin:6px 0;padding-left:18px}.compact-result li{margin:3px 0}.compact-result .status-pill{margin:0 0 7px}.compact-result article b{display:block;margin-bottom:3px}.compact-result article p{margin:4px 0}.fafa-panel .toolbar button{flex:1;padding:10px 8px;font-size:12px}#fafaModel{margin-top:7px}
.builtin-panel{margin-bottom:16px}.builtin-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.builtin-book{display:grid;grid-template-columns:46px 1fr auto;gap:13px;align-items:center;padding:15px;border:1px solid var(--line);border-radius:18px;background:var(--paper);cursor:pointer;transition:.15s}.builtin-book:hover{border-color:var(--sea);background:var(--mint)}.builtin-book>i{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:var(--navy);color:white;font-style:normal;font-weight:900;font-size:19px}.builtin-book b,.builtin-book span{display:block}.builtin-book span{margin-top:4px;color:var(--muted);font-size:12px}.reader{display:grid;gap:12px}.reader-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:white}.reader-nav{display:flex;align-items:center;gap:8px}.reader-nav label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;white-space:nowrap}.reader-nav input{width:76px;text-align:center;padding:8px}.reader-bar a{text-decoration:none;color:var(--ink);font-weight:800}.reader-stage{padding:14px;border:1px solid var(--line);border-radius:20px;background:#dce8e6;display:grid;place-items:center;min-height:560px;overflow:auto}.reader-stage img{max-width:100%;height:auto;border-radius:10px;box-shadow:0 24px 60px rgba(26,58,92,.22);cursor:zoom-in;transition:.18s}.reader-stage img.zoom{max-width:none;width:1800px;cursor:zoom-out}.reader-progress{height:7px;border-radius:6px;background:var(--line);overflow:hidden}.reader-progress i{display:block;height:100%;background:var(--sea);transition:.25s}@media(max-width:860px){.builtin-grid{grid-template-columns:1fr}.reader-stage{min-height:420px}.reader-bar{justify-content:center}}
.voice-btn{width:100%;margin:4px 0 0;padding:12px 14px;display:flex;align-items:center;justify-content:center;gap:12px;border:0;border-radius:18px;background:linear-gradient(135deg,var(--sea),var(--navy));color:#fff;box-shadow:0 10px 26px rgba(26,58,92,.28);transition:.18s;user-select:none;touch-action:none}
.voice-btn i{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:19px;font-style:normal}
.voice-btn span{text-align:left}
.voice-btn b{display:block;font-size:15px;letter-spacing:.02em}
.voice-btn small{display:block;margin-top:2px;color:#d8ecea;font-size:11px}
.voice-btn:hover{transform:translateY(-1px)}
.voice-btn.listening{background:linear-gradient(135deg,#e0616a,var(--red));animation:voice-pulse 1.1s ease-in-out infinite}
.voice-btn.off{background:#b9c6cb;box-shadow:none;cursor:not-allowed;opacity:.85}
@keyframes voice-pulse{0%,100%{box-shadow:0 0 0 0 rgba(201,78,84,.55)}50%{box-shadow:0 0 0 12px rgba(201,78,84,0)}}
.pet-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:18px;align-items:center;padding:22px;margin-bottom:16px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(135deg,#fff,var(--mint))}
.pet-photo{display:grid;place-items:center;min-height:280px}
.pet-photo img{max-width:100%;max-height:340px;object-fit:contain;filter:drop-shadow(0 22px 34px rgba(26,58,92,.22))}
.pet-info b{display:block;font-size:30px}
.pet-info span{display:block;margin:6px 0;color:var(--sea);font-weight:800}
.pet-info small{display:block;color:var(--muted);line-height:1.6}
.pet-moods{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.pet-moods button.on{background:var(--navy);border-color:var(--navy);color:#fff}
.pet-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.pet-choice{padding:12px;border:1px solid var(--line);border-radius:18px;background:var(--paper);display:grid;place-items:center;gap:4px;transition:.15s}
.pet-choice img{width:82px;height:82px;object-fit:contain}
.pet-choice b{font-size:14px}
.pet-choice small{color:var(--muted);font-size:11px}
.pet-choice.on{border:2px solid var(--sea);background:var(--mint)}
.settings-panel .form-grid{margin-top:16px}
.status-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:16px;background:var(--paper)}
.status-row i{width:12px;height:12px;border-radius:50%;background:#b9c6cb;flex:0 0 auto}
.status-row.ok i{background:var(--sea);box-shadow:0 0 0 5px rgba(58,159,150,.18)}
.status-row.off i{background:var(--orange);box-shadow:0 0 0 5px rgba(215,134,57,.16)}
.status-row b{display:block}
.status-row span{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.schedule .lesson{display:grid;gap:4px}
.mini-ai{margin-top:7px;padding:7px 9px;border:1px dashed var(--sea);border-radius:11px;background:white;color:var(--sea);font-weight:800;font-size:11px}
.mini-ai:hover{background:var(--mint);border-style:solid}
@media(max-width:860px){.pet-stage{grid-template-columns:1fr;padding:16px}.pet-photo{min-height:200px}.pet-photo img{max-height:240px}.pet-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:430px){.nav button i{font-size:15px}.nav button span{font-size:11px}}
.toolbar button.primary{background:var(--navy);border-color:var(--navy);color:#fff}
.toolbar button.primary:hover{background:#12304d}
.fafa-panel .toolbar button.primary{background:var(--navy);color:#fff}
.roster-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.roster-card{display:grid;place-items:center;gap:4px;padding:12px 6px;border:1px solid var(--line);border-radius:16px;background:var(--white)}
.roster-card>i{font-style:normal;font-size:11px;color:var(--muted)}
.roster-card>b{font-size:15px;font-weight:800;color:var(--ink)}
.roster-card.off{opacity:.45}
.assign-list{display:grid;gap:10px}
.assign-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:10px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:18px;background:var(--paper)}
.assign-card>div{display:grid;gap:4px;min-width:0}
.assign-card>div>span{color:var(--muted);font-size:12px;line-height:1.5}
.status-pill.ok{background:#e4f5ea;color:#1d7a45}
.status-pill.wait{background:#fdf0dd;color:#a4600f}
@media(max-width:900px){.roster-grid{grid-template-columns:repeat(4,1fr)}.assign-card{grid-template-columns:minmax(0,1fr) auto}}
@media(max-width:560px){.roster-grid{grid-template-columns:repeat(3,1fr)}.assign-card{grid-template-columns:minmax(0,1fr)}}

/* ===== 班级活动协作板（秋游 / 游园会） ===== */
.act-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.act-bar .mini-ai{margin-top:0;margin-left:auto}
.act-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}
.act-facts article{padding:14px;border:1px solid var(--line);border-radius:16px;background:white}
.act-facts small{display:block;color:var(--muted);font-size:12px;font-weight:700}
.act-facts b{display:block;margin:5px 0 3px;font-size:15px;line-height:1.4}
.act-facts span{display:block;color:var(--muted);font-size:12px;line-height:1.5}
.act-chain-box{margin-bottom:14px;padding:14px 18px;border-radius:18px;background:var(--navy);color:#fff}
.act-chain-box>small{display:block;margin-bottom:9px;color:#9fc3dd;font-size:12px;font-weight:800}
.act-chain{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.act-chain span{padding:7px 12px;border-radius:11px;background:rgba(255,255,255,.15);font-weight:800;font-size:13px}
.act-chain i{color:var(--sun);font-style:normal;font-weight:900}
.act-plan,.act-pos{margin-bottom:14px}
.plan-tools{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.plan-tools input{flex:1;min-width:220px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:white}
.plan-card{padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--mint)}
.plan-card>b{display:block;margin-bottom:8px;font-size:17px}
.plan-points{margin:0 0 12px;padding-left:20px;line-height:1.7;font-size:13.5px}
.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.plan-grid small{display:block;margin-bottom:5px;color:var(--sea);font-weight:800}
.plan-grid ul{margin:0;padding-left:17px;font-size:13px;line-height:1.65}
.plan-q{display:block;margin-top:11px;color:var(--orange);font-size:12.5px;font-weight:800}
.act-tip{margin:0 0 12px;color:var(--muted);font-size:13px}
.pos-groups{display:grid;gap:16px}
.pos-group>h3{margin:0 0 9px;color:var(--sea);font-size:14px}
.pos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.pos-card{display:flex;flex-direction:column;gap:7px;padding:14px;border:1px solid var(--line);border-radius:16px;background:white}
.pos-card>header{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pos-card>header b{font-size:15px}
.pos-card>p{margin:0;color:var(--muted);font-size:13px;line-height:1.6}
.pos-card .pos-label{color:var(--sea);font-size:12px;font-weight:800}
.pos-card ol{margin:0;padding-left:18px;font-size:12.5px;line-height:1.66}
.pos-card .pos-prep{padding-top:7px;border-top:1px dashed var(--line);color:var(--muted);font-size:12.5px;line-height:1.6}
.pos-card>button{margin-top:auto}
.pos-holders{display:flex;flex-wrap:wrap;gap:6px}
.pos-holder{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:9px;background:var(--mint);font-size:12px}
.pos-holder i{color:var(--muted);font-style:normal}
.pos-holder button{padding:0 2px;border:0;background:transparent;color:var(--red);font-weight:900;cursor:pointer}
.pos-holder.none{padding:0;background:transparent;color:var(--muted)}
.pos-note{color:var(--muted);font-size:12.5px;font-weight:800}
.pos-card.total{border-color:var(--navy);background:var(--navy);color:#fff}
.pos-card.total>p,.pos-card.total .pos-prep,.pos-card.total .pos-label{color:#bcd6e8}
.pos-card.total ol{color:#e8f2f9}
.pos-card.total .pos-holder{background:rgba(255,255,255,.17);color:#fff}
.pos-card.total .pos-holder i{color:#cfe4f1}
.pos-card.total .pos-holder.none{background:transparent;color:#9fc3dd}
.pos-card.total .status-pill{border:0;background:rgba(255,255,255,.22);color:#fff}
.pos-card.assist{border-color:var(--sea);background:#f2fbf9}
.pos-card.mine{box-shadow:inset 0 0 0 2px var(--sun)}
.flow-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.flow-list li{display:grid;grid-template-columns:58px 1fr auto;gap:10px;align-items:start;padding:9px 11px;border:1px solid var(--line);border-radius:12px;background:#f6faf9}
.flow-list time{color:var(--sea);font-size:13px;font-weight:900}
.flow-list b{display:block;font-size:13.5px}
.flow-list small{color:var(--muted);font-size:12px;line-height:1.5}
.flow-list span{align-self:start;padding:3px 7px;border-radius:8px;background:var(--mint);color:var(--navy);font-size:11.5px;white-space:nowrap}
.mat-groups{display:grid;gap:13px}
.mat-group>h3{margin:0 0 6px;color:var(--sea);font-size:13px}
.mat-group ul{display:grid;gap:5px;margin:0;padding:0;list-style:none}
.mat-group li{display:flex;flex-wrap:wrap;gap:0 8px;align-items:baseline;padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:#f8fbfa}
.mat-group li b{font-size:13px}
.mat-group li i{color:var(--muted);font-style:normal;font-size:12px}
.mat-group li span{color:var(--sea);font-size:12px;font-weight:800}
.mat-group li small{flex:1 0 100%;color:var(--muted);font-size:11.5px}
.act-op{margin-top:14px}
.op-form{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:end;margin-bottom:12px}
.op-form textarea{padding:11px 13px;border:1px solid var(--line);border-radius:12px;resize:vertical}
.op-list{display:grid;gap:9px}
.op-card{padding:12px 14px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:14px;background:#f8fbfa}
.op-card.student{border-left-color:var(--sun)}
.op-card.parent{border-left-color:var(--sea)}
.op-card.homeroom,.op-card.subject,.op-card.admin{border-left-color:var(--navy)}
.op-card header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:5px}
.op-card header b{font-size:13.5px}
.op-card header i{color:var(--muted);font-style:normal;font-size:11.5px}
.op-card header time{margin-left:auto;color:var(--muted);font-size:11.5px}
.op-card p{margin:0;font-size:13.5px;line-height:1.66}
.op-tag{padding:2px 7px;border-radius:8px;background:var(--sun);color:var(--ink);font-size:11.5px;font-weight:900}
.op-actions{display:flex;gap:7px;margin-top:7px}
.op-actions button{padding:4px 10px;border:1px solid var(--line);border-radius:9px;background:white;font-size:12px;font-weight:800;cursor:pointer}
@media(max-width:900px){.act-facts{grid-template-columns:repeat(2,1fr)}.pos-grid{grid-template-columns:repeat(2,1fr)}.plan-grid{grid-template-columns:1fr}}
@media(max-width:560px){.act-facts{grid-template-columns:1fr}.pos-grid{grid-template-columns:1fr}.act-bar .mini-ai{margin-left:0}.flow-list li{grid-template-columns:50px 1fr}.flow-list li>span{grid-column:2;justify-self:start}.op-form{grid-template-columns:1fr}}
@media(min-width:901px){.pos-grid.two{grid-template-columns:repeat(2,1fr)}}
.act-cols{align-items:start}


/* ===== 家委会统筹（FAFA 排的分工 + 活动前要办的事） ===== */
.act-committee{margin-bottom:14px}
.cmt-card{background:#f6faf9}
.cmt-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cmt-grid>div>small{display:block;margin-bottom:6px;color:var(--sea);font-weight:800}
.cmt-wide{grid-column:1/-1}
.cmt-roles{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.cmt-roles li{padding:9px 11px;border:1px solid var(--line);border-radius:11px;background:white}
.cmt-roles header{display:flex;align-items:center;gap:7px}
.cmt-roles b{font-size:13.5px}
.cmt-roles i{padding:1px 6px;border-radius:7px;background:var(--mint);color:var(--sea);font-style:normal;font-size:11.5px;font-weight:800}
.cmt-roles span{display:block;margin-top:4px;font-size:12.5px;line-height:1.62}
.cmt-roles small{display:block;margin-top:5px;color:var(--orange);font-size:11.5px;line-height:1.5}
.cmt-tasks{display:grid;gap:7px;margin:0;padding:0;list-style:none}
.cmt-tasks li{display:flex;gap:9px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:11px;background:white}
.cmt-tasks b{font-size:13px;font-weight:600;line-height:1.55}
.cmt-tasks li small{display:block;margin-top:2px;color:var(--muted);font-size:11.5px}
.cmt-tasks li.done b{color:var(--muted);text-decoration:line-through}
.cmt-box{flex:none;width:20px;height:20px;margin-top:1px;border:1.5px solid var(--line);border-radius:6px;background:white;color:var(--sea);font-size:12px;font-weight:900;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1}
span.cmt-box{cursor:default}
.cmt-box.on{border-color:var(--sea);background:var(--sea);color:#fff}
.cmt-rules{margin:0;padding-left:17px;font-size:12.5px;line-height:1.68}
@media(max-width:760px){.cmt-grid{grid-template-columns:1fr}}
.voice-btn small.v-on{color:#c8f0ea}
.voice-btn small.v-ok{color:#b8f2e4;font-weight:800}
.voice-btn small.v-warn{color:#ffe9b0}
.voice-btn small.v-err{color:#ffd9a0;font-weight:800}
.voice-btn small a{color:#fff;text-decoration:underline;font-weight:800}

/* ===== 作业闭环：学生作答 · AI 判改 · 老师复核 ===== */
.hw-head{display:grid;gap:4px;padding-bottom:12px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.hw-head b{font-size:18px}
.hw-head span{color:var(--muted);font-size:12px}
.hw-tip{padding:11px 14px;border-radius:13px;background:var(--mint);margin-bottom:12px;font-weight:800;line-height:1.6}
.hw-passage{padding:15px;border-radius:16px;background:white;border:1px solid var(--line);line-height:2;font-size:16px;white-space:pre-wrap}
.hw-field{display:grid;gap:6px;margin:12px 0}
.hw-quiz{display:grid;gap:9px}
.hw-q{display:grid;grid-template-columns:26px minmax(0,1fr) 128px;gap:10px;align-items:center;padding:9px 11px;border-radius:13px;background:white;border:1px solid var(--line)}
.hw-q i{width:24px;height:24px;border-radius:50%;background:var(--mint);color:var(--sea);font-style:normal;font-weight:900;font-size:12px;display:grid;place-items:center}
.hw-q span{font-weight:800}
.hw-q input{padding:9px 11px;text-align:center}
.hw-score{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:13px 15px;border-radius:16px;background:var(--paper);border:1px solid var(--line);margin-bottom:12px}
.hw-verdict{margin:0;font-size:17px;font-weight:900;color:var(--sea)}
.hw-wrong{margin:12px 0;padding:11px 14px;border-radius:14px;background:#fdf3e6;border:1px solid #f0dcc0}
.hw-wrong summary{cursor:pointer;font-weight:800}
.hw-wrong ul,.hw-answer{margin:9px 0 0;padding-left:18px;line-height:1.9}
.subs-list{display:grid;gap:9px}
.subs-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:13px 15px;border:1px solid var(--line);border-radius:16px;background:white}
.subs-row b,.subs-row span{display:block}
.subs-row span{color:var(--muted);font-size:12px;margin-top:4px}
.status-pill.bad{background:#fbe4e5;color:var(--red)}
#hwRecord.on{background:var(--red)}
.assign-card{grid-template-columns:minmax(0,1fr) auto auto auto auto}
@media(max-width:900px){.assign-card{grid-template-columns:minmax(0,1fr) auto}}
@media(max-width:560px){.assign-card{grid-template-columns:minmax(0,1fr)}.hw-q{grid-template-columns:26px minmax(0,1fr)}.hw-q input{grid-column:2}.subs-row{grid-template-columns:minmax(0,1fr) auto}}
.gate-box{display:grid;gap:12px;margin:24px 0 4px;padding:20px;border:1px solid var(--line);border-radius:18px;background:var(--mint)}
.gate-box input{font-size:17px;letter-spacing:.08em}
.gate-box .primary{justify-self:start;padding:12px 28px}
@media(max-width:430px){.gate-box .primary{width:100%}}
/* 密码/口令输入框的“眼睛”：点一下显示明文，再点隐藏 */
.pwd-wrap{position:relative;display:block}
.pwd-wrap input{width:100%;padding-right:52px}
.pwd-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:44px;height:44px;display:grid;place-items:center;padding:0;border:0;border-radius:12px;background:transparent;color:#5d7180;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pwd-eye:hover{background:rgba(58,159,150,.14);color:#1f7a6f}
.pwd-eye:focus-visible{outline:2px solid #2f8b7e;outline-offset:2px}
.pwd-eye svg{width:22px;height:22px;display:block}
.pwd-eye .eye-off{display:none}
.pwd-eye.on .eye-open{display:none}
.pwd-eye.on .eye-off{display:block}

/* 页内二级标签：把同类的页面收进一个主标签后，用这条切换 */
.subnav{display:flex;gap:6px;flex-wrap:wrap;margin:-6px 0 18px;padding:5px;border:1px solid var(--line);border-radius:15px;background:#eef5f2;width:fit-content;max-width:100%}
.subnav button{border:0;border-radius:11px;background:transparent;padding:9px 16px;font-weight:800;color:var(--muted);font-size:13px;white-space:nowrap}
.subnav button.on{background:white;color:var(--sea);box-shadow:0 5px 13px rgba(26,58,92,.08)}
@media(max-width:860px){.subnav{width:100%;flex-wrap:nowrap;overflow-x:auto;margin:-2px 0 14px}.subnav button{padding:9px 14px;font-size:13px}}

/* 管理员首页 · 系统设置快捷入口（v1.7.2） */
.shortcut-panel{background:linear-gradient(180deg,rgba(10,132,255,.07),#fff);border-color:rgba(10,132,255,.28)}
.shortcut-panel .toolbar{margin-bottom:0}
.shortcut-panel .toolbar button{flex:1 1 140px;min-height:42px}
.shortcut-panel .demo-note{margin:10px 0 0}

/* ===== v1.8.0 · 界面整体调整（大字默认 / 顶栏待办 / 底栏图标 / 首页 / 课程表 / 座位表 / 阅读器 / 题库 / 语音） ===== */

/* --- 通用：大字模式再放大一档 --- */
body.large-text{font-size:19px}
body.large-text .metric small{font-size:15px}
body.large-text .panel-head h2{font-size:21px}
body.large-text .roster-card>b{font-size:17px}

/* --- 顶栏「今天要处理的事」：换亮色 + 动态引导小点 --- */
.message-island{background:linear-gradient(120deg,#2f8fd0,#3ab6a2);color:#fff;position:relative}
.message-island i{background:rgba(255,255,255,.26)}
.message-island b{font-size:14px}
.message-island small{color:#e8f7f5;font-size:11px}
.message-island.urgent{background:linear-gradient(120deg,#e08a3c,#d5604e)}
.island-dot{position:absolute;right:9px;top:7px;width:11px;height:11px;border-radius:50%;background:#ffe066;animation:island-pulse 1.6s ease-out infinite}
.message-island.urgent .island-dot{background:#fff9e0}
@keyframes island-pulse{0%{box-shadow:0 0 0 0 rgba(255,224,102,.85);transform:scale(1)}70%{box-shadow:0 0 0 13px rgba(255,224,102,0);transform:scale(1.1)}100%{box-shadow:0 0 0 0 rgba(255,224,102,0);transform:scale(1)}}

/* --- 底部导航：图标和字都再大一点、再清楚一点 --- */
.nav button i{font-size:21px;line-height:1}
.nav button span{font-size:13px;font-weight:800}
.nav button.on i{color:var(--sea)}
.nav button.on span{color:var(--sea)}

/* --- 首页：老师常用入口 --- */
.action-panel{margin-bottom:16px}
.action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.action-card{display:grid;gap:5px;padding:16px 14px;border:1px solid var(--line);border-radius:18px;background:white;text-align:left;transition:transform .12s ease,border-color .15s}
.action-card:hover{border-color:var(--sea);transform:translateY(-2px)}
.action-card i{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:var(--mint);color:var(--sea);font-style:normal;font-weight:900;font-size:19px}
.action-card b{font-size:17px}
.action-card small{color:var(--muted);font-size:12px;line-height:1.45}
.action-card.main-action{background:linear-gradient(135deg,#2f8fd0,#3ab6a2);border-color:transparent;color:#fff;box-shadow:0 14px 30px rgba(47,143,208,.28)}
.action-card.main-action i{background:rgba(255,255,255,.26);color:#fff}
.action-card.main-action small{color:#e6f6f4}
.home-side header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.home-side header b{font-size:16px}
.side-list{list-style:none;margin:12px 0;padding:0;display:grid;gap:7px}
.side-list li{display:flex;align-items:baseline;gap:9px;font-size:15px}
.side-list li b{color:var(--sea);font-size:13px;min-width:52px}
.side-list li small{color:var(--muted);margin-left:auto}
.home-side .secondary{width:100%}

/* --- 课程表：一张干净的表 --- */
.timetable{display:grid;grid-template-columns:76px repeat(5,1fr);gap:8px}
.tt-head,.tt-corner{display:grid;place-items:center;font-weight:900;font-size:13px;color:var(--muted);padding:6px 0}
.tt-period{display:grid;place-items:center;font-weight:800;font-size:12px;color:var(--muted);background:var(--paper);border-radius:12px}
.tt-cell{display:grid;gap:3px;padding:11px 10px;border:1px solid var(--line);border-radius:14px;background:white;text-align:left;transition:transform .12s ease,border-color .15s}
.tt-cell:hover{border-color:var(--sea);transform:translateY(-2px)}
.tt-cell b{font-size:16px}
.tt-cell small{color:var(--muted);font-size:12px}
.tt-cell em{font-style:normal;font-size:11px;color:var(--sea)}
.tt-cell.blank{border-style:dashed;background:transparent;color:var(--muted);place-items:center;cursor:default}
.lesson-detail p{display:flex;gap:10px;margin:8px 0;font-size:15px}
.lesson-detail b{min-width:78px;color:var(--muted);font-size:13px;font-weight:800}

/* --- 名单：按教室座位摆 --- */
.seat-front{grid-column:1/-1;margin:0 auto 6px;padding:6px 44px;border-radius:12px;background:var(--mint);color:var(--sea);font-weight:900;letter-spacing:.4em;font-size:13px;text-align:center}
.seat-board{display:grid;gap:10px}
.seat-row{display:grid;grid-template-columns:56px repeat(6,1fr);gap:9px;align-items:center}
.seat-label{font-size:12px;font-weight:800;color:var(--muted);text-align:center}
.seat-empty{display:block}
.seat-board .roster-card{padding:10px 5px}
.seat-board .roster-card>b{font-size:16px}

/* --- 教材卡片：两个入口 --- */
.builtin-actions{display:flex;gap:8px}
.builtin-actions button{padding:10px 13px;white-space:nowrap}

/* --- 全屏阅读器 --- */
dialog.fullscreen{width:min(1080px,calc(100% - 12px));height:calc(100vh - 16px);max-height:none;margin:8px auto;border-radius:20px}
dialog.fullscreen .dialog-head{display:none}
dialog.fullscreen #dialogBody{padding:10px;height:100%}
.reader{display:grid;grid-template-rows:auto 1fr auto auto;gap:8px;height:100%;min-height:0}
.reader-top{display:flex;align-items:center;gap:12px}
.reader-title{display:grid;line-height:1.25}
.reader-title b{font-size:16px}
.reader-title small{color:var(--muted);font-size:12px}
.reader-count{margin-left:auto;font-weight:900;color:var(--sea)}
dialog.fullscreen .reader-stage{min-height:0;padding:8px;background:#d7e6e3;border-radius:16px;display:grid;place-items:center;overflow:auto}
dialog.fullscreen .reader-stage img{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:8px;cursor:zoom-in}
dialog.fullscreen .reader-stage img.zoom{max-width:none;max-height:none;cursor:zoom-out}
.reader-help{color:var(--muted);font-size:12px;text-align:center}
.reader-bar{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:16px;background:white}
.reader-range{flex:1;width:auto;padding:0;height:32px;border:0;background:transparent;accent-color:#2f8fd0}

/* --- 题库 --- */
.bank-tabs{display:flex;gap:8px;margin-bottom:12px}
.bank-timer{margin-bottom:10px;padding:10px 14px;border-radius:14px;background:var(--mint);font-weight:800}
.bank-timer b{font-size:20px;color:var(--sea)}
.calc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.calc-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:white;font-size:15px}
.calc-item span{flex:1;white-space:nowrap}
.calc-item input{width:82px;padding:7px 9px}
.calc-item.col i{font-style:normal;font-size:12px;color:var(--muted);border:1px dashed var(--line);border-radius:8px;padding:3px 7px}
.calc-item.right{border-color:#1d7a45;background:#effaf3}
.calc-item.wrong{border-color:var(--red);background:#fdf0f1}

/* --- 作业检查 --- */
.review-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:18px;background:var(--paper)}
.review-row>div:first-child{display:grid;gap:4px;min-width:0}
.review-row>div:first-child>span{color:var(--muted);font-size:12px}
.review-stat{display:grid;place-items:center;min-width:54px}
.review-stat b{font-size:21px}
.review-stat small{color:var(--muted);font-size:11px}

/* --- 布置作业：滑动选页 --- */
.page-picker{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--paper)}
.page-picker-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.page-picker-head span{font-weight:800;font-size:13px}
.page-picker-head b{font-size:20px;color:var(--sea)}
.page-picker-head em{font-style:normal;color:var(--muted);font-size:12px}
.slider-row{display:grid;grid-template-columns:auto 1fr 52px;align-items:center;gap:10px;font-size:13px;font-weight:800}
.slider-row input[type=range]{width:100%;height:32px;padding:0;border:0;background:transparent;accent-color:#2f8fd0}
.slider-row output{text-align:center;padding:6px 0;border-radius:10px;background:white;border:1px solid var(--line);font-weight:900}

/* --- 我的 --- */
.profile-links{display:flex;flex-wrap:wrap;gap:8px}

/* --- FAFA 面板 + 语音按钮 --- */
.fafa-head{display:flex;align-items:center;gap:8px}
.fafa-head b{font-size:15px}
.fafa-run{width:100%;margin-top:10px;padding:14px;font-size:16px}
.voice-btn{margin-top:12px;padding:15px 14px;border-radius:18px;background:linear-gradient(135deg,#0fa19a,#1f6ab5);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;cursor:pointer}
.voice-btn:active{transform:scale(.975)}
.voice-btn b{font-size:17px}
.voice-btn small{font-size:12px;line-height:1.45}
.voice-btn.off{background:#aebbc2;filter:saturate(.5)}

@media(max-width:860px){
  .action-grid{grid-template-columns:repeat(2,1fr)}
  .timetable{grid-template-columns:56px repeat(5,1fr);gap:6px}
  .tt-cell{padding:9px 8px}
  .tt-cell b{font-size:15px}
  .seat-row{grid-template-columns:44px repeat(6,1fr);gap:6px}
  .seat-label{font-size:11px}
  .seat-board .roster-card{padding:8px 3px;border-radius:12px}
  .seat-board .roster-card>b{font-size:14px}
  .seat-board .roster-card>i{font-size:10px}
  .calc-grid{grid-template-columns:1fr}
  .review-row{grid-template-columns:minmax(0,1fr) auto auto}
  .review-row .primary{grid-column:1/-1;justify-self:stretch}
  .builtin-book{grid-template-columns:46px 1fr;row-gap:10px}
  .builtin-actions{grid-column:1/-1}
  .builtin-actions button{flex:1}
  dialog.fullscreen{width:100vw;height:100vh;max-height:none;margin:0;border-radius:0}
  .nav button i{font-size:19px}
  .nav button span{font-size:12px}
  .action-card b{font-size:16px}
}
@media(max-width:430px){
  .nav button i{font-size:18px}
  .nav button span{font-size:12px}
  .timetable{grid-template-columns:44px repeat(5,1fr);gap:5px}
  .tt-cell{padding:8px 6px}
  .tt-cell b{font-size:14px}
  .tt-cell small{font-size:11px}
  .seat-row{grid-template-columns:34px repeat(6,1fr);gap:4px}
  .seat-label{font-size:10px}
  .review-row{grid-template-columns:1fr 1fr}
}
@media(prefers-reduced-motion:reduce){.island-dot{animation:none}}

/* --- v1.8.0 修：手机端阅读器顶栏不再折行 --- */
.reader-top{flex-wrap:nowrap}
.reader-top .secondary{white-space:nowrap;padding:9px 12px}
.reader-title{min-width:0;overflow:hidden}
.reader-title b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reader-count{white-space:nowrap}
@media(max-width:860px){
  .reader-title b{font-size:14px}
  .reader-title small{font-size:11px}
  .reader-top{gap:8px}
  .reader-bar{flex-wrap:wrap;justify-content:center}
  .reader-range{flex-basis:100%;order:-1}
}


/* ===== v1.8.1 · 第二轮调整（语音反馈 / 登录页 / 待办气泡 / 首页 / 教室 / 教材 / 课程配色） ===== */

/* --- 顶栏「今天要处理的事」：各端统一，整体调淡 --- */
.message-island,.message-island.urgent{background:linear-gradient(120deg,#e4f3fb,#e8f7f2);color:var(--ink);border:1px solid #c6e4ef;box-shadow:0 6px 16px rgba(26,58,92,.08)}
.message-island.urgent{border-color:#f0d2ad}
.message-island i{background:rgba(47,143,208,.15);color:#1f6fa8}
.message-island.urgent i{background:rgba(215,134,57,.17);color:#a8621f}
.message-island b{color:#1c3f57;font-size:14px}
.message-island.urgent b{color:#8a5326}
.message-island small{color:#6b8794;font-size:11px}
.message-island.urgent small{color:#a2764c}
.island-dot{background:#ffcf4d}
.message-island.urgent .island-dot{background:#f08a4b}

/* --- 登录页：身份卡横排 + 字体 --- */
.login-card h1{font-size:33px;letter-spacing:-.02em}
.login-card>p{font-size:15px}
.account-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:26px 0}
.account-card{display:grid;grid-template-columns:54px minmax(0,1fr) 18px;align-items:center;gap:14px;min-height:84px;padding:14px 16px;border:1.5px solid var(--line);border-radius:20px;background:#fff;text-align:left;cursor:pointer;transition:transform .16s ease,border-color .16s,box-shadow .16s}
.account-card:hover{border-color:var(--sea);transform:translateY(-2px);box-shadow:0 14px 28px rgba(26,58,92,.12)}
.account-card>i{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:22px;color:#fff;background:linear-gradient(135deg,#2f8fd0,#3ab6a2)}
.account-card[data-role="parent"]>i{background:linear-gradient(135deg,#f0a24a,#e8795a)}
.account-card[data-role="homeroom"]>i{background:linear-gradient(135deg,#2f8fd0,#1f5f96)}
.account-card[data-role="subject"]>i{background:linear-gradient(135deg,#57b894,#2a8a6c)}
.account-card[data-role="admin"]>i{background:linear-gradient(135deg,#6b7b95,#33415c)}
.account-text{display:grid;gap:2px;min-width:0}
.account-text b{font-size:18px}
.account-text em{font-style:normal;color:var(--sea);font-weight:800;font-size:13px}
.account-text small{color:var(--muted);font-size:12px}
.account-card .arrow{font-size:20px;color:#c3d5d2;transition:.15s}
.account-card:hover .arrow{color:var(--sea)}

/* --- 退出并切换身份：反亮深色实底 --- */
.logout-btn{width:100%;margin-top:14px;padding:15px 18px;border:0;border-radius:16px;background:linear-gradient(135deg,#123a5c,#1d5f8f);color:#fff;font-size:17px;font-weight:900;letter-spacing:.04em;cursor:pointer;box-shadow:0 10px 24px rgba(18,58,92,.34),inset 0 1px 0 rgba(255,255,255,.24);transition:transform .14s ease,box-shadow .16s}
.logout-btn:hover{background:linear-gradient(135deg,#0d2b45,#174d75);transform:translateY(-2px);box-shadow:0 14px 30px rgba(18,58,92,.42),inset 0 1px 0 rgba(255,255,255,.28)}
.logout-btn:active{transform:scale(.98)}

/* --- FAFA 语音：对话框旁的状态条 --- */
.voice-bar{margin:8px 0 0;padding:11px 13px;border-radius:14px;border:1px solid #ffe0a8;background:#fff8e8;color:#7d5200;font-size:13px;line-height:1.55;font-weight:700}
.voice-bar b{display:block;font-size:14px;font-weight:900;margin-bottom:3px}
.voice-bar a{color:#0b62ad;text-decoration:underline;font-weight:900;white-space:nowrap}
.voice-bar.v-on{border-color:#b9dcff;background:#eaf4ff;color:#0b5a9c}
.voice-bar.v-ok{border-color:#b6e7c9;background:#eafaf0;color:#0d6b3d}
.voice-bar.v-err{border-color:#f5c2c7;background:#fdedee;color:#9d1f2a}

/* --- 首页数字卡：可点开 --- */
button.metric{font:inherit;color:var(--ink);text-align:left;cursor:pointer;position:relative;transition:transform .15s ease,border-color .16s,box-shadow .16s}
button.metric:hover{transform:translateY(-2px);border-color:var(--sea);box-shadow:0 12px 26px rgba(26,58,92,.1)}
.metric-go{position:absolute;right:17px;top:50%;transform:translateY(-50%);font-style:normal;font-size:22px;line-height:1;color:#c8d8d5;transition:.16s}
button.metric:hover .metric-go{color:var(--sea);transform:translateY(-50%) translateX(3px)}
.action-grid{grid-template-columns:repeat(3,1fr)}

/* --- 首页「本周课程」周条 --- */
.week-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:12px 0}
.week-col{display:grid;gap:6px;align-content:start;text-align:center;min-width:0}
.week-col>b{font-size:12px;color:var(--muted);font-weight:900}
.week-chip{display:grid;gap:1px;padding:7px 3px;border:0;border-radius:11px;background:var(--mint);color:var(--ink);cursor:pointer;transition:.14s;min-width:0}
.week-chip:hover{transform:translateY(-2px);box-shadow:0 8px 16px rgba(26,58,92,.14)}
.week-chip i{font-style:normal;font-weight:900;font-size:15px;line-height:1.2}
.week-chip span{font-size:11px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.week-chip em{font-style:normal;font-size:9px;color:#5d7a80}
.week-off{display:grid;place-items:center;min-height:46px;color:#c6d4d2;font-size:12px}

/* --- 科目配色（周条 / 课程表共用） --- */
.t-chinese{background:#fdecee!important;border-color:#f7d4d8!important;color:#a3313c!important}
.t-math{background:#e9f1fd!important;border-color:#cddef7!important;color:#1f5bab!important}
.t-english{background:#eceafc!important;border-color:#d6d2f5!important;color:#4a3fae!important}
.t-art{background:#f6ecfb!important;border-color:#e6d3f3!important;color:#7c3fa8!important}
.t-sport{background:#e9f9ee!important;border-color:#c6ebd4!important;color:#1d7a45!important}
.t-science{background:#e6f7f8!important;border-color:#c3e8ec!important;color:#116d78!important}
.t-music{background:#fdf3e4!important;border-color:#f6e0bd!important;color:#96601b!important}
.t-other{background:#f0f2f4!important;border-color:#dde3e7!important;color:#5b6b76!important}
.tt-cell i{font-style:normal;font-weight:900;font-size:13px;width:23px;height:23px;border-radius:7px;display:grid;place-items:center;background:rgba(255,255,255,.78)}
.tt-cell b{color:inherit}

/* --- 班务：虚拟教室 --- */
.classroom{display:grid;gap:15px;padding:20px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,#fdfefe,#eef8f6)}
.cr-front{display:grid;gap:11px;justify-items:center}
.cr-blackboard{width:min(560px,100%);padding:15px 18px;border-radius:14px;background:linear-gradient(160deg,#26543f,#1a3d31);color:#e9f6ef;text-align:center;box-shadow:inset 0 3px 12px rgba(0,0,0,.28)}
.cr-blackboard span{display:block;font-size:11px;color:#9dc7b3;letter-spacing:.2em}
.cr-blackboard b{display:block;margin-top:6px;font-size:21px;letter-spacing:.1em}
.cr-podium{width:min(230px,62%);padding:10px;border-radius:5px 5px 13px 13px;background:linear-gradient(180deg,#dcbd90,#c9a475);color:#5a421f;font-weight:900;letter-spacing:.5em;text-align:center;box-shadow:0 10px 18px rgba(120,90,40,.25)}
.cr-seats{display:grid;gap:10px;padding:6px 0}
.cr-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.cr-seat{display:block;height:36px;border-radius:9px 9px 13px 13px;background:linear-gradient(180deg,#fff,#e8f1f4);border:1px solid #d7e6e6;box-shadow:0 5px 10px rgba(26,58,92,.08);animation:seat-in .5s ease backwards}
@keyframes seat-in{from{opacity:0;transform:translateY(9px)}}
.cr-wall{position:relative;margin-top:8px;padding:18px 13px 13px;border-radius:18px;border:1px dashed #cbd9d6;background:repeating-linear-gradient(0deg,#fbfaf6,#fbfaf6 24px,#f4f2ec 24px,#f4f2ec 25px)}
.cr-wall-tag{position:absolute;top:-11px;left:16px;padding:3px 13px;border-radius:9px;background:var(--navy);color:#fff;font-size:11px;font-weight:900;letter-spacing:.22em}
.cr-wall-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:11px}
.wall-card{position:relative;display:grid;gap:4px;padding:14px 34px 14px 15px;border:1px solid #e5dfd0;border-radius:6px;background:#fffdf5;text-align:left;cursor:pointer;box-shadow:2px 3px 0 rgba(26,58,92,.09);transition:.16s}
.wall-card:nth-child(odd){transform:rotate(-.6deg)}
.wall-card:nth-child(even){transform:rotate(.5deg)}
.wall-card:hover{transform:rotate(0) translateY(-3px);box-shadow:3px 7px 14px rgba(26,58,92,.16)}
.wall-card i{position:absolute;right:10px;top:10px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:12px;background:var(--mint);color:var(--sea)}
.wall-card b{font-size:15px}
.wall-card small{color:var(--muted);font-size:11px;line-height:1.45}
.wall-card.w-activity{background:#fdf6ea}
.wall-card.w-todo{background:#fdeef0}
.wall-card.w-duty{background:#eef7fb}
.wall-card.w-board{background:#f2f7ec}
.duty-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.duty-list li{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 13px;border:1px solid var(--line);border-radius:13px;background:var(--paper)}
.duty-list b{color:var(--sea);font-size:14px}
.duty-list span{font-size:14px}
.duty-list em{font-style:normal;font-size:12px;color:var(--muted)}
.wall-note{padding:15px;border:1px solid #e5dfd0;border-radius:10px;background:#fffdf5;line-height:2}
.wall-note b{font-size:17px}

/* --- 课本与题库：封面图卡片 --- */
.builtin-book{grid-template-columns:96px minmax(0,1fr);grid-template-rows:auto auto;gap:10px 15px;align-items:start;background:#fff;padding:16px}
.book-cover{grid-row:1/3;width:96px;height:128px;border-radius:8px;overflow:hidden;background:#e8efee;border:1px solid var(--line);box-shadow:4px 5px 0 rgba(26,58,92,.13)}
.book-cover img{width:100%;height:100%;object-fit:cover;display:block}
.book-meta b{font-size:17px}
.book-meta span{display:block;margin-top:5px;color:var(--muted);font-size:12px}
.book-meta em{display:inline-block;margin-top:8px;font-style:normal;font-size:11px;font-weight:800;color:var(--sea);background:var(--mint);padding:3px 10px;border-radius:8px}
.builtin-actions{align-self:end;display:flex;gap:8px;flex-wrap:wrap}

@media(max-width:860px){
  .account-grid{grid-template-columns:1fr}
  .account-card{grid-template-columns:48px minmax(0,1fr) 16px;min-height:76px;padding:12px 14px}
  .account-card>i{width:48px;height:48px;font-size:20px}
  .account-text b{font-size:17px}
  .action-grid{grid-template-columns:repeat(2,1fr)}
  .week-strip{gap:4px}
  .week-chip span{font-size:10px}
  .cr-row{gap:6px}
  .cr-seat{height:28px}
  .cr-blackboard b{font-size:18px}
  .classroom{padding:14px;border-radius:20px}
  .builtin-book{grid-template-columns:78px minmax(0,1fr)}
  .book-cover{width:78px;height:104px}
  .duty-list li{grid-template-columns:46px minmax(0,1fr)}
  .duty-list em{grid-column:1/-1}
}
@media(max-width:430px){
  .week-chip em{display:none}
  .cr-seat{height:22px}
  .cr-row{gap:4px}
  .cr-blackboard b{font-size:16px}
}

/* --- v1.8.1 修：教室座位里显示学生名 --- */
.cr-seat{display:grid;place-items:center;padding:0 2px}
.cr-seat em{font-style:normal;font-size:11px;font-weight:800;color:#3c5b68;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
@media(max-width:860px){.cr-seat em{font-size:9px}}


/* ===== v1.8.2 · 学情：今日错题本 / 一周回炉本 / 学习里程 ===== */

/* --- 顶部统计卡 --- */
.study-summary{position:relative;display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:linear-gradient(120deg,#f4fbfa,#eef5fd);border-color:#d8e9ea}
.ss-main{display:grid;place-items:center;min-width:96px;padding:12px 10px;border-radius:18px;background:#fff;box-shadow:0 8px 20px rgba(26,58,92,.08)}
.ss-main b{font-size:40px;line-height:1;color:var(--sea)}
.ss-main small{margin-top:5px;color:var(--muted);font-size:12px}
.ss-side{display:grid;gap:9px;flex:1;min-width:190px}
.ss-line{display:flex;flex-wrap:wrap;gap:7px 16px;font-size:14px;color:var(--ink);align-items:center}
.ss-tag{padding:4px 12px;border-radius:999px;background:var(--sea);color:#fff;font-size:12px;font-weight:900}
.demo-tag{position:absolute;top:12px;right:14px;padding:4px 12px;border-radius:999px;background:#fff3d4;color:#8a5a00;font-size:11px;font-weight:900;border:1px solid #f0dcae}

/* --- 错题卡：白底 + 左侧科目色条 --- */
.wrong-group{margin-bottom:14px}
.wrong-list{display:grid;gap:10px}
.wrong-list.compact{gap:8px;margin-top:10px}
.wrong-card{position:relative;display:grid;gap:7px;padding:13px 15px 13px 18px;border:1px solid var(--line);border-left:4px solid var(--tone,#c9d6d4);border-radius:15px;background:#fff;overflow:hidden}
.wrong-card::after{content:'';position:absolute;left:0;top:0;bottom:0;width:46px;background:linear-gradient(90deg,var(--tone,#c9d6d4),transparent);opacity:.07;pointer-events:none}
.wrong-card header{display:flex;align-items:center;gap:9px}
.wrong-card header>i{flex:0 0 26px;width:26px;height:26px;border-radius:9px;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:13px;background:var(--tone,#c9d6d4);color:#fff}
.wrong-card header>b{font-size:16px;line-height:1.5}
.wrong-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:15px}
.wg{padding:4px 12px;border-radius:10px;background:#fdeef0;color:#a3313c;font-weight:800;text-decoration:line-through;text-decoration-color:rgba(163,49,60,.45)}
.wr{padding:4px 12px;border-radius:10px;background:#eafaf0;color:#0d6b3d;font-weight:900}
.wa{padding:4px 12px;border-radius:10px;background:#fdf6ea;color:#96601b;font-weight:800;font-size:14px}
.arrow{color:var(--muted);font-weight:900}
.wrong-advice{margin:0;font-size:13px;color:var(--muted)}
.wrong-card>small{color:#93a7ae;font-size:12px}

/* --- 科目分布 --- */
.subj-chips{display:flex;flex-wrap:wrap;gap:6px}
.subj-chip{padding:4px 12px;border-radius:999px;font-size:12px;font-weight:900;border:1px solid transparent}

/* --- 回炉重点 --- */
.recycle-key{margin-bottom:14px}
.recycle-key-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-bottom:12px}
.key-chip{display:grid;grid-template-columns:26px minmax(0,1fr);gap:3px 10px;align-items:center;padding:11px 13px;border:1px solid var(--line);border-top:3px solid var(--tone,#c9d6d4);border-radius:14px;background:#fff}
.key-chip i{grid-row:1/3;width:26px;height:26px;border-radius:9px;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:13px;background:var(--tone,#c9d6d4);color:#fff}
.key-chip span{font-size:15px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.key-chip em{font-style:normal;font-size:12px;color:#0d6b3d;font-weight:800}

/* --- 按天折叠 --- */
.recycle-days{display:grid;gap:9px}
.recycle-day{border:1px solid var(--line);border-radius:15px;background:var(--paper);overflow:hidden}
.recycle-day>summary{display:flex;align-items:center;gap:10px;padding:13px 15px;cursor:pointer;list-style:none}
.recycle-day>summary::-webkit-details-marker{display:none}
.recycle-day>summary::after{content:'\25BE';margin-left:8px;color:var(--muted);font-size:12px;transition:transform .15s}
.recycle-day[open]>summary::after{transform:rotate(180deg)}
.recycle-day>summary b{font-size:16px;min-width:50px}
.recycle-day>summary span{color:var(--muted);font-size:13px;font-weight:700}
.recycle-day>summary em{font-style:normal;margin-left:auto;padding:3px 11px;border-radius:999px;background:var(--mint);color:var(--sea);font-size:12px;font-weight:900}
.recycle-body{display:grid;gap:10px;padding:0 15px 15px}
.day-learns{display:grid;gap:7px;padding:11px;border-radius:13px;background:#fff}

/* --- 学习行 + 分数 --- */
.learn-row{display:grid;grid-template-columns:26px minmax(0,1fr) auto auto;gap:9px;align-items:center;font-size:15px}
.learn-row>i{width:26px;height:26px;border-radius:9px;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:13px}
.learn-row>b{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.learn-row>small{color:var(--muted);font-size:12px;white-space:nowrap}
.score-pill{padding:3px 10px;border-radius:999px;font-weight:900;font-size:13px;white-space:nowrap}
.score-pill em{font-style:normal;font-size:10px;margin-left:1px}
.score-pill.good{background:#eafaf0;color:#0d6b3d}
.score-pill.ok{background:#eaf4ff;color:#0b5a9c}
.score-pill.warn{background:#fff6e2;color:#96601b}
.score-pill.bad{background:#fdeef0;color:#a3313c}
.score-pill.pending{background:#f0f2f4;color:#5b6b76}

/* --- 学习里程：时间线 --- */
.journey{position:relative;display:grid;gap:16px;padding-left:26px}
.journey::before{content:'';position:absolute;left:7px;top:10px;bottom:10px;width:2px;background:linear-gradient(180deg,var(--sea),var(--mint))}
.journey-node{position:relative;display:grid;gap:9px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:#fff}
.jn-dot{position:absolute;left:-26px;top:19px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--sea);box-shadow:0 0 0 3px rgba(47,143,208,.14)}
.journey-node header{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.journey-node header b{font-size:17px}
.journey-node header span{color:var(--muted);font-size:12px}
.journey-node header em{font-style:normal;margin-left:auto;font-size:12px;color:var(--sea);font-weight:800}
.jn-learns{display:grid;gap:7px}
.jn-notes{display:grid;gap:7px;padding:11px 13px;border-radius:12px;background:var(--paper)}
.jn-notes p{margin:0;font-size:13px;color:#4c6370;line-height:1.6}
.jn-notes p b{display:block;color:var(--ink);font-size:13px}
.jn-notes p small{display:block;margin-top:2px;color:var(--muted)}

/* --- 回炉练习弹窗 --- */
.drill-block{margin-bottom:14px}
.drill-block h3{margin:0 0 9px;font-size:16px}
.drill-item{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--line);border-radius:13px;background:#fff;margin-bottom:8px}
.drill-item span{flex:1;font-size:16px;font-weight:800}
.drill-item input{width:96px;padding:9px 11px;text-align:center;font-size:16px}
.drill-item.right{border-color:#1d7a45;background:#effaf3}
.drill-item.wrong{border-color:#c0392b;background:#fdf0f1}
.drill-read{display:grid;gap:3px;padding:11px 13px;border:1px solid var(--line);border-radius:13px;background:var(--paper);margin-bottom:8px}
.drill-read b{font-size:15px}
.drill-read small{color:var(--muted);font-size:12px}

@media(max-width:860px){
  .study-summary{gap:12px}
  .ss-main{min-width:78px;padding:10px 8px}
  .ss-main b{font-size:32px}
  .recycle-key-list{grid-template-columns:1fr}
  .learn-row{grid-template-columns:24px minmax(0,1fr) auto;row-gap:4px}
  .learn-row>small{grid-column:2/-1}
  .journey{padding-left:22px}
  .journey::before{left:6px}
  .jn-dot{left:-22px}
  .drill-item span{font-size:15px}
}
@media(max-width:430px){
  .wrong-card header>b{font-size:15px}
  .recycle-day>summary b{font-size:15px}
  .recycle-day>summary span{display:none}
}

/* --- v1.8.2 修：手机上日期不折行；回炉重点选中态 --- */
.date-chip{white-space:nowrap}
@media(max-width:430px){.date-chip{font-size:11px;padding:5px 9px}}

/* ==================== 每日打卡 ==================== */
.ck-streak{display:flex;align-items:center;gap:14px;padding:16px 22px;margin-bottom:14px;border-radius:20px;background:linear-gradient(135deg,var(--navy),var(--sea));color:#fff;box-shadow:0 14px 30px rgba(26,58,92,.2)}
.ck-streak>b{font-size:32px;line-height:1}
.ck-streak span{font-weight:800}
.ck-streak small{display:block;margin-top:3px;color:#cfe6e2;font-weight:400}
.ck-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}
.ck-card{display:grid;gap:7px;justify-items:start;padding:18px;border:1px solid var(--line);border-radius:20px;background:white}
.ck-card.done{background:var(--mint);border-color:#bfe0d8}
.ck-card>b{font-size:18px}
.ck-card>small{color:var(--muted);line-height:1.5}
.ck-card .ck-score{font-size:26px;font-weight:900;color:var(--sea);line-height:1}
.ck-badge{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:18px;color:#fff}
.ck-b-rope{background:#d9764f}
.ck-b-read{background:var(--sea)}
.ck-b-oral{background:var(--navy)}
.ck-item{display:grid;grid-template-columns:46px 1fr;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.ck-item:last-child{border-bottom:0}
.ck-item b,.ck-item small{display:block}
.ck-item small{margin-top:4px;color:var(--muted)}
.ck-comment{display:block;margin-top:6px;font-size:13px;line-height:1.6;color:var(--ink)}
.ck-medias{margin-top:8px}
.ck-media{display:inline-block;margin:0 8px 6px 0;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--paper);text-decoration:none;color:var(--sea);font-weight:800;font-size:12px}
.ck-media:hover{border-color:var(--sea);background:var(--mint)}
.ck-wrongs{margin-top:8px}
.ck-wrong{display:inline-block;margin:0 8px 6px 0;padding:4px 9px;border-radius:8px;background:#fdecec;color:var(--red);font-size:12px;font-weight:700}
.ck-table{display:grid;gap:0;border:1px solid var(--line);border-radius:16px;overflow:hidden}
.ck-tr{display:grid;grid-template-columns:1.2fr repeat(3,1fr);align-items:center;border-bottom:1px solid var(--line);background:white}
.ck-tr:last-child{border-bottom:0}
.ck-tr>span,.ck-tr>b{padding:11px 14px}
.ck-th{background:var(--paper);font-weight:900;color:var(--muted);font-size:12px}
.ck-cell{text-align:center;color:var(--muted)}
.ck-cell.ok{color:var(--sea)}
.ck-cell.ok b{font-size:16px}
.ck-cell.ok small{display:block;font-size:10px;color:var(--muted)}
.ck-passage{margin:12px 0;padding:16px 18px;border-radius:16px;background:var(--mint);font-size:19px;line-height:2;letter-spacing:.02em}
.ck-rec{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ck-rec button.listening{background:var(--red);border-color:var(--red);color:#fff;animation:voice-pulse 1.1s ease-in-out infinite}
.ck-rec audio{width:100%;margin-top:10px}
#ckReadAudioBox audio{width:100%;margin-top:10px}
.oral-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}
.oral-item{display:grid;gap:5px;font-size:13px;font-weight:800}
.oral-item input{text-align:center;font-size:18px;padding:10px}
@media(max-width:860px){.ck-grid{grid-template-columns:1fr}.oral-grid{grid-template-columns:repeat(2,1fr)}.ck-tr>span,.ck-tr>b{padding:9px 8px;font-size:12px}}

/* ==================== 家庭端作业台账 · 小组长 · 学宠动效 ==================== */
.assign-card.family{position:relative;grid-template-columns:minmax(0,1fr) auto auto auto;padding-left:18px;background:white}
.assign-card.family::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:4px;border-radius:0 4px 4px 0;background:var(--tone,#5b6b76)}
.assign-card.family .hw-due,.assign-card.family .hw-req{display:block;color:var(--muted);font-size:12px;line-height:1.55}
.assign-card.family .hw-req{color:var(--ink)}
.hw-due{margin-top:2px;font-weight:800;color:var(--sea)!important}
.hw-fb-chip{display:inline-block;margin-top:5px;padding:3px 9px;border-radius:8px;background:var(--mint);color:var(--sea);font-size:11px;font-weight:800}
.hw-overdue{color:var(--red);font-weight:800}
.review-stat.msg b{color:var(--sea)}
.hw-fb-box{margin:10px 0 14px;padding:12px 14px;border:1px dashed var(--line);border-radius:14px;background:var(--paper)}
.hw-fb-box h3{margin:0 0 8px;font-size:13px;color:var(--sea)}
.hw-fb{padding:8px 0;border-bottom:1px solid var(--line)}
.hw-fb:last-child{border-bottom:0}
.hw-fb b{font-size:13px}
.hw-fb span{margin-left:8px;color:var(--muted);font-size:11px}
.hw-fb p{margin:4px 0 0;font-size:13px;line-height:1.55}
.hw-fb-list{margin:10px 0;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--paper);max-height:220px;overflow:auto}

/* 座位表：组标签 + 小组长 */
.cr-row{grid-template-columns:56px repeat(6,1fr)}
.cr-group-tag{display:grid;place-items:center;border-radius:10px;background:var(--mint);color:var(--sea);font-size:11px;font-weight:900;letter-spacing:.04em}
.cr-seat{position:relative;display:grid;place-items:center;overflow:hidden}
.cr-seat em{font-style:normal;font-size:11px;font-weight:800;color:var(--ink);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 5px}
.cr-seat.cr-leader{background:linear-gradient(180deg,#fff,#d9efea);border-color:var(--sea);box-shadow:0 6px 13px rgba(58,159,150,.26)}
.cr-seat.cr-leader u{position:absolute;left:3px;top:3px;width:15px;height:15px;border-radius:50%;background:var(--sea);color:#fff;font-size:9px;font-weight:900;text-decoration:none;display:grid;place-items:center;line-height:1}
.wall-card.w-leader{background:#e9f6f2}

/* 学宠动效：呼吸 / 点头 / 蹦跳 */
@keyframes pet-breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-7px) scale(1.014)}}
@keyframes pet-nod{0%,100%{transform:rotate(-2.2deg) translateY(0)}50%{transform:rotate(2.2deg) translateY(-4px)}}
@keyframes pet-bounce{0%,100%{transform:translateY(0) rotate(0)}22%{transform:translateY(-16px) rotate(-3.5deg)}48%{transform:translateY(0) rotate(0)}72%{transform:translateY(-8px) rotate(3.5deg)}}
.pet-live{transform-origin:50% 100%;animation:pet-breathe 3.4s ease-in-out infinite;will-change:transform}
.pet-live.mood-study{animation:pet-nod 2.6s ease-in-out infinite}
.pet-live.mood-run{animation:pet-bounce 1.05s ease-in-out infinite}
.pet-live.mood-idle{animation:pet-breathe 4.4s ease-in-out infinite}
.pet-choice img{animation:pet-breathe 3.8s ease-in-out infinite;transform-origin:50% 100%}
.pet-choice.on img{animation:pet-bounce 1.6s ease-in-out infinite}
.fafa.pet-live{animation:pet-breathe 3.6s ease-in-out infinite}
.fafa.pet-live.mood-run{animation:pet-bounce 1.15s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.pet-live,.pet-choice img,.fafa.pet-live{animation:none!important}}
@media(max-width:860px){.cr-row{grid-template-columns:40px repeat(6,1fr)}.cr-group-tag{font-size:10px}.assign-card.family{grid-template-columns:minmax(0,1fr) auto}}
@media(max-width:560px){.cr-row{grid-template-columns:32px repeat(6,1fr)}.cr-seat em{font-size:9px;padding:0 2px}.assign-card.family{grid-template-columns:minmax(0,1fr)}}

/* 名单 · 小组长标记 */
.roster-card{position:relative}
.roster-card.lead{border-color:var(--sea);background:linear-gradient(180deg,#fff,#e3f3ef);box-shadow:0 6px 14px rgba(58,159,150,.22)}
.roster-card .lead-tag{position:absolute;left:5px;top:5px;width:16px;height:16px;border-radius:50%;background:var(--sea);color:#fff;font-size:10px;font-weight:900;display:grid;place-items:center;text-decoration:none;line-height:1}

/* ==================== 每日寄语（按身份） ==================== */
.daily-motto{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;margin:0 0 16px;padding:18px 24px;border-radius:22px;background:linear-gradient(118deg,#15304c 0%,#1e4c72 52%,#2f8b7e 100%);color:#fff;box-shadow:0 16px 34px rgba(26,58,92,.22);overflow:hidden}
.daily-motto::after{content:"";position:absolute;right:-46px;top:-58px;width:190px;height:190px;border-radius:50%;background:rgba(255,255,255,.07);pointer-events:none}
.dm-quote{position:relative;z-index:1;font-family:Georgia,"Times New Roman",serif;font-size:58px;line-height:.7;color:rgba(255,255,255,.42);transform:translateY(-8px)}
.dm-body{position:relative;z-index:1;min-width:0}
.dm-text{margin:0;font-size:20px;font-weight:800;line-height:1.72;letter-spacing:.035em;text-shadow:0 1px 3px rgba(6,26,44,.35)}
.dm-from{margin:7px 0 0;font-size:12px;font-weight:700;letter-spacing:.06em;color:rgba(255,255,255,.84);text-shadow:0 1px 2px rgba(6,26,44,.3)}
.dm-note{margin:9px 0 0;font-size:13px;line-height:1.6;color:rgba(255,255,255,.93);text-shadow:0 1px 2px rgba(6,26,44,.3)}
.dm-side{position:relative;z-index:1;display:grid;gap:7px;justify-items:end;text-align:right}
.dm-tag{padding:5px 11px;border-radius:999px;background:rgba(6,32,54,.34);font-size:11px;font-weight:900;letter-spacing:.06em;white-space:nowrap;border:1px solid rgba(255,255,255,.24)}
.dm-side-note{font-size:11px;color:rgba(255,255,255,.8);text-shadow:0 1px 2px rgba(6,26,44,.3)}
.dm-again{padding:7px 14px;border:1px solid #fff;border-radius:999px;background:#fff;color:var(--navy);font-size:12px;font-weight:900;box-shadow:0 4px 12px rgba(6,26,44,.24);transition:background .2s,transform .2s}
.dm-again:hover{background:var(--mint);color:var(--navy)}
.dm-again:active{transform:scale(.96)}
@media(max-width:760px){.daily-motto{grid-template-columns:auto minmax(0,1fr);padding:16px 18px;gap:10px}.dm-quote{font-size:42px}.dm-text{font-size:17px;line-height:1.7}.dm-side{grid-column:1/-1;grid-template-columns:auto auto;align-items:center;justify-items:start;justify-content:space-between}.dm-side-note{display:none}}

/* ===== 备课中心（教师端）===== */
.prep-pick{margin-bottom:14px}
.prep-pick-row{display:grid;grid-template-columns:minmax(140px,.8fr) minmax(0,2fr);gap:12px;align-items:end}
.prep-pick-row .grow{width:100%}
.prep-pick-row select{width:100%;min-height:48px;font-size:16px}
.prep-steps{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;align-items:center}
.prep-steps-tip{font-size:13px;color:var(--muted,#5b6b7c);margin-left:4px}
/* 三个标签是真按钮（点一下切换），所以清掉浏览器默认按钮样式 */
.prep-step{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:var(--tint,#eef3f8);color:var(--muted,#5b6b7c);font-size:14px;font:inherit;border:0;cursor:pointer;transition:background .15s ease,color .15s ease}
.prep-step:hover{background:#e2ebf5;color:var(--navy,#15304c)}
.prep-step i{display:inline-flex;width:20px;height:20px;border-radius:50%;background:#c7d4e0;color:#fff;font-style:normal;font-size:12px;align-items:center;justify-content:center}
.prep-step.on{background:var(--sky,#0A84FF);color:#fff}
.prep-step.on:hover{background:var(--sky,#0A84FF);color:#fff}
.prep-step.on i{background:rgba(255,255,255,.35)}
.prep-card{margin-bottom:14px}
.prep-pre{font-size:15px;line-height:1.75;color:var(--ink,#22303c);word-break:break-word;max-height:340px;overflow:auto}
.prep-pre h4{margin:10px 0 4px;font-size:16px;color:var(--navy,#15304c)}
.prep-pre .md-li{display:block;font-style:normal;padding-left:16px;position:relative}
.prep-pre .md-li:before{content:"·";position:absolute;left:4px;color:var(--sky,#0A84FF)}
.prep-pre-tall{max-height:60vh}
.prep-nextbar{justify-content:flex-end;margin-top:12px}
/* 素材是 Markdown 表格（课标对照表），必须渲染成真表格；直接显示竖线看着像乱码 */
.md-p{margin:6px 0}
.md-quote{margin:6px 0;padding:6px 10px;border-left:3px solid rgba(10,132,255,.35);background:rgba(10,132,255,.05);border-radius:0 8px 8px 0;color:var(--muted,#5b6b7c);font-size:14px}
.md-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:14px}
.md-table th,.md-table td{border:1px solid rgba(21,48,76,.14);padding:6px 8px;text-align:left;vertical-align:top;line-height:1.5}
.md-table th{background:rgba(10,132,255,.09);color:var(--navy,#15304c);font-weight:600;white-space:nowrap}
.md-table tbody tr:nth-child(even) td{background:rgba(21,48,76,.025)}
.prep-fold{margin-top:8px;border-top:1px dashed rgba(0,0,0,.1);padding-top:8px}
.prep-fold summary{cursor:pointer;font-size:15px;font-weight:600;color:var(--sky,#0A84FF);padding:8px 0}
.prep-group{margin-bottom:10px}
.prep-group h4{display:flex;align-items:center;gap:8px;margin:10px 0 6px;font-size:15px}
.prep-group h4 small{color:var(--muted,#64758a);font-weight:400}
.prep-ex{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1.5px solid rgba(0,0,0,.08);border-radius:12px;margin-bottom:8px;cursor:pointer;min-height:48px;transition:border-color .15s,background .15s}
.prep-ex:hover{border-color:rgba(10,132,255,.4)}
.prep-ex.on{border-color:var(--sky,#0A84FF);background:rgba(10,132,255,.06)}
.prep-ex input{width:20px;height:20px;margin-top:2px;flex:0 0 auto;accent-color:var(--sky,#0A84FF)}
.prep-ex-main{flex:1;min-width:0}
.prep-ex-main b{display:block;font-weight:600;font-size:15px;line-height:1.5}
.prep-ex-meta{display:block;margin-top:3px;font-size:12.5px;color:var(--muted,#64758a)}
.prep-diff{flex:0 0 auto;font-size:12px;padding:2px 8px;border-radius:999px;align-self:center}
.prep-diff.easy{background:rgba(47,139,126,.14);color:#227a6c}
.prep-diff.mid{background:rgba(230,160,40,.16);color:#9a6a10}
.prep-diff.hard{background:rgba(201,78,84,.14);color:#b03a40}
.prep-bar{margin-top:12px;flex-wrap:wrap}
.prep-bar .primary{min-height:48px}
.prep-draft{border:1.5px solid var(--sky,#0A84FF);background:rgba(10,132,255,.05)}
.prep-draft b{font-size:16px}
.prep-draft p{margin:6px 0;font-size:14px;color:var(--muted,#5b6b7c)}
.prep-draft small{display:block;font-size:13.5px;line-height:1.6;color:var(--ink,#22303c);margin-bottom:8px}
@media(max-width:760px){.prep-pick-row{grid-template-columns:1fr}.prep-pre{max-height:46vh}.prep-pre-tall{max-height:56vh}.md-table{font-size:13px}.md-table th,.md-table td{padding:5px 6px}}
