/* 서명 화면 */
.signwrap{padding:clamp(32px,6vw,64px) 0 80px;}
.stage{animation:rise .3s cubic-bezier(.16,1,.3,1);}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.stage{animation:none}}
.stage-h{margin:8px 0 0;font-size:clamp(24px,4.4vw,32px);font-weight:800;letter-spacing:-.035em;line-height:1.3;}
.stage-note{margin:12px 0 24px;font-size:15px;line-height:1.7;color:var(--ink-2);}
.step-tag{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--ink-3);letter-spacing:.06em;}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;align-items:center;}
.err{margin:12px 0 0;font-size:13.5px;font-weight:600;color:var(--danger);}
.err:empty{display:none;}
.stage .btn--block{margin-top:20px;}

/* 요약 */
.sum{background:var(--brand);color:var(--on-brand);border-radius:var(--r-lg);padding:22px;margin-bottom:18px;}
.sum-label{margin:0;font-size:13px;opacity:.82;}
.sum-amt{margin:4px 0 0;font-family:"IBM Plex Mono",monospace;font-size:32px;font-weight:500;letter-spacing:-.03em;}
.sum-amt small{font-size:.56em;margin-left:3px;}
.sum-sub{margin:6px 0 0;font-size:13.5px;opacity:.88;}

/* 조항 */
.clauses{list-style:none;margin:0;padding:0;display:grid;gap:10px;}
.clause{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);transition:border-color .2s,background .2s;}
.clause.is-agreed{border-color:var(--brand);background:var(--brand-soft);}
.clause-body{min-width:0;flex:1;}
.clause-h{margin:0;font-size:12.5px;font-weight:700;color:var(--ink-3);letter-spacing:.02em;}
.clause.is-agreed .clause-h{color:var(--brand-ink);}
.clause-t{margin:3px 0 0;font-size:15px;line-height:1.6;letter-spacing:-.01em;}
.clause.is-agreed .clause-t{color:var(--brand-ink);}
.agree{flex:none;padding:9px 16px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);
  color:var(--ink);font:600 14px/1 inherit;cursor:pointer;}
.agree:hover:not(:disabled){background:var(--surface-2);}
.agree:disabled{background:var(--brand);color:var(--on-brand);border-color:var(--brand);cursor:default;}

/* 사인판 */
.padwrap{position:relative;margin-top:8px;background:var(--surface);border:1.5px dashed var(--line-2);
  border-radius:var(--r-md);overflow:hidden;}
#pad{--pen:var(--ink);display:block;width:100%;height:min(42vw,220px);touch-action:none;cursor:crosshair;}
.pad-line{position:absolute;left:0;right:0;bottom:14px;margin:0;text-align:center;font-size:12.5px;
  color:var(--ink-3);pointer-events:none;}
.pad-hint{font-size:12.5px;color:var(--ink-3);text-align:right;}

/* 완료 */
.done-mark{margin:0 0 18px;}
.done-mark svg{width:56px;height:56px;fill:none;stroke:var(--brand);stroke-width:2.6;
  stroke-linecap:round;stroke-linejoin:round;}
.hashbox{margin:18px 0 0;padding:14px 16px;background:var(--surface-2);border-radius:var(--r-md);
  font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--ink-2);word-break:break-all;}

.linkbox{margin:18px 0 0;padding:14px 16px;background:var(--surface-2);border-radius:var(--r-md);
  display:flex;flex-direction:column;gap:10px;text-align:left;}
.linkbox .stage-note{margin:0;}
.linkbox .input{font-family:"IBM Plex Mono",monospace;font-size:12px;word-break:break-all;}

/* 진위 확인 드롭존 */
.drop{margin:18px 0 0;padding:24px 20px;border:1.5px dashed var(--line-2);border-radius:var(--r-md);
  background:var(--surface);text-align:center;transition:border-color .18s,background .18s;}
.drop.is-over{border-color:var(--brand);background:var(--brand-soft);}
.drop p{margin:0;font-size:14px;color:var(--ink-2);}
.drop .hint{margin-top:6px;}
#out{margin-top:20px;}

/* 보관함 상세 */
.sec-label{margin:26px 0 10px;font-size:13px;font-weight:700;color:var(--ink-2);}
.kv{margin:18px 0 0;padding:0;}
.kv-row{display:flex;justify-content:space-between;gap:16px;padding:12px 2px;border-bottom:1px solid var(--line);}
.kv-row dt{margin:0;font-size:14px;color:var(--ink-2);}
.kv-row dd{margin:0;font-size:14.5px;font-weight:600;text-align:right;
  font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;}

/* 단계 제목은 h1/h2 어느 쪽이든 같은 크기로 보인다.
   화면상 제목이지만 문서 개요에서는 h1 이 하나여야 하기 때문이다. */
h2.stage-h{margin:8px 0 0;font-size:clamp(24px,4.4vw,32px);font-weight:800;
  letter-spacing:-.035em;line-height:1.3;}

/* 갚은 기록 한 줄 — 다투는 중인 것과 확정된 것을 눈으로 구분한다. */
.rp{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-top:10px;
  display:flex;flex-direction:column;gap:6px;}
.rp-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;}
.rp-top span{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700;}
.rp-sub,.rp-note{font-size:13px;color:var(--ink-3);margin:0;}
.rp-note{padding:8px 10px;border-radius:10px;background:var(--warn-soft);color:var(--warn);}
.rp-act{display:flex;gap:8px;margin-top:4px;}
.rp-act .btn{flex:1;}
.tag{font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;
  background:var(--surface-2);color:var(--ink-2);letter-spacing:-.01em;}
.tag--ok{background:var(--brand-soft);color:var(--brand-ink);}
.tag--warn{background:var(--warn-soft);color:var(--warn);}
.muted{color:var(--ink-3);}

/* 서류함 */
.paper-list{display:flex;flex-direction:column;gap:8px;margin-top:4px;}
.paper-item{display:flex;align-items:center;gap:12px;padding:14px 16px;
  border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--ink);
  font-size:15px;font-weight:600;letter-spacing:-.015em;transition:border-color .15s,background .15s;}
.paper-item span{flex:1;}
.paper-item svg{width:18px;height:18px;flex:none;fill:none;stroke:var(--ink-3);
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.paper-item:hover,.paper-item:focus-visible{border-color:var(--brand);background:var(--brand-soft);}

/* 동의 체크 — 결제 전 사전 고지에 쓴다. 눌러야 할 곳이 넓어야 한다. */
.check{display:flex;gap:11px;align-items:flex-start;margin:18px 0 4px;padding:14px 16px;
  border:1px solid var(--line);border-radius:14px;cursor:pointer;
  font-size:13.5px;line-height:1.65;color:var(--ink-2);}
.check input{width:20px;height:20px;flex:none;margin:1px 0 0;accent-color:var(--brand);cursor:pointer;}
.check:has(input:checked){border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink);}
.check:focus-within{outline:2px solid var(--brand);outline-offset:2px;}

/* 조항 원문 — 요약 아래에 접어 둔다. 동의하는 사람이 실제 문장을 볼 수 있어야 한다.
   details/summary 는 브라우저마다 표식 상자를 다르게 잡아 글이 밖으로 밀려 나온다.
   직접 만든 버튼이라 그런 일이 없다. */
.clause-full{margin:8px 0 0;}
.clause-more{appearance:none;background:none;border:0;padding:4px 0;margin:0;
  font:inherit;font-size:12.5px;color:var(--ink-3);cursor:pointer;
  display:flex;align-items:center;gap:5px;width:fit-content;text-align:left;}
.clause-more::before{content:'';width:0;height:0;flex:none;
  border-left:5px solid currentColor;border-top:4px solid transparent;
  border-bottom:4px solid transparent;transition:transform .15s;}
.clause-more[aria-expanded="true"]::before{transform:rotate(90deg);}
.clause-more:hover{color:var(--ink-2);}
.clause-more:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px;}
.clause-legal{margin:6px 0 0;padding:10px 12px;background:var(--surface-2);
  border-radius:10px;font-size:13px;line-height:1.7;color:var(--ink-2);}
