/* ============================================================
   더치페이·차등 정산 계산기 전용 스타일
   - 이 도구의 디자인 컨셉: "정산 영수증 한 장"
     왼쪽에서 금액과 사람을 적어 내면 오른쪽에
     지그재그 절취선이 있는 영수증이 찍혀 나온다.
   - 색상·간격 등 공통 토큰은 common.css 재사용
   ============================================================ */

/* ---- 도입부 (다른 도구와 같은 골격) ---- */
.tool-intro {
  padding: var(--space-6) 0 var(--space-5);
  margin-bottom: var(--space-4);
}
.tool-intro h1 {
  margin: 0 0 var(--space-3);
  max-width: 20ch;
  font-size: clamp(2.1rem, 5vw, 3.1rem);
  line-height: 1.18;
  letter-spacing: -.02em;
}
.lead {
  color: var(--color-text-sub);
  margin: var(--space-2) 0 var(--space-2);
  max-width: 60ch;
  font-size: 1.02rem;
}
.lead-note {
  color: var(--color-text-sub);
  font-size: .85rem;
  opacity: .85;
  margin: 0;
}

/* 이 도구만의 배경 모티프: 장부(원장)의 가로 괘선 */
.ledger-bg { position: relative; overflow: hidden; }
.ledger-bg > * { position: relative; }
.ledger-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(
    var(--color-bg) 0 27px,
    var(--color-grid) 27px 28px);
  opacity: .5;
  -webkit-mask-image: linear-gradient(115deg, rgba(0,0,0,.5), transparent 58%);
          mask-image: linear-gradient(115deg, rgba(0,0,0,.5), transparent 58%);
  pointer-events: none;
}

/* ---- 모드 탭 ---- */
.dp-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-2);
  max-width: 560px;
  margin-bottom: var(--space-5);
}
.dp-tab {
  font: inherit;
  cursor: pointer;
  text-align: left;
  border: 1px solid var(--color-border);
  border-radius: 3px;
  background: var(--color-surface);
  color: var(--color-text-sub);
  padding: var(--space-3) var(--space-4);
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-weight: 700;
  border-bottom-width: 3px;
}
.dp-tab small {
  font-weight: 400;
  font-size: .78rem;
}
.dp-tab[aria-selected="true"] {
  color: var(--color-text);
  border-color: var(--color-primary);
  border-bottom-color: var(--color-primary);
}
.dp-tab[aria-selected="true"] small { color: var(--color-primary); }
.dp-tab:hover { color: var(--color-text); }

/* ---- 입력 | 영수증 2단 ---- */
.dp-grid {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
  gap: var(--space-4);
  align-items: start;
}
@media (max-width: 860px) {
  .dp-grid { grid-template-columns: 1fr; }
}

/* ---- 입력 폼 공통 ---- */
.dp-form { display: flex; flex-direction: column; gap: var(--space-4); }
.dp-field { display: flex; flex-direction: column; gap: var(--space-2); }
.dp-label { font-weight: 700; font-size: .95rem; }
.dp-label small { font-weight: 400; color: var(--color-text-sub); }
.dp-field-note { font-size: .8rem; color: var(--color-text-sub); }

.dp-input-wrap {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  padding: 0 var(--space-3);
}
.dp-input-wrap:focus-within { border-color: var(--color-primary); }
.dp-input-wrap input {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-size: 1.05rem;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--color-text);
  padding: 10px 0;
  font-variant-numeric: tabular-nums;
}
.dp-input-wrap input::-webkit-outer-spin-button,
.dp-input-wrap input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.dp-input-wrap input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
.dp-unit { color: var(--color-text-sub); font-size: .9rem; flex: none; }

/* 세그먼트 버튼 */
.dp-seg {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 2px;
  padding: 3px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: var(--color-bg);
  align-self: flex-start;
}
.dp-seg-btn {
  font: inherit;
  font-size: .88rem;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  border: 0;
  border-radius: 999px;
  padding: 8px 14px;
  background: transparent;
  color: var(--color-text-sub);
  font-variant-numeric: tabular-nums;
}
.dp-seg-btn:not([aria-pressed="true"]):hover { color: var(--color-text); }
.dp-seg-btn[aria-pressed="true"] {
  background: var(--color-primary);
  color: #fff;
  font-weight: 700;
}

.dp-actions { display: flex; gap: var(--space-2); }

/* ============================================================
   영수증
   ============================================================ */
.dp-receipt { min-height: 320px; }

/* 입력 전 대기 화면 */
.dp-idle {
  min-height: 300px;
  border: 2px dashed var(--color-border);
  border-radius: var(--radius);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
}
.dp-idle-mark {
  width: 76px;
  height: 76px;
  border: 2px dashed var(--color-border);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-serif);
  font-size: 1.9rem;
  font-weight: 700;
  color: var(--color-text-sub);
}
.dp-idle-hint {
  margin: 0;
  text-align: center;
  color: var(--color-text-sub);
  font-size: .95rem;
  line-height: 1.7;
}

/* 영수증 종이: 위아래 지그재그 절취선 */
.dp-paper {
  --dp-zig: 9px;
  background: var(--color-surface);
  border-left: 1px solid var(--color-border);
  border-right: 1px solid var(--color-border);
  box-shadow: var(--shadow-sm);
  padding: var(--space-5) var(--space-5) var(--space-4);
  position: relative;
  margin: var(--dp-zig) 0;
}
.dp-paper::before,
.dp-paper::after {
  content: "";
  position: absolute;
  left: 0; right: 0;
  height: var(--dp-zig);
  background: var(--color-surface);
}
.dp-paper::before {
  top: calc(-1 * var(--dp-zig));
  clip-path: polygon(0 100%, 100% 100%, 100% 55%,
    97.5% 0, 95% 55%, 92.5% 0, 90% 55%, 87.5% 0, 85% 55%, 82.5% 0, 80% 55%,
    77.5% 0, 75% 55%, 72.5% 0, 70% 55%, 67.5% 0, 65% 55%, 62.5% 0, 60% 55%,
    57.5% 0, 55% 55%, 52.5% 0, 50% 55%, 47.5% 0, 45% 55%, 42.5% 0, 40% 55%,
    37.5% 0, 35% 55%, 32.5% 0, 30% 55%, 27.5% 0, 25% 55%, 22.5% 0, 20% 55%,
    17.5% 0, 15% 55%, 12.5% 0, 10% 55%, 7.5% 0, 5% 55%, 2.5% 0, 0 55%);
}
.dp-paper::after {
  bottom: calc(-1 * var(--dp-zig));
  clip-path: polygon(0 0, 100% 0, 100% 45%,
    97.5% 100%, 95% 45%, 92.5% 100%, 90% 45%, 87.5% 100%, 85% 45%, 82.5% 100%, 80% 45%,
    77.5% 100%, 75% 45%, 72.5% 100%, 70% 45%, 67.5% 100%, 65% 45%, 62.5% 100%, 60% 45%,
    57.5% 100%, 55% 45%, 52.5% 100%, 50% 45%, 47.5% 100%, 45% 45%, 42.5% 100%, 40% 45%,
    37.5% 100%, 35% 45%, 32.5% 100%, 30% 45%, 27.5% 100%, 25% 45%, 22.5% 100%, 20% 45%,
    17.5% 100%, 15% 45%, 12.5% 100%, 10% 45%, 7.5% 100%, 5% 45%, 2.5% 100%, 0 45%);
}

.dp-paper-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--color-text);
  margin-bottom: var(--space-4);
}
.dp-paper-title {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 1.05rem;
  letter-spacing: .02em;
}
.dp-paper-meta {
  font-size: .82rem;
  color: var(--color-text-sub);
  font-variant-numeric: tabular-nums;
}
.dp-paper-sub {
  font-family: var(--font-serif);
  font-size: .95rem;
  margin: var(--space-4) 0 var(--space-2);
  color: var(--color-text);
}

/* 1인당 큰 숫자 */
.dp-big {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
  flex-wrap: wrap;
}
.dp-big-label {
  font-size: .9rem;
  font-weight: 700;
  color: var(--color-text-sub);
}
.dp-big-num {
  font-family: var(--font-serif);
  font-size: clamp(2.6rem, 7vw, 3.8rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
  color: var(--color-primary);
}
.dp-big-won { font-size: 1.1rem; font-weight: 700; }

/* 영수증 행 (점선 리더 라인) */
.dp-lines { border-top: 1px dashed var(--color-border); }
.dp-line {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  padding: var(--space-2) 0;
  border-bottom: 1px dashed var(--color-border);
  font-size: .95rem;
}
.dp-line-label { flex: none; font-weight: 700; font-size: .88rem; }
.dp-line-fill {
  flex: 1;
  border-bottom: 1px dotted var(--color-border);
  transform: translateY(-4px);
  min-width: 16px;
}
.dp-line-value {
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}
.dp-line-value b { font-size: 1.05rem; }
.dp-line-note {
  flex-basis: 100%;
  margin: 0;
  font-size: .78rem;
  color: var(--color-text-sub);
}
.dp-line.is-em .dp-line-value,
.dp-line.is-em .dp-line-label { color: var(--color-primary); }

/* 송금 내역 */
.dp-transfers { display: flex; flex-direction: column; gap: var(--space-2); }
.dp-transfer {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-primary);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  padding: var(--space-2) var(--space-3);
  font-size: .95rem;
  flex-wrap: wrap;
}
.dp-transfer .arrow { color: var(--color-text-sub); flex: none; }
.dp-transfer .amt {
  margin-left: auto;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.dp-transfer-none {
  margin: 0;
  padding: var(--space-2) 0;
  color: var(--color-text-sub);
  font-size: .9rem;
}

.dp-tip {
  margin: var(--space-3) 0 0;
  font-size: .8rem;
  color: var(--color-text-sub);
}
.dp-paper-actions {
  display: flex;
  gap: var(--space-2);
  margin-top: var(--space-4);
}
.dp-btn-ghost { background: transparent; }

/* ============================================================
   차등 정산 입력부
   ============================================================ */
.dp-diff-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
  flex-wrap: wrap;
  margin-bottom: var(--space-4);
}
.dp-diff-intro {
  margin: 0;
  max-width: 52ch;
  color: var(--color-text-sub);
  font-size: .95rem;
}
.dp-diff-topbtns { display: flex; gap: var(--space-2); flex: none; }

.dp-diff-grid {
  display: grid;
  grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
  gap: var(--space-4);
  align-items: start;
}
@media (max-width: 920px) {
  .dp-diff-grid { grid-template-columns: 1fr; }
}
.dp-diff-inputs { display: flex; flex-direction: column; gap: var(--space-4); }

.dp-block { padding: var(--space-4); }
.dp-block-head {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  padding-bottom: var(--space-2);
  border-bottom: 2px solid var(--color-text);
  margin-bottom: var(--space-3);
}
.dp-block-title {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 1.02rem;
}
.dp-block-count {
  font-size: .75rem;
  font-weight: 700;
  color: var(--color-primary);
  font-variant-numeric: tabular-nums;
}
.dp-block-note {
  margin: var(--space-3) 0 0;
  font-size: .8rem;
  color: var(--color-text-sub);
}

/* 참여자 행 */
.dp-people { display: flex; flex-direction: column; gap: var(--space-2); }
.dp-person {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.dp-person input[type="text"] {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-size: .95rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  color: var(--color-text);
  padding: 8px 10px;
}
.dp-person input[type="text"]:focus { outline: 0; border-color: var(--color-primary); }
.dp-person select,
.dp-item select {
  font: inherit;
  font-size: .88rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  color: var(--color-text);
  padding: 8px 6px;
}
.dp-remove {
  font: inherit;
  flex: none;
  cursor: pointer;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--color-text-sub);
  width: 32px;
  height: 34px;
  line-height: 1;
}
.dp-remove:hover { color: var(--color-primary); border-color: var(--color-primary); }

.dp-add-row {
  display: flex;
  gap: var(--space-2);
  margin-top: var(--space-3);
}
.dp-add-row input {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-size: .95rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  color: var(--color-text);
  padding: 8px 10px;
}
.dp-add-row input:focus { outline: 0; border-color: var(--color-primary); }

/* 지출 항목 카드 */
.dp-items { display: flex; flex-direction: column; gap: var(--space-3); }
.dp-item {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  padding: var(--space-3);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.dp-item-row {
  display: flex;
  gap: var(--space-2);
  align-items: center;
  flex-wrap: wrap;
}
.dp-item-row input[type="text"] {
  flex: 1 1 110px;
  min-width: 0;
  font: inherit;
  font-size: .95rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  padding: 8px 10px;
}
.dp-item-amount {
  flex: 1 1 110px;
  display: flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  padding: 0 10px;
}
.dp-item-amount input {
  flex: 1;
  min-width: 0;
  width: 90px;
  font: inherit;
  font-size: .95rem;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--color-text);
  padding: 8px 0;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.dp-item-amount span { color: var(--color-text-sub); font-size: .85rem; }
.dp-item-row input:focus, .dp-item-amount:focus-within { border-color: var(--color-primary); }
.dp-item-row label.payer {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .82rem;
  color: var(--color-text-sub);
  white-space: nowrap;
}

/* 항목별 참여자 체크 칩 */
.dp-members {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.dp-members-label {
  font-size: .78rem;
  color: var(--color-text-sub);
  margin-right: 2px;
}
.dp-chip {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  user-select: none;
}
.dp-chip input { position: absolute; opacity: 0; pointer-events: none; }
.dp-chip span {
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: var(--color-surface);
  color: var(--color-text-sub);
  font-size: .84rem;
  padding: 4px 12px;
  line-height: 1.4;
}
.dp-chip input:checked + span {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
  font-weight: 700;
}
.dp-chip input:focus-visible + span { outline: 2px solid var(--color-primary); outline-offset: 1px; }

/* ---- 본문 표 ---- */
.dp-table-wrap { overflow-x: auto; }
.dp-table {
  border-collapse: collapse;
  width: 100%;
  font-size: .92rem;
  margin: var(--space-3) 0;
}
.dp-table th, .dp-table td {
  border: 1px solid var(--color-border);
  padding: 8px 12px;
  text-align: left;
  vertical-align: top;
}
.dp-table th { background: var(--color-bg); font-size: .85rem; }

/* ---- 본문 프로즈(다른 도구와 같은 골격) ---- */
.prose { max-width: 760px; margin: var(--space-6) auto 0; }
.prose h2 { margin: 0 0 var(--space-3); }
.prose h3 { margin: var(--space-5) 0 var(--space-2); font-size: 1.1rem; }
.prose p, .prose li { color: var(--color-text); font-size: .95rem; line-height: 1.8; }
.prose ol, .prose ul { padding-left: 1.3em; }
.prose li { margin-bottom: var(--space-2); }
.prose details {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  padding: var(--space-3) var(--space-4);
  margin-bottom: var(--space-2);
}
.prose summary { cursor: pointer; font-weight: 700; font-size: .95rem; }
.prose details p { margin: var(--space-3) 0 var(--space-1); }
