*{box-sizing:border-box}body{margin:0;background:#f5f5ef;color:#203c38;font-family:system-ui,-apple-system,"Noto Sans JP",sans-serif;line-height:1.7}.app{max-width:900px;margin:auto;padding:0 26px}header{display:flex;align-items:center;justify-content:space-between;padding:27px 0;border-bottom:1px solid #dce3db;gap:10px}.brand{font-weight:800;text-decoration:none;color:inherit;letter-spacing:.02em}.brand-icon{background:#12645c;color:#fff;border-radius:10px;padding:6px 10px;margin-right:5px}.local-badge{color:#12645c;font-size:11px;background:#e1eee5;padding:5px 10px;border-radius:20px;white-space:nowrap}.intro{padding:54px 0 26px}.eyebrow{font-size:12px;letter-spacing:.08em;color:#477467;font-weight:700}h1{font-size:clamp(29px,5vw,46px);letter-spacing:-.04em;line-height:1.45;margin:16px 0}h1 span{color:#12645c}.lead{color:#67776e;font-size:14px}h2{font-size:17px;margin:0}.card{background:#fff;border:1px solid #dce4dc;border-radius:20px;box-shadow:0 6px 25px #263f3605}.picker{text-align:center;padding:30px}.file-symbol{margin:0 auto 12px;width:48px;height:48px;color:#12645c;background:#eaf2e9;border-radius:14px;font-size:30px;line-height:48px}.picker p{font-size:13px;color:#66786e;margin:8px 0 20px}button,.file-label{font:inherit;font-size:14px;cursor:pointer;border-radius:11px;padding:13px 20px;min-height:48px;font-weight:700}button{border:0}button:disabled{opacity:.45;cursor:wait}.primary{background:#12645c;color:#fff;border:1px solid #12645c}.primary:hover{background:#0b504a}.file-label{display:flex;justify-content:space-between;align-items:center;max-width:350px;margin:auto}.secondary{background:#fff;border:1px solid #b6cfc3;color:#23594b}.strong{font-weight:700}.fine,.picker .fine{font-size:11px;color:#718079;margin:12px 0 0}.status{font-size:13px;color:#526d5f;padding:18px 4px;min-height:58px;overflow-wrap:anywhere}.status.error{color:#aa3924}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:20px 0 12px}.section-head>span{font-size:11px;color:#758078;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-card{padding:14px}.canvas-wrap{position:relative;max-width:100%;margin:auto;line-height:0;touch-action:none;user-select:none;cursor:crosshair;background:#edf0e9;border-radius:10px;overflow:hidden;width:fit-content}canvas{display:block;max-width:100%;height:auto;max-height:620px;object-fit:contain}#selection{position:absolute;border:2px solid #12645c;background:#37a28e25;pointer-events:none;box-shadow:0 0 0 2000px #102e382e}.preview-tools{display:flex;align-items:center;justify-content:space-between;gap:8px}.preview-tools p{font-size:11px;margin:12px 0;color:#67776e}.text-button{background:transparent;color:#12645c;padding:8px;font-size:12px;text-decoration:underline;text-underline-offset:4px}.actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.full{width:100%;margin-top:8px}.page-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px;font-size:12px}.page-controls button{font-size:11px;padding:8px;min-height:42px}.text-card,.qr-card{padding:22px;margin-bottom:12px}label{display:block;font-weight:700;font-size:14px}label span{font-weight:400;font-size:11px;color:#687a6d;margin-left:8px}textarea{font:16px/1.7 ui-monospace,monospace;resize:vertical;border:1px solid #c9d8cf;border-radius:10px;padding:12px;width:100%;margin-top:12px;color:#263b34;background:#fcfdf9}textarea:focus,button:focus-visible,.file-label:focus-within{outline:3px solid #91c7b4;outline-offset:3px}.text-card>.primary{width:100%;margin-top:14px}.qr-card .value{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.7 ui-monospace,monospace;background:#f2f6ee;border-radius:8px;padding:14px;margin:12px 0}.qr-card a{display:block;text-align:center;text-decoration:none;margin-top:10px;border-radius:10px;padding:12px}.qr-card small{color:#6c7c73}.candidate{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #e2e9df;padding:12px 0}.candidate code{font-size:16px;overflow-wrap:anywhere}.candidate button{padding:6px 12px;font-size:12px;min-height:42px}.candidate-title{font-size:12px;margin-top:22px}.how{padding:45px 0 30px}.how h2{font-size:14px}.steps{display:grid;grid-template-columns:repeat(3,1fr);margin:18px 0 28px;gap:12px}.steps p{display:flex;gap:10px;font-size:12px;align-items:flex-start}.steps b{color:#9aaf9d;font-size:13px}.steps small{color:#7c897e;font-size:10px}details{border-top:1px solid #dce3db;padding:13px 0;font-size:12px}summary{cursor:pointer;color:#526b5b}details p{color:#637868}footer{border-top:1px solid #dce3db;padding:24px 0 30px;font-size:12px;font-weight:700}footer span{display:block;font-size:10px;font-weight:400;color:#7d8b7f;margin-top:5px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}@media(min-width:700px){main{max-width:650px;margin:auto}.intro{padding-top:60px}.picker{padding:36px}.how{padding-top:55px}}@media(max-width:420px){.app{padding:0 18px}.local-badge{font-size:9px;padding:5px 7px}.brand{font-size:14px}.intro{padding-top:32px}h1{font-size:29px}.picker{padding:23px 18px}.actions{grid-template-columns:1fr}.steps{gap:6px}.steps p{gap:5px}.preview-tools p{font-size:10px}.text-card{padding:16px}}

/* Keep the displayed image proportional so touch selection matches pixels. */
canvas{max-height:none}
