:root{--blue:#123b5d;--light:#f4f7f9;--red:#a62121;--green:#136b3b}*{box-sizing:border-box}body{margin:0;background:var(--light);font:16px system-ui,sans-serif;color:#17212b}header{background:var(--blue);padding:1rem 5%;display:flex;align-items:center;gap:2rem}.brand{color:#fff;font-weight:700;text-decoration:none;font-size:1.2rem}nav{display:flex;gap:1rem;flex-wrap:wrap}nav a{color:#e7f0f7;text-decoration:none}main{max-width:1200px;margin:2rem auto;padding:0 1rem}h1{color:var(--blue)}.card,form{background:white;padding:1.4rem;border-radius:.5rem;box-shadow:0 1px 3px #0002;margin:1rem 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem}.metric{font-size:2rem;font-weight:700;color:var(--blue)}label{display:block;font-weight:600;margin:.7rem 0 .25rem}input,select,textarea,button{font:inherit;padding:.55rem;border:1px solid #aeb9c2;border-radius:.25rem;width:100%}button,.button{background:var(--blue);border:0;color:white;cursor:pointer;padding:.6rem 1rem;text-decoration:none;display:inline-block;width:auto}table{width:100%;border-collapse:collapse;background:white}th,td{padding:.55rem;border-bottom:1px solid #dbe2e8;text-align:left;vertical-align:top}th{background:#e8f0f5}.flash{padding:1rem;border-radius:.35rem;background:#dff3e6;color:var(--green)}.flash.error{background:#fde5e5;color:var(--red)}.actions{display:flex;gap:.5rem;align-items:end;flex-wrap:wrap}.actions>*{width:auto}.subnav{background:#e8f0f5;padding:.8rem 1rem;margin:1rem 0}.subnav a{color:var(--blue);font-weight:700}.tag{display:inline-block;padding:.25rem .55rem;border-radius:999px;font-weight:700;font-size:.82rem}.tag.available{color:#075d32;background:#d8f4e3}.tag.assigned{color:#fff;background:#1769aa}.tag.repair{color:#784600;background:#ffedbd}.print-only{display:none}.person-sheet{background:#fff;border:1px solid #bac6cf;padding:1.6rem;margin:0 0 1.5rem;max-width:780px}.person-sheet h1{background:#123b5d;color:#fff;padding:.8rem 1rem;margin:-1.6rem -1.6rem 1.3rem}.person-sheet dl{display:grid;grid-template-columns:13rem 1fr;gap:0;margin:1.2rem 0;border:1px solid #cbd5dc}.person-sheet dt,.person-sheet dd{padding:.65rem;border-bottom:1px solid #cbd5dc}.person-sheet dt{font-weight:700;background:#e8f0f5}.person-sheet dd{margin:0}.person-sheet .notice{margin-top:2rem;padding-top:1rem;border-top:1px solid #cbd5dc}.camera-scan-button,.ocr-scan-button{margin-top:.45rem;margin-right:.35rem}.ocr-scan-button{background:#1d6b51}.scanner-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:1rem;background:#07131ccc}.scanner-panel{width:min(680px,100%);max-height:calc(100vh - 2rem);overflow:auto;background:#fff;border-radius:.75rem;padding:1rem;box-shadow:0 1rem 3rem #0008}.overlay-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.overlay-heading h2{margin:0;color:var(--blue);font-size:1.25rem}.overlay-close{background:transparent;color:#17212b;font-size:2rem;line-height:1;padding:0;width:2rem}.scanner-panel video{display:block;width:100%;max-height:55vh;margin:1rem 0;border-radius:.45rem;background:#17212b}.scanner-actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap}.ocr-status{min-height:1.5rem;margin:.75rem 0;color:#355063}.ocr-result-label{margin-top:.5rem}.ocr-result{width:100%;resize:vertical;background:#f4f7f9}.ocr-result-actions{margin-top:.6rem}.ocr-hint{margin:.75rem 0;color:#355063}@media print{header,.no-print,.flash{display:none!important}body,main{background:white;margin:0;max-width:none}.print-only{display:block}.person-sheet{border:0;min-height:95vh;max-width:none;break-after:page;page-break-after:always;margin:0;padding:1cm}.person-sheet:last-child{break-after:auto;page-break-after:auto}.person-sheet h1{margin:-1cm -1cm 1.3cm;padding:.8cm 1cm;background:#123b5d!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.person-sheet dt{background:#e8f0f5!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media(max-width:600px){.scanner-panel{padding:.8rem}.scanner-panel video{max-height:48vh}.scanner-actions button{flex:1}.camera-scan-button,.ocr-scan-button{width:100%;margin-right:0}}
