.plan-wizard { background:#fff; padding-bottom:24px; }
.plan-resume { display:grid; grid-template-columns:230px minmax(0,1fr); gap:28px; align-items:center; padding:32px; background:var(--paper); border:1px solid #e9dfcd; border-radius:20px; }
.plan-resume[hidden] { display:none; }
.plan-resume-davo { width:230px; height:230px; background-size:300% 300%; background-position:0 0; background-repeat:no-repeat; }
.plan-resume h2 { font-family:'Poppins',sans-serif; font-size:clamp(1.3rem,2.5vw,1.75rem); line-height:1.3; margin:8px 0 12px; color:var(--primary-dark); }
.plan-resume p { color:var(--muted); }
.plan-resume-eyebrow { font-size:.72rem; font-weight:700; color:#bb452b; text-transform:uppercase; letter-spacing:.12em; }
.plan-resume-summary { display:flex; flex-wrap:wrap; gap:10px 18px; padding:16px 0; margin:20px 0; border-block:1px solid #e9dfcd; font-weight:600; font-size:.85rem; }
.plan-resume-actions { display:flex; flex-wrap:wrap; align-items:center; gap:20px; }
.plan-resume-actions button { font:inherit; font-weight:600; cursor:pointer; border:0; border-radius:10px; padding:13px 20px; background:var(--primary); color:white; }
.plan-resume-actions button:hover { background:var(--primary-dark); }
.plan-resume-actions #planResumeDiscard { padding:10px 0; color:var(--primary-dark); background:transparent; text-decoration:underline; text-underline-offset:3px; }
.plan-resume-actions button:focus-visible { outline:3px solid #e98543; outline-offset:4px; }
.plan-resume .plan-resume-note { font-size:.75rem; margin:16px 0 0; }
.plan-wizard.has-resume .plan-davo { display:none; }
.plan-wizard.has-resume > .page-head .plan-introduction { grid-template-columns:1fr; justify-items:center; text-align:center; }
.plan-wizard.has-resume .plan-saved-link { justify-self:center; }
@media(max-width:640px) {
    .plan-resume { grid-template-columns:1fr; gap:8px; padding:22px; }
    .plan-resume-davo { width:180px; height:180px; margin:auto; }
    .plan-resume-actions #planResumeContinue { width:100%; }
}
.plan-wizard > .page-head { text-align:center; padding:40px 0 20px; background:transparent; border:0; }
.plan-wizard > .page-head .container { display:flex; flex-direction:column; gap:16px; align-items:center; }
.plan-wizard .page-title { font-family:'Barabara','Alfa Slab One',serif; text-transform:uppercase; font-size:clamp(1.9rem,4vw,2.7rem); color:var(--forest); margin:10px 0; }
.plan-wizard .poster-kicker { font-family:'Poppins',sans-serif; text-transform:uppercase; font-size:.72rem; letter-spacing:.14em; font-weight:700; color:var(--muted); }
.plan-wizard > .page-head .plan-introduction { max-width:940px; display:grid; grid-template-columns:128px minmax(0,1fr); gap:8px 26px; align-items:center; text-align:left; }
.plan-davo { grid-row:1 / 3; width:128px; height:154px; object-fit:contain; align-self:center; }
.plan-introduction-copy { min-width:0; }
.plan-wizard .plan-introduction .page-title { text-transform:none; font-size:clamp(1.65rem,3.2vw,2.25rem); line-height:1.2; text-wrap:balance; margin:8px 0 10px; }
.plan-wizard .plan-introduction p { margin:0; font-size:.9rem; line-height:1.65; }
.plan-wizard .plan-saved-link { justify-self:start; padding:7px 12px; min-height:40px; font-size:.8rem; gap:6px; }
.plan-loading-davo { display:block; width:76px; height:76px; object-fit:contain; margin:0 auto 18px; }
@media(max-width:640px) {
    .plan-wizard > .page-head .plan-introduction { grid-template-columns:1fr; gap:12px; text-align:center; justify-items:center; }
    .plan-davo { grid-row:auto; width:82px; height:98px; }
    .plan-wizard .plan-saved-link { justify-self:center; }
}
.plan-wizard .section-tight > .container { max-width:940px; }
.plan-wizard .plan-panel { background:var(--paper); border:1px solid var(--border); box-shadow:0 6px 24px rgba(16,40,30,.04); border-radius:20px; overflow:visible; }
.plan-wizard .panel-body { padding:32px; }
.plan-wizard.is-wizard .panel-head { display:none; }
.plan-wizard [hidden] { display:none !important; }
.plan-wizard-steps { display:flex; gap:18px; margin-bottom:22px; scroll-margin-top:calc(var(--site-topbar-height,77px) + 16px); }
.plan-wizard-steps button { flex:1; background:transparent; border:0; border-bottom:3px solid var(--border); color:var(--muted); font:600 .9rem 'Poppins',sans-serif; padding:14px 6px; cursor:pointer; }
.plan-wizard-steps button[aria-current="step"] { color:var(--primary-dark); border-bottom-color:var(--accent); }
.plan-wizard-steps button.is-complete { border-bottom-color:var(--primary); color:var(--primary); }
.plan-wizard-step > h2 { font:700 1.35rem/1.4 'Poppins',sans-serif; color:var(--primary-dark); margin:0 0 6px; }
.plan-step-intro { color:var(--muted); margin:0 0 24px; }
.plan-wizard.is-wizard .plan-section-group { margin:0 0 20px; padding:0; border:0; }
.plan-wizard.is-wizard .plan-section-group > .plan-section__title { display:none; }
.plan-wizard .field label { color:var(--primary-dark); }
.plan-wizard .filter-inline { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 20px; }
.plan-wizard .plan-field-wide { grid-column:1 / -1; }
.plan-wizard .plan-purpose { margin:0 0 24px; }
.plan-wizard.is-wizard .plan-starting-point { padding-top:20px; border-top:1px solid var(--border); }
.plan-wizard .plan-starting-point .privacy-note { margin:10px 0 14px; }
.plan-wizard .origin-control { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.plan-wizard .filter-inline > .field { min-width:0 !important; width:100%; margin:0; }
.plan-wizard input:not([type="checkbox"]):not([type="hidden"]), .plan-wizard select, .plan-wizard textarea { width:100%; min-width:0; border-radius:10px; background-color:var(--white); font-family:'Poppins',sans-serif; }
.plan-wizard .chip-checkbox-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.plan-wizard .chip-checkbox-grid .field-check { display:flex; align-items:center; gap:10px; border:1px solid var(--border); border-radius:12px; background:var(--white); padding:16px; margin:0; cursor:pointer; }
.plan-wizard .chip-checkbox-grid .field-check:has(input:checked) { background:var(--primary); color:var(--white); border-color:var(--primary); }
.plan-wizard .field-check input { accent-color:var(--primary); flex-shrink:0; }
.plan-wizard .chip-checkbox-grid .field-check:has(input:checked) input { accent-color:var(--white); }
.plan-wizard .plan-optional { border-top:1px solid var(--border); padding-top:18px; margin-top:22px; }
.plan-wizard .plan-optional > summary { color:var(--primary-dark); font-weight:600; cursor:pointer; padding:6px 0; }
.plan-wizard .plan-optional > .field, .plan-wizard .plan-optional > .plan-section-group { margin-top:20px; }
.plan-wizard .plan-optional .plan-section__title { display:flex !important; font:600 1rem 'Poppins',sans-serif; }
.plan-wizard .privacy-note { font-size:.8rem; padding:12px; }
.plan-wizard .btn { clip-path:none; transform:none; border-radius:11px; font-family:'Poppins',sans-serif; text-transform:none; min-height:44px; }
.plan-wizard .btn::before, .plan-wizard .btn::after { clip-path:none; }
.plan-wizard .plan-next { background:var(--primary); color:var(--white); border:1px solid var(--primary); padding:13px 22px; box-shadow:0 3px 8px rgba(11,107,79,.12); }
.plan-wizard .plan-next:hover { background:var(--primary-dark); }
.plan-wizard .btn-outline { background:var(--white); border:1px solid var(--border); color:var(--primary-dark); }
.plan-wizard-actions { display:flex; align-items:center; flex-wrap:wrap; gap:16px; padding-top:24px; margin-top:26px; border-top:1px solid var(--border); }
.plan-wizard-actions .plan-next { margin-left:auto; width:auto; }
.plan-wizard-actions .plan-submit { margin-top:0; }
.plan-wizard .chip-checkbox-grid .field-check:has(input:focus-visible), .plan-wizard-step > h2:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
.plan-wizard-actions #planStepStatus { color:var(--muted); font-size:.8rem; margin:auto; }
.plan-wizard :is(button,a,input,select,textarea,summary):focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
.plan-wizard.is-building { background:#fff; min-height:calc(100svh - var(--site-topbar-height,77px)); padding:54px 0; }
.plan-wizard.is-building > .page-head { display:none; }
.plan-wizard.is-building .section-tight { padding:0; }
.plan-loading { display:grid; grid-template-columns:180px minmax(0,1fr); align-items:center; gap:28px; max-width:720px; margin:0 auto; background:var(--paper); padding:30px; border:1px solid #eee3ce; border-radius:18px; scroll-margin-top:calc(var(--site-topbar-height,77px) + 24px); }
.plan-loading:focus { outline:none; }
.plan-loading .plan-loading-davo { width:180px; height:216px; object-fit:contain; margin:0; }
.plan-loading-copy { min-width:0; }
.plan-loading-kicker { color:#b83b24; text-transform:uppercase; font:700 .65rem 'Poppins',sans-serif; letter-spacing:.14em; margin-bottom:8px; }
.plan-loading h2 { font:700 1.2rem/1.35 'Poppins',sans-serif; color:var(--primary-dark); margin:0 0 18px; }
.plan-loading-workflow { display:grid; gap:12px; margin:0; padding:0; list-style:none; color:var(--muted); font-size:.78rem; }
.plan-loading-workflow li { display:flex; align-items:center; gap:10px; }
.plan-loading-workflow li span { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; flex-shrink:0; border:2px solid #d8ccb4; border-radius:50%; }
.plan-loading-workflow li.is-active { color:var(--primary-dark); font-weight:600; }
.plan-loading-workflow li.is-active span { border-top-color:var(--primary); animation:plan-spin 1s linear infinite; }
.plan-loading-workflow li.is-complete { color:var(--ink); }
.plan-loading-workflow li.is-complete span { border-color:var(--primary); background:var(--primary); color:#fff; font-size:.75rem; animation:none; }
.plan-loading-track { height:6px; overflow:hidden; border-radius:10px; background:#e9dfc6; margin-top:20px; }
.plan-loading-track > span { display:block; height:100%; width:35%; border-radius:inherit; background:var(--primary); animation:plan-progress 1.6s ease-in-out infinite alternate; }
.plan-loading.is-finishing .plan-loading-track > span { animation:none; width:var(--plan-progress,0%); transition:width .25s ease; }
@keyframes plan-spin { to { transform:rotate(360deg); } }
@keyframes plan-progress { from { transform:translateX(-100%); } to { transform:translateX(290%); } }
@media(max-width:640px) { .plan-wizard.is-building { padding:28px 0; } .plan-loading { gap:18px; padding:24px 20px; grid-template-columns:110px minmax(0,1fr); } .plan-loading .plan-loading-davo { width:110px; height:150px; } }
@media(max-width:460px) { .plan-loading { grid-template-columns:1fr; } .plan-loading .plan-loading-davo { margin:auto; height:128px; } }
@media(prefers-reduced-motion:reduce) { .plan-loading-workflow li.is-active span, .plan-loading-track > span { animation:none; } .plan-loading.is-finishing .plan-loading-track > span { transition:none; } }
@media(max-width:640px) { .plan-wizard .panel-body { padding:22px 18px; } .plan-wizard > .page-head { padding-top:26px; } .plan-wizard .filter-inline, .plan-wizard #plan-step-0 > .plan-section-group:first-of-type .filter-inline { grid-template-columns:1fr; } .plan-wizard-steps { gap:7px; } .plan-wizard-steps button { font-size:.73rem; padding:12px 2px; } .plan-wizard .chip-checkbox-grid { grid-template-columns:1fr; } .plan-wizard-actions { gap:12px; } .plan-wizard-actions .plan-next { width:100%; } .plan-wizard input:not([type="checkbox"]), .plan-wizard select, .plan-wizard textarea { font-size:16px; } }

/* ---- phones ----
   The intro (mascot, kicker, title, blurb, button) ran ~360px before the first question, every field was a
   full-width row, the interest tiles were a one-column stack and the Next button sat at the very bottom of a long
   step. Here: a compact intro, paired fields, two-column tiles and a Back / Next bar that stays on screen. */
@media(max-width:640px) {
    .plan-wizard > .page-head { padding: 16px 0 6px; }
    .plan-wizard:not(.has-resume) > .page-head .plan-introduction {
        grid-template-columns: 68px minmax(0, 1fr); gap: 4px 14px; text-align: left; justify-items: stretch; align-items: center;
    }
    .plan-wizard:not(.has-resume) .plan-davo { grid-column: 1; grid-row: 1; width: 68px; height: 82px; }
    .plan-wizard:not(.has-resume) .plan-introduction-copy { grid-column: 2; grid-row: 1; }
    .plan-wizard:not(.has-resume) .plan-saved-link { grid-column: 1 / -1; grid-row: 2; justify-self: start; min-height: 36px; padding: 5px 12px; }
    .plan-wizard .poster-kicker { font-size: .6rem; letter-spacing: .1em; }
    .plan-wizard .plan-introduction .page-title { font-size: 1.35rem; margin: 3px 0 4px; }
    .plan-wizard .plan-introduction p { font-size: .84rem; line-height: 1.5; }
    .plan-resume-davo { width: 120px; height: 120px; }

    .plan-wizard .section-tight { padding-top: 12px; }
    .plan-wizard-steps { margin-bottom: 14px; }
    .plan-wizard-step > h2 { font-size: 1.2rem; }
    .plan-step-intro { margin-bottom: 16px; font-size: .9rem; }

    /* paired fields: days | with whom, date | time, budget | stay; the wide ones keep a row each */
    .plan-wizard .filter-inline { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 12px; }
    .plan-wizard .filter-inline:has(#place_of_origin) { grid-template-columns: 1fr; }
    .plan-wizard #plan-step-0 > .plan-section-group:first-of-type .filter-inline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .plan-wizard .plan-field-wide { grid-column: 1 / -1; }
    .plan-wizard .field label { font-size: .86rem; }
    .plan-wizard input:not([type="checkbox"]):not([type="hidden"]), .plan-wizard select { min-height: 48px; }
    .plan-wizard .plan-section-group { margin-bottom: 14px; }

    /* interest, amenity and access tiles: two to a row */
    .plan-wizard .chip-checkbox-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .plan-wizard .chip-checkbox-grid .field-check { padding: 12px; gap: 8px; font-size: .86rem; line-height: 1.3; min-height: 52px; }

    .plan-wizard .origin-control .btn { flex: 1 1 auto; }

    /* Back / Next stay in view at the bottom of the card */
    .plan-wizard-actions {
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; flex-wrap: nowrap; gap: 10px;
        margin: 0; padding: 12px 18px calc(12px + env(safe-area-inset-bottom));
        background: var(--paper); border-top: 1px solid var(--border);
        box-shadow: 0 -8px 18px rgba(16, 40, 30, .08);
    }
    .plan-wizard:not(.is-building) { padding-bottom: 88px; }
    .plan-wizard #plan-step-2 .filter-inline { grid-template-columns: 1fr; }
    .plan-wizard-actions .plan-next { flex: 1 1 auto; width: auto; margin-left: 0; justify-content: center; padding: 12px 12px; font-size: .92rem; white-space: nowrap; }
    .plan-wizard-actions #planBack { flex: none; }
    .plan-wizard-actions #planStepStatus {
        position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
    }
    /* the chat button would sit on top of that bar, so it rides above it on this page */
    body:has(#planWizard) #chatbot-widget { bottom: calc(86px + env(safe-area-inset-bottom)); }
    body:has(#planWizard.is-building) #chatbot-widget { bottom: 16px; }
}
@media(max-width:640px) { .plan-wizard .plan-optional > summary { font-size: .95rem; } }

/* iPhone Safari draws date and time fields with their own width and centred text, so they pushed past the card
   (the time box hung off the right edge). Plain boxes that obey the column, text on the left like the others. */
.plan-wizard input[type="date"], .plan-wizard input[type="time"] {
    -webkit-appearance: none; appearance: none;
    display: block; box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%;
    text-align: left;
}
@media(max-width:640px) { .plan-wizard input[type="date"], .plan-wizard input[type="time"] { height: 48px; } }
.plan-wizard input[type="date"]::-webkit-date-and-time-value, .plan-wizard input[type="time"]::-webkit-date-and-time-value {
    min-width: 0; text-align: left;
}
.plan-wizard input[type="date"]::-webkit-calendar-picker-indicator, .plan-wizard input[type="time"]::-webkit-calendar-picker-indicator {
    margin: 0; padding: 0;
}
.plan-wizard .field { min-width: 0; }
