@font-face{font-family:yekanbakh;src:url('brand/YekanBakhRegular.woff2') format('woff2');font-weight:400;font-display:swap}
.roster-filters{display:grid;grid-template-columns:240px minmax(160px,1fr) auto;align-items:end;gap:16px;margin-bottom:24px}.sort-link{display:inline-flex;gap:6px;align-items:center;color:inherit;white-space:nowrap}.sort-link .lucide{width:15px;height:15px;flex-basis:15px}.invalid-row{background:#fff7f5}.invalid-label{color:var(--error);white-space:nowrap}.raw-code{display:block;color:var(--muted)}.selected-row{background:#e7f7f4}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:20px}.camera-panel{max-width:760px;margin-top:24px}.camera-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:end;margin-bottom:16px}.camera-toolbar input[type=range]{border:0;padding:0;accent-color:var(--primary);direction:ltr}.camera-toolbar output{color:var(--secondary);font-variant-numeric:tabular-nums}.camera-frame{width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:6px;background:#202020}.camera-frame canvas{display:block;width:100%;height:100%;object-fit:contain}.camera-source{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.camera-decoder{position:fixed;left:-10000px;top:0;width:1280px;pointer-events:none}.camera-panel p{margin-top:12px}.event-picker{max-width:400px;margin-bottom:24px}.roster-table form{margin:0}button:disabled,input:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:700px){.roster-filters{grid-template-columns:1fr}.camera-toolbar{grid-template-columns:1fr;gap:14px}.daily-table td,.roster-table td{max-width:240px;overflow-wrap:anywhere;white-space:normal}.daily-table th,.roster-table th{white-space:nowrap}}
.camera-frame{position:relative}.barcode-guide{position:absolute;left:5%;top:25%;width:90%;height:50%;border:2px solid #00b5ad;box-sizing:border-box;pointer-events:none}.daily-table td[dir="ltr"]{white-space:nowrap;overflow-wrap:normal}
.assignment-form{display:flex;align-items:center;gap:8px;min-width:260px;margin:0}.assignment-form select{min-width:0;max-width:350px}.assignment-form button{flex:none}jdp-container{font-family:yekanbakh,sans-serif;--jdp-primary:#00b5ad;max-width:calc(100vw - 24px)}
.date-input{display:flex;align-items:center;gap:8px}.date-input input{min-width:0;flex:1}.date-input button{flex:none}
.report-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.report-stats>div{border-inline-start:3px solid var(--primary);padding:12px 18px}.report-stats>div:nth-child(2){border-color:var(--ok)}.report-stats>div:nth-child(3){border-color:var(--secondary)}.report-stats>div:nth-child(4){border-color:var(--orange)}.report-stats b{display:block;font-size:28px;font-variant-numeric:tabular-nums}.report-stats span{color:var(--muted)}.report-totals{display:flex;flex-wrap:wrap;gap:12px 24px;color:var(--muted);margin-top:18px}.reception-heading-tools{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.reception-count{display:flex;align-items:center;gap:10px;white-space:nowrap}.reception-count b{font-size:24px;color:var(--ok);min-width:3ch;font-variant-numeric:tabular-nums}#registrationNoticeText{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}
@media(max-width:700px){.report-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.report-stats>div{padding:8px 12px}.report-stats b{font-size:24px}.reception-heading-tools{width:100%;justify-content:space-between;gap:10px}.reception-count{gap:6px;font-size:14px}}
#programReport .daily-table{min-width:820px}#programReport .daily-table th,#programReport .daily-table td{white-space:nowrap;max-width:none;overflow-wrap:normal}
#programReport .report-stats{grid-template-columns:1.4fr repeat(3,minmax(0,1fr));align-items:center}#programReport .report-metric{border-color:#adb6b5}#programReport .report-metric-new{border-color:var(--secondary)}#programReport .report-metric-absent{border-color:var(--orange)}#programReport .report-metric-present{border-color:var(--ok);background:#e8f6ed;padding:18px 22px}#programReport .report-metric-present b{font-size:44px;line-height:1.4;color:var(--ok)}#programReport .report-metric-present span{color:var(--ok);font-size:18px;font-weight:700}#programReport .daily-present{color:var(--ok);font-weight:700;background:#f0faf3}.attendance-breakdown{margin-top:32px;padding-top:24px;border-top:1px solid var(--line)}.attendance-breakdown h3{font-size:18px;margin:0 0 24px;color:var(--text)}.field-chart-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:40px;align-items:center}.field-chart-frame{width:100%;max-width:280px;aspect-ratio:1;justify-self:center}.field-chart-frame canvas{display:block;width:100%;height:100%}.field-chart-legend{list-style:none;margin:0;padding:0;min-width:0}.field-chart-legend li{display:grid;grid-template-columns:minmax(0,1fr) 75px 65px;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.field-chart-name{display:flex;align-items:center;gap:10px;overflow-wrap:anywhere;min-width:0}.field-chart-swatch{width:12px;height:12px;flex:0 0 12px;border-radius:2px}.field-chart-count{font-size:14px;color:var(--muted);white-space:nowrap}.field-chart-percent{font-size:18px;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:left}
@media(max-width:700px){#programReport .report-stats{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}#programReport .report-metric-present{grid-column:1/-1;padding:16px 20px}#programReport .report-metric-present b{font-size:40px}#programReport .report-metric-absent{grid-column:1/-1}.field-chart-layout{grid-template-columns:1fr;gap:20px}.field-chart-frame{max-width:240px}.field-chart-legend li{grid-template-columns:minmax(0,1fr) 60px 58px;gap:8px}.field-chart-percent{font-size:16px}}
.modal-heading{display:flex;align-items:center;gap:12px}.modal-heading h2{margin:0}.duplicate-modal .modal-heading{color:var(--error)}.duplicate-modal h2{color:var(--error)}.duplicate-modal .modal-heading .lucide{width:32px;height:32px;flex-basis:32px}.duplicate-modal .summary{background:#fff0ee;color:#9d2118;border:1px solid #f3cbc7}.attendance-receipt{background:#e7f6ec;border:1px solid #b9dfc8;border-radius:6px;padding:16px;color:#15663f}.receipt-heading{display:flex;gap:8px;align-items:center;margin-bottom:8px}.receipt-details{display:flex;gap:8px 24px;flex-wrap:wrap;overflow-wrap:anywhere}#modalError{margin:0}.actions{flex-wrap:wrap}.sms-scope{border:0;padding:0;margin:0;min-width:0}.sms-scope legend{font-weight:500;margin-bottom:12px}.scope-options{display:flex;flex-wrap:wrap;gap:14px 24px}.sms-field-selection{max-height:330px;overflow:auto;margin-top:16px;border-block:1px solid var(--line)}.sms-field-group{padding:12px 0;border-bottom:1px solid var(--line);color:var(--text)}.sms-field-group summary{font-weight:500}.sms-field-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px;padding:12px 0}.sms-field-options label{overflow-wrap:anywhere}.scope-options input[type=radio]{accent-color:var(--primary)}
@media(min-width:701px){#personModal.new-registration{width:min(820px,calc(100vw - 40px));padding:22px}#personModal.new-registration #checkinForm{gap:12px}#personModal.new-registration #dynamicFields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}#personModal.new-registration #registrationFieldPicker{grid-column:1/-1;position:relative}#personModal.new-registration .field-menu{position:absolute;bottom:calc(100% - 20px);left:0;right:0;z-index:2;box-shadow:0 8px 24px #0002}#personModal.new-registration .field-options{max-height:120px}#personModal.new-registration input{padding:8px 12px}#personModal.mobile-required{width:min(720px,calc(100vw - 40px))}}
@media(max-width:700px){.sms-field-options{grid-template-columns:1fr}.mobile-required .actions{flex-direction:column}.mobile-required .actions button{width:100%}.receipt-details{display:grid;gap:6px}}
.field-admin-form{display:grid;grid-template-columns:minmax(0,480px) auto;gap:16px;align-items:end;justify-content:start}.field-input-row{display:flex;align-items:center;gap:8px}.field-input-row input{flex:1;min-width:0}.field-input-row button{flex:none}#registrationFieldPicker{display:grid;gap:8px}.field-menu{border:1px solid var(--line);border-radius:6px;background:#fff;overflow:hidden}.field-menu-heading{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line);font-size:14px}.field-add{padding:12px;border-bottom:1px solid var(--line);background:#f3f8f7}.field-add label{margin-bottom:8px;font-size:14px}.field-options{max-height:180px;overflow:auto;overscroll-behavior:contain}.field-option{display:block;width:100%;border:0;border-radius:0;text-align:right;padding:10px 12px;font-weight:400;overflow-wrap:anywhere;line-height:1.6}.field-option:hover,.field-option[aria-selected=true]{background:#e7f7f4;color:var(--text)}.field-empty{padding:12px;margin:0;color:var(--muted);font-size:14px}.field-error{color:var(--error);font-size:14px;margin:0}
@media(max-width:700px){.field-admin-form{grid-template-columns:1fr}}
jdp-container{width:min(340px,calc(100vw - 24px));min-width:0}jdp-container .jdp-days{height:calc(6 * (var(--jdp-day-size) - 7px) + .3rem);align-content:flex-start}
.camera-modal{width:min(810px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:20px}.camera-modal .camera-panel{max-width:none;margin:0}.camera-heading{display:flex;align-items:center;gap:14px;margin-bottom:18px}.camera-heading h2{margin:0;font-size:20px}.camera-heading button{flex:none}.camera-modal .camera-toolbar{gap:16px}.camera-modal .camera-panel p{margin-bottom:0}body:has(dialog[open]){overflow:hidden}
@media(max-width:700px){.camera-modal{padding:14px}.camera-modal .camera-toolbar{grid-template-columns:1fr;gap:10px}.camera-heading{margin-bottom:12px}}
@font-face{font-family:yekanbakh;src:url('brand/YekanBakhMedium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:yekanbakh;src:url('brand/YekanBakhBold.woff2') format('woff2');font-weight:600 800;font-display:swap}
:root{--bg:#fafafa;--panel:#fff;--text:#333;--muted:#767676;--line:#e8e8e8;--primary:#00b5ad;--secondary:#5087c7;--orange:#f7941d;--ok:#15744a;--error:#b42318;--warn:#946200}
*{box-sizing:border-box;letter-spacing:0}body{margin:0;background:var(--bg);color:var(--text);font-family:yekanbakh,Tahoma,sans-serif;font-size:16px;line-height:1.8;min-height:100vh;display:flex;flex-direction:column}
a{color:var(--secondary);text-decoration:none}a:hover{color:var(--orange)}button,input,select,textarea{font:inherit}button,a,input,textarea,select{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--primary)}[hidden],.hidden{display:none!important}
.topbar{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.header-inner{max-width:1200px;margin:auto;min-height:112px;padding:12px 24px;display:grid;grid-template-columns:220px 1fr 220px;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:14px;color:var(--text);font-weight:500}.brand img{width:65px;height:73px;object-fit:contain;flex-shrink:0}.brand span{max-width:122px;font-size:15px;line-height:1.65}.topbar nav{display:flex;justify-content:center;align-items:center;gap:20px;flex-wrap:wrap}.topbar nav a{color:#333;white-space:nowrap;font-weight:500}.topbar nav a:hover,.topbar nav a[aria-current]{color:var(--primary)}.nav-separator{color:#d8d8d8}.account{display:flex;align-items:center;justify-content:flex-end;gap:14px;font-size:14px}.account>span{max-width:100px;overflow-wrap:anywhere;color:var(--muted)}.logout{display:flex;align-items:center;gap:6px;color:#767676}
.container{width:100%;max-width:1200px;margin:32px auto;padding:0 24px;flex:1;min-width:0}.panel,.kiosk{padding:24px 0 32px;margin-bottom:24px;border-bottom:1px solid var(--line);background:transparent}.narrow{max-width:460px;margin:32px auto;background:#fff;border:1px solid var(--line);border-radius:8px;padding:30px}.page-heading{margin:16px 0 24px}h1,h2{margin:0 0 20px;font-weight:700;color:var(--primary);line-height:1.6}h1{font-size:28px}h2{font-size:21px}h2 .lucide{color:var(--primary)}p{margin-top:0}.muted,.field-note{color:var(--muted);font-size:14px;margin:0;line-height:1.9}.stack{display:grid;gap:16px;min-width:0}.grid{display:grid;gap:16px}.form-inline{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end}label{display:grid;gap:8px;font-weight:500;min-width:0}.check{display:flex;align-items:center;gap:10px;font-weight:400}.check input{width:18px;height:18px;flex:0 0 18px;accent-color:var(--primary);padding:0;margin:0}
input,select,textarea{width:100%;min-width:0;border:1px solid #d8d8d8;border-radius:6px;padding:10px 12px;background:#fff;color:var(--text)}input[dir=ltr]{text-align:left}input[type=number]{text-align:center}textarea{resize:vertical;line-height:1.9;text-align:right}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #d8d8d8;border-radius:50px;padding:10px 20px;background:#fff;color:#4d4d4f;cursor:pointer;line-height:1.5;font-weight:500;max-width:100%}button:hover,.button:hover{border-color:var(--orange);color:var(--orange)}.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.primary:hover{background:var(--orange);border-color:var(--orange);color:#fff}.lucide{width:19px;height:19px;flex:0 0 19px;vertical-align:middle;stroke-width:1.8}.icon-button{width:38px;height:38px;padding:0;border-radius:6px}.danger{color:var(--error);border-color:#f2d5d2}.danger:hover{background:#fff0ee;color:var(--error);border-color:var(--error)}.small{padding:8px 14px;font-size:14px;white-space:nowrap}.row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row-actions form{margin:0}.alert{padding:12px 16px;border-radius:6px;margin-bottom:20px;overflow-wrap:anywhere}.alert.error{background:#fee4e2;color:var(--error)}.alert.ok{background:#dcfae6;color:var(--ok)}.alert.warn{background:#fff4cc;color:var(--warn)}.mt{margin-top:18px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:14px;border-bottom:1px solid var(--line);text-align:right;vertical-align:middle}th{background:#f3f5f5;font-size:14px;font-weight:500;color:#555}td[dir=ltr]{text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:#fafdfc}.empty{text-align:center;color:var(--muted);padding:32px}.split{display:flex;align-items:center;justify-content:space-between;gap:20px}.section-heading{margin-bottom:20px}.section-heading h2{margin:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:22px}.stats div{border-inline-start:3px solid var(--primary);background:#fff;padding:16px 20px}.stats div:nth-child(2){border-color:var(--secondary)}.stats div:nth-child(3){border-color:var(--orange)}.stats b{display:block;font-size:30px;line-height:1.5}.stats span{color:var(--muted)}.upload-row{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end}.upload-row input{padding:9px}details{font-size:14px;color:var(--muted)}summary{cursor:pointer}.settings-band{display:grid;grid-template-columns:240px minmax(0,1fr);gap:40px;padding:30px 0;border-top:1px solid var(--line)}.settings-description h2{display:flex;align-items:center;gap:10px;font-size:20px;margin:0 0 16px}.settings-fields{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:16px}.settings-fields input::placeholder{font-size:13px}.badge{display:inline-block;color:var(--muted);background:#eee;padding:3px 12px;border-radius:4px;font-size:13px}.badge.enabled{color:var(--ok);background:#e2f4e9}.variable-toolbar{display:flex;gap:6px;flex-wrap:wrap}.variable-button{padding:3px 10px;border-radius:4px;font-size:13px;color:var(--secondary);background:#f5f8fb;border-color:#e4eaf0}.sms-preview{background:#f1f8f7;border-inline-start:3px solid var(--primary);padding:14px 18px;min-height:90px;overflow-wrap:anywhere}.preview-caption{color:var(--muted);font-size:12px}.sms-preview p{margin:8px 0 0;white-space:pre-wrap}.delay-field{max-width:240px}.input-unit{display:flex;align-items:center;gap:12px}.input-unit input{width:130px}.input-unit span{color:var(--muted);font-size:14px}.settings-save{border-top:1px solid var(--line);padding:24px 0;display:flex;justify-content:flex-end}.test-code{padding:16px;text-align:center;background:#f1f8f7;border-radius:6px;margin-top:16px}.test-code strong{display:block;font-size:30px;font-variant-numeric:tabular-nums}.site-footer{text-align:center;padding:24px;border-top:1px solid var(--line);color:var(--muted);font-size:13px;background:#fff}.site-footer span{margin:0 10px;color:#d8d8d8}
.scan-form{display:grid;grid-template-columns:1fr 130px;gap:16px;margin-top:24px}.scan-form input{font-size:34px;text-align:center;direction:ltr}.status{margin-top:16px;font-weight:500;min-height:29px}.status.ok{color:var(--ok)}.status.error{color:var(--error)}dialog{border:0;border-radius:8px;box-shadow:0 20px 60px #0003;width:min(560px,calc(100vw - 28px));padding:26px;max-height:90vh;overflow:auto}dialog::backdrop{background:#0006}.summary{display:grid;gap:8px;background:#f1f8f7;border-radius:6px;padding:16px;overflow-wrap:anywhere}.actions{display:flex;justify-content:flex-end;gap:10px}.reader{margin-top:16px;max-width:420px;direction:ltr}#dynamicFields{display:grid;gap:14px}
@media(max-width:1000px){.header-inner{grid-template-columns:180px 1fr 150px;gap:12px}.topbar nav{gap:12px}.settings-band{grid-template-columns:200px minmax(0,1fr);gap:24px}.settings-fields{grid-template-columns:1fr 1fr}.settings-fields label:first-child{grid-column:1/-1}}
@media(max-width:700px){.header-inner{grid-template-columns:1fr auto;padding:12px 16px;gap:12px;min-height:0}.brand img{width:46px;height:51px}.brand span{max-width:none;font-size:14px}.topbar nav{grid-column:1/-1;grid-row:2;justify-content:center;border-top:1px solid var(--line);padding-top:12px;gap:12px;font-size:15px}.account{font-size:13px}.account>span{display:none}.container{padding:0 16px;margin:20px auto}.panel,.kiosk{padding:12px 0 24px}.narrow{padding:24px;margin:20px auto}.settings-band{grid-template-columns:1fr;gap:12px;padding:24px 0}.settings-description{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-description h2{margin:0}.settings-fields{grid-template-columns:1fr}.settings-fields label:first-child{grid-column:auto}.check{align-items:flex-start}.check input{margin-top:6px}.settings-save{justify-content:stretch}.settings-save button{width:100%}.split{align-items:flex-start;flex-direction:column}.upload-row{grid-template-columns:1fr}.scan-form{grid-template-columns:1fr}.scan-form input{font-size:28px}.stats{gap:8px}.stats div{padding:12px}.stats b{font-size:24px}h1{font-size:24px}h2{font-size:20px}th,td{padding:10px;white-space:nowrap}.site-footer{font-size:12px;padding:20px 12px}.form-inline{grid-template-columns:1fr}}
