.stage{position:relative;line-height:0;border-radius:var(--radius-sm);overflow:hidden;background:repeating-conic-gradient(var(--surface-2) 0 25%,var(--surface) 0 50%) 0 0/20px 20px}
.stage canvas{display:block;width:100%;height:auto}
.boxes{position:absolute;inset:0}
.rbox{position:absolute;background:rgba(0,0,0,.88);border:2px solid transparent;cursor:move;touch-action:none}
.rbox.sel{border-color:var(--accent)}
.rbox .h{position:absolute;right:-12px;bottom:-12px;width:28px;height:28px;border-radius:50%;background:var(--accent);border:3px solid #fff;cursor:nwse-resize;touch-action:none;display:none}
.rbox.sel .h{display:block}
.stage-tools{margin-top:12px}
.sig-wrap{position:relative;border:1.5px dashed var(--line);border-radius:var(--radius-sm);background:#fff;height:150px}
.sig{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair;border-radius:var(--radius-sm)}
.sig-ph{position:absolute;inset:0;display:grid;place-items:center;color:#9a9a9a;font-size:15px;pointer-events:none}
.check-line{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-top:8px;cursor:pointer}
.check-line input{width:18px;height:18px;accent-color:var(--brand)}
.printarea{display:none}
@page{size:A4;margin:15mm}
@media print{
  body>*:not(.printarea){display:none !important}
  .printarea{display:block !important}
  .printarea img{display:block;margin:0 auto;max-width:100%;max-height:250mm}
  .printarea.card-size img{width:86mm;max-width:86mm}
}

.tip{margin-top:10px}
.m0{margin:0}
.mt8{margin-top:8px}
.mt10{margin:10px 0 0}
.c-blue{background:#1d3fbf}.c-black{background:#111}.c-red{background:#c0262d}
.narrow-col{max-width:760px}
