:root{
  --bg:#14161a;--panel:#1d2127;--panel2:#242a32;--text:#e7eaee;--muted:#9aa4b1;
  --line:#2e353f;--accent:#4f8cff;--open:#3a4250;--done:#2e7d4f;--partial:#b08900;
  --missed:#c0392b;--excused:#2f6f9f;
}
*{box-sizing:border-box;}
html,body{margin:0;}
body{font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.45;
  padding-bottom:env(safe-area-inset-bottom);}
a{color:var(--accent);word-break:break-all;}
header{padding:.8rem 1rem;background:var(--panel);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:5;}
header h1{font-size:1.1rem;margin:0;display:flex;align-items:center;gap:.5rem;}
header h1 img{width:24px;height:24px;border-radius:5px;}
.content{max-width:760px;margin:0 auto;padding:1rem;}
.muted{color:var(--muted);} .small{font-size:.82rem;}
h2{font-size:1.05rem;margin:1.1rem 0 .5rem;border-bottom:1px solid var(--line);padding-bottom:.3rem;}
.banner{padding:.6rem .8rem;border-radius:8px;margin:.6rem 0;background:var(--panel2);border:1px solid var(--line);}
.banner.warn{border-color:var(--partial);} .banner.ok{border-color:var(--done);}
.banner.info{border-color:var(--accent);} .banner.error{border-color:var(--missed);}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:.6rem 0;}
button,.btn,label.filebtn{cursor:pointer;border:1px solid var(--line);background:var(--panel2);
  color:var(--text);padding:.55rem .85rem;border-radius:8px;font-size:.92rem;display:inline-block;}
button:hover{border-color:var(--accent);}
button.primary,label.filebtn{background:var(--accent);border-color:var(--accent);color:#fff;}
button.b-done{background:var(--done);border-color:var(--done);}
button.b-partial{background:var(--partial);border-color:var(--partial);}
button.b-missed{background:var(--missed);border-color:var(--missed);}
button.b-excused{background:var(--excused);border-color:var(--excused);}
.daynav{display:flex;gap:.4rem;flex-wrap:wrap;}
.daynav button.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.cards{display:flex;flex-direction:column;gap:.7rem;margin-top:.7rem;}
.card{background:var(--panel);border:1px solid var(--line);border-left:5px solid var(--open);
  border-radius:10px;padding:.8rem .9rem;}
.card.s-Done{border-left-color:var(--done);}.card.s-Partial{border-left-color:var(--partial);}
.card.s-Missed{border-left-color:var(--missed);}.card.s-Excused{border-left-color:var(--excused);}
.row1{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;}
.time{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:600;}
.title{font-weight:600;}
.cat{font-size:.72rem;color:var(--muted);border:1px solid var(--line);padding:.05rem .4rem;border-radius:6px;}
.req{font-size:.7rem;color:var(--accent);}
.badge{font-size:.72rem;padding:.1rem .5rem;border-radius:999px;margin-left:auto;}
.badge.Open{background:var(--open);}.badge.Done{background:var(--done);}.badge.Partial{background:var(--partial);}
.badge.Missed{background:var(--missed);}.badge.Excused{background:var(--excused);}
.source{margin:.4rem 0;font-size:.85rem;color:var(--muted);}
.output-req{font-size:.82rem;color:var(--partial);}
.timing{font-size:.82rem;color:var(--muted);margin-top:.35rem;}
.timing.hint{color:var(--accent);}.timing.warn{color:var(--partial);}
.btns{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.6rem;}
input[type=text],input[type=number],textarea,select{background:var(--panel2);color:var(--text);
  border:1px solid var(--line);border-radius:8px;padding:.5rem .6rem;font-size:.95rem;font-family:inherit;width:100%;}
textarea{min-height:50px;}
label{display:block;margin:.5rem 0 .2rem;font-size:.85rem;}
.checkline{display:flex;align-items:center;gap:.4rem;margin-top:.4rem;}
.checkline input{width:auto;}.checkline label{margin:0;}
.inline{display:flex;gap:1rem;flex-wrap:wrap;}.inline>div{flex:1;min-width:120px;}
.review{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.8rem .9rem;margin-top:.8rem;}
.statusbar{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;font-size:.8rem;}
.dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;background:var(--muted);}
.dot.ok{background:var(--done);}
.foot{text-align:center;color:var(--muted);font-size:.78rem;padding:1.5rem 1rem;}
.hidden{display:none;}
