*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1c1e21;background:#f4f5f7}
nav{display:flex;gap:16px;align-items:center;background:#1c2733;padding:10px 16px}
nav a{color:#cfd8e3;text-decoration:none}nav a.on,nav a:hover{color:#fff}
nav .sp{flex:1}nav .who{color:#8fa1b5}
main{max-width:1000px;margin:0 auto;padding:16px}
h1{font-size:22px;margin:8px 0 16px}h2{font-size:17px;margin:24px 0 8px}
.card{background:#fff;border:1px solid #dde1e6;border-radius:8px;padding:16px;margin-bottom:16px}
label{display:block;font-weight:600;margin:10px 0 4px}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=month],input[type=file],select,textarea{width:100%;padding:8px;border:1px solid #c5cbd3;border-radius:6px;font:inherit;background:#fff}
textarea{min-height:130px;resize:vertical}
.row{display:flex;gap:12px;flex-wrap:wrap}.row>div{flex:1;min-width:160px}
button,.btn{background:#2563eb;color:#fff;border:0;border-radius:6px;padding:9px 16px;font:inherit;cursor:pointer;text-decoration:none;display:inline-block}
button:disabled{opacity:.6;cursor:wait}
button.sec,.btn.sec{background:#e5e8ec;color:#1c1e21}button.danger{background:#c62828}
button.link{background:none;color:#cfd8e3;padding:0}form.inline{display:inline}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:8px 10px;border-bottom:1px solid #e6e9ed;text-align:left;vertical-align:top}th{background:#eef0f3;font-size:13px}
.msg{padding:10px 12px;border-radius:6px;margin-bottom:12px}.msg.ok{background:#e3f4e8;color:#1b5e30}.msg.err{background:#fde8e8;color:#8a1c1c}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:#e5e8ec}
.badge.pending{background:#fff3cd}.badge.posted{background:#d4edda}.badge.skipped{background:#e2e3e5}
.thumb{width:56px;height:56px;object-fit:cover;border-radius:4px;background:#ddd}
.muted{color:#6b7480;font-size:13px}
#bar{height:8px;background:#e5e8ec;border-radius:4px;overflow:hidden;margin-top:10px;display:none}#bar i{display:block;height:100%;width:0;background:#2563eb}
#preview img,#preview video{max-width:220px;max-height:180px;border-radius:6px;margin-top:8px}
.login{max-width:360px;margin:60px auto}
@media(max-width:640px){main{padding:12px}th,td{padding:6px}}
.pv{display:block;max-width:100%;max-height:420px;border-radius:6px;margin:8px 0;background:#000}
.pv.sm{max-height:140px;max-width:160px}
.post .hd{font-size:17px}.acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.card.done{background:#f0f7f2;border-color:#cfe6d5;padding:10px 14px}
.up{display:flex;gap:14px;align-items:flex-start}.up .cap{white-space:pre-wrap;margin-top:6px;color:#333}
h2.warn{color:#b3261e}.card.late{border-color:#e7a19b;border-left:5px solid #c62828}
.latetag{color:#b3261e;font-weight:600;font-size:13px;margin-top:2px}
.scroll{overflow-x:auto;background:#fff;border:1px solid #dde1e6;border-radius:8px}
table.sum td.big{font-size:16px;white-space:nowrap}td.bad{color:#b3261e;font-weight:700}tr.tot td{background:#f4f5f7;font-weight:600}
table.grid{border-collapse:separate;border-spacing:0}
table.grid th,table.grid td{padding:4px 2px;text-align:center;border-bottom:1px solid #eceff2;border-right:1px solid #f2f4f6;min-width:30px;font-weight:400}
table.grid th.stick{position:sticky;left:0;background:#eef0f3;text-align:left;padding:6px 10px;min-width:130px;max-width:180px;z-index:1;font-weight:600}
table.grid td.today,table.grid th.today{background:#e8f0fe}table.grid th.wk{background:#e4e7ec}table.grid th.day small{color:#6b7480}
.chip{display:inline-block;min-width:22px;height:22px;line-height:22px;border-radius:4px;font-size:13px;font-weight:700;text-decoration:none;color:#1c1e21;margin:1px}
.chip.posted{background:#9bdcad}.chip.pending{background:#ffe08a}.chip.overdue{background:#f4a3a3}.chip.skipped{background:#d3d7de;color:#555}
.legend .chip{margin-right:2px;margin-left:10px}
@media print{nav,.filters{display:none}body{background:#fff}.scroll{overflow:visible;border:0}}
.mark{background:#1b7f3b}
.scroll td .bad{color:#b3261e;font-weight:600}
@media(max-width:640px){
  body{font-size:16px}
  input[type=text],input[type=email],input[type=password],input[type=date],input[type=month],input[type=file],select,textarea{font-size:16px;padding:10px}
  nav{flex-wrap:wrap;gap:4px 14px;padding:8px 12px}nav a,nav button.link{padding:12px 0;font-size:16px}nav .who{display:none}nav .sp{display:none}
  main{padding:10px}h1{font-size:20px}
  .card{padding:12px}
  button,.btn{min-height:46px;font-size:16px}
  .post .acts button,.post p .btn{width:100%}
  .post .acts{flex-direction:column;align-items:stretch}.post .acts .fb{text-align:center}
  .pv{width:100%;max-height:60vh;object-fit:contain}
  .pv.sm{width:96px;max-height:110px;max-width:96px}
  .up{gap:10px}
}
.scroll td .ok{color:#1b7f3b;font-weight:600}
.bigno{font-size:26px;font-weight:700;margin-top:4px}
