/* 玩伴預約 前台:表單 + 報名 */

/* 表單 */
.pp-form-wrap { max-width: 640px; margin: 0 auto; }
.pp-form-desc { color: #666; margin-bottom: 18px; }
.pp-form-ok { background: #e7f6ec; color: #1a7f3c; padding: 12px 14px; border-radius: 8px; margin-bottom: 18px; }
.pp-form-err { background: #fdecec; color: #b32020; padding: 12px 14px; border-radius: 8px; margin-bottom: 18px; }
.pp-form-field { margin-bottom: 16px; }
.pp-form-label { display: block; font-weight: 600; margin-bottom: 6px; }
.pp-req { color: #e5533d; }
.pp-form-field input[type=text], .pp-form-field input[type=email], .pp-form-field input[type=tel], .pp-form-field input[type=date], .pp-form-field textarea, .pp-form-field select { width: 100%; padding: 10px 12px; border: 1px solid #ddd; border-radius: 8px; font-size: .97em; }
.pp-form-field textarea { min-height: 90px; }
.pp-form-choices { display: flex; flex-direction: column; gap: 6px; }
.pp-form-choice { font-weight: 400; display: flex; align-items: center; gap: 7px; }
.pp-form-agree { display: flex; align-items: flex-start; gap: 8px; font-weight: 400; background: #fafafa; padding: 10px 12px; border-radius: 8px; }
.pp-form-submit { border: 0; background: #ff8a3d; color: #fff; padding: 12px 26px; border-radius: 10px; font-size: 1.02em; cursor: pointer; }
.pp-form-submit:hover { opacity: .9; }
.pp-form-note { background: #fafafa; border: 1px solid #eee; border-radius: 8px; padding: 14px 16px; margin-bottom: 16px; }
.pp-form-note-title { font-weight: 700; margin-bottom: 8px; }
.pp-form-note-body { color: #555; font-size: .92em; line-height: 1.7; max-height: 320px; overflow-y: auto; white-space: pre-wrap; }
.pp-form-image { margin-bottom: 16px; }
.pp-form-image img { max-width: 100%; height: auto; border-radius: 8px; }
.pp-form-hint { display: block; color: #999; font-size: .82em; margin-top: 4px; }

/* 報名 */
.pp-book-wrap { max-width: 720px; }
.pp-book-credit { background: #fff7f0; border: 1px solid #ffd9b8; border-radius: 10px; padding: 14px 16px; font-size: 1.05em; margin-bottom: 18px; }
.pp-book-credit strong { color: #e5731f; font-size: 1.15em; }
.pp-book-h { margin: 22px 0 10px; font-size: 1.15em; border-bottom: 2px solid #ff8a3d; display: inline-block; padding-bottom: 4px; }
.pp-book-note { color: #888; }
.pp-book-msg { padding: 11px 14px; border-radius: 8px; margin-bottom: 16px; }
.pp-book-ok { background: #e7f6ec; color: #1a7f3c; }
.pp-book-err { background: #fdecec; color: #b32020; }
.pp-book-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.pp-book-item { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: #fff; border: 1px solid #eee; border-radius: 10px; padding: 12px 14px; }
.pp-book-date { font-weight: 700; min-width: 150px; }
.pp-book-left { color: #1a7f3c; font-size: .92em; }
.pp-book-pet { color: #666; font-size: .92em; }
.pp-book-inline { display: inline; margin: 0; }
.pp-book-btn { border: 0; background: #ff8a3d; color: #fff; padding: 8px 16px; border-radius: 8px; cursor: pointer; }
.pp-book-btn:hover { opacity: .9; }
.pp-book-cancel { border: 1px solid #e6b8b9; background: #fff; color: #d63638; padding: 6px 14px; border-radius: 8px; cursor: pointer; }
.pp-book-pet-sel { padding: 7px 10px; border: 1px solid #ddd; border-radius: 8px; margin-right: 6px; }
.pp-book-done { color: #999; font-size: .9em; }
.pp-book-avail { border-left: 3px solid #ff8a3d; }

@media (max-width: 560px) {
	.pp-book-item { flex-direction: column; align-items: flex-start; }
}

/* 專業師資 */
.pp-teacher-grid { display:grid; gap:24px; grid-template-columns:repeat(3,1fr); }
.pp-teacher-card { background:#fff; border-radius:12px; overflow:hidden; }
.pp-teacher-imgwrap { width:100%; aspect-ratio:1/1; overflow:hidden; }
.pp-teacher-img { width:100%; height:100%; object-fit:cover; display:block; }
.pp-teacher-name { margin:14px 16px 6px; font-size:1.2em; line-height:1.3; }
.pp-teacher-intro { margin:0 16px 16px; color:#666; line-height:1.7; }
@media (max-width:1024px){ .pp-teacher-grid{ grid-template-columns:repeat(2,1fr);} }
@media (max-width:600px){ .pp-teacher-grid{ grid-template-columns:repeat(1,1fr);} }

/* 到府照護 商品欄位 */
.pp-hc-fields { margin: 10px 0 18px; padding: 14px 16px; background: #fafafa; border: 1px solid #eee; border-radius: 10px; max-width: 420px; }
.pp-hc-row { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; }
.pp-hc-row label { min-width: 74px; font-weight: 600; }
.pp-hc-row input { flex: 1; padding: 8px 10px; border: 1px solid #ddd; border-radius: 8px; }
.pp-hc-summary { margin: 6px 0 0; font-weight: 700; color: #e5731f; }

/* 商品購買元件:自成一區,避免影響外部版面 */
.pp-buy { display: flow-root; }
.pp-buy form.cart { margin-bottom: 0; }
.pp-buy .quantity { margin-right: 8px; }

/* 商品購買:款式下拉修正 + 單選按鈕樣式 */
.pp-buy .variations select { min-width: 160px; width: auto; max-width: 100%; padding: 8px 10px; }
.pp-buy .variations td, .pp-buy .variations th { padding: 4px 0; }
.pp-var-radios { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.pp-var-radio { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #ddd; border-radius: 8px; padding: 8px 14px; cursor: pointer; font-weight: 500; }
.pp-var-radio.is-active { border-color: #ff8a3d; background: #fff7f0; color: #e5731f; }
.pp-var-radio input { margin: 0; }

/* 報名月曆 */
.pp-cal { max-width: 560px; }
.pp-cal-petpick { margin-bottom: 12px; }
.pp-cal-petpick label { font-weight: 600; margin-right: 6px; }
.pp-cal-petpick select { padding: 6px 10px; border: 1px solid #ddd; border-radius: 8px; }
.pp-cal-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.pp-cal-title { font-weight: 700; font-size: 1.1em; }
.pp-cal-navbtn { color: #e5731f; text-decoration: none; font-size: .95em; }
.pp-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.pp-cal-wd { text-align: center; font-size: .82em; color: #999; padding: 4px 0; }
.pp-cal-cell, .pp-cal-form { position: relative; border-radius: 10px; min-height: 58px; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: .9em; margin: 0; padding: 0; border: 1px solid transparent; box-sizing: border-box; }
.pp-cal-day { font-weight: 700; line-height: 1.1; }
.pp-cal-tag { font-size: .72em; margin-top: 1px; }
.pp-cal-empty { background: transparent; border: 0; }
.pp-cal-noevent { background: #f7f7f7; color: #c4c4c4; }
.pp-cal-full { background: #ececec; color: #a6a6a6; }
.pp-cal-booked { background: #e7f6ec; color: #1a7f3c; }
.pp-cal-avail { background: #fff2e6; color: #e5731f; border-color: #ffd9b8; }
.pp-cal-avail:hover { background: #ffe4cc; }
.pp-cal-disabled { opacity: .55; }
.pp-cal-form { padding: 0; cursor: pointer; }
.pp-cal-cellbtn { all: unset; cursor: pointer; width: 100%; height: 100%; min-height: 58px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; color: inherit; box-sizing: border-box; }
.pp-cal-go { font-size: .7em; background: #ff8a3d; color: #fff; border-radius: 10px; padding: 1px 8px; margin-top: 2px; }
.pp-cal-legend { margin-top: 12px; font-size: .82em; color: #777; }
.pp-cal-lg { display: inline-block; width: 14px; height: 14px; border-radius: 4px; vertical-align: middle; min-height: 0 !important; }
.pp-cal-legend .pp-cal-avail { background: #fff2e6; border: 1px solid #ffd9b8; }
.pp-cal-legend .pp-cal-full { background: #ececec; }
.pp-cal-legend .pp-cal-booked { background: #e7f6ec; }


/* ===== 寵物護照必填表單（1.12.0） ===== */
.pp-petform-bar{border:1px solid #d9e4d2;background:#f4f8f0;border-radius:14px;padding:16px 18px;margin:0 0 18px}
.pp-petform-head{font-weight:700;font-size:1.02em;margin-bottom:8px}
.pp-petform-steps{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}
.pp-petform-step{font-size:.92em;color:#5a6d5e;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pp-petform-step.pp-now{color:#1f2a20;font-weight:700}
.pp-petform-tag{font-size:.78em;border-radius:999px;padding:1px 10px;background:#e7eedf;color:#5a6d5e}
.pp-petform-step.pp-done .pp-petform-tag{background:#3c7a4c;color:#fff}
.pp-petform-step.pp-now .pp-petform-tag{background:#e9a93f;color:#1f2a20}
.pp-petform-note{font-size:.88em;color:#5a6d5e;margin:6px 0 0}
.pp-petform-pets{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.pp-petform-pet{display:inline-block;padding:7px 16px;border-radius:999px;border:1px solid #cfdcc6;background:#fff;color:#1f2a20;text-decoration:none;font-size:.9em}
.pp-petform-pet:hover{border-color:#3c7a4c}
.pp-petform-pet.pp-done{opacity:.6}
.pp-petstatus{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 4px;font-size:.9em;border-radius:10px;padding:8px 12px}
.pp-petstatus.pp-ok{background:#eef5e8;color:#2f6b43}
.pp-petstatus.pp-warn{background:#fdf3e2;color:#8a5a12}


/* ===== 必填表單彈窗（1.13.0） ===== */
.pp-fm-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:16px}
.pp-fm-backdrop{position:absolute;inset:0;background:rgba(20,30,22,.5)}
.pp-fm-box{position:relative;background:#fff;border-radius:20px;width:min(640px,100%);max-height:88vh;overflow-y:auto;padding:24px;box-shadow:0 30px 60px -28px rgba(20,30,22,.6)}
.pp-fm-x{position:absolute;top:10px;right:14px;width:36px;height:36px;border-radius:50%;background:#eef2ea;color:#1f2a20;display:flex;align-items:center;justify-content:center;font-size:1.3rem;line-height:1;text-decoration:none}
.pp-fm-x:hover{background:#dde5d7}
.pp-fm-head{margin:0 0 14px;padding-right:44px}
.pp-fm-title{font-size:1.2rem;font-weight:700;line-height:1.3}
.pp-fm-step{margin-top:4px;font-size:.9rem;color:#5a6d5e}
.pp-fm-body .pp-form-wrap{margin:0}
.pp-fm-foot{margin:14px 0 0;font-size:.84rem;color:#5a6d5e}
@media (max-width:560px){.pp-fm-box{padding:18px;border-radius:16px}}
