/* Ask then Go — conversational trip-planner UI layer.
 * Layout and interaction model follow the "chat + live trip panel" pattern (hero prompt, Chat/Trip switch,
 * checklist, generation steps, map-first trip page, flight/stay/day cards, sticky total bar).
 * Colours, shapes, illustration and copy are Ask then Go's own. Loaded after the base styles in index.html. */
:root{--nm-ink:#0e2230;--nm-deep:#0f3446;--nm-teal:#1d7a82;--nm-teal-d:#155f66;--nm-teal-soft:#e3f1f0;--nm-sand:#f7f1e7;--nm-paper:#fffdf9;--nm-coral:#f2694b;--nm-coral-d:#d9553a;--nm-gold:#f4b95f;--nm-line:#e7dfd2;--nm-muted:#6f7c83;--nm-top:72px}
body{background:var(--nm-sand);color:var(--nm-ink)}
a{color:inherit}
button:focus-visible,a:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #7fcfc9;outline-offset:3px}

/* ---------- top bar ---------- */
.topbar{background:#fff;border-bottom:1px solid var(--nm-line);height:var(--nm-top)}
.brand{color:var(--nm-ink);font-weight:800;letter-spacing:-1px}
.brand-mark{background:linear-gradient(135deg,var(--nm-teal),var(--nm-deep));border-radius:50% 50% 50% 12%;transform:none;font-size:15px;width:28px;height:28px}
.brand span[style]{color:var(--nm-coral)!important}
.top-badge,.top-hint{display:none!important}
.language-picker{margin-left:auto;border-color:var(--nm-line);color:var(--nm-muted)}
.account-btn,.new-btn{border-color:var(--nm-line);color:var(--nm-ink);background:#fff;font-weight:600}
.account-btn:hover,.new-btn:hover{background:var(--nm-teal-soft);border-color:#b7dcd9}
.new-btn{background:var(--nm-ink);color:#fff;border-color:var(--nm-ink)}
.new-btn:hover{background:var(--nm-teal-d);color:#fff}
body:not(.nm-planning) .topbar{position:absolute;left:0;right:0;top:0;background:transparent;border-bottom:0;color:#fff}
body:not(.nm-planning) .brand{color:#fff}
body:not(.nm-planning) .language-picker{background:#ffffff1f;border-color:#ffffff4d;color:#fff;backdrop-filter:blur(8px)}
body:not(.nm-planning) .language-picker select{color:#fff}
body:not(.nm-planning) .language-picker select option{color:#0e2230}
body:not(.nm-planning) .account-btn{background:#ffffff1f;border-color:#ffffff4d;color:#fff;backdrop-filter:blur(8px)}
body:not(.nm-planning) .account-btn:hover{background:#ffffff38}
body:not(.nm-planning) .new-btn{background:#fff;color:var(--nm-ink);border-color:#fff}

/* ---------- landing / hero ---------- */
.app:not(.has-plan){min-height:100vh}
.app:not(.has-plan) .chat-side{min-height:100vh;color:#fff;background:
 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 320' preserveAspectRatio='none'%3E%3Cpath fill='%230b2433' fill-opacity='.5' d='M0 210C240 120 430 250 700 190S1180 100 1440 200V320H0Z'/%3E%3Cpath fill='%230b2433' fill-opacity='.85' d='M0 268C300 205 520 300 820 248S1240 198 1440 262V320H0Z'/%3E%3C/svg%3E") bottom/100% 240px no-repeat,
 radial-gradient(circle at 50% 84%,#ffd08a 0,#f6a766 8%,#f2694b40 22%,transparent 44%),
 radial-gradient(ellipse at 15% 10%,#2a8c93 0,transparent 55%),
 linear-gradient(180deg,#0b2a3b 0%,#14485a 46%,#c9805d 86%,#f0b070 100%)}
.landing{padding:150px 0 130px;width:min(900px,calc(100% - 36px))}
.landing .eyebrow{color:var(--nm-gold);letter-spacing:.2em;font-size:12px}
.landing h1{color:#fff;font-size:clamp(40px,6vw,74px);letter-spacing:-2.6px;line-height:1.06;text-shadow:0 2px 30px #06182433}
.landing h1 i{background:linear-gradient(90deg,#ffe7bd,#ffc7a3);-webkit-background-clip:text;background-clip:text;color:transparent}
.landing .subtitle{color:#e5eef0;font-size:17px;max-width:560px;margin:20px 0 36px}
.hero-composer{width:min(820px,100%);padding:0}
.hero-composer .composer{border:0;border-radius:30px;padding:16px 16px 14px 20px;box-shadow:0 30px 70px #04141f55,0 2px 0 #fff inset;background:var(--nm-paper)}
.hero-composer textarea{min-height:92px;font-size:17px;color:var(--nm-ink)}
.hero-composer .composer-foot{color:#e1ecee;margin-top:12px}.hero-composer .composer-foot span:last-child{color:#ffd9a0}
.send{background:var(--nm-ink);border-radius:50%;width:44px;height:44px}
.send:hover{background:var(--nm-teal-d)}
#formHero .send{width:auto;height:48px;padding:0 22px 0 18px;border-radius:26px;background:var(--nm-coral);gap:9px;display:flex;align-items:center;font-weight:750;font-size:15px;color:#fff;white-space:nowrap}
#formHero .send:hover{background:var(--nm-coral-d)}
#formHero .send svg{transform:rotate(90deg)}
.landing-sample{margin-top:26px;gap:10px}
.sample{background:#ffffff1f;border:1px solid #ffffff59;color:#fff;backdrop-filter:blur(10px);box-shadow:none;font-weight:600;padding:12px 18px;transition:transform .2s,background .2s}
.sample:hover{background:#ffffff3d;border-color:#fff;transform:translateY(-2px)}
.saved-trips{background:var(--nm-paper);color:var(--nm-ink);border:0;border-radius:26px;padding:24px;margin-top:56px;box-shadow:0 24px 60px #04141f40}
.saved-heading h2{font-family:Georgia,serif}
.saved-trip{border-color:var(--nm-line);border-radius:20px}
.saved-actions .continue-btn{background:var(--nm-teal-soft);border-color:#b7dcd9;color:var(--nm-teal-d)}
.saved-actions button{color:var(--nm-teal-d);border-color:var(--nm-line)}

/* ---------- planning layout ---------- */
.app.has-plan{grid-template-columns:minmax(360px,32%) minmax(0,68%)}
.app.has-plan .chat-side{background:var(--nm-paper);border-right:1px solid var(--nm-line);top:var(--nm-top);height:calc(100vh - var(--nm-top))}
.app.has-plan .chat-bottom{background:linear-gradient(0deg,var(--nm-paper) 82%,#fffdf900)}
.composer{border-color:var(--nm-line);border-radius:26px;box-shadow:0 10px 30px #0e223012}
.app.has-plan .composer{border-radius:24px}
.composer-foot span:last-child{color:var(--nm-teal)}
/* the version on screen (21.10): small and quiet; a page and a server of different versions say so plainly */
.composer-foot .nm-version{color:inherit;opacity:.62;font-size:11px;letter-spacing:.01em}
.composer-foot .nm-version.is-stale{opacity:1;color:#b3412b;font-weight:600}
.hero-composer .composer-foot .nm-version.is-stale{color:#ffd9a0}
.trip-side{background:var(--nm-sand);position:relative;overflow:visible;overflow-x:clip}
.panel-head{background:#f7f1e7ee;border-bottom:1px solid var(--nm-line);top:var(--nm-top)}
.panel-dot{background:var(--nm-teal);box-shadow:0 0 0 5px #c9e6e3}
.status{background:#fff;border-color:var(--nm-line);color:var(--nm-muted)}
.icon-btn{border-color:var(--nm-line);color:var(--nm-ink)}
.stage-icon{background:var(--nm-teal-soft);color:var(--nm-teal-d)}
.stage-loader{border-color:#b4dcd8;border-top-color:var(--nm-teal-d)}
.progress{background:#e4dccd}.progress>i{background:var(--nm-teal)}

/* chat bubbles */
.msg .avatar{background:linear-gradient(135deg,var(--nm-teal),var(--nm-deep));border-radius:50%;width:30px;height:30px;font-size:14px}
.msg.me .bubble{background:var(--nm-deep);color:#fff;border-radius:20px 20px 6px 20px}
.msg.ai .bubble{color:var(--nm-ink)}
.ai-actions button{background:#fff;border:1px solid #bddcd9;color:var(--nm-teal-d);font-weight:600;padding:9px 14px}
.ai-actions button:hover{background:var(--nm-teal-soft);border-color:var(--nm-teal)}
.reopen{border-color:#bddcd9;color:var(--nm-teal-d);background:var(--nm-teal-soft)}

/* Chat / Trip switch (small screens) */
.nm-tabs{display:none;position:sticky;top:var(--nm-top);z-index:11;background:#fff;border-bottom:1px solid var(--nm-line);padding:8px 14px}
.nm-tabs-in{display:grid;grid-template-columns:1fr 1fr;background:#efe8dc;border-radius:22px;padding:3px;max-width:420px;margin:auto}
.nm-tab{border:0;background:transparent;border-radius:19px;padding:9px 10px;font-weight:700;font-size:14px;color:var(--nm-muted);display:flex;align-items:center;justify-content:center;gap:7px}
.nm-tab[aria-selected=true]{background:#fff;color:var(--nm-ink);box-shadow:0 2px 8px #0e223022}
.nm-tab .dot{width:8px;height:8px;border-radius:50%;background:var(--nm-coral);display:none}
.nm-tab.has-news .dot{display:inline-block}

/* Trip checklist */
.nm-check{display:none;margin:0;padding:12px 22px 10px;border-bottom:1px solid var(--nm-line);background:#fff;position:relative;z-index:2}
body.nm-planning .nm-check{display:block}
.nm-check-top{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;font-weight:700;color:var(--nm-ink)}
.nm-check-top span:last-child{color:var(--nm-teal-d)}
.nm-check-bar{height:5px;border-radius:5px;background:#ece4d6;margin:8px 0 10px;overflow:hidden}
.nm-check-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--nm-teal),#46b3a8);transition:width .5s ease}
.nm-check-items{display:flex;gap:6px;flex-wrap:wrap}
.nm-check-item{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--nm-line);border-radius:14px;padding:3px 9px;font-size:11px;color:var(--nm-muted);background:#fff}
.nm-check-item::before{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid #c9bfae}
.nm-check-item.done{color:var(--nm-teal-d);border-color:#b7dcd9;background:var(--nm-teal-soft);font-weight:650}
.nm-check-item.done::before{background:var(--nm-teal);border-color:var(--nm-teal)}
/* asked in the open question card, not confirmed yet */
.nm-check-item.ask{color:#7a5a12;border-color:#f1dcb0;background:#fff8e9}
.nm-check-item.ask::before{border-color:#c99a2e;background:linear-gradient(90deg,#c99a2e 50%,transparent 50%)}

/* ---------- generation overlay ---------- */
.nm-gen{position:absolute;inset:0;z-index:9;display:none;background:radial-gradient(circle at 50% 0,#1d7a82 0,transparent 60%),linear-gradient(180deg,#0d3040,#0b2433);color:#fff}
.nm-gen.on{display:block;animation:nmfade .35s both}
.nm-gen-in{position:sticky;top:calc(var(--nm-top) + 67px);min-height:calc(100vh - var(--nm-top) - 67px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:30px 24px;text-align:center}
.nm-gen h2{font:600 clamp(24px,3vw,36px)/1.2 Georgia,serif;margin:0;letter-spacing:-.8px}
.nm-gen-sub{margin:0;color:#b8d3d6;font-size:14px;max-width:460px;overflow-wrap:anywhere}
.nm-gen-art{width:min(440px,86%);height:auto}
.nm-gen-art .trail{stroke-dasharray:6 9;animation:nmdash 1.4s linear infinite}
.nm-gen-art .ping{transform-origin:center;transform-box:fill-box;animation:nmping 1.8s ease-out infinite}
.nm-steps{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:11px;text-align:left;width:min(440px,100%)}
.nm-steps li{display:flex;align-items:center;gap:12px;font-size:15px;color:#8fb0b5;transition:color .3s}
.nm-steps li i{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid #3d6671;display:grid;place-items:center;font-style:normal;font-size:12px;transition:all .3s}
.nm-steps li.active{color:#fff;font-weight:650}
.nm-steps li.active i{border-color:var(--nm-gold);border-top-color:transparent;animation:spin .9s linear infinite}
.nm-steps li.done{color:#d6ebe9}
.nm-steps li.done i{background:#3fb6a8;border-color:#3fb6a8;color:#06241f}
.nm-steps li.done i::after{content:"✓"}
.nm-gen-note{font-size:12px;color:#7fa2a8;margin:6px 0 0}
@keyframes nmfade{from{opacity:0}to{opacity:1}}@keyframes nmdash{to{stroke-dashoffset:-30}}@keyframes nmping{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.4);opacity:0}}

/* ---------- trip page ---------- */
#planContent{display:flex;flex-direction:column}
#planContent>.hero-card{order:1}#nmCities{order:2}#planContent>.nm-card{order:3}#routeCard{order:4}#flights{order:5}#hotels{order:6}#activities{order:7}#gallery{order:8}#planContent>.expense{display:none}#hotelCards>.trip-notice{display:none}#planContent>.disclaimer{order:10}
.panel-inner{max-width:1100px}
.hero-card{border-color:var(--nm-line);border-radius:26px;background:#fff;box-shadow:0 10px 36px #0e22300d;grid-template-columns:36% 1fr}
.hero-media{min-height:200px;background:linear-gradient(145deg,#2a8c93,#f0b070)}
.hero-info h2{font-family:Georgia,serif;font-weight:600;letter-spacing:-1px}
.kicker{color:var(--nm-teal)}
.hero-metas span{border-color:var(--nm-line);color:var(--nm-ink);background:#fbf7f0}
.primary,.outline{border-radius:24px;border-color:var(--nm-teal)}
.primary{background:var(--nm-teal);color:#fff}.primary:hover{background:var(--nm-teal-d)}
.outline{color:var(--nm-teal-d);background:#fff}.outline:hover{background:var(--nm-teal-soft)}
.pill{background:var(--nm-teal-soft);color:var(--nm-teal-d)}
.section-header h3{font-family:Georgia,serif;font-weight:600;font-size:22px}
.route-card{border-color:var(--nm-line);margin:6px 0 4px;padding:16px 18px}
.route-details{display:none}
.route-card .section-top{margin-bottom:8px}
.destinations{counter-reset:stop;gap:0;align-items:stretch;margin-top:4px}
.destination-chip{border:0;background:transparent;position:relative;padding:6px 26px 6px 0;min-width:0;flex:none}
.destination-chip::after{content:"";position:absolute;right:6px;top:50%;width:14px;border-top:2px dotted #b9ac95}
.destination-chip:last-child::after{display:none}
.destination-chip strong{font-size:14px}
.destination-chip small{color:var(--nm-muted)}
.route-caption{display:none}
.nm-card{border-color:var(--nm-line);border-radius:26px;margin:14px 0 6px;padding:12px;box-shadow:0 10px 36px #0e22300d}
.nm-head h3{font-family:Georgia,serif;font-weight:600}
.nm-canvas{height:min(480px,58vh);border-radius:20px}
.nm-btn{background:var(--nm-teal-soft);border-color:#b7dcd9;color:var(--nm-teal-d)}
.nm-btn:hover{background:#d3ebe8}
.nm-primary{background:var(--nm-teal)}.nm-primary:hover{background:var(--nm-teal-d)}
.nm-pin{background:var(--nm-teal)}
.nm-pin.poi{background:var(--nm-coral)}
.nm-pin.is-active{background:var(--nm-ink);box-shadow:0 0 0 4px #1d7a8255,0 3px 12px #0e223077}
.nm-pin.poi.is-active{background:var(--nm-coral-d)}
.nm-plane{color:var(--nm-teal-d)}

/* sticky city selector */
#nmCities{position:sticky;top:calc(var(--nm-top) + 67px);z-index:4;margin:12px -4px 0;padding:10px 4px;display:flex;gap:8px;overflow-x:auto;background:linear-gradient(180deg,var(--nm-sand) 78%,#f7f1e700);scrollbar-width:none}
#nmCities::-webkit-scrollbar{display:none}
#nmCities.hide{display:none}
.nm-city{flex:none;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--nm-line);background:#fff;border-radius:22px;padding:7px 14px 7px 8px;font-weight:650;font-size:13px;color:var(--nm-ink)}
.nm-city b{width:22px;height:22px;border-radius:50%;background:var(--nm-teal);color:#fff;font-size:11px;display:grid;place-items:center}
.nm-city:hover,.nm-city.on{border-color:var(--nm-teal);background:var(--nm-teal-soft)}

/* flight card */
.travel-row{border-color:var(--nm-line);border-radius:22px}
.travel-row.selected{border-color:var(--nm-teal);box-shadow:0 0 0 2px #c9e6e3}
.travel-icon{background:var(--nm-teal-soft)}
.row-action{border-color:#b7dcd9;color:var(--nm-teal-d)}
.row-action:hover{background:var(--nm-teal-soft)}
.travel-row.nm-flight{display:grid;grid-template-columns:1fr auto;gap:14px 18px;padding:18px 20px;background:linear-gradient(135deg,#fff,#f2f9f8)}
.nm-flight .nm-fl-tag{grid-column:1/-1;display:flex;align-items:center;gap:8px;font-size:11px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:var(--nm-teal-d)}
.nm-flight .nm-fl-tag em{font-style:normal;background:#fff3e4;color:#9a5a12;border-radius:12px;padding:3px 9px;letter-spacing:0;text-transform:none;font-weight:650}
.nm-fl-route{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px}
.nm-fl-city{font:600 clamp(18px,2.2vw,26px)/1.15 Georgia,serif;letter-spacing:-.5px;max-width:200px;overflow-wrap:anywhere}
.nm-fl-city small{display:block;font:600 11px/1.3 -apple-system,Segoe UI,sans-serif;letter-spacing:.05em;color:var(--nm-muted);text-transform:uppercase;margin-bottom:3px}
.nm-fl-city.r{text-align:right;justify-self:end}
.nm-fl-line{position:relative;height:26px;display:flex;align-items:center;min-width:60px}
.nm-fl-line::before{content:"";flex:1;border-top:2px dashed #9ccac6}
.nm-fl-line span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;padding:0 8px;color:var(--nm-teal);font-size:18px}
.nm-flight .sub{grid-column:1/-1;font-size:12px;color:var(--nm-muted)}
.nm-fl-actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}
.nm-flight .row-action{background:var(--nm-teal);color:#fff;border-color:var(--nm-teal);padding:10px 18px;font-size:13px;text-decoration:none}
.nm-flight .row-action:hover{background:var(--nm-teal-d)}

/* stay cards */
#hotelCards .travel-row{scroll-margin-top:150px;grid-template-columns:auto 1fr auto;transition:box-shadow .3s,border-color .3s}
#hotelCards .travel-row.flash{border-color:var(--nm-teal);box-shadow:0 0 0 4px #c9e6e3}
#hotelCards .travel-icon{width:54px;height:54px;border-radius:16px;background:linear-gradient(135deg,var(--nm-teal-soft),#f6e7d2);font-size:26px;position:relative}
.nm-stopno{position:absolute;top:-6px;left:-6px;min-width:20px;height:20px;border-radius:10px;background:var(--nm-ink);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center;padding:0 5px;border:2px solid #fff}

/* day cards */
.timeline{margin-left:0}.timeline:before{background:#d8cfbf;left:8px}
.timeline-pin{background:var(--nm-teal);border-color:#c9e6e3}
.timeline-card{border-color:var(--nm-line);border-radius:22px;transition:transform .2s,box-shadow .2s}
.timeline-card:hover{box-shadow:0 10px 26px #0e22301a}
.timeline-card.is-selected{border-color:var(--nm-teal);box-shadow:0 0 0 2px #c9e6e3}
.event-photo{height:auto;min-height:124px;width:34%;max-width:230px}
.event-body small{color:var(--nm-coral-d);text-transform:uppercase;letter-spacing:.08em;font-size:11px}
.event-body strong{font-family:Georgia,serif;font-weight:600;font-size:17px}
.gallery{height:150px}
.photo-tile{border-radius:20px}

/* sticky total bar */
.nm-bar{position:sticky;bottom:0;z-index:6;display:none;align-items:center;justify-content:space-between;gap:14px;padding:12px clamp(16px,3vw,36px) calc(12px + env(safe-area-inset-bottom));background:#fffdf9f2;border-top:1px solid var(--nm-line);backdrop-filter:blur(12px);box-shadow:0 -10px 30px #0e22300f}
.app.has-plan .trip-side.nm-ready .nm-bar{display:flex}
.nm-bar-total small{display:block;font-size:11px;color:var(--nm-muted);letter-spacing:.04em;text-transform:uppercase}
.nm-bar-total strong{font-size:16px}
.nm-bar-total span{font-size:11px;color:var(--nm-muted);display:block}
.nm-bar-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.nm-bar-actions button{border-radius:24px;padding:11px 18px;font-weight:700;font-size:13px;border:1px solid var(--nm-teal);background:#fff;color:var(--nm-teal-d)}
.nm-bar-actions button.go{background:var(--nm-coral);border-color:var(--nm-coral);color:#fff}
.nm-bar-actions button.go:hover{background:var(--nm-coral-d)}
.nm-bar-actions button:hover:not(.go){background:var(--nm-teal-soft)}
.nm-bar-actions button[hidden]{display:none}

/* modal + research */
.nd-modal-card{border-radius:26px}.nd-modal-symbol{color:var(--nm-teal)}.nd-modal-links a{background:var(--nm-teal-soft);border-color:#b7dcd9;color:var(--nm-teal-d)}
.research-panel{border-color:var(--nm-line)}.research-offer{border-color:var(--nm-line);background:linear-gradient(145deg,#f4faf9,#fff)}.offer-price{color:var(--nm-teal-d)}.research-panel a,.bubble a{color:var(--nm-teal-d)}.research-pulse{background:linear-gradient(90deg,#d6ece9,var(--nm-teal),#d6ece9);background-size:200% 100%}

/* ---------- small screens: one view at a time (Chat | Trip) ---------- */
@media(max-width:900px){
 .app.has-plan{display:block}
 body.nm-planning .nm-tabs{display:block}
 .app.has-plan .chat-side{position:relative;top:auto;height:auto;min-height:calc(100dvh - var(--nm-top) - 58px);overflow:visible;border:0}
 .app.has-plan .conversation{overflow:visible;max-width:none;padding:16px 16px 12px}
 .app.has-plan .chat-bottom{position:sticky;bottom:0;padding:14px 14px calc(14px + env(safe-area-inset-bottom));max-width:none}
 .app.has-plan .trip-side{display:block;min-height:calc(100dvh - var(--nm-top) - 58px)}
 body[data-nmview=chat] .app.has-plan .trip-side{display:none}
 body[data-nmview=trip] .app.has-plan .chat-side{display:none}
 .panel-head{top:calc(var(--nm-top) + 58px);height:56px;padding:0 16px}
 #closePanel,.reopen{display:none!important}
 #nmCities{top:calc(var(--nm-top) + 58px + 56px)}
 .nm-gen-in{top:calc(var(--nm-top) + 114px);min-height:calc(100dvh - var(--nm-top) - 114px)}
 .hero-card{grid-template-columns:1fr}
 .hero-media{min-height:190px}
 .nm-check{padding:10px 14px 8px}
}
@media(max-width:700px){
 :root{--nm-top:63px}
 .topbar{height:63px;padding:0 14px;gap:8px}
 .landing{padding:112px 0 110px}
 .landing h1{font-size:clamp(34px,10vw,46px);letter-spacing:-1.6px}
 .landing .subtitle{font-size:15px;margin:14px 0 26px}
 .hero-composer .composer{padding:12px 12px 12px 14px;border-radius:24px;flex-wrap:wrap}
 .hero-composer textarea{min-height:84px;font-size:16px}
 #formHero .send{width:100%;justify-content:center;height:50px}
 .sample{font-size:13px;padding:10px 14px}
 .app:not(.has-plan) .chat-side{background-size:100% 150px,auto,auto,auto}
 .nm-card{padding:8px;border-radius:22px}
 .nm-canvas{height:56vh}
 .travel-row.nm-flight{padding:15px 14px}
 .nm-fl-route{grid-template-columns:1fr;gap:6px}
 .nm-fl-city.r{text-align:left;justify-self:start}
 .nm-fl-line{height:30px;min-width:0}
 .nm-bar{padding:10px 14px calc(10px + env(safe-area-inset-bottom));gap:10px}
 .nm-bar-actions button{padding:10px 14px}
 .nm-bar-total span{display:none}
 .event-photo{min-width:96px;width:34%}
 .topbar .language-picker{margin-left:auto}
}
@media(max-width:420px){.nm-bar-actions button:not(.go){display:none}.nm-bar-actions button.go{padding:11px 22px}}
@media(prefers-reduced-motion:reduce){.nm-gen-art .trail,.nm-gen-art .ping,.nm-steps li.active i{animation:none}}

/* ---------- travel hero (rotating destination photos) ---------- */
.chat-side{overflow:hidden}
.app.has-plan .chat-side{overflow-y:auto}
.nm-hero-bg{position:absolute;inset:0;z-index:0;pointer-events:none}
.nm-hero-bg i{position:absolute;inset:0;background:center/cover no-repeat;opacity:0;animation:nmslide 28s infinite;transform:scale(1.04)}
.nm-hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#041a28cc 0,#041a2866 22%,#041a2855 55%,#041a28b3 100%)}
.app.has-plan .nm-hero-bg{display:none}
.landing,.saved-trips{position:relative;z-index:1}
@keyframes nmslide{0%{opacity:0;transform:scale(1.04)}4%{opacity:1}25%{opacity:1}29%{opacity:0;transform:scale(1.12)}100%{opacity:0}}
.nm-hero-bg i:first-child{opacity:1}
@media(prefers-reduced-motion:reduce){.nm-hero-bg i{animation:none}.nm-hero-bg i:not(:first-child){display:none}}
/* logo must be readable on the photo */
body:not(.nm-planning) .brand{text-shadow:0 2px 14px #041a28aa;font-size:26px}
@media(max-width:440px){body:not(.nm-planning) .brand{font-size:20px;letter-spacing:-.6px}body:not(.nm-planning) .brand-mark{width:26px;height:26px;font-size:14px}}      /* 28.10 rebrand: "ASK THEN GO" is wider than the old name: the language picker and "+" stay on a 375 px phone */
@media(max-width:360px){body:not(.nm-planning) .brand{font-size:16px;letter-spacing:-.4px}body:not(.nm-planning) .brand-mark{width:22px;height:22px;font-size:12px}}
body:not(.nm-planning) .brand-mark{background:#fff;color:var(--nm-teal-d);box-shadow:0 4px 16px #041a2866;width:30px;height:30px;font-size:16px}      /* 28.10: was 36 px, too big next to the name */
body:not(.nm-planning) .topbar{background:linear-gradient(180deg,#041a28b3,#041a2800)}
.brand:hover .brand-mark{transform:rotate(-12deg) scale(1.06)}
.brand-mark{transition:transform .25s}
.app:not(.has-plan) .chat-side{background:linear-gradient(180deg,#0b2a3b,#14485a 60%,#c9805d)}
.landing .eyebrow{color:#ffd9a0;text-shadow:0 1px 10px #041a28aa}
.landing h1,.landing .subtitle{text-shadow:0 2px 24px #041a2899}

/* ---------- flight / stay cards in the chat ---------- */
.nm-chatcards{display:grid;gap:14px;margin:2px 0 4px 40px;animation:appear .45s both;min-width:0}
.nm-cc h4{margin:0 0 8px;font:700 13px/1.2 -apple-system,Segoe UI,sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--nm-teal-d)}
.nm-cc-row{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 8px;scrollbar-width:thin}
.nm-cc-row>.travel-row{flex:0 0 min(300px,88%);scroll-snap-align:start;box-shadow:0 6px 18px #0e22300f;align-content:start}
.nm-cc-row>.travel-row:not(.nm-flight){display:grid;grid-template-columns:auto 1fr;gap:8px 12px;padding:14px}
.nm-cc-row>.travel-row:not(.nm-flight)>.row-action{grid-column:1/-1;justify-self:start}
.nm-cc-row .nm-flight{padding:14px;gap:10px}
.nm-cc-row .nm-fl-route{grid-template-columns:1fr;gap:4px}
.nm-cc-row .nm-fl-city{font-size:19px}.nm-cc-row .nm-fl-city.r{text-align:left;justify-self:start}
.nm-cc-row .nm-fl-line{height:22px;min-width:0}
.nm-cc-row .sub{font-size:12px}
.nm-cc-row .flash{box-shadow:none;border-color:var(--nm-line)}
.nm-cc-open{justify-self:start;border:1px solid var(--nm-teal);background:#fff;color:var(--nm-teal-d);border-radius:22px;padding:9px 16px;font-weight:700;font-size:13px}
.nm-cc-open:hover{background:var(--nm-teal-soft)}
.nm-credit{font-size:11px;color:var(--nm-muted);margin:8px 2px 0;order:8}
.nm-credit a{color:var(--nm-teal-d)}
@media(max-width:900px){.nm-chatcards{margin-left:0}}
.nm-cc-row .travel-icon{position:relative;width:48px;height:48px;border-radius:15px;background:linear-gradient(135deg,var(--nm-teal-soft),#f6e7d2);font-size:24px}
.nm-cc-row .nm-fl-tag{flex-wrap:wrap}
.composer textarea:focus,.composer textarea:focus-visible{outline:none!important}
.composer:focus-within{box-shadow:0 0 0 3px #7fcfc9aa,0 12px 35px #0e223022}

/* ---------- flight price table in the Flights section ---------- */
#flights .section-header{flex-wrap:wrap}
.nm-find{border:1px solid var(--nm-teal);background:#fff;color:var(--nm-teal-d);border-radius:22px;padding:8px 14px;font-weight:700;font-size:13px;margin-left:auto}
.nm-find:hover{background:var(--nm-teal-soft)}
.nm-table-head{display:grid;grid-template-columns:1fr 150px 130px;gap:12px;padding:0 18px 4px 74px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--nm-muted)}
.nm-table-head span:nth-child(2){text-align:right}.nm-table-head span:nth-child(3){text-align:right}
.travel-row.nm-offer{grid-template-columns:48px 1fr 150px auto;align-items:center}
.nm-offer .nm-prov{font-size:11px;color:var(--nm-muted);margin-top:2px}
.nm-price{text-align:right}
.nm-price strong{display:block;font-size:14px;color:var(--nm-muted);font-weight:650}
.nm-price.has strong{color:var(--nm-ink);font-size:22px;font-family:Georgia,serif}
.nm-price small{display:block;font-size:11px;color:#9a5a12;line-height:1.3;margin-top:2px}
@media(max-width:700px){.nm-table-head{display:none}.travel-row.nm-offer{grid-template-columns:44px 1fr}.nm-offer .nm-price{grid-column:2;text-align:left}.nm-offer .row-action{grid-column:2;justify-self:start}}

/* section headings: Ask then Go's own line icons instead of emoji (the i18n script rewrites the text, so the icon is CSS) */
#flights .section-header h3::before,#hotels .section-header h3::before,.route-card .section-top h3::before{content:'';display:inline-block;width:1em;height:1em;vertical-align:-.12em;margin-right:.4em;background:currentColor;-webkit-mask:var(--nm-h-ico) center/contain no-repeat;mask:var(--nm-h-ico) center/contain no-repeat}
#flights .section-header h3,.route-card .section-top h3{--nm-h-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10.5 20.5 13 14l5.5-1.3a2 2 0 0 0 0-3.9L13 10 10.5 3.5H8.5l1.5 6.5-5 .6-1.5-2H2l1.3 3.4L2 15.4h1.5l1.5-2 5 .6-1.5 6.5z' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
#hotels .section-header h3{--nm-h-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 18v-7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v7M3 15h18M6 9V7a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M3 20v-2M21 20v-2' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}

.nm-retry{display:block;margin-top:10px;border:2px solid var(--nm-teal-d);background:#fff;color:var(--nm-teal-d);border-radius:12px;padding:8px 14px;font:inherit;font-weight:700;font-size:13.5px;cursor:pointer;min-height:40px}.nm-retry:hover{background:var(--nm-teal-soft)}
/* the plan could not be built: said in the trip view, with a retry (audit 21.10) */
.nm-gen-fail{position:relative;z-index:10;margin:14px 0 18px;scroll-margin-top:120px;padding:20px 18px;border:1px solid #f0c9b8;border-radius:20px;background:#fff7f2;color:var(--nm-ink,#16323a);box-shadow:0 10px 28px #0e22301a}
.nm-gen-fail[hidden]{display:none}
.trip-side:has(.nm-gen-fail:not([hidden])) #liveResearch{display:none}
.nm-gen-fail h2{margin:0 0 8px;font-size:20px}
.nm-gen-failmsg{margin:0 0 6px;font-size:14px;color:#8a3b1e}
.nm-gen-failnote{margin:0 0 14px;font-size:13.5px;color:var(--nm-muted,#5b6870)}
.nm-gen-acts{display:flex;flex-wrap:wrap;gap:10px}
.nm-gen-retry,.nm-gen-back{min-height:44px;padding:10px 18px;border-radius:999px;font:inherit;font-size:14px;font-weight:700;cursor:pointer}
.nm-gen-retry{border:0;background:var(--nm-teal,#1d7a82);color:#fff}
.nm-gen-back{border:1.5px solid var(--nm-teal,#1d7a82);background:#fff;color:var(--nm-teal-d,#155f66)}
.nm-gen-retry:focus-visible,.nm-gen-back:focus-visible{outline:2px solid var(--nm-teal,#1d7a82);outline-offset:2px}

/* ---------- 22.10: planning on the full width, then ONE animated move into the two columns ----------
   State A (the question card is open, or an answer brought no plan yet): the chat alone, as wide as the page, the destination picture a
   hero banner inside the "Plan my trip" card (the right-hand panel showed the same picture twice before). State B (the plan is being
   built): the chat contracts into the left column while the dark panel comes in from the right, one movement (~.8 s,
   cubic-bezier(.22,1,.36,1)); the banner shrinks into the compact card. State C: the plan takes the panel's place; nothing is rebuilt.
   layla-ui.js sets .is-asking on #app from the real state (no plan being built, none on screen). A phone keeps its Chat | Trip switch. */
.app{transition:grid-template-columns .8s cubic-bezier(.22,1,.36,1)}
@keyframes slidepanel{from{transform:translateX(48px);opacity:.45}40%{opacity:1}to{transform:translateX(0);opacity:1}}
/* 28.10 (Octavian: "bara Buget · Zboruri · Cazări… tremură când dau scroll", phone and, a little, the Mac): the panel's entrance animation
   kept its last frame (fill "both" = transform: translateX(0) for ever), so the trip panel stayed a transformed layer and the sticky bar
   inside it was re-placed after each scroll frame (Safari, WebKit): it trembled. The animation now only plays; at rest the panel has no
   transform at all */
.app.has-plan .trip-side{opacity:1;transform:none;animation:slidepanel .8s cubic-bezier(.22,1,.36,1) backwards}
/* the overlay is opaque from its first frame (the panel slides in dark; the picture and the skeleton under it never show through):
   its content fades in a moment later, and the whole fades out when the plan takes its place */
.nm-gen.on{animation:none}
.nm-gen.on .nm-gen-in{animation:nmfade .5s .22s both}
.nm-gen.nm-gen-out{animation:nmfadeout .3s both}
.trip-side.nm-building .nm-preview{display:none}
@keyframes nmfadeout{from{opacity:1}to{opacity:0}}
@media(min-width:901px){
 .app.has-plan.is-asking{grid-template-columns:minmax(360px,100%) minmax(0,0%);--nm-gut:clamp(20px,4vw,60px);--nm-wide:1200px}
 .app.has-plan.is-asking .chat-side{border-right-color:transparent}
 .app.has-plan .trip-side{transition:opacity .3s ease}
 .app.has-plan.is-asking .trip-side{animation:none;opacity:0;visibility:hidden;pointer-events:none}
 /* the chat on the whole width, its content centred and no wider than reads well */
 .app.has-plan.is-asking .conversation{width:100%;max-width:calc(var(--nm-wide) + 2*var(--nm-gut));margin:0 auto;padding:26px var(--nm-gut) 150px;gap:22px}
 .app.has-plan.is-asking .nm-check,.app.has-plan.is-asking .chat-bottom{padding-left:max(var(--nm-gut),calc((100% - var(--nm-wide))/2));padding-right:max(var(--nm-gut),calc((100% - var(--nm-wide))/2))}
 .app.has-plan.is-asking .nm-check{padding-top:14px;padding-bottom:12px}
 .app.has-plan.is-asking .nm-check-top{font-size:13px}
 .app.has-plan.is-asking .nm-check-item{font-size:12.5px;padding:5px 12px}
 .app.has-plan.is-asking .msg .bubble{font-size:15px}
 .app.has-plan.is-asking .composer textarea{min-height:60px}

 /* the question card: the picture as a hero banner, the question in a larger type, a roomier field and button */
 .app.has-plan.is-asking .nm-intake:not(.done){border-radius:28px;box-shadow:0 18px 50px #0e223018}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-banner{height:clamp(200px,min(22vw,100vh - 560px),340px)}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-banner::after{background:linear-gradient(180deg,#041a2800 30%,#041a28d6 100%)}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-banner b{font-size:clamp(42px,5.2vw,70px);letter-spacing:-1.8px;padding:0 36px 46px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-kick{display:block;padding:0 36px 12px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-credit{opacity:1;pointer-events:auto;left:36px;right:36px;bottom:16px;font-size:11.5px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-body{padding:24px 36px 30px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-top span{margin-left:0;font-size:13px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-bar{margin:12px 0 22px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-body h3{font:600 clamp(26px,2.6vw,36px)/1.15 Georgia,serif;letter-spacing:-.8px;margin-bottom:8px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-hint{font-size:15px;margin-bottom:18px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-field{border-radius:18px;padding:0 18px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-field .nm-in-input{padding:17px 0;font-size:17px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-input:not(.nm-in-field .nm-in-input){padding:14px 16px;font-size:16px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-next{padding:15px 30px;font-size:16px;border-radius:16px;min-width:150px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-back{font-size:14px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-chip{padding:11px 18px;font-size:15px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-suggest{margin-top:12px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-sugbtn{font-size:14.5px;padding:9px 16px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-pax{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-pax .nm-in-ages,.app.has-plan.is-asking .nm-intake:not(.done) .nm-in-pax .nm-in-warn,.app.has-plan.is-asking .nm-intake:not(.done) .nm-in-pax .nm-in-roomsnote,.app.has-plan.is-asking .nm-intake:not(.done) .nm-in-pax .nm-in-said{grid-column:1/-1}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-aiwait{padding:34px 8px 30px}
}
/* a short window (a laptop at 768 px): the hero keeps its place, the name a size smaller, so the question and "Next" still show under it */
@media(min-width:901px) and (max-height:820px){
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-banner b{font-size:clamp(34px,4.4vw,52px);padding-bottom:40px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-kick{padding-bottom:8px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-body{padding:16px 36px 18px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-bar{margin:10px 0 14px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-body h3{font-size:clamp(22px,2.2vw,28px);margin-bottom:6px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-hint{font-size:14px;margin-bottom:12px}
 .app.has-plan.is-asking .nm-intake:not(.done) .nm-in-next{padding:12px 26px;font-size:15px}
}
/* the banner is one element in both states: its height, the name's size and the shade move with the layout (no second picture anywhere) */
.nm-in-banner{transition:height .8s cubic-bezier(.22,1,.36,1)}
.nm-in-banner b{transition:font-size .8s cubic-bezier(.22,1,.36,1),padding .8s cubic-bezier(.22,1,.36,1),letter-spacing .8s cubic-bezier(.22,1,.36,1)}
.nm-in-credit{transition:opacity .25s ease}
/* "Building your trip": what the plan is built from, as the page knows it (destination, departure, dates, length, travellers) */
.nm-gen-sum{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0;list-style:none;max-width:600px}
.nm-gen-sum li{border:1px solid #ffffff2e;background:#ffffff14;border-radius:999px;padding:6px 13px;font-size:13px;color:#d6ebe9;display:inline-flex;align-items:center;gap:6px}
.nm-gen-sum li b{font-weight:700;color:#fff}
.nm-gen-sum:empty{display:none}
.nm-gen-sub:empty{display:none}
@media(prefers-reduced-motion:reduce){.app,.app.has-plan .trip-side,.nm-in-banner,.nm-in-banner b,.nm-gen.on .nm-gen-in,.nm-gen.nm-gen-out{transition:none;animation:none}}
/* the questionnaire (23.10): the free chat composer is hidden while the card asks, on every screen size — a message typed there used to cut the
   questions short and lose the answers; "Prefer să scriu liber în chat" brings it back (desktop and phone alike) */
.app.is-intake #activeComposer:not(.nm-intake-free){display:none !important}
.nm-in-free{display:block;margin:10px auto 0;padding:4px 8px;border:0;background:none;color:var(--nm-muted,#6b6f76);font-size:12.5px;text-decoration:underline;cursor:pointer}
.nm-in-free:hover{color:var(--nm-ink,#222)}
