/* 全站共用的一套底子：项尚 2026-09-14 定稿的档案页样子。三个页面都从这里长出来。 */
/* 自带两种字体（项尚 2026-09-16：留言正文仿宋、署名楷体；iPhone 没有仿宋，只能自带）。
   朱雀仿宋 v0.212（TrionesType，OFL）取常用 3000 字＋本地语料＋点评名册的子集；霞鹜文楷 v1.522（lxgw，OFL）只留署名那几个字。
   许可证放在 字体/ 目录里。子集外的生僻字自动落到系统字体。*/
@font-face{font-family:"朱雀仿宋";src:url(字体/朱雀仿宋-子集.woff2) format("woff2");font-display:swap;}
@font-face{font-family:"文楷";src:url(字体/文楷-署名.woff2?v=2) format("woff2");font-display:swap;}

:root{
  color-scheme:light;   /* 这套档案是纸的样子，不做夜间版（2026-09-14 项尚：手机上不好看——深色模式下整页发黑）*/
  --page:#F7F8FA; --card:#FFFFFF; --paper:#FEFDFB;
  --ink:#1C2133; --ink-2:#2F3D6B; --ink-3:#626B82; --ink-4:#969DB0;
  --hair:#DADDE5; --hair-2:#ECEEF3; --wash:#E9EDF8;
  --tint-a:#E9EEF9; --edge-a:#CBD6ED;   /* 录音 */
  --tint-b:#EEF0F4; --edge-b:#D8DDE6;   /* 出勤 */
  --tint-c:#F6F0E5; --edge-c:#E3D5BC;   /* 点评 */
  --away:#8A6A4F; --on-accent:#FFFFFF;
  --good:#C9982A; --good-on:#F6CB5A;   /* 表现好 ★：白底上金黄，深蓝名字块上亮金 */
  --bad:#B4503A; --bad-on:#F4A28F;     /* 待改进 △（原叫「表现不好」，项尚 09-16 改名）：白底上砖红，深蓝名字块上浅珊瑚 */
  /* 点评：每位老师一个主题色（2026-09-16 项尚定自己给的「① 清新柔和」，底色掺 65% 白、边掺 25% 白，一定要淡；正文照旧墨色）*/
  --deng-bg:#E3ECF1; --deng-edge:#C3D6E2; --deng:#396682;    /* 指挥邓老师 雾霾蓝 #AFC8D8 */
  --yang-bg:#FBF6E4; --yang-edge:#F6EBC6; --yang:#AB8C25;    /* 杨老师 奶油黄 #F3E4B3，署名压成橄榄褐免得和 ★ 撞 */
  --xiang-bg:#F3E9EA; --xiang-edge:#E6CFD1; --xiang:#8D434A; /* 项老师 豆沙粉 #DDBFC2 */
  --display:"Songti SC","STSong","Noto Serif SC","SimSun",serif;
  --body:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --fangsong:"朱雀仿宋","STFangsong","FangSong","仿宋",var(--display);   /* 留言正文 */
  --kai:"文楷","Kaiti SC","STKaiti","KaiTi","楷体",var(--display);          /* 署名 */
}
*{box-sizing:border-box;}
input[type=text],input[type=password],textarea,button{-webkit-appearance:none;appearance:none;border-radius:0;}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;line-height:1.7;}
a{color:var(--ink-2);text-decoration:none;}
.media-management-link{margin:14px 0 0;text-align:right;font-size:13px;}
.page{max-width:760px;margin:0 auto;padding:52px 26px 120px;}
.page.wide{max-width:900px;}
@media(max-width:600px){.page{padding:26px 16px 80px;}}
/* iPhone：输入框字号小于 16px 一点进去整页会自动放大；按钮点一下不要闪灰底 */
@media(max-width:600px){input[type=text],input[type=password],select,textarea{font-size:16px !important;}}
button,a,.chip,.cell{-webkit-tap-highlight-color:transparent;}
[hidden]{display:none !important;}   /* hidden 属性永远管用：.write 等自带 display:flex 的块原先压过了它（09-17 项老师截图：评语底下改的表单一直露着）*/

/* 顶栏：小字导航 */
.nav{display:flex;align-items:center;justify-content:space-between;gap:10px 18px;font-size:12.5px;color:var(--ink-3);margin-bottom:26px;flex-wrap:wrap;}
.nav-primary,.nav-meta{display:flex;align-items:center;gap:18px;}
.nav-primary a,.nav .out{white-space:nowrap;}
.nav-meta{min-width:0;}
.nav a{color:var(--ink-3);}
.nav a.on,.nav a:hover{color:var(--ink-2);}
.nav .out{margin:0;} .nav .out button{border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--ink-4);cursor:pointer;padding:0;}
.nav .out button:hover{color:var(--ink-2);}
.nav .term-link{color:var(--ink-2);border-bottom:1px solid var(--hair);}
@media(max-width:600px){.nav-meta{width:100%;justify-content:space-between;}}
@media print{.nav{display:none!important;}}
.term-panel{background:var(--card);border:1px solid var(--hair);border-radius:14px;padding:22px;margin:24px 0;box-shadow:0 4px 14px rgba(28,33,51,.025);}
.term-panel h2{font-family:var(--display);font-size:22px;font-weight:500;margin:0 0 12px;}
.term-panel h2 small{font:12px var(--body);color:var(--ink-3);margin-left:8px;}
.term-panel p{font-size:13px;color:var(--ink-3);margin:8px 0 16px;}
#chunk-job [data-job-progress]{overflow-wrap:anywhere;}
.term-panel button{border:0;border-radius:8px;background:var(--ink-2);color:#fff;font:inherit;font-size:13px;padding:9px 15px;cursor:pointer;}
.term-panel button.quiet{background:transparent;color:var(--ink-3);padding:6px;}
.term-next.pending{border-color:var(--edge-a);}
.term-next-action{display:flex;align-items:center;flex-wrap:wrap;gap:10px;}
.term-next-action button:disabled{background:var(--tint-a);border:1px solid var(--edge-a);color:var(--ink-2);cursor:not-allowed;opacity:1;}
.term-next-action span{font-size:12px;color:var(--ink-3);}
.term-list,.carry-list{display:flex;flex-wrap:wrap;gap:8px;}
.term-choice{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border:1px solid var(--hair);border-radius:9px;min-width:185px;color:var(--ink);}
.term-choice.selected{border-color:var(--ink-2);background:var(--tint-a);}
.term-choice b{font-size:13px;font-weight:500;}.term-choice span{font-size:11px;color:var(--ink-3);}
.term-fields{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:14px 0;}
.term-fields label,.member-edit label{display:grid;gap:4px;font-size:11px;color:var(--ink-3);}
.term-fields input,.term-fields select,.member-edit input,.member-edit select{min-width:115px;padding:7px 9px;border:1px solid var(--hair);border-radius:6px;background:white;color:var(--ink);font:13px var(--body);}
.term-fields label:first-child input{min-width:210px;}
.carry-list{margin:10px 0 20px;max-height:220px;overflow:auto;}
.carry-list label{font-size:12px;padding:4px 8px;background:var(--page);border-radius:5px;white-space:nowrap;}
.member-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--hair-2);padding:12px 0;font-size:12px;}
.member-row>a{font-weight:600;min-width:55px;}.member-edit{display:flex;flex:1;align-items:end;gap:8px;flex-wrap:wrap;}
.member-edit input{min-width:105px;max-width:150px;}
.roster-tools{display:flex;flex-wrap:wrap;gap:18px;margin:0 0 20px;font-size:12px;}
.targets label.unavailable{opacity:.35;}
.roll-fields{border:0;margin:0;padding:0;min-width:0;}
@media(max-width:600px){.term-panel{padding:16px;margin:16px 0;}.member-row>a{width:100%;font-size:15px;}.term-fields,.member-edit{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;}.term-fields input,.term-fields select,.member-edit input,.member-edit select,.term-fields label:first-child input{min-width:0;max-width:none;width:100%;}.term-fields button,.member-edit button{grid-column:1/-1;}}

/* 登录：老师们的门 */
.login{max-width:360px;margin:12vh auto 0;text-align:center;}
.login .sch{font-family:var(--display);font-size:14px;letter-spacing:.5em;text-indent:.5em;color:var(--ink-3);}
.login h1{font-family:var(--display);font-weight:500;font-size:36px;letter-spacing:.3em;text-indent:.3em;margin:6px 0 8px;line-height:1.2;}
.login .term{font-size:12.5px;color:var(--ink-3);letter-spacing:.16em;margin-bottom:36px;}
.login form{display:grid;gap:12px;}
.login input{font:inherit;font-size:16px;text-align:center;letter-spacing:.2em;padding:12px 14px;border:1px solid var(--hair);border-radius:10px;background:var(--card);color:var(--ink);outline:none;}
.login input:focus{border-color:var(--ink-2);}
.login input.bad{border-color:var(--away);}
.login button{font:inherit;font-size:15px;padding:12px;border:0;border-radius:10px;background:var(--ink-2);color:var(--on-accent);cursor:pointer;}
.login .err{font-size:12.5px;color:var(--away);}

/* 页眉 */
.top{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.top .name{font-family:var(--display);font-weight:500;font-size:44px;line-height:1;letter-spacing:.04em;}
.top .name small{font-family:var(--body);font-weight:400;font-size:13px;color:var(--ink-3);margin-left:14px;letter-spacing:.12em;}
@media(max-width:600px){.top .name{font-size:30px;}.top .name small{margin-left:10px;}}
.top .meta{font-size:12.5px;color:var(--ink-3);display:flex;gap:18px;}
.top .meta a{color:var(--ink-3);border-bottom:1px solid var(--hair);padding-bottom:1px;}
.top.col{display:block;}
.top .eyebrow{font-size:12px;letter-spacing:.14em;color:var(--ink-3);margin-bottom:12px;}

/* 谱纸 */
.score{margin-top:30px;background:var(--paper);border:1px solid var(--hair);border-radius:6px;padding:30px 30px 22px;box-shadow:0 1px 0 rgba(28,33,51,.03),0 10px 30px -18px rgba(28,33,51,.18);}
@media(max-width:600px){.score{padding:22px 14px 16px;}}
.sheet{position:relative;}
.sheet .host{position:relative;z-index:1;}
.sheet svg{display:block;overflow:visible;}
.sheet svg path{fill:var(--ink);}
.sheet svg .abcjs-staff path,.sheet svg .abcjs-bar path{fill:var(--ink-4);}
.sheet svg .abcjs-rest path{fill:var(--ink-3);}
.sheet .hit{position:absolute;cursor:pointer;z-index:3;}
.sheet .sel{position:absolute;background:var(--wash);border-radius:6px;z-index:0;}
.sheet .num{position:absolute;font-family:var(--display);font-size:12px;color:var(--ink-4);transform:translateX(-50%);z-index:2;pointer-events:none;letter-spacing:.02em;}
.sheet .num.on{color:var(--ink);font-weight:600;}
.sheet .num.dim{color:var(--hair);}
.key{margin-top:22px;padding-top:16px;border-top:1px solid var(--hair-2);}
.key .cap{text-align:center;font-family:var(--display);font-size:12px;color:var(--ink-3);letter-spacing:.18em;margin-bottom:9px;}
.key .row{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 28px;}
.key .ex{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;white-space:nowrap;}
.key .ex > div{height:44px;display:flex;align-items:center;overflow:visible;}
.key .ex svg{display:block;overflow:visible;}
.key .ex svg path{fill:var(--ink);}
.key .ex b{font-family:var(--display);font-weight:500;font-size:14px;color:var(--ink-2);letter-spacing:.1em;}
@media(max-width:600px){.key{margin-top:16px;padding-top:12px;}.key .cap{font-size:11.5px;letter-spacing:.12em;margin-bottom:5px;}.key .row{flex-wrap:nowrap;gap:0;justify-content:space-between;padding:0 2px;}.key .ex{gap:2px;}.key .ex > div{height:30px;}.key .ex b{font-size:11.5px;letter-spacing:.04em;}}
@media(max-width:360px){.key .row{flex-wrap:wrap;justify-content:center;gap:4px 14px;}}

/* 选中的一周：三张卡 */
.week{margin-top:28px;}
.week .h{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;padding:0 4px 12px;}
.week .h b{font-family:var(--display);font-size:26px;font-weight:500;line-height:1;}
.week .h span{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);}
.week .h .song{margin-left:auto;font-family:var(--display);font-size:13px;color:var(--ink-3);letter-spacing:.06em;}
.week .h .step{margin-left:auto;display:flex;gap:4px;}
.week .h .song + .step{margin-left:0;}
.week .h .step a{font-family:var(--body);font-size:22px;line-height:1;color:var(--ink-4);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;}
.week .h .step a:hover{color:var(--ink-2);background:var(--hair-2);}
.blocks{display:grid;gap:12px;}
.blk{border-radius:14px;padding:18px 20px 16px;border:1px solid transparent;}
.blk.a{background:var(--tint-a);border-color:var(--edge-a);}
.blk.b{background:var(--tint-b);border-color:var(--edge-b);}
.blk.c{background:var(--tint-c);border-color:var(--edge-c);}
.blk .k{font-size:12px;color:var(--ink-3);letter-spacing:.12em;margin-bottom:8px;display:flex;gap:10px;align-items:baseline;}
.blk .k em{font-style:normal;font-family:var(--mono);font-size:11px;letter-spacing:0;}
.att{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;}
.att div{background:rgba(255,255,255,.62);border:1px solid var(--edge-b);border-radius:9px;padding:11px 13px;display:flex;justify-content:space-between;align-items:center;font-size:14px;}
.att div>span{display:flex;flex-direction:column;line-height:1.3;font-family:var(--display);font-size:14.5px;}
.att div>span small{margin-top:4px;font-size:11.5px;line-height:1.35;color:var(--ink-3);font-family:var(--body);letter-spacing:.02em;}
.att i{font-style:normal;font-family:var(--mono);color:var(--ink-2);}
.att i.no{color:var(--ink-4);}
.att i.away{font-family:var(--body);font-size:12px;color:var(--away);}
.att i b.star{font-family:var(--body);font-size:14px;color:var(--good);}   /* ★ 单独站，不再跟在 ✓ 后面 */
.piece{margin-top:8px;}
.piece:first-child{margin-top:0;}
.piece .pt{font-family:var(--display);font-size:14px;color:var(--ink);padding:2px 0 6px;letter-spacing:.04em;}
.track{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:6px 0;}
.track .t{font-size:14px;white-space:nowrap;}
.none{font-size:14px;color:var(--ink-3);}
/* 点评卡：档案页每条评语自己是一块（.blk.cmt），周视图的 .card 同一套色；署名按姓认（网页.py 老师键），没认出的用中性灰 */
.cmt,.card{--tb:var(--tint-b);--te:var(--edge-b);--tc:var(--ink-3);}
[data-t="邓"]{--tb:var(--deng-bg);--te:var(--deng-edge);--tc:var(--deng);}
[data-t="杨"]{--tb:var(--yang-bg);--te:var(--yang-edge);--tc:var(--yang);}
[data-t="项"]{--tb:var(--xiang-bg);--te:var(--xiang-edge);--tc:var(--xiang);}
.blk.cmt{background:var(--tb);border-color:var(--te);}
.blk.cmt.parent,.card.parent{--tb:var(--card);--te:var(--hair);--tc:var(--ink-3);}
.cmt p{margin:0;font-family:var(--fangsong);font-size:15.5px;line-height:1.85;white-space:pre-line;}   /* 仿宋细，字号比正文大一号 */
.cmt .sign{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-family:var(--kai);font-size:14px;color:var(--tc);margin-top:6px;letter-spacing:.06em;}
.cmt .sign .ops{display:inline-flex;gap:14px;}   /* 改、删在左端，楷体淡字（项尚 09-17）；署名靠右 */
.cmt .sign .ops a{color:var(--ink-4);font-size:12.5px;letter-spacing:.1em;text-decoration:none;}
.cmt .sign .ops a:hover{color:var(--tc);}
.blk{scroll-margin-top:18px;}   /* 跳回某条评语时上面留口气 */
.blk.add{background:var(--card);border-color:var(--hair);transition:background-color .25s,border-color .25s;}   /* 添加留言的那块是白的（项尚 09-16）*/
.blk.add[data-t="邓"],.blk.add[data-t="杨"],.blk.add[data-t="项"]{background:var(--tb);border-color:var(--te);}   /* 署名选了哪位老师，这块就先变成那位老师的颜色 */
.blk.add .write button{color:var(--tc,var(--ink-2));}
.blk.add .write input[type=text]:focus,.blk.add .write textarea:focus,.cmt .write textarea:focus{border-color:var(--tc,var(--ink-2));}
.write{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;}
.write input[type=text],.write textarea{flex:1;min-width:200px;border:0;border-bottom:1px solid var(--hair);background:transparent;padding:6px 0;font:inherit;font-size:14px;color:var(--ink);outline:none;}
.write textarea{resize:none;overflow:hidden;line-height:1.6;display:block;}   /* 多行：回车换行不发出，随内容长高（09-17） */
.write input[type=text]:focus,.write textarea:focus{border-color:var(--ink-2);}
.write .cancel{font-size:13px;color:var(--ink-3);margin-left:14px;}
.write.edit{margin-top:4px;}
.write button{border:0;background:transparent;font:inherit;font-size:13px;color:var(--ink-2);cursor:pointer;padding:0;margin-left:auto;}   /* 换行时按钮靠右 */
@media(max-width:600px){.write input[type=text]:not(.who-in),.write textarea{flex-basis:100%;}}   /* 手机：留言独占一行，署名和按钮共一行 */
.compose-head{flex:1 0 100%;display:flex;align-items:center;justify-content:space-between;margin-bottom:2px;font-size:12px;color:var(--ink-3);letter-spacing:.08em;}
.compose-type{display:inline-flex;padding:2px;background:var(--page);border:1px solid var(--hair-2);border-radius:8px;letter-spacing:0;}
.compose-type label{cursor:pointer;}.compose-type input{position:absolute;opacity:0;pointer-events:none;}
.compose-type i{display:block;padding:2px 9px;border-radius:6px;font-style:normal;font-size:11.5px;color:var(--ink-4);}
.compose-type input:checked+i{background:var(--card);box-shadow:0 1px 3px rgba(28,33,51,.09);color:var(--ink-2);}
.write .parent-author{flex:0 0 7.5em;min-width:0;font-size:13px;color:var(--ink-3);}

/* 提示行：导入完、点名存完 */
.flash{margin:18px 0 0;font-size:13px;color:var(--ink-2);}

/* 点名（2026-09-14 三改）：一天一页；一天还没点过时，点谁就是「全到、只他未到」 */
.roll .days{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(128px,1fr);gap:10px;margin-top:26px;overflow-x:auto;padding:1px 1px 5px;}
.roll .day{flex:1;appearance:none;font:inherit;text-align:left;cursor:pointer;background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:10px 14px 9px;display:flex;flex-direction:column;color:var(--ink-3);}
.roll .day b{font-family:var(--display);font-weight:500;font-size:18px;color:var(--ink);letter-spacing:.06em;line-height:1.3;}
.roll .day small{font-family:var(--mono);font-size:11px;color:var(--ink-4);}
.roll .day em{font-style:normal;font-family:var(--mono);font-size:12px;color:var(--ink-3);margin-top:6px;font-variant-numeric:tabular-nums;}
.roll .day.on{border-color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--ink-2);}
.roll .session-note{margin:8px 4px 0;font-size:12.5px;color:var(--ink-3);}
.roll .day:focus-visible,.roll .chip:focus-visible,.strip .cell:focus-visible{outline:2px solid var(--ink-2);outline-offset:2px;}
.roll .dh{display:flex;justify-content:space-between;align-items:baseline;margin:24px 4px 4px;font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums;}
.roll .dh .ops button{appearance:none;border:0;background:transparent;font:inherit;font-size:13px;color:var(--ink-2);cursor:pointer;padding:0;margin-left:18px;}
.roll .seg{display:flex;margin-top:14px;border:1px solid var(--hair);border-radius:10px;overflow:hidden;background:var(--card);}
.roll .seg button{flex:1;appearance:none;border:0;background:transparent;font:inherit;font-size:14px;padding:10px 0;color:var(--ink-3);cursor:pointer;border-left:1px solid var(--hair);}
.roll .seg button:first-child{border-left:0;}
.roll .seg button.on{background:var(--ink-2);color:var(--on-accent);}
.roll .seg button[data-mode="不好"].on{background:var(--bad);}
.roll .hint{margin:8px 4px 0;font-size:12.5px;color:var(--ink-3);}
.roll .chip[data-m="1"]::before{content:"★ ";color:var(--good-on);}
.roll .chip[data-m="-1"]::before{content:"△ ";color:var(--bad-on);}
.roll .sheet-day[data-mode="好"] .chip:not([data-s="1"]),.roll .sheet-day[data-mode="不好"] .chip:not([data-s="1"]){opacity:.4;}
.roll .grp{margin-top:16px;}
.roll .gk{font-size:12px;color:var(--ink-3);letter-spacing:.12em;margin:0 4px 8px;}
.roll .chips{display:flex;flex-wrap:wrap;gap:8px;}
.roll .chip{appearance:none;font:inherit;font-size:15px;letter-spacing:.04em;line-height:1;min-height:40px;padding:0 15px;border-radius:20px;cursor:pointer;border:1px dashed var(--hair);background:transparent;color:var(--ink-4);transition:background .12s,color .12s,border-color .12s;}
.roll .chip[data-s="1"]{background:var(--ink-2);border:1px solid var(--ink-2);color:var(--on-accent);}
.roll .chip[data-s="0"]{background:var(--card);border:1px solid var(--hair);color:var(--ink-3);}
.roll .chip[data-s="假"]{background:var(--tint-c);border:1px solid var(--edge-c);color:var(--away);}
.roll .chip[data-s="假"]::after{content:"假";font-size:11px;margin-left:6px;}
.roll .save{position:sticky;bottom:0;display:flex;justify-content:flex-end;margin-top:24px;padding:18px 0 14px;background:linear-gradient(to top,var(--page) 72%,transparent);}
@media(max-width:600px){.roll .save button{width:100%;padding:13px 22px;}}
.roll .save button{border:0;background:var(--ink-2);color:var(--on-accent);border-radius:10px;padding:11px 22px;font:inherit;font-size:14.5px;cursor:pointer;box-shadow:0 6px 18px -8px rgba(0,0,0,.4);}
@media (prefers-reduced-motion:reduce){.roll .chip{transition:none;}}

/* 工作台（2026-09-14 三改）：学期十二格在上，选中的一周三张卡在下——和档案页同一个动作 */
.strip{margin-top:30px;background:var(--paper);border:1px solid var(--hair);border-radius:6px;padding:12px 14px;box-shadow:0 1px 0 rgba(28,33,51,.03),0 10px 30px -18px rgba(28,33,51,.18);display:grid;grid-template-columns:repeat(var(--week-cols,12),minmax(0,1fr));gap:4px;}
@media(max-width:600px){.strip{grid-template-columns:repeat(6,1fr);padding:10px;}}
.strip .cell{appearance:none;border:0;background:transparent;font:inherit;cursor:pointer;border-radius:8px;padding:12px 0 10px;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ink-3);position:relative;}
.strip .cell b{font-family:var(--mono);font-weight:500;font-size:13px;line-height:1;}
.strip .dots{display:flex;gap:4px;}
.strip .dots i{width:5px;height:5px;border-radius:50%;border:1px solid var(--hair);}
.strip .dots i.f{border-color:transparent;}
.strip .dots i.f.b{background:var(--ink-3);}
.strip .dots i.f.a{background:var(--ink-2);}
.strip .dots i.f.c{background:var(--away);}
.strip .cell.ahead{color:var(--ink-4);}
.strip .cell.ahead .dots{visibility:hidden;}
.strip .cell.now b{color:var(--ink);font-weight:600;}
.strip .cell.now::before{content:"";position:absolute;top:3px;left:50%;width:14px;height:2px;transform:translateX(-50%);background:var(--ink-2);border-radius:1px;}
.strip .cell:hover{background:var(--hair-2);}
.strip .cell.on{background:var(--wash);color:var(--ink);}
.week .h .now{font-family:var(--body);font-size:11.5px;color:var(--ink-2);letter-spacing:.14em;border:1px solid var(--edge-a);border-radius:4px;padding:1px 6px 0;background:var(--tint-a);}
.week .h .ops{margin-left:auto;font-family:var(--body);font-size:13px;display:flex;gap:16px;}
.week .h .ops a{color:var(--ink-2);}
/* 工作台每周一行：曲目（09-17） */
.wkset{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 18px;margin:-2px 4px 14px;font-size:13px;color:var(--ink-3);}
.wkset .song{display:inline-flex;align-items:baseline;gap:8px;flex:1;min-width:200px;}
.wkset .song input{flex:1;min-width:0;border:0;border-bottom:1px solid var(--hair);background:transparent;padding:4px 0;font:inherit;font-size:14px;color:var(--ink);outline:none;}
.wkset .song input:focus{border-color:var(--ink-2);}
.wkset button{border:0;background:transparent;font:inherit;font-size:13px;color:var(--ink-2);cursor:pointer;padding:0;}
@media(max-width:600px){.wkset{flex-wrap:nowrap;gap:12px;}.wkset .song{min-width:0;}}   /* 手机：曲目框收窄，「保存」跟在同一行，不孤零零换行到左边 */

/* 工作台内容：延续原来的三块配色，只把信息层级和四次排练的排布收清楚。 */
.workbench-blocks .blk{padding:20px 22px 17px;}
.workbench-blocks .blk .k{font-weight:600;color:var(--ink-2);margin-bottom:11px;}
.workbench-blocks .att.four{grid-template-columns:repeat(2,minmax(0,1fr));}
.workbench-blocks .att div{min-width:0;background:rgba(255,255,255,.72);}
.workbench-blocks .att i{font-size:16px;font-weight:500;white-space:nowrap;}
.workbench-blocks .att i.no{font-weight:400;}
.workbench-blocks .blk .n{font-size:30px;}
.status-list{border-top:1px solid rgba(47,61,107,.11);padding-top:4px;margin-top:13px;}
.status-list>div{display:grid;grid-template-columns:7.5em 1fr;gap:9px;padding-top:8px;font-size:12.5px;line-height:1.65;}
.status-list span{color:var(--ink-3);}.status-list p{margin:0;color:var(--ink);}.status-list .attention p{color:var(--away);}
.status-list p a{color:inherit;}.status-list p a:hover{text-decoration:underline;}
.review-list{border-top:1px solid rgba(47,61,107,.11);padding-top:9px;margin-top:4px;}
.review-list summary{list-style:none;cursor:pointer;font-size:12.5px;color:var(--ink-3);}
.review-list summary::-webkit-details-marker{display:none;}
.review-list summary::after{content:"＋";float:right;color:var(--ink-4);}.review-list[open] summary::after{content:"－";}
.review-names{display:grid;grid-template-columns:repeat(3,1fr);gap:4px 10px;padding-top:10px;font-size:13px;}
.review-names a{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
@media(max-width:600px){.workbench-blocks .blk{padding:17px 16px 15px;}.workbench-blocks .att.four{grid-template-columns:repeat(2,minmax(0,1fr));}.workbench-blocks .att div{padding:10px;}.workbench-blocks .att div>span{font-size:14px;}.workbench-blocks .att i{font-size:14px;}.status-list>div{grid-template-columns:7em 1fr;}.review-names{grid-template-columns:repeat(3,1fr);}}
@media(max-width:370px){.workbench-blocks .att.four{grid-template-columns:1fr;}}
.att i small{font-family:var(--mono);font-size:11px;color:var(--ink-4);}
.blk .n{font-family:var(--mono);font-size:24px;font-weight:500;line-height:1.1;color:var(--ink);font-variant-numeric:tabular-nums;}
.blk .n small{font-family:var(--body);font-size:12.5px;font-weight:400;color:var(--ink-3);margin-left:8px;}
.blk .sub{margin-top:8px;font-size:13px;color:var(--ink-3);}
.blk .sub.warn{color:var(--away);}
.blk .act,.imp{margin-top:14px;padding-top:10px;border-top:1px solid rgba(28,33,51,.07);font-size:13.5px;}
.blk .act{display:flex;justify-content:flex-end;}
.blk .act a{color:var(--ink-2);}
.imp summary{list-style:none;cursor:pointer;text-align:right;color:var(--ink-2);}
.imp summary::-webkit-details-marker{display:none;}
.imp form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;margin-top:12px;align-items:stretch;}
.imp form>button{grid-column:3;grid-row:1;}
.import-override{grid-column:1/-1;display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-3);cursor:pointer;}
.import-override input{accent-color:var(--ink-2);}
@media(max-width:600px){.imp form{grid-template-columns:1fr;}.imp form>button{grid-column:1;grid-row:auto;}.import-override{grid-column:1;}}
.file{display:flex;align-items:baseline;gap:8px;min-width:0;background:rgba(255,255,255,.55);border:1px solid var(--edge-a);border-radius:9px;padding:8px 12px;cursor:pointer;font-size:13px;}
.file .fk{color:var(--ink-3);white-space:nowrap;}
.file .fn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);}
.file .fn.empty{color:var(--ink-4);}
.file input{display:none;}
.imp button{border:0;background:var(--ink-2);color:var(--on-accent);border-radius:9px;padding:8px 18px;font:inherit;font-size:13.5px;cursor:pointer;}
.imp button:disabled{opacity:.55;cursor:default;}
.imp .note{grid-column:1/-1;font-size:13px;color:var(--away);}
.blk .names{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:14.5px;letter-spacing:.04em;}   /* 只管工作台的点评卡，别碰团员页的 .names */
.blk .names a{color:var(--ink);}
.blk .names a:hover{color:var(--ink-2);}

/* 每周安排：日期归属与应到范围都由老师在前端配置。 */
.plan{margin-top:28px;}
.plan+.plan{margin-top:44px;}
.plan .ph{display:flex;justify-content:space-between;align-items:baseline;margin:0 4px 12px;}
.plan .ph div{display:flex;align-items:baseline;gap:14px;}
.plan .ph b{font-family:var(--display);font-size:22px;font-weight:500;}
.plan .ph span{font-size:12.5px;color:var(--ink-3);}
.plan-card{background:var(--card);border:1px solid var(--hair);border-radius:12px;margin-top:10px;overflow:hidden;}
.plan-card.off{opacity:.64;}
.plan-card>summary{list-style:none;cursor:pointer;padding:15px 18px;display:flex;justify-content:space-between;gap:16px;align-items:baseline;}
.plan-card>summary::-webkit-details-marker{display:none;}
.plan-card>summary b{font-family:var(--display);font-weight:500;font-size:16px;}
.plan-card>summary small{font-size:12px;color:var(--ink-4);margin-left:10px;}
.plan-card>summary em{font-style:normal;font-family:var(--mono);font-size:11.5px;color:var(--ink-4);white-space:nowrap;}
.plan-card[open]>summary{border-bottom:1px solid var(--hair-2);}
.plan-card.add-card>summary{color:var(--ink-2);}
.plan-form{padding:18px;}
.plan-form .fields{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.plan-form .fields .wide{grid-column:1/-1;}
.plan-form .fields label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--ink-3);}
.plan-form input[type=text],.plan-form input[type=date],.plan-form select{width:100%;border:1px solid var(--hair);border-radius:8px;background:var(--page);padding:9px 10px;font:inherit;font-size:14px;color:var(--ink);outline:none;}
.plan-form input:focus,.plan-form select:focus{border-color:var(--ink-2);}
.targets{margin-top:20px;border-top:1px solid var(--hair-2);padding-top:14px;}
.target-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--ink-3);}
.quick{display:flex;gap:14px;}.quick button,.remove button{border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--ink-3);padding:0;cursor:pointer;}
.target-part{display:grid;grid-template-columns:52px 1fr;gap:8px;margin-top:12px;align-items:start;}
.target-part>b{font-size:11.5px;font-weight:400;color:var(--ink-4);padding-top:5px;}
.target-part>div{display:flex;flex-wrap:wrap;gap:6px;}
.target-part label{cursor:pointer;}.target-part input{position:absolute;opacity:0;pointer-events:none;}
.target-part label span{display:block;border:1px solid var(--hair);border-radius:15px;padding:3px 10px;font-size:13px;color:var(--ink-3);background:var(--card);}
.target-part input:checked+span{background:var(--ink-2);border-color:var(--ink-2);color:var(--on-accent);}
.form-actions{display:flex;justify-content:flex-end;margin-top:18px;}
.form-actions button{border:0;border-radius:9px;background:var(--ink-2);color:var(--on-accent);font:inherit;font-size:13.5px;padding:8px 18px;cursor:pointer;}
.remove{padding:0 18px 16px;text-align:right;}.remove button{color:var(--away);}
.switch{display:inline-flex;align-items:center;gap:9px;font-size:14px;color:var(--ink);cursor:pointer;}
.switch input{width:16px;height:16px;accent-color:var(--ink-2);}
.empty-state{margin-top:28px;background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:28px;text-align:center;color:var(--ink-3);}
.empty-state a{display:inline-block;margin-top:8px;}
@media(max-width:600px){.plan .ph div{display:block;}.plan .ph span{display:block;margin-top:3px;}.plan-form .fields{grid-template-columns:1fr 1fr;}.plan-form .fields .wide{grid-column:1/-1;}.target-part{grid-template-columns:1fr;gap:4px;}.plan-card>summary{padding:13px 14px;}.plan-form{padding:14px;}}

/* 团员页（2026-09-14 项尚定「甲·节目单」）：家长进的门。一张纸，三个声部一段一段居中排，六个一行，手机三个一行 */
.roster{background:var(--paper);border:1px solid var(--hair);border-radius:6px;box-shadow:0 1px 0 rgba(28,33,51,.03),0 14px 40px -24px rgba(28,33,51,.22);padding:60px 56px 56px;}
@media(max-width:600px){.roster{padding:36px 14px 34px;}}
.roster .head{text-align:center;padding-bottom:34px;}
.roster .sch{font-family:var(--display);font-size:13px;letter-spacing:.28em;text-indent:.28em;color:var(--ink-3);}
.roster h1{font-family:var(--display);font-weight:500;font-size:42px;letter-spacing:.22em;text-indent:.22em;margin:8px 0 17px;line-height:1.2;}
@media(max-width:600px){.roster h1{font-size:32px;}}
.roster .rule{width:36px;height:1px;background:var(--ink-4);margin:0 auto 14px;}
.roster .term{display:flex;align-items:center;justify-content:center;gap:10px;font-size:11.5px;color:var(--ink-3);letter-spacing:.06em;}
.roster .term i{width:3px;height:3px;border-radius:50%;background:var(--ink-4);}
.roster .part{padding:26px 0 22px;border-top:1px solid var(--hair-2);}
.roster .part:first-of-type{border-top:0;padding-top:6px;}
.roster h2{margin:0 0 12px;display:flex;align-items:center;justify-content:center;gap:11px;text-align:center;font-family:var(--display);font-weight:500;font-size:15px;letter-spacing:.18em;color:var(--ink-2);}
.roster h2::before,.roster h2::after{content:"";width:28px;height:1px;background:var(--hair);}
.roster h2 span{font-family:var(--mono);font-size:10.5px;letter-spacing:0;color:var(--ink-4);margin-left:1px;}
.roster .names{display:flex;flex-wrap:wrap;justify-content:center;width:672px;max-width:100%;margin:0 auto;}
.roster .names a{width:112px;text-align:center;font-family:var(--display);font-size:17.5px;letter-spacing:.1em;text-indent:.1em;padding:7px 0;color:var(--ink);}
.roster .names a:hover{color:var(--ink-2);}
.roster .names a:focus-visible{outline:2px solid var(--ink-2);outline-offset:2px;border-radius:3px;}
@media(max-width:600px){.roster .names{width:300px;}.roster .names a{width:100px;font-size:16.5px;padding:6px 0;}}

/* 录音播放器：深蓝，跟蓝底一家 */
.track.player{grid-template-columns:36px auto 1fr auto;gap:12px;padding:7px 0;}
.player .pl{width:34px;height:34px;border-radius:50%;border:0;background:var(--ink-2);position:relative;cursor:pointer;padding:0;}
.player .pl::after{content:"";position:absolute;left:13px;top:10px;border-left:10px solid var(--on-accent);border-top:7px solid transparent;border-bottom:7px solid transparent;}
.player.on .pl::after{border:0;left:12px;top:10px;width:3px;height:14px;border-left:3px solid var(--on-accent);border-right:3px solid var(--on-accent);}
.player .t{font-size:14px;white-space:nowrap;}
.player .bar{height:4px;border-radius:2px;background:rgba(47,61,107,.18);position:relative;cursor:pointer;}
.player .fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:2px;background:var(--ink-2);}
.player .d{font-family:var(--mono);font-size:12px;color:var(--ink-3);min-width:44px;text-align:right;}
.video-entry{margin:12px 0 4px;width:100%;min-width:0;}
.video-title{font-size:13px;color:var(--ink-2);margin-bottom:8px;}
.home-video{display:block;width:100%;height:auto;max-height:60vh;background:#151b2a;border-radius:9px;object-fit:contain;}
.write input[type=text].who-in{flex:0 0 6em;min-width:0;font-size:13px;color:var(--tc,var(--ink-3));}   /* 署名短、留言长（项尚 09-16）；选了老师就用那位老师的色 */
/* 署名下拉（09-17 项尚：改评语时换不了老师）：去掉系统样子，只留一条底线和一个小 ▾ */
.write .pick{position:relative;display:inline-flex;align-items:baseline;flex:0 0 7em;min-width:0;}
.write .pick::after{content:"▾";position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--ink-4);pointer-events:none;}
.write select.who{appearance:none;-webkit-appearance:none;width:100%;border:0;border-bottom:1px solid var(--hair);border-radius:0;background:transparent;font:inherit;font-size:13px;color:var(--tc,var(--ink-3));padding:6px 16px 6px 0;outline:none;}
.write select.who:focus{border-color:var(--tc,var(--ink-2));}
/* 编辑态：像在卡片上就地改（09-17 项尚：编辑状态不好看）——正文仍是仿宋、同大小，底下一行 取消 …… —— 老师▾ 保存 */
.write.edit{display:block;}
.write.edit textarea{width:100%;min-width:0;font-family:var(--fangsong);font-size:15.5px;line-height:1.85;padding:0 0 4px;border-bottom:1px dashed var(--te,var(--hair));}
.write.edit textarea:focus{border-bottom-color:var(--tc,var(--ink-2));}
.write.edit .row{display:flex;align-items:baseline;gap:16px;margin-top:8px;font-family:var(--kai);font-size:14px;letter-spacing:.06em;}
.write.edit .row .cancel{margin:0 auto 0 0;font-family:var(--kai);font-size:12.5px;color:var(--ink-4);letter-spacing:.1em;}
.write.edit .row .by{color:var(--tc,var(--ink-3));display:inline-flex;align-items:baseline;gap:4px;}
.write.edit .row .by input{width:8em;min-width:0;flex:none;border-bottom:0;padding:0;font-family:var(--kai);font-size:14px;color:var(--ink-3);letter-spacing:.06em;}
.write.edit .row .pick{flex:none;}
.write.edit .row select.who{font-family:var(--kai);font-size:14px;color:var(--tc,var(--ink-3));border-bottom:0;padding:0 14px 0 0;width:auto;letter-spacing:.06em;}
.write.edit .row button{font-family:var(--kai);font-size:14px;color:var(--tc,var(--ink-2));margin-left:0;letter-spacing:.1em;}

/* 2026-09：保留谱纸与三块配色，只收齐常用操作、手机和保存状态。 */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--ink-2);outline-offset:3px;}
.workbench-top .name{font-size:36px;line-height:1.35;}
.workbench-top .name small{display:block;margin:6px 0 0;font-size:12px;letter-spacing:.14em;}
.week .h>span,.roll .day small,.plan-card>summary small,.plan-card>summary em,.target-part>b,.att i small{color:var(--ink-3);}
.att .practice-link{position:relative;min-width:0;display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--edge-b);border-radius:9px;background:rgba(255,255,255,.72);color:var(--ink);transition:background .15s,border-color .15s;}
.att .practice-link:hover{background:var(--card);border-color:var(--ink-3);}
.att .practice-link>span:first-child{flex:1;min-width:0;display:flex;flex-direction:column;font-family:var(--display);font-size:16px;line-height:1.4;}
.att .practice-link small{display:block;margin-top:3px;font-family:var(--body);font-size:12px;line-height:1.4;color:var(--ink-3);}
.att .practice-link i{display:flex;align-items:baseline;gap:2px;white-space:nowrap;font-size:17px;}
.att .practice-link i small{display:inline;font-family:var(--mono);font-size:12px;}
.att .practice-arrow{font-family:var(--body);font-size:20px;color:var(--ink-3);}
.workbench-blocks .blk .k{font-size:13px;}.workbench-blocks .blk .k em{font-size:12px;}
.file{position:relative;}.file input{display:block;position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;}
.file:focus-within{outline:2px solid var(--ink-2);outline-offset:2px;}
.form-state{display:block;flex-basis:100%;grid-column:1/-1;font:12px/1.5 var(--body);color:var(--away);letter-spacing:0;}
.form-state:empty{display:none;}
.roll .save{gap:12px;align-items:center;}.roll .save .form-state{flex:1;}
.draft-recovery{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;flex-basis:100%;grid-column:1/-1;padding:10px 12px;margin:0 0 12px;border:1px solid var(--edge-a);border-radius:8px;background:var(--tint-a);font:12px/1.5 var(--body);color:var(--ink-2);letter-spacing:0;}
.draft-recovery span{flex:1;min-width:150px;}.draft-recovery button{border:0;background:transparent;color:var(--ink-2);padding:4px 0;font:inherit;cursor:pointer;}
form[aria-busy=true] button[type=submit]{opacity:.72;cursor:wait;}
.sheet .hit{border:0;background:transparent;padding:0;border-radius:6px;}
.profile-week-header{display:grid!important;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'title controls' 'meta meta';gap:8px 12px!important;align-items:center!important;}
.profile-week-header>b{grid-area:title;}.profile-week-header .step{grid-area:controls;margin:0!important;justify-self:end;}
.profile-week-header .step a{width:40px;height:40px;color:var(--ink-2);border:1px solid var(--hair);background:var(--card);font-size:25px;}
.profile-week-header .week-meta{grid-area:meta;display:flex;flex-wrap:wrap;gap:4px 14px;min-width:0;}
.profile-week-header .week-meta .song{margin:0;font-family:var(--body);font-size:13px;overflow-wrap:anywhere;}
.track.player{grid-template-columns:40px auto minmax(30px,1fr) auto;gap:10px;}
.player .pl{width:38px;height:38px;}.player .pl::after{left:15px;top:12px;}.player.on .pl::after{left:14px;top:12px;}
.player.loading .pl{opacity:.55;}
.player input.bar{appearance:none;-webkit-appearance:none;width:100%;height:28px;margin:0;background:transparent;cursor:pointer;min-width:0;--progress:0%;}
.player input.bar::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--ink-2) var(--progress),rgba(47,61,107,.18) var(--progress));}
.player input.bar::-moz-range-track{height:4px;border-radius:2px;background:rgba(47,61,107,.18);}.player input.bar::-moz-range-progress{height:4px;background:var(--ink-2);}
.player input.bar::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--ink-2);margin-top:-4px;}
.player input.bar::-moz-range-thumb{width:12px;height:12px;border:0;border-radius:50%;background:var(--ink-2);}
.media-state{grid-column:1/-1;font:12px/1.5 var(--body);color:var(--away);margin:0;}.media-state:empty{display:none;}.media-state button{border:0;background:transparent;padding:5px;color:var(--ink-2);font:inherit;text-decoration:underline;cursor:pointer;}
.cmt p,.card p{overflow-wrap:anywhere;}
.removed-comments{margin-top:32px;border-top:1px solid var(--hair);padding-top:16px;}.removed-comments summary{font-size:13px;color:var(--ink-3);cursor:pointer;}.removed-comments summary span{margin-left:8px;}.removed-comments article{padding:16px 0;border-bottom:1px solid var(--hair-2);}.removed-comments article p{white-space:pre-wrap;font-size:14px;margin:0 0 8px;overflow-wrap:anywhere;}.removed-comments article>div{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;color:var(--ink-3);}.removed-comments form{margin:0;}.removed-comments button{border:1px solid var(--hair);border-radius:6px;background:var(--card);font:inherit;font-size:12px;padding:6px 12px;color:var(--ink-2);cursor:pointer;}
.term-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 14px;}.term-heading h2{margin:0;}.term-state{display:inline-block;background:var(--tint-a);border:1px solid var(--edge-a);border-radius:5px;padding:2px 8px;font-size:12px;color:var(--ink-2);white-space:nowrap;}.term-divider{padding:0 10px;color:var(--hair);}
.term-panel .impact-names{font-size:17px;color:var(--ink);}.term-panel form[data-no-draft] a{font-size:13px;margin-left:14px;}.import-result .primary-link{margin-top:12px;}
.term-overview{padding:24px;}.term-overview>p{margin:12px 0;}.term-tools{padding-top:14px;margin-top:20px;border-top:1px solid var(--hair-2);}.term-tools summary{font-size:13px;color:var(--ink-3);cursor:pointer;}.term-tools form{margin-top:14px;}.term-tools button{background:var(--card);border:1px solid var(--hair);color:var(--ink-2);}
.term-next.pending{padding-top:18px;padding-bottom:18px;background:transparent;box-shadow:none;}.term-switch h2{font:13px var(--body);color:var(--ink-3);}.term-fields label,.member-edit label{font-size:12px;}.term-fields input,.term-fields select,.member-edit input,.member-edit select{font-size:14px;min-height:38px;}
.member-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px;}.member-toolbar h2{margin:0;font:18px var(--display);}.member-filters{display:flex;gap:8px;min-width:0;}.member-filters input,.member-filters select{font:13px var(--body);padding:8px 10px;border:1px solid var(--hair);border-radius:7px;background:var(--card);color:var(--ink);min-width:0;}.member-filters input{width:150px;}
.member-row{display:block;padding:0;}.member-row>summary{display:grid;grid-template-columns:70px 1fr auto 32px;align-items:center;gap:12px;padding:14px 0;cursor:pointer;list-style:none;}.member-row>summary::-webkit-details-marker{display:none;}.member-row>summary strong{font-size:15px;font-weight:500;color:var(--ink);}.member-row>summary span{font-size:13px;color:var(--ink-3);}.member-row>summary small{font-size:12px;color:var(--ink-3);}.member-row .row-edit{color:var(--ink-2);text-align:right;}.member-row[open]>summary .row-edit{font-size:0;}.member-row[open]>summary .row-edit::after{content:'收起';font-size:13px;}
.member-detail{padding:4px 0 18px;}.member-edit{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}.member-edit input,.member-edit select{min-width:0;max-width:none;width:100%;}.member-edit button[type=submit]{grid-column:4;}.member-detail-links{display:flex;align-items:center;gap:18px;justify-content:space-between;margin-top:14px;font-size:12px;}.member-detail-links form{margin:0;}.member-detail-links .quiet{font-size:12px;padding:5px 0;color:var(--away);}.member-footnote{border-top:1px solid var(--hair-2);padding-top:14px;margin:0!important;font-size:12px!important;}.member-add>summary{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--ink-2);cursor:pointer;list-style:none;}.member-add>summary::-webkit-details-marker{display:none;}.member-add .term-fields{margin-top:18px;}.member-empty{text-align:center;padding:20px 0;}
.import-history{margin-top:28px;border-top:1px solid var(--hair);padding-top:14px;}.import-history summary{cursor:pointer;font-size:13px;color:var(--ink-3);}.import-history a{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:13px;padding:12px 0;border-bottom:1px solid var(--hair-2);}.import-history time{font-size:12px;color:var(--ink-3);}
.import-history .import-batch-detail{display:block;margin-top:4px;font-size:12px;color:var(--ink-3);}
.import-destination{display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:var(--ink-3);font-size:14px;margin:24px 0 0;}.import-error{padding:12px 14px;background:var(--tint-c);border:1px solid var(--edge-c);border-radius:8px;color:var(--away);}.import-error:empty{display:none;}
.import-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:18px 0;}.import-metrics>div{border-left:1px solid var(--hair-2);padding-left:16px;}.import-metrics>div:first-child{border:0;padding:0;}.import-metrics b{display:block;font:28px/1.3 var(--mono);color:var(--ink-2);}.import-metrics span{display:block;font-size:12px;color:var(--ink-3);margin-top:6px;}.import-metrics .needs-review b{color:var(--away);}.import-comments{display:flex;gap:8px 16px;flex-wrap:wrap;font-size:13px;border-top:1px solid var(--hair-2);padding-top:14px;color:var(--ink-3);}.import-comments b{font-weight:500;color:var(--ink);}
.import-source dl{margin:16px 0 0;}.import-source dl>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:16px;margin:10px 0;font-size:13px;}.import-source dt{color:var(--ink-3);}.import-source dd{margin:0;overflow-wrap:anywhere;}.import-warnings{padding:14px 18px 14px 34px;background:var(--tint-c);border:1px solid var(--edge-c);border-radius:8px;font-size:13px;color:var(--away);}.confirm-check{display:flex;align-items:flex-start;gap:8px;font-size:14px;margin:12px 0;cursor:pointer;}.confirm-check input{margin-top:5px;accent-color:var(--ink-2);}.import-confirm-actions{display:flex;gap:18px;align-items:center;justify-content:flex-end;margin-top:24px;font-size:13px;}.import-confirm-actions button,.primary-link{display:inline-block;border:0;border-radius:8px;background:var(--ink-2);padding:11px 18px;color:var(--on-accent);font:14px var(--body);cursor:pointer;}.import-confirm>.form-state{text-align:right;margin-top:10px;}
.import-confirm-actions{flex-wrap:wrap;}.import-confirm-actions .quiet{background:transparent;border:1px solid var(--hair);color:var(--ink-2);}
.import-member-changes{border-top:1px solid var(--hair-2);padding-top:12px;margin-bottom:16px;font-size:13px;}.import-member-changes summary{cursor:pointer;color:var(--ink-2);}.import-member-changes summary>span{margin-left:8px;color:var(--ink-3);font-size:12px;}.import-member-change{display:grid;grid-template-columns:minmax(90px,1fr) 2fr;gap:12px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--hair-2);}.import-member-change b{font-weight:500;}.import-member-change small{font-size:12px;color:var(--ink-3);margin-left:8px;}.import-member-change p{display:flex;gap:4px 12px;flex-wrap:wrap;margin:0;color:var(--ink-3);font-size:12px;}.import-member-change .needs-review{color:var(--away);font-weight:500;}
@media(max-width:600px){
  input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select,textarea{font-size:16px!important;}
  .workbench-top .name{font-size:29px;line-height:1.4;}.workbench-top .name small{margin-top:3px;}
  .att .practice-link{gap:6px;padding:10px;}.att .practice-link>span:first-child{font-size:15px;}.att .practice-link i{font-size:16px;}.att .practice-link .practice-arrow{display:none;}
  .roll .save{flex-wrap:wrap;gap:8px;}.roll .save .form-state{flex-basis:100%;}
  .term-overview{padding:20px 16px;}.term-heading h2{font-size:21px;}.term-next-action{align-items:flex-start;}
  .member-toolbar{display:block;}.member-toolbar h2{margin-bottom:14px;}.member-filters{width:100%;}.member-filters label:first-child{flex:1;min-width:0;}.member-filters input{width:100%;}.member-filters select{max-width:130px;}
  .member-row>summary{grid-template-columns:62px minmax(0,1fr) 32px;gap:6px 10px;padding:13px 0;}.member-row>summary small{grid-column:2;grid-row:2;font-size:11px;}.member-row>summary small:not(:empty){margin-top:-2px;}.member-row>summary .row-edit{grid-column:3;grid-row:1/3;}.member-row>summary strong{grid-row:1/3;}.member-row>summary>span:not(.row-edit){overflow-wrap:anywhere;}
  .member-edit{grid-template-columns:repeat(2,minmax(0,1fr));}.member-edit button[type=submit]{grid-column:1/-1;}.member-detail-links{flex-wrap:wrap;}.member-detail-links form{margin-left:auto;}
  .import-history a{flex-wrap:wrap;gap:2px;}.import-history time{margin-left:auto;}.import-metrics{gap:12px;}.import-metrics>div{padding-left:10px;}.import-metrics b{font-size:25px;}.import-metrics span{font-size:11px;}.import-source dl>div{grid-template-columns:1fr;gap:2px;}.import-confirm-actions{justify-content:space-between;gap:12px;}.import-confirm-actions button{padding:11px 14px;}
}
@media(max-width:370px){.import-metrics{grid-template-columns:repeat(2,minmax(0,1fr));}.import-metrics>div:nth-child(3){border:0;padding-left:0;}}
