:root{--ink:#111;--paper:#fffdf5;--accent:#ffd400;--red:#e8452c;--ok:#1a9c4b;--muted:#666}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;font-family:PingFang TC,Microsoft JhengHei,Noto Sans TC,sans-serif;line-height:1.6}main{max-width:480px;margin:0 auto;padding:16px 16px 48px}main.wide{max-width:1000px}h1{margin:8px 0 4px;font-size:22px;font-weight:900}h2{margin:0 0 12px;font-size:18px;font-weight:900}.sub{color:var(--muted);margin:0 0 16px;font-size:14px}.muted{color:var(--muted);font-size:13px}.center{text-align:center}.box{border:3px solid var(--ink);background:#fff;border-radius:14px;margin-bottom:16px;padding:16px}button{font:inherit;border:3px solid var(--ink);background:var(--accent);color:var(--ink);cursor:pointer;border-radius:12px;font-weight:900}button.main{width:100%;box-shadow:0 4px 0 var(--ink);margin-bottom:14px;padding:14px;font-size:18px}button.main:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}button.small{background:#fff;border-width:2px;border-radius:8px;padding:4px 10px;font-size:14px}button:disabled{color:#888;cursor:default;background:#ddd}input[type=text],input[type=password]{font:inherit;border:3px solid var(--ink);border-radius:10px;min-width:0;padding:8px 10px}.msg{border:3px solid var(--ink);border-radius:12px;margin-bottom:16px;padding:12px;font-weight:700}.msg.ok{background:#dff5e6}.msg.err{background:#ffe1db}.progress{margin:0 0 12px;font-size:18px;font-weight:900}.grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.stamp{aspect-ratio:1;border:3px dashed var(--ink);text-align:center;color:#bbb;border-radius:50%;place-items:center;padding:6px;font-size:22px;font-weight:900;display:grid}.stamp.on{background:var(--red);color:#fff;overflow-wrap:anywhere;border-style:solid;font-size:13px;line-height:1.3}.qr{width:100%;max-width:280px;height:auto;margin:8px auto;display:block}.big{text-align:center;margin:8px 0;font-size:28px;font-weight:900}.result{text-align:center;border:4px solid var(--ink);color:#fff;border-radius:16px;margin-bottom:16px;padding:24px 16px}.result.ok{background:var(--ok)}.result.err{background:var(--red)}.result .title{font-size:34px;font-weight:900}.result .detail{font-size:18px;font-weight:700}code{overflow-wrap:anywhere}.stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:16px;display:grid}.stat{border:3px solid var(--ink);background:#fff;border-radius:12px;padding:12px}.stat b{font-size:28px;line-height:1.2;display:block}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;white-space:nowrap;border-bottom:1px solid #ddd;padding:8px 6px}.row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.row input{flex:140px}.row button{padding:8px 16px}.off{color:#999}.cam{aspect-ratio:1;object-fit:cover;border:3px solid var(--ink);background:#000;border-radius:14px;width:100%;margin-bottom:14px;display:block}button.plain{background:#fff}canvas.qr{width:100%!important;height:auto!important}.noSave{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}
