:root{font-size:100%;--scan-body:1.125rem;--scan-control:1rem;--scan-meta:.875rem;--scan-ink:#242620;--scan-paper:#f5f3ed;--scan-accent:#963a08;--scan-orange:#ff8b45}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--scan-paper);color:var(--scan-ink);font:var(--scan-body)/1.8 system-ui,"Microsoft YaHei",sans-serif;overflow-wrap:anywhere}
header{background:#1c1c1b;padding:.4rem max(1rem,calc((100vw - 44rem)/2));display:flex;justify-content:space-between;align-items:center;gap:.75rem}header .brand{min-width:0}header img{display:block;width:200px;max-width:100%;height:auto}header a{color:#fff}header .back{flex-shrink:0;gap:.1rem;text-decoration:none;padding:.3rem .25rem}
main{max-width:44rem;margin:auto;padding:1rem 1rem 2rem}.scan-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem;flex-wrap:wrap}h1{font-size:1.5rem;line-height:1.4;margin:0;display:flex;align-items:center;gap:.5rem}h2{font-size:1.5rem;line-height:1.5}p{font-size:var(--scan-body);margin:.75rem 0 1.25rem}.scan-heading p{margin:0;color:#555b51}.eyebrow{font-size:var(--scan-control);font-weight:700;color:#743514}
.scan-icon{display:inline-block;width:1.5rem;height:1.5rem;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
button,input,a,summary,.file-button{font-size:var(--scan-control)}a,button,.file-button,summary{min-height:48px}a{display:inline-flex;align-items:center;color:var(--scan-accent);text-underline-offset:4px}
button,.file-button,#continue-table{border:1px solid #73766e;border-radius:.65rem;padding:.7rem 1rem;background:#fffdf8;color:var(--scan-ink);font-family:inherit;font-weight:650;line-height:1.5;text-align:center;cursor:pointer;justify-content:center;text-decoration:none;display:flex;align-items:center;gap:.5rem}button.primary,a.primary{background:var(--scan-accent);color:#fff;border-color:var(--scan-accent)}button:disabled{cursor:wait;opacity:.65}
.scanner-stage{height:350px;height:clamp(220px,43svh,350px);position:relative;background:#1c1c1b;overflow:hidden;border-radius:1rem;color:#fff}.scan-idle{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:1rem;padding:2rem}.scan-idle .scan-icon{width:3rem;height:3rem;color:var(--scan-orange)}.scan-idle p{margin:0;max-width:18rem}.camera{position:absolute;inset:0;background:#1c1c1b}.camera video{display:block;width:100%;height:100%;object-fit:contain}
.viewfinder{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);height:76%;aspect-ratio:1;max-width:84%;pointer-events:none}.viewfinder i{position:absolute;width:2rem;height:2rem;border:solid var(--scan-orange);border-width:0}.viewfinder i:nth-child(1){top:0;left:0;border-top-width:3px;border-left-width:3px;border-top-left-radius:.6rem}.viewfinder i:nth-child(2){top:0;right:0;border-top-width:3px;border-right-width:3px;border-top-right-radius:.6rem}.viewfinder i:nth-child(3){bottom:0;left:0;border-bottom-width:3px;border-left-width:3px;border-bottom-left-radius:.6rem}.viewfinder i:nth-child(4){bottom:0;right:0;border-bottom-width:3px;border-right-width:3px;border-bottom-right-radius:.6rem}
.actions{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:.6rem;margin:.75rem 0 1rem}.actions>button,.file-button{min-height:52px;padding:.7rem .5rem}.file-button{position:relative;overflow:hidden}.file-button input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.file-button:focus-within,:focus-visible{outline:3px solid #b14b0a;outline-offset:3px}
.roles{padding:0;margin:0 0 .75rem;border:0;display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.roles legend{font-size:var(--scan-control);margin-bottom:.4rem}.roles label{display:flex;gap:.5rem;align-items:center;font-size:var(--scan-control);min-height:48px;border:1px solid #73766e;border-radius:.65rem;padding:.5rem .65rem;background:#fff;cursor:pointer}.roles label:has(:checked){border-color:var(--scan-accent);background:#fff0df;box-shadow:inset 0 0 0 1px var(--scan-accent)}.roles input{width:20px;height:20px;accent-color:var(--scan-accent);flex-shrink:0;margin:0}
#scan-status{margin:.75rem 0 0;padding:.65rem .8rem;background:#fff6e9;border-left:3px solid #b14b0a}#scan-reload{margin-bottom:.5rem}.result{margin:1.5rem 0;padding:1.25rem;border:2px solid var(--scan-accent);border-radius:.8rem;background:#fff}.result h2{margin:.5rem 0}.result #continue-table{display:flex;width:100%;margin:1rem 0}details{border-top:1px solid #b5b7af;padding-top:.5rem}summary{display:flex;align-items:center;cursor:pointer;font-weight:650}summary::before{content:'+';margin-right:.65rem}details[open] summary::before{content:'−'}form{display:grid;gap:.75rem}form label{font-size:var(--scan-control)}form input{width:100%;min-width:0;min-height:48px;padding:.75rem;border:1px solid #73766e;border-radius:.5rem;background:#fff;font-family:inherit}.privacy{color:#555b51}footer{padding:1rem;text-align:center;font-size:var(--scan-meta);border-top:1px solid #b5b7af}
@media(max-width:359px){header img{width:170px}.scan-heading{gap:.25rem}.scan-heading p{flex-basis:100%}.actions{grid-template-columns:1fr}.roles label{padding:.5rem}.scan-idle{padding:1.5rem}}
@media(prefers-reduced-motion:no-preference){button,.file-button,.roles label{transition:background-color .15s,border-color .15s}button:active,.file-button:active{filter:brightness(.94)}}