/* 강아지 임신 기간 계산기 전용 CSS (2026-10-21). 기준 줄(dpg-in) → [예정일 표(dpg-ticket) | 할 일 일정(dpg-plan)] → 임신 지도(dpg-map: 번호 핀·막대·주 차 단추·주 차 칸). 공용 부품은 assets/v2.css.
   accent 는 출산 범위(띠·예정일 핀) 한 곳. 움직임: 막대가 오늘까지 차오르고 오늘 표시가 미끄러진다(600ms cubic-bezier(.22,1,.36,1)), 동작 줄이기면 끔.
   툴 폭 640px 이상이면 표 | 일정 두 열, 그 아래는 표 → 일정 → 지도. */
.dpg-work{container:dpg / inline-size;display:flex;flex-direction:column}
.dpg-in{display:flex;flex-direction:column;gap:12px;padding:14px 18px 16px;border-bottom:1px solid var(--soft)}
.dpg-in-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.dpg-in-title{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink)}
.dpg-in-title .i{width:15px;height:15px;color:var(--accent)}
.dpg-btns{display:flex;flex-wrap:wrap;gap:6px}
/* 기준 4개: 이름 + 더하는 날 두 줄 */
.dpg-by{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
.dpg-by button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;height:auto;min-height:var(--v2-ctl,42px);padding:4px 6px;line-height:1.2;white-space:normal;text-align:center}
.dpg-by b{font-size:13px;font-weight:700}
.dpg-by small{font-family:var(--sans);font-size:11px;font-weight:600;opacity:.75;font-variant-numeric:tabular-nums}
.dpg-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px;align-items:end}
.dpg-fields>[hidden]{display:none}
.dpg-in .v2-f>.v2-label{display:block;margin:0 0 5px}
.dpg-in .v2-f>label.v2-label em{font-style:normal;font-weight:400;margin-left:5px}
.dpg-ctl{display:block;width:100%;min-width:0;height:var(--v2-ctl,42px);margin:0;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);font-family:var(--sans);font-size:15px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;box-sizing:border-box}
select.dpg-ctl{font-size:14px;padding-right:6px}
.dpg-ctl:focus{outline:0;border-color:var(--ink);box-shadow:0 0 0 2px var(--accent-wash)}
.dpg-ctl[aria-invalid="true"],.dpg-in input[aria-invalid="true"]{border-color:var(--accent)}
.v2-f:has(#dpgVal[aria-invalid="true"]) .v2-input{border-color:var(--accent)}
/* 측정값 라벨 줄 끝 단위 글자 단추(입력 상자 안 선택 상자는 좁은 폭에서 잘림) */
.dpg-vl{display:flex !important;align-items:center;justify-content:space-between;gap:8px}
.dpg-unit{display:inline-flex;gap:2px}
.dpg-unit button{min-width:30px;height:20px;padding:0 6px;border:0;border-radius:var(--radius);background:none;font-family:var(--sans);font-size:11.5px;font-weight:700;color:var(--muted)}
.dpg-unit button[aria-pressed="true"]{background:var(--fill);color:var(--on-fill)}
.dpg-unit button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.dpg-help{margin:0;font-family:var(--sans);font-size:12px;line-height:1.55;color:var(--muted)}
.dpg-in[data-by="mate"] .dpg-help{grid-column:1 / -1}
.dpg-in[data-by="ov"] .dpg-help,.dpg-in[data-by="lh"] .dpg-help,.dpg-in[data-by="us"] .dpg-help{align-self:center}
.dpg-opt{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}
.dpg-opt .v2-switch span{line-height:1.45}
/* 예정일 표 | 할 일 일정 */
.dpg-main{display:grid;grid-template-columns:minmax(0,1fr);border-bottom:1px solid var(--soft)}
.dpg-ticket{display:flex;flex-direction:column;gap:10px;padding:16px 18px;min-width:0}
.dpg-big{flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:44px}
.dpg-big small{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--muted)}
.dpg-big em{align-self:center;padding:3px 8px;border:1px solid var(--line);border-radius:999px;font-family:var(--sans);font-size:12.5px;font-style:normal;font-weight:700;letter-spacing:0;color:var(--ink);background:var(--paper)}
.dpg-big.is-over em,.dpg-big.is-window em,.dpg-big.is-due em{border-color:var(--accent);color:var(--accent)}
.dpg-range{margin:-4px 0 0;font-family:var(--sans);font-size:14px;font-weight:700;line-height:1.5;color:var(--ink);font-variant-numeric:tabular-nums}
.dpg-range span{font-weight:500;color:var(--muted);white-space:nowrap}
.dpg-range:empty{display:none}
.dpg-now{margin:0}
.dpg-now:empty{display:none}
.dpg-now.is-alert{color:var(--accent);font-weight:700}
.dpg-rows li{flex-wrap:wrap}
.dpg-rows li b{margin-left:auto;text-align:right;white-space:normal}
.dpg-warn{display:flex;flex-direction:column;gap:6px;margin:0;padding:10px 12px;background:var(--paper);border:1px solid var(--soft);border-radius:var(--radius);font-family:var(--sans);font-size:12.5px;line-height:1.55;color:var(--ink)}
.dpg-warn[hidden]{display:none}
.dpg-caveat{margin:0;font-family:var(--sans);font-size:12px;line-height:1.55;color:var(--muted)}
.dpg-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.dpg-plan{display:flex;flex-direction:column;gap:8px;padding:16px 18px;min-width:0;border-top:1px solid var(--soft)}
.dpg-list{list-style:none;margin:0;padding:0}
.dpg-list li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:2px 10px;align-items:start;padding:8px 0;border-top:1px solid var(--soft)}
.dpg-list li:first-child{border-top:0;padding-top:2px}
.dpg-list .n{display:grid;place-items:center;width:20px;height:20px;margin-top:1px;border:1.5px solid var(--ink);border-radius:50%;font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--ink);background:var(--paper)}
.dpg-list .t b{display:block;font-family:var(--sans);font-size:13.5px;font-weight:700;line-height:1.4;color:var(--ink)}
.dpg-list .t small{display:block;margin-top:1px;font-family:var(--sans);font-size:12px;line-height:1.45;color:var(--muted)}
.dpg-list .d{text-align:right;font-family:var(--sans);font-variant-numeric:tabular-nums}
.dpg-list .d time{display:block;font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap}
.dpg-list .d em{display:block;font-style:normal;font-size:11.5px;color:var(--muted);white-space:nowrap}
.dpg-list li.is-past{opacity:.55}
.dpg-list li.is-past .n{border-color:var(--line);color:var(--muted);background:var(--soft)}
.dpg-list li.is-next .n{background:var(--fill);border-color:var(--fill);color:var(--on-fill)}
.dpg-list li[data-k="due"] .n{background:var(--accent);border-color:var(--accent);color:#fff}
/* 임신 지도 */
.dpg-map{--n:10;display:flex;flex-direction:column;gap:6px;padding:16px 18px 18px;min-width:0}
.dpg-map-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 12px;margin-bottom:4px}
.dpg-map-head .v2-label em{font-style:normal;font-weight:400;margin-left:4px}
.dpg-keys{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0;padding:0;list-style:none;font-family:var(--sans);font-size:11.5px;color:var(--muted)}
.dpg-keys li{display:inline-flex;align-items:center;gap:5px}
.dpg-keys i{display:inline-block;width:14px;height:10px;border-radius:3px}
.dpg-keys .k-fill i{background:color-mix(in srgb, var(--ink) 22%, var(--soft))}
.dpg-keys .k-today i{width:2px;height:12px;border-radius:0;background:var(--ink)}
.dpg-keys .k-win i{background:color-mix(in srgb, var(--accent) 30%, transparent);border:1.5px solid var(--accent)}
.dpg-track{position:relative}
.dpg-track.is-empty{opacity:.35}
.dpg-pins{position:relative;height:var(--ph,52px)}
.dpg-pin{position:absolute;bottom:calc(6px + var(--ln) * 24px);display:grid;place-items:center;width:20px;height:20px;transform:translateX(-50%);border:1.5px solid var(--ink);border-radius:50%;background:var(--paper);font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--ink);transition:transform .15s ease;z-index:1}
.dpg-pin::after{content:"";position:absolute;left:50%;top:100%;width:1px;height:calc(6px + var(--ln) * 24px);margin-left:-.5px;background:var(--line)}
.dpg-pin.is-past{border-color:var(--line);color:var(--muted);background:var(--soft)}
.dpg-pin.is-due{background:var(--accent);border-color:var(--accent);color:#fff}
.dpg-pin.is-hot{transform:translateX(-50%) scale(1.25)}
.dpg-bar{position:relative;height:16px;border-radius:8px;background:var(--soft);background-image:repeating-linear-gradient(90deg,transparent 0 calc(100% / var(--n) - 1px),var(--card) calc(100% / var(--n) - 1px) calc(100% / var(--n)))}
.dpg-bar>i{position:absolute;display:block}
.dpg-wkbg{top:calc(-6px - var(--ph,52px));bottom:-22px;background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:var(--radius);pointer-events:none}
.dpg-fill{top:0;bottom:0;left:0;width:0;border-radius:8px;background:color-mix(in srgb, var(--ink) 22%, var(--soft))}
.dpg-band{top:-2px;bottom:-2px;border:1.5px solid var(--accent);border-radius:6px;background:repeating-linear-gradient(135deg,color-mix(in srgb, var(--accent) 34%, transparent) 0 3px,color-mix(in srgb, var(--accent) 14%, transparent) 3px 6px)}
.dpg-due{top:-5px;bottom:-5px;width:2px;margin-left:-1px;background:var(--accent)}
.dpg-today{top:-7px;bottom:-7px;width:2px;margin-left:-1px;background:var(--ink);z-index:2}
.dpg-today[hidden],.dpg-tl span[hidden]{display:none}
.dpg-tl{position:relative;height:20px}
.dpg-tl span{position:absolute;top:6px;transform:translateX(-50%);font-family:var(--sans);font-size:11px;font-weight:700;line-height:1;color:var(--ink);white-space:nowrap}
.dpg-tl span::before{content:"▲ "}
.dpg-track.is-ready:not(.no-motion) .dpg-fill{transition:width .6s cubic-bezier(.22,1,.36,1)}
.dpg-track.is-ready:not(.no-motion) .dpg-today,.dpg-track.is-ready:not(.no-motion) .dpg-tl span{transition:left .6s cubic-bezier(.22,1,.36,1)}
.dpg-track.is-ready:not(.no-motion) .dpg-wkbg{transition:left .2s ease}
/* 주 차 단추 = 지도 축 */
.dpg-weeks{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:3px}
.dpg-weeks button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;height:38px;padding:0;border:1px solid var(--soft);border-radius:var(--radius);background:var(--paper);font-family:var(--sans);color:var(--ink);line-height:1.1}
.dpg-weeks button b{font-size:13px;font-weight:750;font-variant-numeric:tabular-nums}
.dpg-weeks button small{font-size:10px;font-weight:600;color:var(--muted)}
.dpg-weeks button:hover{background:var(--btn)}
.dpg-weeks button.is-past{color:var(--muted)}
.dpg-weeks button.is-now::after{content:"";position:absolute;left:50%;bottom:3px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--ink)}
.dpg-weeks button[aria-pressed="true"]{background:var(--fill);border-color:var(--fill);color:var(--on-fill)}
.dpg-weeks button[aria-pressed="true"] small{color:var(--on-fill);opacity:.8}
.dpg-weeks button[aria-pressed="true"].is-now::after{background:var(--on-fill)}
.dpg-weeks button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
/* 고른 주 차 */
.dpg-wk{margin-top:8px;padding:12px 14px;background:color-mix(in srgb, var(--wash) 70%, var(--paper));border-radius:var(--radius)}
.dpg-wk:empty{display:none}
.dpg-wk-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:10px}
.dpg-wk-head b{font-family:var(--serif);font-size:16px;font-weight:800}
.dpg-wk-head span{font-family:var(--sans);font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.dpg-wk-head em{padding:1px 7px;border-radius:999px;background:var(--fill);color:var(--on-fill);font-family:var(--sans);font-size:11px;font-style:normal;font-weight:700}
.dpg-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 8px 2px 3px;border:1px solid var(--line);border-radius:999px;background:var(--paper);font-family:var(--sans);font-size:11.5px;font-style:normal;font-weight:650;color:var(--ink)}
.dpg-chip u{display:grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--fill);color:var(--on-fill);font-family:var(--mono);font-size:9.5px;text-decoration:none}
.dpg-wk-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:10px 16px}
.dpg-wk-cols p{margin:3px 0 0;font-size:13.5px;line-height:1.65;color:var(--ink)}
@container dpg (min-width:640px){
  .dpg-main{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}
  .dpg-plan{border-top:0;border-left:1px solid var(--soft)}
}
@container dpg (min-width:560px){.dpg-wk-cols{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container dpg (max-width:420px){
  .dpg-fields{grid-template-columns:minmax(0,1fr)}
  .dpg-help{grid-column:1 / -1}
  .dpg-by b{font-size:12.5px}
  .dpg-big{font-size:40px}
  .dpg-weeks button small{display:none}
  .dpg-weeks{gap:2px}
}
@media (prefers-reduced-motion:reduce){.dpg-fill,.dpg-today,.dpg-tl span,.dpg-wkbg,.dpg-pin{transition:none !important}}
