/* "Plan my trip" side panel (partials/planner). Tokens: navy #0B1B33, blue #1E5AA0, gold #C8A46A, pale gold #E4CFA5, cream #F7F3EC, muted #5B6577 */
.plan { position: fixed; inset: 0; z-index: 80; }
.plan-scrim { position: absolute; inset: 0; background: rgba(6,14,28,.55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; transition: opacity .35s ease; }
.plan-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(480px, 100%); background: #F7F3EC; color: #0B1B33; box-shadow: -30px 0 80px rgba(0,0,0,.25); display: flex; flex-direction: column; overflow-y: auto; overscroll-behavior: contain; transform: translateX(100%); transition: transform .45s cubic-bezier(.2,.7,.2,1); }
.plan.open .plan-scrim { opacity: 1; }
.plan.open .plan-panel { transform: none; }
body.plan-lock { overflow: hidden; }

.plan-top { position: sticky; top: 0; z-index: 1; display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; padding: 24px 24px 16px; background: #F7F3EC; border-bottom: 1px solid #ECE6DB; }
.plan-kicker { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: #8A6A30; font-weight: 700; }
.plan-top h2 { font-family: 'Playfair Display', serif; font-weight: 500; font-size: 24px; line-height: 1.15; margin: 8px 0 0; }
.plan-top h2 em { color: #1E5AA0; font-style: italic; }
.plan-x { flex-shrink: 0; width: 40px; height: 40px; border-radius: 50%; border: 1px solid #CFC7B8; background: #fff; color: #0B1B33; font-size: 15px; cursor: pointer; }
.plan-x:hover { border-color: #0B1B33; }

.plan-steps { list-style: none; display: flex; gap: 8px; margin: 0; padding: 16px 24px 0; }
.plan-steps li { flex: 1; display: flex; align-items: center; gap: 8px; padding-bottom: 10px; border-bottom: 2px solid #E1D9CB; font-size: 12px; font-weight: 700; color: #8A93A3; }
.plan-steps li b { width: 22px; height: 22px; border-radius: 50%; background: #E1D9CB; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 11px; }
.plan-steps li.on { color: #0B1B33; border-color: #C8A46A; }
.plan-steps li.on b { background: #0B1B33; }

.plan-form { padding: 20px 24px 28px; }
.plan-step { display: flex; flex-direction: column; gap: 20px; }
.plan-f { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; border: 0; min-width: 0; font-size: 12px; font-weight: 700; color: #5B6577; }
.plan-f legend, .plan-l { padding: 0; margin-bottom: 8px; font-size: 12px; font-weight: 700; color: #5B6577; }
.plan-f small { font-weight: 500; color: #8A93A3; }
.plan-f input:not([type=radio]), .plan-f select, .plan-f textarea { width: 100%; height: 46px; border: 1px solid #DCD4C6; border-radius: 12px; padding: 0 14px; font-size: 14px; color: #0B1B33; background: #fff; outline-color: #1E5AA0; font-family: inherit; }
.plan-f textarea { height: auto; padding: 12px 14px; resize: vertical; }
.plan-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }

.plan-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.pchip { position: relative; cursor: pointer; }
.pchip input, .pcard input { position: absolute; opacity: 0; pointer-events: none; }
.pchip span { display: inline-flex; align-items: center; gap: 6px; padding: 9px 14px; border-radius: 999px; border: 1px solid #DCD4C6; background: #fff; font-size: 13px; font-weight: 600; color: #2C3A50; transition: all .2s; }
.pchip:hover span { border-color: #0B1B33; }
.pchip input:checked + span { background: #0B1B33; border-color: #0B1B33; color: #fff; }
.pchip input:focus-visible + span, .pcard input:focus-visible + span { outline: 2px solid #1E5AA0; outline-offset: 2px; }
.plan-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.pcard { cursor: pointer; }
.pcard span { height: 100%; display: flex; flex-direction: column; gap: 4px; padding: 12px; border-radius: 14px; border: 1px solid #DCD4C6; background: #fff; transition: all .2s; }
.pcard strong { font-size: 13px; color: #0B1B33; }
.pcard small { font-size: 11px; line-height: 1.4; font-weight: 500; color: #5B6577; }
.pcard input:checked + span { border-color: #C8A46A; box-shadow: inset 0 0 0 1px #C8A46A; background: #FBF6EC; }

.plan-count { display: flex; flex-direction: column; gap: 8px; }
.stepper { display: grid; grid-template-columns: 1fr 36px 48px 36px; align-items: center; gap: 6px; padding: 6px 6px 6px 14px; border: 1px solid #DCD4C6; border-radius: 12px; background: #fff; font-size: 13px; font-weight: 700; color: #0B1B33; }
.stepper small { font-weight: 500; color: #8A93A3; }
.stepper button { width: 36px; height: 36px; border-radius: 50%; border: 1px solid #DCD4C6; background: #F7F3EC; color: #0B1B33; font-size: 16px; cursor: pointer; }
.stepper button:hover { border-color: #0B1B33; }
.plan-f .stepper input { height: 36px; border: 0; padding: 0; text-align: center; font-weight: 700; -moz-appearance: textfield; }
.stepper input::-webkit-inner-spin-button, .stepper input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }

.plan-btn { border: 0; cursor: pointer; height: 52px; border-radius: 14px; background: #0B1B33; color: #fff; font-size: 15px; font-weight: 700; }
.plan-btn:hover { background: #1E5AA0; }
.plan-back { border: 0; background: none; color: #1E5AA0; font-weight: 700; font-size: 13px; cursor: pointer; padding: 4px; }
.plan-summary { margin: 0; padding: 14px 16px; border-radius: 14px; background: #fff; border: 1px solid #ECE6DB; font-size: 13px; line-height: 1.55; color: #2C3A50; }
.plan-summary strong { color: #0B1B33; }
.plan-trust { margin: 0; text-align: center; font-size: 12px; color: #5B6577; }
.plan .form-errors { margin: 0; }

.plan-done { padding: 48px 24px; text-align: center; display: flex; flex-direction: column; gap: 14px; align-items: center; }
.plan-done-tick { width: 60px; height: 60px; border-radius: 50%; background: #E8F3EC; color: #2F7A55; display: flex; align-items: center; justify-content: center; font-size: 26px; }
.plan-done h3 { font-family: 'Playfair Display', serif; font-weight: 500; font-size: 26px; margin: 0; }
.plan-done p { font-size: 14px; line-height: 1.6; color: #5B6577; margin: 0; max-width: 34ch; }
.plan-done .plan-btn { padding: 0 26px; margin-top: 8px; }

@media (min-width: 520px) {
    .plan-row { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: start; }
}
@media (max-width: 420px) {
    .plan-cards { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .plan-panel, .plan-scrim { transition: none; }
}
.plan-x, .plan-btn, .plan-back { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.plan-trust { display: flex; align-items: center; justify-content: center; gap: 6px; }
.plan-trust .ico { color: #2F7A55; }
.pchip span .ico { color: #C8A46A; }
.pchip input:checked + span .ico { color: #E4CFA5; }
