:root{--navy:#102f48;--teal:#09917c;--bg:#f2f6fa;--muted:#8292a1;--text:#21394f;--stroke:#e5edf4;--gold:#f0c267}
*{box-sizing:border-box}html{min-height:100%}body{margin:0;background:var(--bg);font:14px/1.65 Tahoma,Arial,sans-serif;color:var(--text);min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}a{color:inherit}label{display:block;font-weight:700;font-size:12px;color:#425b6c;margin:0 0 8px}input,select,textarea{width:100%;border:1px solid #dce6ef;border-radius:10px;background:white;min-height:46px;padding:10px 12px;color:var(--text);outline:0}input:focus,select:focus,textarea:focus{border-color:#2fa58f;box-shadow:0 0 0 3px #09917c17}textarea{resize:vertical}button:focus-visible{outline:3px solid #66baa9;outline-offset:3px}
.site-header{background:#fff;border-bottom:1px solid var(--stroke);padding:15px max(16px,calc((100vw - 1330px)/2));display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:77px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:49px;height:49px;background:var(--navy);border-radius:13px;font-size:24px;color:white}.brand b{display:block;font-size:14px;color:var(--navy)}.brand small{display:block;font-size:10px;color:var(--muted)}.header-pill,.pill{display:inline-block;font-size:11px;color:#17826f;background:#e6f7f0;padding:7px 11px;border-radius:100px;font-weight:700;white-space:nowrap}.header-pill{color:#4e7d9f;background:#eff7fc;direction:ltr}.header-actions{display:flex;gap:8px}.primary,.light-btn,.soft-green,.soft-red{border:1px solid transparent;border-radius:9px;padding:11px 15px;font-weight:bold;transition:filter .2s,transform .2s}.primary{background:var(--teal);color:white}.primary:hover{filter:brightness(.95)}.light-btn{background:white;color:#567082;border-color:#deebf0}.soft-green{background:#e5f7ef;color:#098164}.soft-red{background:#fff0f0;color:#ba4356}.full{width:100%}.card{background:#fff;border:1px solid var(--stroke);border-radius:17px;padding:21px;box-shadow:0 8px 25px #11314d09;min-width:0}.eyebrow{font-size:11px;color:var(--teal);font-weight:bold;letter-spacing:.3px}.subtle{color:var(--muted);font-size:12px;line-height:1.85;margin:0}.site-footer{text-align:center;margin:35px auto 22px;padding:0 12px;color:#8193a2;font-size:12px}.site-footer b{color:#1586a6}.site-footer small{display:block;direction:ltr;line-height:2;color:#9dabb7}.feedback{margin-top:12px;padding:11px 13px;border-radius:10px;line-height:1.8;background:#f0f5fb}.feedback.good{background:#e7f9f0;color:#107956}.feedback.bad{background:#fff0f0;color:#b34a57}
/* Student */
.student-page{background:radial-gradient(ellipse at top left,#dff0f5 0,transparent 45%),#f2f6fa}.student-main{padding:50px 15px 0;margin:auto;max-width:760px}.student-intro{text-align:center;margin-bottom:27px}.student-intro h1{font-size:clamp(27px,4vw,37px);margin:8px 0;color:var(--navy)}.student-intro p{color:#8497a8;margin:0}.student-card{max-width:590px;margin:0 auto;padding:30px}.student-card-header{display:flex;gap:14px;align-items:center;margin-bottom:22px}.student-card-header h2{margin:0 0 3px;color:var(--navy)}.round-icon{width:55px;height:55px;display:grid;place-items:center;border-radius:13px;font-size:29px;background:#e7f6f0;color:var(--teal)}.student-state{padding:16px;border-radius:12px;background:#eef5fa;text-align:center;color:#386785;font-weight:bold;margin:12px 0}.student-state.good{background:#e7f8ef;color:#078066}.student-state.bad{background:#ffeded;color:#aa4251}.student-state.warn{background:#fff5e8;color:#a47826}.count-chip{text-align:center;margin:12px 0;color:#627d91;font-size:13px}.count-chip b{color:#b57c1e}#checkinForm{margin-top:23px}#submitBtn{margin-top:16px}.help-note{border-top:1px solid #eaf0f4;margin:25px 0 0;padding:16px 0 0;color:#8c9baa;font-size:11px;line-height:1.9}
/* Admin */
.login-card{max-width:450px;margin:65px auto 20px}.login-card h1{color:var(--navy);font-size:23px;margin:7px 0}.login-card form{margin-top:21px}.login-card .primary{margin-top:16px}.dashboard{max-width:1330px;margin:auto;padding:27px 17px 25px}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:15px;flex-wrap:wrap;margin:4px 0 21px}.page-heading h1{color:var(--navy);font-size:28px;margin:5px 0}.date-control{width:190px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.stat-card{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 20px;border:1px solid var(--stroke);background:white;border-radius:15px}.stat-card small{display:block;font-size:11px;color:#8e9eac}.stat-card b{font-size:33px;color:#166e8f;display:block;line-height:1.4}.stat-icon{width:43px;height:43px;border-radius:12px;display:grid;place-items:center;font-size:23px;flex-shrink:0}.green-icon{background:#e8f8f0;color:#159474}.orange-icon{background:#fff4e8;color:#e19c42}.blue-icon{background:#eef5fc;color:#5592bb}.red-icon{background:#fff0f0;color:#bf5964}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 345px;gap:18px;direction:ltr;align-items:start}.dashboard-grid>*{direction:rtl;min-width:0}.left-stack,.right-stack{display:flex;flex-direction:column;gap:18px}.secondary-grid{margin-top:18px}.card-heading{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:15px}.card h2{font-size:17px;color:var(--navy);margin:0 0 4px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:right;font-size:12px;min-width:490px}thead{background:#f5f8fb}th{font-size:11px;color:#8497a6;font-weight:600;white-space:nowrap}td,th{padding:12px;border-bottom:1px solid #edf2f6}td:first-child{font-weight:bold;color:var(--navy)}tr:last-child td{border-bottom:0}.mini-status{display:inline-block;border-radius:25px;padding:5px 10px;background:#e9f8ef;color:#17856b;white-space:nowrap}.mini-status.waiting{background:#fff4e7;color:#bf842e}.mini-status.no{background:#fff0f0;color:#bd5965}.row-actions{display:flex;gap:6px}.row-actions button{border:0;border-radius:7px;padding:7px 9px;font-size:11px;font-weight:700;white-space:nowrap}.row-actions .approve{background:#e5f7ee;color:#16815f}.row-actions .reject{background:#fff0f1;color:#ba5160}.empty-row{text-align:center!important;padding:21px!important;color:#95a4ae!important;font-weight:normal!important}.qr-card{position:sticky;top:14px}.qr-surface{background:#f5f9fb;padding:15px;border-radius:13px;text-align:center}.qr-holder{width:270px;max-width:100%;aspect-ratio:1;display:grid;place-items:center;margin:auto;background:#fff;padding:12px;border-radius:13px;color:#8094a5;overflow:hidden}.qr-holder img,.qr-holder canvas{width:100%!important;height:100%!important;object-fit:contain;image-rendering:pixelated}.countdown{font-size:27px;font-weight:900;color:var(--navy);margin:6px 0}.meter{height:8px;border-radius:100px;background:#dfebef;overflow:hidden;margin:10px 0}.meter>div{height:100%;width:100%;background:#2abd99}.registration-state{background:#e8f8ef;color:#128267;border-radius:25px;text-align:center;padding:10px;margin:16px 0 11px;font-weight:bold}.registration-state.closed{background:#fff0f0;color:#bb4558}.side-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.tip{margin-top:14px}.manual-grid{display:grid;grid-template-columns:2fr 1fr;gap:13px;margin:16px 0}.audit-row{display:flex;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid #eaf1f4;font-size:12px}.audit-row small{color:#8a9eaf}.toast{position:fixed;z-index:30000;bottom:17px;left:50%;transform:translateX(-50%);border-radius:11px;padding:13px 19px;background:#103b58;color:#fff;box-shadow:0 10px 40px #102d4850;max-width:92vw;text-align:center}
/* Projector - big QR */
.projector{position:fixed;inset:0;z-index:20000;overflow:auto;background:radial-gradient(circle at 15% 12%,#20527a 0%,transparent 43%),linear-gradient(135deg,#071b2d,#123752 70%,#081e31);color:#fff;padding:13px 23px}.project-shell{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:100%;max-width:1560px;margin:auto}.project-close{position:absolute;left:16px;top:15px;border:1px solid #ffffff55;background:#ffffff22;border-radius:8px;color:white;padding:10px}.project-heading{text-align:center;padding:0 55px}.project-heading small{display:block;color:#96c6df;direction:ltr;font-weight:bold;letter-spacing:2px;font-size:12px}.project-heading h2{font-size:clamp(25px,3vw,45px);margin:4px 0;color:#fff}.project-heading p{color:#b9d8ea;font-size:14px;margin:0}.project-grid{display:grid;grid-template-columns:minmax(0,2.25fr) minmax(210px,.75fr);direction:ltr;gap:15px;align-items:center;flex:1;min-height:0}.project-main,.project-roster{direction:rtl}.project-main{text-align:center;min-width:0}.project-main .qr-holder{width:min(65vh,60vw,770px);max-width:100%;min-width:0;background:#fff;border:5px solid white;padding:18px;box-shadow:0 15px 45px #0005}.project-countdown{font-size:clamp(30px,4vw,50px);font-weight:900;color:#76e6bc;margin:2px}.project-main .meter{max-width:620px;margin:5px auto}.project-main p{margin:3px 0;color:#c1dfea}.project-roster{background:#ffffff12;border:1px solid #ffffff28;border-radius:16px;padding:18px;max-height:60vh;overflow:auto}.project-roster h3{font-size:20px;margin:0 0 15px}.project-person{background:white;color:#163951;padding:10px 12px;border-radius:10px;margin:8px 0;font-size:13px}.project-person small{display:block;color:#8497a4}.project-credit{text-align:center;border-top:1px solid #ffffff28;padding:6px 12px 8px}.project-credit div{color:#d8e4ea;font-size:clamp(12px,1.2vw,17px)}.project-credit b{display:block;width:fit-content;margin:0 auto;font-size:clamp(29px,4vw,60px);line-height:1.3;background:linear-gradient(105deg,#c78d32,#fff0b1,#fffdf0,#e0ac44,#ffe29b);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 5s ease-in-out infinite}.project-credit small{display:block;color:#a6c9e2;direction:ltr}.project-roster .empty-row{color:white!important}@keyframes shine{0%,100%{background-position:100%}50%{background-position:0%}}
@media(max-width:850px){.dashboard-grid{grid-template-columns:1fr}.qr-card{position:static}.stats-grid{grid-template-columns:repeat(2,1fr)}.project-grid{grid-template-columns:1fr;gap:9px}.project-main .qr-holder{width:min(53vh,88vw,520px)}.project-roster{max-height:155px}.project-credit b{font-size:clamp(27px,5vw,45px)}}
@media(max-width:520px){.site-header{padding:11px 12px}.header-pill{display:none}.brand-mark{width:43px;height:43px}.brand b{font-size:12px}.dashboard{padding:18px 11px}.card{padding:15px}.page-heading h1{font-size:23px}.stats-grid{gap:8px}.stat-card{padding:12px}.stat-card b{font-size:27px}.stat-icon{width:35px;height:35px}.manual-grid{grid-template-columns:1fr}.projector{padding:10px}.project-heading{padding:0 48px}.project-heading h2{font-size:25px}.project-roster h3{font-size:16px}.student-main{padding-top:29px}.student-card{padding:20px}}
@media(prefers-reduced-motion:reduce){.project-credit b{animation:none}}

/* Bulk approval stays next to the pending list, per-row review remains available. */
.bulk-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:9px}
.bulk-approve{background:#0b987e;border:0;border-radius:10px;color:white;padding:11px 15px;font:700 13px Tahoma,Arial,sans-serif;white-space:nowrap;cursor:pointer}
.bulk-approve:disabled{opacity:.5;cursor:not-allowed}
.bulk-approve:not(:disabled):hover{background:#087d69}
@media(max-width:700px){.bulk-toolbar{width:100%;justify-content:space-between}}
