:root{--ink:#251f21;--muted:#585254;--line:#eae9ea;--teal:#3d7969;--soft:#f4efec;--red:#b7192c}*{box-sizing:border-box}body{margin:0;background:white;color:var(--ink);font:16px/1.5 system-ui,-apple-system,sans-serif}main{max-width:850px;margin:auto;padding:24px}header{display:flex;align-items:center;gap:12px;margin-bottom:28px}h1,h2{font-family:Georgia,serif;font-weight:400;letter-spacing:-.025em;line-height:1.2}h1{font-size:32px;margin:0;flex:1;overflow-wrap:anywhere}h2{font-size:25px}button{font:inherit;font-weight:600;min-height:46px;cursor:pointer;border:1px solid var(--ink);border-radius:4px;background:var(--ink);color:white;padding:10px 14px;max-width:100%}button.secondary{background:white;border-color:var(--line);color:var(--ink)}button.plain{border:none;background:none;color:var(--ink);font-size:25px;padding:4px 12px}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus{outline:3px solid var(--teal);outline-offset:2px}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.list{display:grid;gap:12px}.card{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;padding:22px 16px;color:var(--ink);background:white;border:1px solid var(--line);border-radius:8px;gap:12px}.card strong{font-size:18px;overflow-wrap:anywhere}.card small{display:block;color:var(--muted);font-weight:400;margin-top:4px}.chevron{font-size:24px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:18px 0}.stats strong{font-size:28px;display:block}.stats span{font-size:13px;color:var(--muted)}.row{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding:16px 0}.row strong{overflow-wrap:anywhere}.row small{display:block;color:var(--muted)}.tick{font-size:23px}.done .tick{color:var(--teal)}.tag{font-size:12px;background:var(--soft);padding:3px 6px;border-radius:4px}.empty{color:var(--muted);padding:32px 0}#status:empty,#camera-status:empty{display:none}#status{padding:12px 0;font-weight:600;overflow-wrap:anywhere}.error{color:var(--red)}.ok{color:var(--teal)}input:not([type=checkbox]),textarea{width:100%;min-height:48px;border:1px solid #b9b5b7;border-radius:4px;padding:10px;font:inherit;color:var(--ink);background:white}label{display:block;font-weight:600;margin:18px 0 6px}.check{display:flex;align-items:flex-start;gap:10px;min-height:44px}.check input{width:18px;height:18px;margin-top:4px}dialog{border:1px solid var(--line);border-radius:12px;padding:24px;width:min(600px,calc(100% - 24px));max-height:90vh;overflow:auto;color:var(--ink)}dialog::backdrop{background:#0005}#import-preview{max-height:220px;overflow:auto;margin:16px 0;font-family:monospace}.preview-row{padding:6px 0;border-bottom:1px solid var(--line)}.viewfinder{position:relative;background:#111;border-radius:8px;overflow:hidden}#video{width:100%;height:360px;max-height:60vh;object-fit:contain;display:block}.scan-guide{position:absolute;left:8%;right:8%;top:35%;height:30%;border:2px solid #73efb9;border-radius:4px;pointer-events:none}.scan-guide span{position:absolute;top:-28px;left:0;font-size:12px;color:white;background:#111b;padding:2px 5px}#print-area{display:none}.history-item{border-bottom:1px solid var(--line);padding:16px 0}.history-item button{margin-top:8px}.history-item small{display:block;color:var(--muted)}#import-error{color:var(--red)}@media(max-width:360px){main{padding:18px}h1{font-size:28px}.row{grid-template-columns:23px minmax(0,1fr)}.tag{grid-column:2;justify-self:start}}@media print{@page{size:A4;margin:14mm}body>main{display:none!important}#print-area{display:block;font:11pt/1.4 Arial,sans-serif;color:black}#print-area h1{font:22pt Georgia,serif}#print-area table{width:100%;border-collapse:collapse;margin:16px 0}#print-area th,#print-area td{border:1px solid #999;padding:8px;text-align:left;overflow-wrap:anywhere}#print-area tr{break-inside:avoid}#print-area thead{display:table-header-group}.print-note{font-size:9pt;color:#444}}
.demo{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:3px 6px}

header h1{overflow-wrap:normal;word-break:normal;min-width:0}header{flex-wrap:wrap}.demo{flex:none}@media(max-width:400px){header h1{font-size:25px}header{gap:8px}header .plain{padding:4px 6px}#today{padding:8px 10px}}

.scan-feedback{position:absolute;z-index:3;top:12px;left:12px;right:12px;border-radius:6px;padding:14px;color:white;text-align:center;box-shadow:0 2px 18px #0005;pointer-events:none}.scan-feedback[hidden]{display:none}.scan-feedback strong{display:block;font-size:24px}.scan-feedback small{display:block;font-size:14px;overflow-wrap:anywhere}.scan-feedback.success{background:#176745}.scan-feedback.failure{background:#a81829}
#user{font-size:12px;color:var(--muted);flex:none;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#user a{color:var(--muted)}
.spin{color:var(--muted);font-size:13px;font-weight:400}

#user button.plain{font-size:12px;padding:2px 4px;min-height:32px}#login-form{max-width:420px}#login-form input{margin-bottom:12px}#login-form button{min-width:110px}
#user{display:flex;align-items:center;gap:4px}#user>span{overflow:hidden;text-overflow:ellipsis;min-width:0}#user>button,#user>a{flex:none}
