:root{--bg: #f7f5ef;--card: #ffffff;--ink: #1d2521;--muted: #6b7570;--line: #e2ded2;--brand: #1f5f4a;--ok: #1f7a55;--warn: #c98a12;--bad: #c0392b;--radius: 14px;font-family:Noto Naskh Arabic,Segoe UI,Tahoma,system-ui,sans-serif;color:var(--ink);background:var(--bg);-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}button:disabled{opacity:.45;cursor:default}h1{font-size:1.25rem;margin:0}h2{font-size:1.05rem;margin:0 0 .6rem;display:inline}.screen{max-width:640px;margin:0 auto;padding:.75rem .75rem 6rem}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;margin:.75rem 0}.stack{display:flex;flex-direction:column;gap:.75rem}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:var(--muted)}input,select,textarea{border:1px solid var(--line);border-radius:10px;padding:.6rem;background:#fff;color:var(--ink);font-size:1rem}.muted{color:var(--muted)}.error{color:var(--bad)}.ok{color:var(--ok)}.small{font-size:.85rem}.danger{color:var(--bad)!important}.primary{background:var(--brand);color:#fff;border-radius:12px;padding:.7rem 1rem;font-weight:600}.big{font-size:1.1rem;padding:.95rem;width:100%}.sticky{position:sticky;bottom:.75rem;box-shadow:0 6px 20px #00000026}.ghost{border:1px solid var(--line);border-radius:10px;padding:.5rem .8rem;background:#fff}.link{color:var(--brand);padding:.4rem}.syncbar{display:flex;align-items:center;gap:.6rem;padding:.45rem .9rem;font-size:.85rem;background:#e7efe9;color:var(--brand);position:sticky;top:0;z-index:2}.syncbar>span:first-child{flex:1}.syncbar--offline{background:#fbf1dc;color:#7a5200}.syncbar--auth,.syncbar--error{background:#f8e1de;color:var(--bad)}.badge{background:currentColor;border-radius:99px;padding:.1rem .55rem}.badge{color:inherit;background:#00000014}.titlebar{display:flex;align-items:center;gap:.5rem;margin:.25rem 0 .5rem}.titlebar h1{flex:1}.list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.row{display:flex;align-items:center;gap:.6rem;width:100%;text-align:start;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.95rem;font-size:1.05rem}.student{display:flex;gap:.4rem;align-items:stretch}.grow,.student .name{flex:1}.student--done .row{border-color:#b9dcc8;background:#f1f8f4}.student--absent .row{background:#f3f1ea;color:var(--muted)}.chip{font-size:.8rem;border-radius:99px;padding:.15rem .6rem}.chip--ok{background:#dcefe4;color:var(--ok)}.chip--absent{background:#ece8dc;color:var(--muted)}.login{padding-top:15vh;text-align:center}.item-head{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}.track{font-size:.8rem;font-weight:700;border-radius:6px;padding:.1rem .45rem;background:#eef2ef}.item--new .track{background:#e3eefc;color:#1d4f8f}.item--near .track{background:#fdf0d6;color:#7a5200}.item--far .track{background:#e7f2ec;color:var(--ok)}.range{flex:1;font-weight:600;font-size:1.05rem}.item--skipped{opacity:.55}.stepper{display:flex;align-items:center;gap:.6rem;margin-top:.6rem}.stepper button{width:2.4rem;height:2.4rem;border-radius:10px;border:1px solid var(--line);font-size:1.2rem}.counters{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:.5rem;margin:.75rem 0}.counter{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.75rem .3rem;border-radius:12px;border:1px solid var(--line);background:#fbfaf6;min-height:4.2rem}.counter:active{transform:scale(.97)}.counter .count{font-size:1.5rem;font-weight:700;line-height:1}.counter--jali .count{color:var(--bad)}.counter--hesitation .count{color:var(--warn)}.counter--tajweed .count{color:#2d6aa3}.counter--undo{font-size:1.4rem;padding-inline:.9rem;justify-content:center}.outcomes{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.outcome{padding:.75rem .3rem;border-radius:12px;border:2px solid var(--line);background:#fff;font-weight:600}.outcome.is-suggested{border-style:dashed}.outcome--approved.is-chosen{background:var(--ok);border-color:var(--ok);color:#fff}.outcome--repeat.is-chosen{background:var(--warn);border-color:var(--warn);color:#fff}.outcome--rejected.is-chosen{background:var(--bad);border-color:var(--bad);color:#fff}.more{margin-top:.6rem;font-size:.9rem}.more summary{color:var(--muted);cursor:pointer}.chips{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.5rem}.chip-btn{border:1px solid var(--line);border-radius:99px;padding:.35rem .8rem;background:#fff}.chip-btn.is-chosen{background:var(--brand);border-color:var(--brand);color:#fff}.note{width:100%;margin:.5rem 0 .75rem}details.card>summary{cursor:pointer;list-style:none}details.card>summary:before{content:"▸ ";color:var(--muted)}details.card[open]>summary:before{content:"▾ "}details.card[open]>summary{margin-bottom:.6rem}.legend{display:flex;flex-wrap:wrap;gap:.4rem .9rem;font-size:.8rem;color:var(--muted);margin-bottom:.6rem}.legend span{display:inline-flex;align-items:center;gap:.3rem}.heatmap{display:grid;grid-template-columns:repeat(20,1fr);gap:2px;direction:ltr}.cell{display:inline-block;aspect-ratio:1;min-width:.7rem;border-radius:2px;background:#e8e4d8}.cell--partial{background:linear-gradient(135deg,#f3c969 50%,#e8e4d8 50%)}.cell--initial_pass{background:#f3c969}.cell--consolidated{background:#8cc79d}.cell--mastered{background:#1f7a55}.cell--weak{background:#d9534f}.cell--overdue{outline:2px solid #7a5200;outline-offset:-2px}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:.75rem 0}.tile{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem;display:flex;flex-direction:column;gap:.2rem}.tile strong{font-size:1.5rem;color:var(--brand)}.tile span{font-size:.8rem;color:var(--muted)}.tile--bad strong{color:var(--bad)}.ghost--done{color:var(--ok);border-color:#b9dcc8}.table-wrap{overflow-x:auto;padding:0}.overview{width:100%;border-collapse:collapse;font-size:.9rem}.overview th,.overview td{padding:.6rem .5rem;text-align:start;border-bottom:1px solid var(--line);white-space:nowrap}.overview th{font-size:.75rem;color:var(--muted);font-weight:600}.overview tbody tr{cursor:pointer}.overview .bad{color:var(--bad);font-weight:700}.report-head{padding:1rem 0 .25rem}.report-head p{margin:.2rem 0 0}.report-item{padding:.5rem 0;border-top:1px solid var(--line)}.report-item:first-of-type{border-top:0}.report-item p{margin:.3rem 0 0}.outcome-chip--approved{background:#dcefe4;color:var(--ok)}.outcome-chip--repeat{background:#fdf0d6;color:#7a5200}.outcome-chip--rejected{background:#f8e1de;color:var(--bad)}.note-box{background:#f7f5ef;border-radius:10px;padding:.6rem;margin:.6rem 0 0}.session-row{border-top:1px solid var(--line);padding:.6rem 0}.session-row:first-of-type{border-top:0}.session-head{display:flex;justify-content:space-between;align-items:center}.session-item{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;font-size:.9rem;margin-top:.35rem}.session-item .range{font-size:.95rem}.session-item select{padding:.25rem .4rem;font-size:.85rem}
