.attendance-shell{display:grid;gap:1rem}.attendance-heading{display:flex;justify-content:space-between;gap:1rem;align-items:start}.attendance-heading h2{margin:.2rem 0}.attendance-lead{max-width:65ch;margin:.25rem 0;color:#52625c}.attendance-step{padding:1rem;border:1px solid #d6e4df;border-radius:12px;background:#f8faf9}.attendance-step h3{margin:.1rem 0 .3rem}.attendance-step>p{margin:.2rem 0 .8rem;color:#52625c}.attendance-controls{display:grid!important;grid-template-columns:1fr!important;gap:.85rem!important;margin:.75rem 0!important;padding:0!important;border:0!important;background:transparent!important}.attendance-context{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.attendance-actions{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center}.attendance-actions button{min-width:10rem}.attendance-result-list{display:grid;gap:.5rem}.attendance-result{display:grid;width:100%;gap:.15rem;padding:.8rem 1rem;text-align:left;border-color:#c8d9d1;background:#fff;color:#183b32}.attendance-result:hover{background:#edf5f2}.attendance-card{display:grid;grid-template-columns:minmax(8rem,.35fr) 1fr;gap:.5rem .9rem;padding:1rem;border:1px solid #c8d9d1;border-radius:12px;background:#fff}.attendance-card>div{display:contents}.attendance-card strong{color:#435c53}.attendance-card span{overflow-wrap:anywhere}.attendance-message{min-height:1.5rem;padding:.7rem .85rem;border-radius:9px;background:#eef4f2;color:#234b40}.attendance-message[data-kind=warning]{background:#fff7df;color:#704d00}.attendance-message[data-kind=error]{background:#fff0ee;color:#8f231f}.attendance-message[data-kind=success]{background:#e8f7ef;color:#17633f}.attendance-warning{padding:.75rem;border-left:4px solid #c78000;background:#fff7df}.attendance-eligibility{font-weight:700}.attendance-eligibility[data-eligible=true]{color:#17633f}.attendance-eligibility[data-eligible=false]{color:#8f231f}.attendance-ticket{padding:1.2rem;border:2px dashed #79342b;border-radius:12px;background:#fff}.attendance-ticket h3{margin:.2rem 0}.attendance-ticket-code{font-size:1.8rem;font-weight:900;letter-spacing:.08em}.attendance-ticket code{display:block;overflow-wrap:anywhere;padding:.65rem;border-radius:8px;background:#f1f3f2}.attendance-output{font-weight:700;color:#704d00}.attendance-history{display:grid;gap:.35rem;margin:.6rem 0;padding-left:1.25rem}.attendance-camera{width:min(100%,34rem);max-height:22rem;border-radius:12px;background:#111}.attendance-help{padding:.8rem;border-radius:9px;background:#eef4f2}.attendance-help summary{cursor:pointer;font-weight:800}@media(max-width:760px){.attendance-heading{display:grid}.attendance-context{grid-template-columns:1fr}.attendance-card{grid-template-columns:1fr}.attendance-card>div{display:grid;gap:.15rem}.attendance-actions{display:grid}.attendance-actions button{width:100%}}
.attendance-qr{display:grid;justify-items:center;gap:.5rem;margin:1rem 0;padding:1rem;border-radius:12px;background:#fff}.attendance-qr svg{display:block;width:min(100%,18rem);height:auto}.attendance-qr figcaption{font-weight:700;text-align:center}.attendance-qr-raw{margin:.75rem 0}.attendance-qr-raw summary{cursor:pointer;font-weight:700}.attendance-history li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}.attendance-history button{min-height:2.25rem;padding:.35rem .65rem}button:disabled{cursor:not-allowed;opacity:.62}
.attendance-document-scan{display:grid;gap:.55rem;margin:.65rem 0}.attendance-scan-help{margin:0;color:#52625c;font-size:.9rem}
.attendance-print-controls{display:grid;gap:.65rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #d6e4df}.attendance-print-controls h4,.attendance-print-controls p{margin:0}.attendance-print-controls ol{display:grid;gap:.35rem;padding-left:1.25rem}.attendance-copy-label{width:max-content;margin:0 0 .35rem;padding:.2rem .55rem;border:2px solid currentColor;font-weight:900;letter-spacing:.08em}
@media print{html,body{min-height:0!important;background:#fff!important}body.printing-ticket main{width:auto!important;margin:0!important;padding:0!important}body.printing-ticket main>:not(#workspace),body.printing-ticket .workspace-sidebar,body.printing-ticket:not(.printing-offline-ticket) #module-content>:not(#attendance),body.printing-ticket #attendance>:not(#attendance-ticket){display:none!important}body.printing-ticket #workspace,body.printing-ticket #module-content,body.printing-ticket #attendance{display:block!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;background:#fff!important}body.printing-ticket #attendance-ticket{display:block!important;width:80mm!important;max-width:100%!important;margin:0!important;padding:4mm!important;border:0!important;border-radius:0!important;color:#000!important;background:#fff!important;break-inside:avoid-page!important;page-break-inside:avoid!important}body.printing-ticket .attendance-actions,body.printing-ticket details,body.printing-ticket .attendance-print-controls{display:none!important}body.printing-ticket .attendance-qr{margin:2mm 0!important;padding:0!important}body.printing-ticket .attendance-qr svg{width:min(100%,44mm)}}
@page{margin:4mm}

@media print { body.printing-offline-ticket #module-content > :not(#offline) {display:none!important} body.printing-offline-ticket #offline, body.printing-offline-ticket #offline > details[data-offline-section="attendance"] {display:block!important;margin:0!important;padding:0!important;border:0!important} body.printing-offline-ticket #offline > :not(details[data-offline-section="attendance"]), body.printing-offline-ticket #offline > details[data-offline-section="attendance"] > :not(#offline-issued-ticket) {display:none!important} body.printing-offline-ticket #offline-issued-ticket {display:block!important;width:80mm!important;max-width:100%!important;box-sizing:border-box!important;padding:4mm!important;margin:0!important;border:0!important;break-inside:avoid!important;color:#000!important;background:#fff!important} body.printing-offline-ticket #offline-issued-ticket .attendance-output {display:none!important} }

/* Camera state remains readable after a touch, with a separate keyboard focus ring. */
#attendance-document-camera-toggle,#offline-document-camera-toggle{min-height:48px;border:1px solid #79342b;border-radius:10px;background:#fff;color:#79342b;box-shadow:none;transition:background-color .15s,color .15s,border-color .15s;-webkit-tap-highlight-color:transparent}
#attendance-document-camera-toggle[aria-pressed="true"],#offline-document-camera-toggle[aria-pressed="true"]{background:#79342b;color:#fff;border-color:#79342b}
#attendance-document-camera-toggle:active,#offline-document-camera-toggle:active{background:#63291f;color:#fff;border-color:#63291f}
#attendance-document-camera-toggle:focus:not(:focus-visible),#offline-document-camera-toggle:focus:not(:focus-visible){outline:none}
#attendance-document-camera-toggle:focus-visible,#offline-document-camera-toggle:focus-visible{outline:3px solid #c68a64;outline-offset:3px}
@media(prefers-reduced-motion:reduce){#attendance-document-camera-toggle,#offline-document-camera-toggle{transition:none}}
