:root{--bg:#f4f6fb;--card:#fff;--ink:#1c2330;--muted:#6b7688;--line:#dfe4ee;--accent:#3d6bff;--ok:#1ea672;--bad:#e0474c;--star:#f5b301;color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);-webkit-text-size-adjust:100%;margin:0}.app{max-width:32rem;margin:0 auto;padding:1.25rem 1rem 2.5rem}.card{background:var(--card);border:1px solid var(--line);border-radius:1rem;margin-bottom:1rem;padding:1.25rem}h1{margin:0 0 .75rem;font-size:1.5rem}h2{margin:0 0 .75rem;font-size:1.1rem}.muted{color:var(--muted);font-size:.9rem}.page-head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.75rem;display:flex}.page-head h1{margin:0}.page-head a{white-space:nowrap;font-size:.9rem}button{font:inherit;border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:.75rem;min-height:3rem;padding:.75rem 1rem}button:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;width:100%;min-height:3.5rem;font-size:1.15rem;font-weight:600}.btn-ghost{color:var(--muted);background:0 0;border-color:#0000}.progress{background:var(--line);border-radius:999px;height:.5rem;overflow:hidden}.progress>div{background:var(--accent);height:100%;transition:width .2s}.task{text-align:center;font-variant-numeric:tabular-nums;margin:2rem 0;font-size:2.75rem;font-weight:600}.task .slot{border-bottom:3px solid var(--accent);min-width:3.5rem;min-height:1.2em;display:inline-block}.task .slot.idle{border-bottom-color:var(--line)}.task .rem-group{white-space:nowrap}.task .rem-label{color:var(--muted);font-size:.6em}.keypad{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.keypad button{min-height:3.75rem;font-size:1.5rem}.flash{text-align:center;margin:2rem 0;font-size:1.5rem;font-weight:600}.flash.ok{color:var(--ok)}.flash.bad{color:var(--bad)}.stars{color:var(--star);text-align:center;letter-spacing:.2rem;font-size:2rem}.badge{border:1px solid var(--line);color:var(--muted);white-space:nowrap;vertical-align:.05em;border-radius:999px;padding:0 .4rem;font-size:.7rem;font-weight:600;line-height:1.5;display:inline-block}.badge-exam{border-color:var(--accent);color:var(--accent)}.pager{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.pager button{min-height:2.5rem;padding:.5rem .9rem}.rows{gap:.4rem;display:grid}.row{justify-content:space-between;gap:1rem;display:flex}.row .val{font-variant-numeric:tabular-nums;font-weight:600}.row .when{white-space:nowrap}.modal-backdrop{background:#141a268c;justify-content:center;align-items:flex-start;padding:1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--card);border-radius:1rem;width:min(28rem,100%);margin:auto;padding:1.5rem}.field{gap:.35rem;margin-bottom:.75rem;display:grid}.op-block{border-top:1px solid var(--line);padding:.75rem 0}.op-block>:last-child{margin-bottom:0}.field label{color:var(--muted);font-size:.9rem}input[type=number],input[type=password],input[type=text]{font:inherit;border:1px solid var(--line);border-radius:.5rem;width:100%;padding:.6rem}.range,.pin-row{align-items:center;gap:.5rem;display:flex}.pin-row input{flex:1;min-width:0}.pin-row button{white-space:nowrap;min-height:2.75rem;padding:.5rem .75rem}.range input{width:5rem}.grid-table{border-collapse:collapse;font-size:.8rem}.grid-table th,.grid-table td{border:1px solid var(--line);text-align:center;width:2rem;height:2rem}.acc-high{background:#bfe8d5}.acc-mid{background:#ffe3ac}.acc-low{background:#f7c0c2}.acc-none{color:var(--muted);background:#f2f4f8}.scroll-x{overflow-x:auto}.error{color:var(--bad);font-size:.9rem}.warn{color:#a3690a;font-size:.9rem}
