:root{--ink:#22262a;--sub:#6b7076;--line:#e3e5e8;--bg:#fff;--soft:#f5f6f7;--orange:#a8500f;--orange-bg:#fbeee2;--ok:#1f8a4c;--ok-bg:#e6f4ec;--ng:#c0392b;--ng-bg:#fbe9e7;--side:#22262a}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:-apple-system,"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;color:var(--ink);background:var(--soft);font-size:14px;line-height:1.5;-webkit-text-size-adjust:100%}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
a{color:var(--orange)}
.screen{display:none}.screen.on{display:block}
/* ===== 先生画面 ===== */
.tch{display:flex;min-height:100vh}
.side{width:210px;background:var(--side);color:#e8e9ea;padding:18px 14px;flex-shrink:0}
.side .brand{font-size:16px;font-weight:700;color:#fff;margin-bottom:4px}
.side .school{font-size:12px;color:#9aa0a6;margin-bottom:18px;line-height:1.4}
.side nav button{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:8px;font-size:15px;color:#d5d8db;margin-bottom:4px}
.side nav button.on{background:#3a3f45;color:#fff}
.side .foot{margin-top:24px;font-size:12px;color:#9aa0a6;line-height:1.6}
.main{flex:1;padding:22px 26px;background:var(--soft);min-width:0}
.main h2{font-size:18px;margin-bottom:12px}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.card h3{font-size:15px;margin-bottom:10px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.chip{border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:14.5px;background:#fff}
.chip.on{background:var(--orange);color:#fff;border-color:var(--orange)}
.btn{background:var(--orange);color:#fff;border-radius:8px;padding:9px 16px;font-size:14.5px;font-weight:600}
.btn.sec{background:#fff;color:var(--ink);border:1px solid var(--line)}
.note{font-size:12.5px;color:var(--sub)}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th,.tbl td{border-bottom:1px solid var(--line);padding:7px 8px;text-align:center;white-space:nowrap}
.tbl th{font-weight:600;color:var(--sub);font-size:12px;background:#fafbfb}
.tbl td.name{text-align:left;font-weight:600;cursor:pointer;color:var(--orange)}
.tbl td.name small{color:var(--sub);font-weight:400;margin-right:4px}
.cell{display:inline-block;min-width:54px;padding:3px 6px;border-radius:6px;line-height:1.25}
.cell b{display:block;font-size:14px}
.cell small{font-size:11.5px;color:var(--sub);display:block}
.cell small.dt{font-size:10.5px;color:#9aa0a6}
.cell.p100{background:var(--ok-bg)} .cell.p100 b{color:var(--ok)}
.cell.low{background:var(--ng-bg)} .cell.low b{color:var(--ng)}
.cell.none{color:#c8ccd0}
body:has(#s-teacher.on) #kidfoot{display:none}
.cell:not(.none){cursor:pointer}
.cell:not(.none):hover{outline:2px solid var(--orange)}
.qgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.qgrid div{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:14px;font-weight:600}
.qgrid div small{display:block;font-size:11.5px;color:var(--sub);font-weight:400}
.qgrid div.ng{background:var(--ng-bg);border-color:#f3cfcb}
.qgrid div.ng b{color:var(--ng)}
.kpi{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.kpi div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 18px;min-width:140px}
.kpi b{display:block;font-size:24px}
.kpi span{font-size:12.5px;color:var(--sub)}
.hist{font-size:13px}
.hist tr td:first-child{color:var(--sub)}
.link{background:var(--soft);border-radius:8px;padding:10px 12px;font-family:Menlo,monospace;font-size:13px;word-break:break-all}
select,input[type=text],input[type=password],input[type=number],textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-size:14px;font-family:inherit}
.frm{display:grid;grid-template-columns:120px 1fr;gap:10px 14px;align-items:center;max-width:560px}
.frm label{font-size:13px;color:var(--sub)}
@media(max-width:700px){.tch{flex-direction:column}.side{width:100%}.main{padding:14px 16px}}

/* 追加: ログイン・トップ・通知 */
.login{max-width:420px;margin:60px auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:26px 24px}
.login h1{font-size:20px;margin-bottom:4px}.login p{color:var(--sub);font-size:13px;margin-bottom:16px}
.login input{font-size:16px;padding:11px 12px}
.login .btn{width:100%;margin-top:12px;padding:12px;font-size:15.5px}
.msg{font-size:13px;margin-top:8px;min-height:18px}.msg.err{color:var(--ng)}.msg.ok{color:var(--ok)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:999px;font-size:13.5px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:60}
.toast.on{opacity:1}
.copy{font-size:12.5px;padding:6px 12px;margin-left:8px}
.side nav button.board{margin-top:14px;border:1px solid #555}
.side .foot a{color:#c9ccd0}
.kpi b{font-size:22px}
.tbl td.name{white-space:nowrap}
.chipset .chip{cursor:pointer;user-select:none}
.home{max-width:640px;margin:0 auto;padding:36px 18px 60px}
.home h1{font-size:26px;margin:6px 0 4px}.home .lead{color:var(--sub);font-size:14px;margin-bottom:22px;line-height:1.7}
.home .card{padding:20px 22px}
.home .frm{grid-template-columns:110px 1fr}
.home .btn{padding:12px 22px;font-size:15.5px}
.result-links .link{margin:6px 0 4px}
.stepnote{font-size:13px;color:var(--sub);line-height:1.8;margin-top:6px}
.who{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.who img{width:64px;height:64px}
@media(max-width:700px){.frm{grid-template-columns:1fr}.home .frm{grid-template-columns:1fr}}

/* 児童一覧 */
.tbl.kids th,.tbl.kids td{text-align:left}
.tbl.kids input[type=text]{width:220px;padding:6px 8px;font-size:14px}
.tbl.kids input[type=number]{width:64px;padding:6px 8px;font-size:14px}
.tbl.kids .pin{font-family:Menlo,monospace;font-size:16px;letter-spacing:.15em;font-weight:600}
.tbl.kids .btn.sec{padding:5px 10px;font-size:12.5px}
.tbl.kids .del{color:var(--ng)}

/* 今日のテスト: チップの上下間隔 */
.chipset{display:inline-flex;flex-wrap:wrap;gap:8px 8px;align-items:center}
#t-today .row{row-gap:10px}
#t-today .card .row + .row{margin-top:12px}
