:root{--paper:#f4f3ee;--surface:#ffffff;--ink:#1f1b2e;--ink-2:#5c5870;--line:#ddd9d0;--accent:#5b3fa6;--accent-ink:#ffffff;--ok:#1f7a4d;--warn:#b7791f;--bad:#b3261e;--radius:14px;--font:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans Arabic",sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.45;font-size:16px;min-height:100dvh}button,input,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}.shell{max-width:480px;margin:0 auto;padding:0 16px 40px}.top{display:flex;align-items:baseline;justify-content:space-between;padding:18px 0 10px}.top h1{font-size:15px;font-weight:700;margin:0;letter-spacing:-.01em}.top button{background:none;border:0;color:var(--ink-2);padding:4px 0;cursor:pointer}.nav{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);padding:3px;background:var(--surface);margin-bottom:20px}.nav,.nav a{border-radius:999px}.nav a{text-align:center;padding:9px 0;font-weight:600;font-size:15px;color:var(--ink-2)}.nav a[aria-current=page]{background:var(--ink);color:#fff}.stack{flex-direction:column;gap:14px}.row,.stack{display:flex}.row{gap:10px;align-items:center}.muted{color:var(--ink-2);font-size:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:12px;padding:13px 18px;font-weight:700;font-size:16px;cursor:pointer;width:100%}.btn.big{padding:18px;font-size:18px;border-radius:16px;background:var(--accent);border-color:var(--accent)}.btn.quiet{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn.small{width:auto;padding:8px 12px;font-size:14px;border-radius:10px}.btn:disabled{opacity:.5;cursor:default}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:14px;color:var(--ink-2)}.input{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 14px;font-size:16px;width:100%}.error{color:var(--bad);font-size:14px}.session{display:grid;grid-template-columns:1fr 1fr;gap:8px}.session button{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px;font-weight:600;cursor:pointer;text-align:left}.session button span{display:block;font-size:13px;color:var(--ink-2);font-weight:400}.session button[aria-pressed=true]{border-color:var(--accent);background:#efe9fb;color:var(--accent)}.session button[aria-pressed=true] span{color:var(--accent)}.scanbox{position:relative;aspect-ratio:1/1;border-radius:20px;overflow:hidden;background:#0f0d18;color:#fff}.scanbox video{width:100%!important;height:100%!important;object-fit:cover}.scanbox #reader{width:100%;height:100%}.scanbox #reader>div{height:100%}.scanbox img{display:none}.scanbox .idle{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:24px}.result{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:28px;color:#fff;animation:pop .18s ease-out}.result.ok{background:var(--ok)}.result.warn{background:var(--warn)}.result.bad{background:var(--bad)}.result .name{font-size:34px;font-weight:800;line-height:1.1;letter-spacing:-.02em;word-break:break-word}.result .what{font-size:17px;margin-top:10px;opacity:.92}@keyframes pop{0%{transform:scale(.96);opacity:0}to{transform:none;opacity:1}}.recent{border-top:1px solid var(--line)}.recent li{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);list-style:none}.recent ul{padding:0;margin:0}.recent time{color:var(--ink-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.table td,.table th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:15px}.table th{font-weight:600;color:var(--ink-2);font-size:13px}.table tr:last-child td{border-bottom:0}.table td.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.count{font-size:40px;font-weight:800;letter-spacing:-.03em;line-height:1}.count small{display:block;font-size:14px;font-weight:400;color:var(--ink-2);letter-spacing:0;margin-top:4px}.student{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.student b{display:block;font-weight:600}.student code{font-size:13px;color:var(--ink-2)}.sheet{position:fixed;inset:0;background:rgba(31,27,46,.55);display:grid;place-items:end center;z-index:10}.sheet>div{background:var(--surface);width:100%;max-width:480px;border-radius:22px 22px 0 0;padding:20px 20px 28px;text-align:center}.sheet canvas{width:240px;height:240px}.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.card{border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center;background:#fff;break-inside:avoid;page-break-inside:avoid}.card canvas{width:100%;height:auto;max-width:220px}.card .cname{font-weight:700;font-size:18px;margin-top:8px}.card .ctoken{font-size:12px;color:var(--ink-2)}.card .cschool{font-size:11px;color:var(--ink-2);margin-bottom:6px}@media print{body{background:#fff}.shell{max-width:none;padding:0}.no-print{display:none!important}.cards{grid-template-columns:repeat(3,1fr);gap:8mm}.card{border-color:#999}}