/* 旅行持ち物チェックリスト専用スタイル。本文幅のまま縦に積む(2カラムにしない)。 */
.pt-tp-h2 { margin: 0 0 0.6rem; font-size: 1.15rem; }
.pt-tp-form, .pt-tp-result, .pt-tp-remind, .pt-tp-airline {
    background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 0.8rem; padding: 1rem; margin: 1rem 0;
}
.pt-tp-result { background: #f0fdf4; border-color: #bbf7d0; scroll-margin-top: 6.5rem; }
.pt-tp-airline { background: #eff6ff; border-color: #bfdbfe; }

.pt-tp-group { border: 0; padding: 0; margin: 0 0 0.7rem; min-width: 0; }
.pt-tp-legend { display: block; padding: 0; margin: 0 0 0.25rem; font-size: 0.82rem; font-weight: 700; color: #334155; }
.pt-tp-select { width: 100%; max-width: 16rem; box-sizing: border-box; padding: 0.45rem; border: 1px solid #cbd5e1; border-radius: 0.4rem; font-size: 1rem; background: #fff; }
.pt-tp-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.pt-tp-chip { position: relative; cursor: pointer; }
.pt-tp-chip input { position: absolute; opacity: 0; pointer-events: none; }
.pt-tp-chip span { display: inline-block; padding: 0.35rem 0.85rem; border: 1px solid #cbd5e1; border-radius: 999px; background: #fff; color: #334155; font-size: 0.9rem; }
.pt-tp-chip input:checked + span { background: #16a34a; border-color: #16a34a; color: #fff; }
.pt-tp-chip input:focus-visible + span { outline: 2px solid #1d4ed8; outline-offset: 2px; }
.pt-tp-btn { border: 1px solid #86efac; background: #fff; color: #166534; border-radius: 0.4rem; padding: 0.4rem 0.8rem; font-size: 0.85rem; cursor: pointer; }
.pt-tp-btn--main { background: #16a34a; color: #fff; border-color: #16a34a; }
.pt-tp-submit { margin-top: 0.3rem; }
.pt-tp.is-js .pt-tp-submit { display: none; }  /* JSが動くときは、選ぶたびに自動で作り直す */

.pt-tp-summary { font-size: 0.9rem; color: #475569; margin: 0 0 0.3rem; }
.pt-tp-qtytext { font-weight: 700; margin: 0 0 0.6rem; }
.pt-tp-rules { background: #fff; border: 1px dashed #86efac; border-radius: 0.5rem; padding: 0.4rem 0.8rem; margin: 0.4rem 0 0.8rem; }
.pt-tp-rules summary { cursor: pointer; font-weight: 700; font-size: 0.9rem; }

.pt-tp-progress { display: flex; align-items: center; gap: 0.6rem; margin: 0.6rem 0; }
.pt-tp-bar { flex: 1; height: 0.7rem; background: #e2e8f0; border-radius: 999px; overflow: hidden; }
.pt-tp-bar__fill { height: 100%; width: 0; background: #16a34a; transition: width 0.2s; }
.pt-tp-bar__text { font-size: 0.85rem; white-space: nowrap; }
.pt-tp-tools { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0 0 0.5rem; }
.pt-tp-msg { margin: 0.3rem 0; font-size: 0.85rem; color: #166534; font-weight: 700; }
.pt-tp-msg[hidden] { display: none; }

.pt-tp-cat { margin: 0 0 0.9rem; }
.pt-tp-cat__title { margin: 0.6rem 0 0.3rem; font-size: 1rem; color: #166534; border-bottom: 2px solid #bbf7d0; padding-bottom: 0.15rem; }
.pt-tp-items { list-style: none; margin: 0; padding: 0; }
.pt-tp-item { background: #fff; border: 1px solid #e2e8f0; border-radius: 0.5rem; padding: 0.4rem 0.6rem; margin: 0 0 0.3rem; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 0.5rem; }
.pt-tp-check { display: inline-flex; align-items: baseline; gap: 0.45rem; cursor: pointer; flex: 1 1 60%; min-width: 0; }
.pt-tp-check input { width: 1.15rem; height: 1.15rem; flex: none; align-self: center; }
.pt-tp-check input:checked + .pt-tp-label { text-decoration: line-through; color: #94a3b8; }
.pt-tp-qty { font-weight: 700; color: #166534; white-space: nowrap; }
.pt-tp-tags { display: inline-flex; flex-wrap: wrap; gap: 0.3rem; }
.pt-tp-tag { font-size: 0.72rem; background: #fef3c7; color: #92400e; border-radius: 999px; padding: 0.05rem 0.5rem; }
.pt-tp-tag--soft { background: #e2e8f0; color: #475569; }
.pt-tp-note { flex: 1 1 100%; color: #64748b; font-size: 0.78rem; }
.pt-tp-item.is-provided { background: #f1f5f9; }
.pt-tp-item.is-provided .pt-tp-label { color: #94a3b8; }
.pt-tp-itemtools { display: inline-flex; gap: 0.25rem; margin-left: auto; }
.pt-tp-mini { border: 1px solid #e2e8f0; background: #fff; color: #64748b; border-radius: 0.3rem; font-size: 0.72rem; padding: 0.1rem 0.4rem; cursor: pointer; }
.pt-tp-memo { flex: 1 1 100%; box-sizing: border-box; padding: 0.3rem; border: 1px solid #cbd5e1; border-radius: 0.3rem; font-size: 0.85rem; }
.pt-tp-memo[hidden] { display: none; }
.pt-tp:not(.is-js) .pt-tp-itemtools, .pt-tp:not(.is-js) .pt-tp-tools, .pt-tp:not(.is-js) .pt-tp-add, .pt-tp:not(.is-js) .pt-tp-progress { display: none; }

.pt-tp-add { display: flex; gap: 0.4rem; margin: 0.6rem 0; }
.pt-tp-input { flex: 1; min-width: 0; box-sizing: border-box; padding: 0.45rem; border: 1px solid #cbd5e1; border-radius: 0.4rem; font-size: 1rem; }
.pt-tp-links { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0.5rem 0 1rem; }
.pt-tp-sources { font-size: 0.85rem; color: #475569; }
.pt-tp-body h2 { margin-top: 1.4rem; }

/* 印刷用(A4)。リスト部分だけを、2段組みで出す */
.pt-tp-printhead, .pt-tp-remind-print { display: none; }
@media print {
    @page { size: A4; margin: 12mm; }
    body * { visibility: hidden; }
    .pt-tp-printable, .pt-tp-printable * { visibility: visible; }
    .pt-tp-printable { position: absolute; left: 0; top: 0; width: 100%; }
    .pt-tp-printhead { display: block; font-weight: 700; font-size: 12pt; margin: 0 0 6pt; }
    .pt-tp-list { column-count: 2; column-gap: 12mm; font-size: 10pt; }
    .pt-tp-cat { break-inside: avoid; }
    .pt-tp-item { border: 0; border-bottom: 0.5pt solid #cbd5e1; border-radius: 0; background: #fff !important; padding: 2pt 0; }
    .pt-tp-itemtools, .pt-tp-memo { display: none !important; }
    .pt-tp-remind-print { display: block; margin-top: 8pt; font-size: 10pt; }
    .pt-tp-remind-print__title { font-weight: 700; margin: 4pt 0 2pt; }
    .pt-tp-remind-print__list { list-style: none; margin: 0; padding: 0; }
}
