:root{--bg:#f4f3ef;--surface:#fff;--ink:#1e2825;--muted:#6c746f;--line:#dddcd6;--accent:#245b4a;--accent-soft:#e4eee9;--warn:#9b5b23;--shadow:0 18px 50px rgba(27,39,34,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer}.topbar{height:72px;padding:0 34px;display:flex;align-items:center;justify-content:space-between;background:#18392f;color:#fff}.brand{font-size:25px;font-weight:750}.subtitle{font-size:12px;opacity:.72}.status-pill{border:1px solid #ffffff38;border-radius:999px;padding:8px 13px;font-size:12px}.shell{max-width:1420px;margin:auto;padding:30px}.wizard{background:#fff;border-radius:18px;box-shadow:var(--shadow);overflow:hidden;min-height:700px}.stepper{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);background:#fafaf7}.step{border:0;background:transparent;padding:18px 20px;color:var(--muted);font-weight:650;text-align:left}.step span{display:inline-grid;place-items:center;width:27px;height:27px;border-radius:50%;border:1px solid #bfc4c1;margin-right:8px}.step.active{color:var(--accent);background:var(--accent-soft)}.step.active span{background:var(--accent);color:#fff;border-color:var(--accent)}.panel{display:none;padding:30px 34px 36px}.panel.active{display:block}.panel-heading{margin-bottom:24px}.panel-heading h1{margin:0 0 7px;font-size:28px}.panel-heading p,.section-title p{margin:0;color:var(--muted);line-height:1.45}.split{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.form-grid,.solve-options{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:18px;padding:22px;background:#fafaf8;border:1px solid var(--line);border-radius:14px}.solve-options{grid-template-columns:repeat(3,minmax(180px,1fr));margin-top:22px}label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:650}select,input[type=number]{width:100%;padding:10px 11px;border:1px solid #cfd3d0;border-radius:9px;background:#fff}.inline-input{display:flex;align-items:center;gap:8px}.inline-input span{color:var(--muted);font-size:11px;white-space:nowrap}.check-row{flex-direction:row;align-items:center;gap:9px;align-self:end;min-height:40px}.muted{color:var(--muted);font-weight:400}.section-title{margin:30px 0 14px;display:flex;align-items:baseline;justify-content:space-between;gap:20px}.section-title h2,.result-grid h2{margin:0;font-size:18px}.sliders{display:grid;grid-template-columns:repeat(2,1fr);gap:9px 26px}.slider-row{display:grid;grid-template-columns:minmax(220px,1fr) 1fr 130px;gap:15px;align-items:center;border-bottom:1px solid #eeeee9;padding:10px 0}.interest-name{display:flex;align-items:center;gap:8px}.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:0 0 auto}.slider-row .value{font-weight:750;color:var(--accent);font-size:12px}.actions{display:flex;gap:10px;margin-top:28px}.actions.right{justify-content:flex-end}.primary,.secondary,.ghost{border-radius:10px;padding:11px 17px;font-weight:700}.primary{border:1px solid var(--accent);background:var(--accent);color:#fff}.secondary{border:1px solid #bcc5c0;background:#fff;color:var(--accent)}.ghost{border:0;background:#f0f1ed;color:#45524c;padding:8px 12px}.candidate-tools{display:flex;align-items:center;gap:8px;margin-bottom:14px}.candidate-tools span{margin-left:auto;color:var(--muted);font-size:13px}.candidate-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.candidate{display:grid;grid-template-columns:28px 1fr auto;gap:11px;align-items:start;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:#fff}.candidate.excluded{opacity:.55;background:#f7f7f5}.candidate input{width:18px;height:18px;margin-top:3px;accent-color:var(--accent)}.candidate-name{font-weight:720}.candidate-meta{color:var(--muted);font-size:12px;margin-top:4px}.category-line{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.category-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;background:#f5f5f2;border-radius:999px;padding:4px 7px}.scorebox{text-align:right}.score-label{font-size:10px;color:var(--muted);text-transform:uppercase}.score{background:var(--accent-soft);color:var(--accent);padding:5px 8px;border-radius:999px;font-weight:750;font-size:13px;display:inline-block}.candidate-actions{display:flex;gap:12px;margin-top:9px}.link-btn{border:0;background:none;padding:0;font-size:12px;text-decoration:underline;color:var(--accent)}.link-btn.warn{color:var(--warn)}.itinerary-cards{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:10px;margin-bottom:18px}.itinerary-card{border:2px solid var(--route-color,#888);border-radius:13px;background:#fff;padding:12px;text-align:left}.itinerary-card.active{box-shadow:0 0 0 3px color-mix(in srgb,var(--route-color) 20%,transparent);background:#fafafa}.itinerary-card .rank{font-size:11px;color:var(--muted)}.itinerary-card .big{font-size:20px;font-weight:800}.itinerary-card .small{font-size:11px;color:var(--muted);margin-top:3px}.notice{padding:10px 12px;border:1px solid #deddd8;background:#fafaf8;border-radius:10px;color:var(--muted);font-size:12px;margin-bottom:16px}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:22px}.stat{border:1px solid var(--line);border-radius:12px;padding:13px;background:#fafaf8}.stat .k{color:var(--muted);font-size:11px;text-transform:uppercase}.stat .v{font-size:21px;font-weight:760;margin-top:3px}.result-grid{display:grid;grid-template-columns:minmax(340px,.8fr) minmax(520px,1.2fr);gap:22px}.route-list{margin-top:12px;border-top:1px solid var(--line)}.route-step{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:10px 3px;border-bottom:1px solid var(--line)}.bubble{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:750;background:#eef0ed;color:#59615d}.route-step.origin .bubble,.route-step.end .bubble{background:#1e2825;color:#fff}.route-step.transit{color:var(--muted)}.route-step .role{font-size:11px;color:var(--muted)}.route-cats{display:flex;gap:4px;margin-top:4px}.route-cat-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.map-card{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}#map{height:520px}.map-note{padding:9px 12px;color:var(--muted);font-size:11px;border-top:1px solid var(--line)}.diagnostics{margin-top:20px;color:var(--muted)}.diagnostics pre{background:#f6f6f3;border-radius:10px;padding:12px;overflow:auto;font-size:12px}.loading{position:fixed;inset:0;background:#151c195c;display:grid;place-items:center;z-index:2000;backdrop-filter:blur(2px)}.loading-card{display:flex;align-items:center;gap:14px;background:#203c33;color:#fff;padding:18px 20px;border-radius:14px;box-shadow:var(--shadow)}.loading-sub{font-size:12px;opacity:.75;margin-top:3px}.cancel-btn{border:1px solid #ffffff66;background:transparent;color:#fff;border-radius:9px;padding:9px 12px;margin-left:10px}.spinner{width:24px;height:24px;border:3px solid #ffffff55;border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;right:22px;bottom:22px;max-width:420px;background:#2d3531;color:#fff;padding:12px 15px;border-radius:10px;z-index:2500;box-shadow:var(--shadow)}.hidden{display:none!important}.modal{position:fixed;inset:0;background:#0007;display:grid;place-items:center;z-index:3000;padding:20px}.modal-card{width:min(620px,95vw);max-height:85vh;overflow:auto;background:#fff;border-radius:16px;padding:24px;position:relative;box-shadow:var(--shadow)}.modal-close{position:absolute;right:14px;top:10px;border:0;background:none;font-size:28px;color:var(--muted)}.modal h2{margin-top:0}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.detail-item{background:#f7f7f4;border-radius:9px;padding:10px}.detail-item .k{font-size:10px;color:var(--muted);text-transform:uppercase}.detail-item .v{font-weight:700;margin-top:3px}@media(max-width:1100px){.form-grid,.sliders,.candidate-list{grid-template-columns:1fr 1fr}.result-grid{grid-template-columns:1fr}.stats{grid-template-columns:repeat(3,1fr)}.itinerary-cards{grid-template-columns:repeat(3,1fr)}}@media(max-width:680px){.shell{padding:0}.wizard{border-radius:0}.topbar{padding:0 18px}.status-pill{display:none}.panel{padding:24px 18px}.form-grid,.sliders,.candidate-list,.stats,.solve-options,.itinerary-cards{grid-template-columns:1fr}.slider-row{grid-template-columns:1fr 1fr 110px}.split{flex-direction:column}}
.filter-legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin:-2px 0 14px;color:var(--muted);font-size:12px}.filter-row{grid-template-columns:minmax(220px,1fr) minmax(175px,.8fr) 130px}.filter-row select{padding:8px 9px}.notice.compact{margin-top:14px;margin-bottom:0}.muted-chip{opacity:.45;text-decoration:none}.dot-outline{background:transparent!important;border:2px solid currentColor}.category-details{display:grid;gap:7px}.category-detail{display:grid;grid-template-columns:14px minmax(130px,1fr) 90px minmax(170px,1.4fr);gap:8px;align-items:center;padding:8px 9px;border-radius:9px;background:#f7f7f4;font-size:12px}.category-detail.no-match{opacity:.55}.category-detail.match{background:#eef5f1}
@media(max-width:680px){.filter-row{grid-template-columns:1fr}.category-detail{grid-template-columns:14px 1fr}.category-detail span:nth-child(n+3){grid-column:2}}
.poi-lead{font-size:1.05rem;line-height:1.55;margin:.4rem 0 1rem}.poi-source{margin-top:1.1rem;padding-top:.8rem;border-top:1px solid #e5e7e6;color:#59635f;font-size:.9rem}.poi-source a{color:#1f6c55}.detail-item.wide{grid-column:span 2}
.constraint-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.constraint-card{border:1px solid var(--line);border-radius:13px;padding:15px;background:#f8f8f5;opacity:.62;transition:.15s}.constraint-card.active{opacity:1;border-color:#9bb2a8;background:#f2f7f4}.constraint-toggle{flex-direction:row;align-items:center;margin-bottom:12px;font-size:14px}.constraint-toggle input{width:18px;height:18px;accent-color:var(--accent)}.constraint-card .inline-input input:disabled{background:#ecece8;color:#999}.trip-grid{grid-template-columns:repeat(3,minmax(180px,1fr))}.stats{grid-template-columns:repeat(6,1fr)}
@media(max-width:1100px){.constraint-grid{grid-template-columns:1fr 1fr}.stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.constraint-grid,.trip-grid{grid-template-columns:1fr}}

/* v0.25 weather-aware POC */
.weather-card{display:grid;grid-template-columns:auto minmax(150px,1fr) minmax(130px,1fr) auto;gap:14px;align-items:end;padding:16px;border:1px solid #d8dfdb;border-radius:14px;background:#fbfcfb;margin-bottom:10px}
.weather-card label{display:grid;gap:6px}
.weather-current{grid-column:1/-1;font-size:13px;padding-top:2px}
.weather-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 8px;background:#eef3f0;font-size:12px;color:#44514c;margin-left:6px}
.weather-badge.penalty{background:#fff2e7;color:#85511f}
.weather-score{font-size:12px;color:#66716d;margin-top:3px}
@media(max-width:800px){.weather-card{grid-template-columns:1fr 1fr}.weather-card .constraint-toggle,.weather-current{grid-column:1/-1}}

/* v0.26 multi-day planning */
.time-limit-input select{width:105px;padding:10px 8px;border:1px solid #cfd3d0;border-radius:9px;background:#fff}.day-window-inline{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.day-window-inline label{font-size:11px;color:var(--muted)}input[type=time]{width:100%;padding:8px 9px;border:1px solid #cfd3d0;border-radius:9px;background:#fff}.multiday-suggest{margin-top:14px;display:flex;justify-content:space-between;align-items:center;gap:16px;border-color:#d4c19d;background:#fff9ed;color:#665231}.multiday-config{margin-top:16px;padding:16px;border:1px solid #cfded6;border-radius:14px;background:#f7faf8}.compact-title{margin:0 0 12px}.multiday-toolbar{display:flex;align-items:end;gap:10px;margin-bottom:12px}.multiday-toolbar label{max-width:150px}.day-plans{display:grid;gap:12px}.day-card{border:1px solid #d8dfdb;border-radius:12px;background:#fff;padding:14px}.day-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}.day-card-head span{color:var(--muted);font-size:12px}.day-grid{display:grid;grid-template-columns:repeat(4,minmax(135px,1fr));gap:10px}.day-route-group{margin-bottom:22px}.day-route-title{display:flex;justify-content:space-between;border-left:5px solid;padding:8px 10px;background:#f7f8f6;border-radius:7px;margin-bottom:4px}.day-route-title span{color:var(--muted);font-size:12px}.day-result-card{min-height:108px}@media(max-width:900px){.day-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.day-grid{grid-template-columns:1fr}.multiday-suggest,.multiday-toolbar{align-items:stretch;flex-direction:column}}

/* v0.26.4 route inspection */
.route-step{width:100%;text-align:left;border:0;background:transparent;cursor:pointer;font:inherit;color:inherit}
.route-step:hover{background:rgba(0,0,0,.045)}
.route-step.poi-highlighted{outline:2px solid currentColor;outline-offset:-2px;background:rgba(255,255,255,.8)}
.day-selector{display:flex;gap:.45rem;flex-wrap:wrap;margin:0 0 .8rem}
.day-focus{border:1px solid #ccd2cf;background:#fff;border-radius:999px;padding:.42rem .72rem;cursor:pointer}
.day-focus.active{border-color:#222;background:#222;color:#fff}
.day-route-title{width:100%;display:flex;justify-content:space-between;align-items:center;border:0;border-left:5px solid;padding:.55rem .65rem;background:rgba(0,0,0,.035);cursor:pointer;color:inherit}
.day-route-group.dimmed{opacity:.45}

.visit-choice{display:flex;align-items:center;gap:8px;margin:.45rem 0;font-size:.88rem}.visit-choice select{max-width:220px}.visit-detail{font-size:.82rem;color:#52605b;margin-top:3px;line-height:1.25}.day-auto-note strong{color:#34433e}

/* v0.27.4 multi-layer drill-down */
.route-step.has-local{border-left:3px solid var(--accent);padding-left:8px;background:linear-gradient(90deg,var(--accent-soft),transparent 48%)}
.local-open{margin-top:6px;font-size:12px;font-weight:750;color:var(--accent)}
.local-drill-head{display:flex;gap:14px;align-items:flex-start;padding:14px 4px 16px;border-bottom:1px solid var(--line)}
.local-back{border:1px solid #bcc5c0;background:#fff;color:var(--accent);border-radius:9px;padding:8px 11px;font-weight:700;white-space:nowrap}
.local-context{font-size:11px;color:var(--muted);text-transform:uppercase;margin-bottom:2px}
.local-summary{font-size:12px;color:var(--muted);margin-top:4px}
.local-poi-list{display:grid;margin-top:8px}
.local-poi{width:100%;display:grid;grid-template-columns:36px 1fr;gap:10px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:10px 4px;color:inherit}
.local-poi:hover{background:rgba(0,0,0,.045)}
.urban-marker{display:grid;place-items:center;border-radius:50%;color:#fff;border:2px solid white;box-shadow:0 2px 8px #0004;font-weight:800;font-size:12px}
.urban-marker.gateway{width:30px;height:30px;background:#1e2825}
.urban-marker.selected{border:4px solid #111;box-shadow:0 3px 12px #0006}
@media(max-width:680px){.local-drill-head{flex-direction:column}.local-back{width:100%}}
.local-contents{font-size:11px;color:var(--muted);margin-top:4px;line-height:1.35}

.field-help{display:block;margin-top:5px;font-size:12px;line-height:1.35;color:#6f7874}
.poi-photo{margin:0 0 18px 0}.poi-photo img{display:block;width:100%;max-height:360px;object-fit:cover;border-radius:12px}.poi-photo figcaption{margin-top:6px;font-size:11px;color:#6f7874;line-height:1.3}

/* v0.28.7 */
.interest-section{margin:18px 0 8px;padding:10px 12px;border-radius:10px;background:#f6f7f5;border:1px solid #e0e5df}
.interest-section.commercial{background:#faf7f2;border-color:#eadfce}
.interest-section-title{font-weight:800;margin-bottom:8px}
.interest-section-note{font-size:.9rem;color:#68716d;margin-bottom:10px}
.city-visit-config{margin-top:10px;padding:10px;border:1px solid #dde3df;border-radius:10px;background:#fbfcfb}
.city-visit-config.hidden{display:none}
.city-poi-row{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid #ecefec}
.city-poi-row:last-child{border-bottom:0}
.city-poi-meta{font-size:.84rem;color:#68716d}
.poi-photo img{max-width:100%;max-height:340px;object-fit:cover;border-radius:10px;display:block;margin:auto}
.poi-photo figcaption{font-size:.8rem;color:#69726e;margin-top:5px}

/* v0.28.8 */
#interest-sliders .interest-section{grid-column:1/-1;width:100%;}
#interest-sliders .interest-section + .interest-section{margin-top:10px;border-top-width:2px;}
.poi-photo-fallback{padding:12px;border:1px solid #eadfce;border-radius:10px;background:#fff9ed;color:#665231;margin-bottom:8px;}
.city-poi-row .local-details-btn{margin-top:4px;padding:0;}
.candidate.priority{border-color:#b28b32;box-shadow:0 0 0 2px rgba(178,139,50,.10)}
.priority-toggle,.local-priority-btn{color:#8a681b!important;font-weight:700}

/* v0.29.6 route interaction */
.route-step{cursor:pointer}
.route-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}
.route-actions .link-btn{position:relative;z-index:2}
.local-poi{cursor:pointer;grid-template-columns:36px minmax(0,1fr)}
.local-poi.poi-highlighted{outline:2px solid currentColor;outline-offset:-2px;background:rgba(255,255,255,.8)}
.route-step:focus-visible,.local-poi:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.candidate.constrained,.city-poi-row.constrained{border-color:#6b4fa3;box-shadow:0 0 0 2px rgba(107,79,163,.10)}
.visit-constraint-editor{display:grid;grid-template-columns:120px 150px 150px auto;gap:8px;align-items:end;margin-top:10px;padding:10px;border:1px solid #ddd6ec;border-radius:10px;background:#faf8ff}
.visit-constraint-editor label{font-size:11px}.visit-constraint-editor input[type=time],.visit-constraint-editor select{width:100%;padding:8px 9px;border:1px solid #cfd3d0;border-radius:8px;background:#fff}.visit-constraint-editor .constraint-remove{align-self:center;margin-bottom:8px}.constraint-toggle,.local-constraint-btn{color:#6b4fa3}
@media(max-width:760px){.visit-constraint-editor{grid-template-columns:1fr 1fr}.visit-constraint-editor .constraint-remove{margin-bottom:0}}

/* v0.31 service stops + runtime anchors */
.advanced-block{margin:18px 0;border:1px solid #d8dfdb;border-radius:14px;background:#fbfcfb;overflow:hidden}
.advanced-block>summary{cursor:pointer;padding:15px 17px;list-style:none;display:flex;gap:8px;align-items:center}
.advanced-block>summary::-webkit-details-marker{display:none}
.advanced-block>summary:after{content:'+';margin-left:auto;font-size:20px;font-weight:700}
.advanced-block[open]>summary:after{content:'−'}
.advanced-block-body{padding:0 17px 17px}
.service-plans{display:grid;gap:12px;margin-top:12px}
.service-day-card{border:1px solid #d8dfdb;border-radius:12px;padding:14px;background:white}
.service-day-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.service-row{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(190px,1.2fr) minmax(130px,.8fr);gap:10px;align-items:end;padding:10px 0;border-top:1px solid #edf0ee}
.service-row:first-of-type{border-top:0}
.service-row label{display:grid;gap:5px}
.service-extra{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;align-items:end}
.service-address-grid{grid-column:1/-1;display:grid;grid-template-columns:minmax(140px,.7fr) minmax(260px,1.6fr) auto;gap:10px;align-items:end}
.service-verify-result{grid-column:1/-1;font-size:12px;color:#66716d;min-height:16px}
.service-summary{font-size:12px;color:#66716d}
.route-step.service-stop{border-left-width:4px}
.route-step .service-badge{display:inline-flex;padding:2px 7px;border-radius:999px;background:#eef3f0;font-size:11px;font-weight:700;margin-right:6px}
.free-break-row{margin:8px 0 0 46px;padding:8px 10px;border-left:3px solid #c7cfca;background:#f7f9f8;border-radius:8px;font-size:13px}
@media(max-width:850px){.service-row{grid-template-columns:1fr}.service-extra,.service-address-grid{grid-template-columns:1fr}.service-extra,.service-address-grid{grid-column:1}}

/* v0.32 soft constraint tolerances */
.soft-limit-block{margin-top:12px}
.soft-limit-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:12px;margin-top:10px}
.soft-limit-grid>label{display:grid;gap:6px}
.soft-limit-grid input:disabled{background:#ecece8;color:#999}
.soft-limit-note{margin-top:10px;font-size:12px}
.soft-penalty-badge{display:inline-flex;padding:2px 7px;border-radius:999px;background:#fff1dc;color:#80500e;font-size:11px;font-weight:700;margin-left:5px}
@media(max-width:760px){.soft-limit-grid{grid-template-columns:1fr}}

/* v0.33.1 urban itinerary cards */
.city-route-action{border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent);border-radius:8px;padding:6px 9px;font-size:12px;font-weight:750;line-height:1.1}
.city-route-action:hover{background:#d9e9e1}
.local-poi-list{gap:10px;padding-top:4px}
.local-poi.local-poi-card{grid-template-columns:36px 112px minmax(0,1fr);align-items:start;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px;box-shadow:0 5px 18px rgba(27,39,34,.04)}
.local-poi.local-poi-card:hover{background:#fbfcfb;border-color:#c7d1cc}
.local-poi.local-poi-card .bubble{margin-top:4px}
.local-poi-photo{width:112px;height:82px;border-radius:9px;overflow:hidden;background:#eef0ed;position:relative}
.local-poi-photo img{width:100%;height:100%;object-fit:cover;display:block}
.local-poi-photo-placeholder{display:none;width:100%;height:100%;place-items:center;padding:8px;text-align:center;color:var(--muted);font-size:11px;background:#f1f2ef}
.local-poi-photo.photo-missing .local-poi-photo-placeholder{display:grid}
.local-poi-body{min-width:0}
.local-poi-title{font-size:14px;line-height:1.25;margin:1px 0 3px}
.local-poi-description{font-size:12px;line-height:1.45;color:#4f5c57;margin-top:6px;max-width:72ch}
.compact-action{padding:6px 9px;font-size:11px;border-radius:8px}
.local-empty{padding:16px 4px}
@media(max-width:680px){.local-poi.local-poi-card{grid-template-columns:32px 82px minmax(0,1fr)}.local-poi-photo{width:82px;height:68px}.local-poi-description{grid-column:2/-1}}

/* v0.34.0 — interface cleanup ------------------------------------------------ */
:root{
  --bg:#f3f5f2;
  --surface:#ffffff;
  --surface-soft:#f8faf8;
  --surface-tint:#eef4f0;
  --ink:#1d2925;
  --muted:#68736e;
  --line:#dfe5e1;
  --line-strong:#cbd5cf;
  --accent:#245b4a;
  --accent-strong:#194637;
  --accent-soft:#e7f0eb;
  --warn:#8d5627;
  --shadow:0 16px 42px rgba(31,45,39,.07);
  --shadow-soft:0 4px 16px rgba(31,45,39,.045);
  --radius-lg:18px;
  --radius-md:13px;
  --radius-sm:9px;
}
html{background:var(--bg)}
body{background:var(--bg);line-height:1.45}
button,input,select{font:inherit}
button{transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid rgba(36,91,74,.18);outline-offset:2px}

.topbar{height:66px;padding:0 30px;background:#193b31;border-bottom:1px solid rgba(255,255,255,.08)}
.brand{font-size:23px;letter-spacing:-.02em}
.subtitle{margin-top:1px;font-size:11px;letter-spacing:.01em;opacity:.68}
.status-pill{padding:6px 11px;border-color:rgba(255,255,255,.24);background:rgba(255,255,255,.055);font-size:11px}
.shell{max-width:1500px;padding:24px 28px 34px}
.wizard{min-height:680px;border:1px solid rgba(210,218,214,.8);border-radius:var(--radius-lg);box-shadow:var(--shadow)}

.stepper{background:#fbfcfa;border-bottom:1px solid var(--line);padding:0 18px}
.step{position:relative;padding:15px 18px;font-size:13px;font-weight:680}
.step span{width:25px;height:25px;font-size:11px;border-color:#c8d0cc;background:#fff}
.step.active{background:transparent;color:var(--accent-strong)}
.step.active:after{content:"";position:absolute;left:18px;right:18px;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:var(--accent)}
.step.active span{background:var(--accent);border-color:var(--accent)}

.panel{padding:32px 38px 40px}
.panel-heading{margin-bottom:22px}
.panel-heading h1{font-size:27px;letter-spacing:-.025em;margin-bottom:5px}
.panel-heading p,.section-title p{max-width:850px;font-size:13px}
.section-title{margin:32px 0 13px;padding-top:4px}
.section-title h2,.result-grid h2{font-size:17px;letter-spacing:-.01em}

.form-grid,.solve-options{gap:16px;padding:18px;background:var(--surface-soft);border-color:var(--line);border-radius:var(--radius-md)}
.trip-grid{grid-template-columns:repeat(4,minmax(175px,1fr))}
label{gap:6px;color:#34423c;font-size:12px;letter-spacing:.005em}
select,input[type=number],input[type=date],input[type=time],input[type=text],input[type=search]{
  width:100%;min-height:40px;padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;color:var(--ink)
}
select:hover,input:hover{border-color:#aebbb4}
select:disabled,input:disabled{background:#eef0ed;color:#8a928e;border-color:#e1e5e2}
.check-row{min-height:40px;padding-bottom:2px}
input[type=checkbox]{accent-color:var(--accent)}

.constraint-grid{gap:10px}
.constraint-card{min-height:104px;padding:14px 15px;border-color:var(--line);border-radius:var(--radius-md);background:#f5f6f4;opacity:.7}
.constraint-card.active{background:#f8fbf9;border-color:#aebfb6;box-shadow:inset 3px 0 0 var(--accent);opacity:1}
.constraint-toggle{font-size:13px;color:var(--ink)}
.inline-input span{font-size:10px}
.day-window-inline{margin-top:8px}

.advanced-block{margin:12px 0;border-color:var(--line);border-radius:var(--radius-md);background:#fbfcfb;box-shadow:none}
.advanced-block>summary{min-height:48px;padding:13px 15px;color:#36443e}
.advanced-block>summary strong{font-size:13px}
.advanced-block>summary:after{font-size:18px;color:#718078}
.advanced-block[open]{background:#fff;border-color:#cfd9d3}
.advanced-block[open]>summary{border-bottom:1px solid #edf0ee}
.advanced-block-body{padding:14px 15px 16px}
.weather-block{margin-top:18px}
.weather-card{border-radius:11px;background:var(--surface-soft)}

.notice{padding:9px 11px;border-color:#e1e5e2;background:#fafbf9;border-radius:9px;line-height:1.4}
.notice:empty{display:none}
.notice.compact{margin-top:10px}
.multiday-suggest{border-color:#c8d6ce;background:#f4f8f5}
.multiday-config{border-color:#ccd8d1;background:#f8faf8}

.filter-legend{gap:6px 14px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fafbf9;font-size:11px}
.interest-section{margin:10px 0 0;padding:14px 16px;background:#fff;border-color:var(--line);border-radius:12px}
.interest-section.commercial{background:#fff;border-color:var(--line)}
.interest-section-title{font-size:15px;letter-spacing:-.01em}
.interest-section-note{margin:2px 0 7px;font-size:12px}
.slider-row{padding:9px 0;border-bottom-color:#edf0ee}
.filter-row{grid-template-columns:minmax(260px,1fr) minmax(210px,280px) 110px}
.filter-row .value{text-align:right;font-size:11px}
.interest-name{font-size:13px}
.interest-name .city-poi-meta{margin-top:2px;font-size:10px;line-height:1.35}

.primary,.secondary,.ghost{min-height:38px;border-radius:9px;padding:9px 15px;font-size:12px;letter-spacing:.005em}
.primary{background:var(--accent);border-color:var(--accent);box-shadow:0 5px 14px rgba(36,91,74,.12)}
.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}
.secondary:hover{background:var(--accent-soft);border-color:#9eb4a8}
.ghost:hover{background:#e7ebe8}
.actions{margin-top:22px}

.candidate-tools{position:sticky;top:0;z-index:8;margin:0 0 12px;padding:8px 10px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);box-shadow:var(--shadow-soft)}
.candidate-tools span{font-weight:650;color:#59665f}
.candidate-list{gap:12px}
.candidate{position:relative;grid-template-columns:28px minmax(0,1fr) auto;gap:12px;padding:15px 15px 14px;border-color:var(--line);border-radius:14px;box-shadow:var(--shadow-soft)}
.candidate:hover{border-color:#c6d2cb;box-shadow:0 8px 24px rgba(31,45,39,.07)}
.candidate.excluded{opacity:.58;box-shadow:none}
.candidate.priority{border-color:#c8aa67}
.candidate.constrained{border-color:#9e90bb}
.candidate-name{font-size:14px;line-height:1.3}
.candidate-meta{margin-top:3px;font-size:11px}
.visit-choice{margin:.55rem 0 .35rem;font-size:12px}
.category-line{gap:5px;margin-top:8px}
.category-chip{padding:3px 6px;background:#f3f5f2;font-size:10px}
.candidate-actions{gap:10px;margin-top:10px;padding-top:8px;border-top:1px solid #edf0ee}
.link-btn{font-size:11px;text-decoration:none;color:#356451}
.link-btn:hover{text-decoration:underline}
.scorebox{min-width:82px;padding-left:8px}
.score-label{font-size:9px}
.score{padding:5px 8px;font-size:13px}
.weather-score{margin-top:3px;font-size:9px;color:var(--muted)}
.city-visit-config{background:#f8faf8;border-color:var(--line)}

.core-solve-options{grid-template-columns:repeat(2,minmax(200px,1fr));margin-top:20px}
.solver-advanced{margin-top:10px}
.advanced-solve-options{display:block;margin:0;padding:0;border:0;background:transparent;max-width:360px}

.itinerary-cards{grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:10px;margin-bottom:16px}
.itinerary-card{min-height:118px;padding:13px 14px;border:1px solid var(--line);border-top:4px solid var(--route-color,#888);border-radius:13px;background:#fff;box-shadow:var(--shadow-soft)}
.itinerary-card:hover{border-color:#bcc8c1;transform:translateY(-1px);box-shadow:0 8px 24px rgba(31,45,39,.07)}
.itinerary-card.active{border-color:var(--route-color);background:#fbfdfc;box-shadow:0 0 0 2px color-mix(in srgb,var(--route-color) 14%,transparent),var(--shadow-soft)}
.itinerary-card .rank{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.035em}
.itinerary-card .big{margin-top:3px;font-size:23px;line-height:1.1}
.itinerary-card .small{font-size:10px;line-height:1.4}

.stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin-bottom:20px}
.stat{min-height:70px;padding:11px 12px;border-color:var(--line);border-radius:11px;background:#fbfcfa}
.stat .k{font-size:9px;letter-spacing:.04em}
.stat .v{margin-top:2px;font-size:18px;line-height:1.25}

.result-grid{grid-template-columns:minmax(420px,.88fr) minmax(520px,1.12fr);gap:20px;align-items:start}
.route-column{min-width:0}
.result-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}
.result-section-head .muted{font-size:10px;text-align:right}
.route-list{display:grid;gap:8px;margin-top:0;border-top:0}
.route-step{position:relative;grid-template-columns:36px minmax(0,1fr) auto;gap:10px;align-items:start;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;box-shadow:0 2px 10px rgba(31,45,39,.025)}
.route-step:hover{background:#fbfdfb;border-color:#c6d2cb}
.route-step.transit{padding-top:8px;padding-bottom:8px;background:#f8f9f7;color:#77827c;box-shadow:none}
.route-step.origin,.route-step.end{background:#f6f8f6}
.route-step.has-local{padding-left:12px;border-left:4px solid var(--accent);background:linear-gradient(90deg,#edf5f0 0,#fff 36%)}
.route-step.poi-highlighted{outline:3px solid rgba(36,91,74,.18);outline-offset:0;background:#fbfdfc}
.route-step .role{margin-top:2px;font-size:10px;line-height:1.45}
.route-step>div:last-child{padding-top:2px;font-size:12px;font-weight:750;color:var(--accent)}
.bubble{width:28px;height:28px}
.visit-detail{margin-top:4px;font-size:11px;line-height:1.35}
.route-actions{gap:9px;margin-top:8px}
.city-route-action{padding:6px 9px;border-radius:8px;background:#e8f2ec}
.route-cats{margin-top:5px}
.free-break-row{margin:2px 0 2px 46px;padding:9px 11px;border-left:3px solid #c5b37c;background:#fbf8ef;border-radius:8px;font-size:11px;color:#5f5947}
.service-badge{background:#e9f0ec}

.map-card{position:sticky;top:18px;align-self:start;border-color:var(--line);border-radius:14px;box-shadow:var(--shadow-soft)}
#map{height:590px;background:#edf0ed}
.map-note{padding:9px 11px;background:#fbfcfb;font-size:10px;line-height:1.4}
.diagnostics{margin-top:18px;padding-top:4px;border-top:1px solid var(--line);font-size:12px}
.diagnostics summary{cursor:pointer;padding:8px 0}
.diagnostics pre{max-height:360px;background:#f7f8f6;font-size:11px}

.day-selector{margin-bottom:10px}
.day-focus{padding:.4rem .68rem;border-color:var(--line-strong);font-size:11px}
.day-focus.active{background:var(--accent-strong);border-color:var(--accent-strong)}
.day-route-group{display:grid;gap:7px;margin-bottom:15px}
.day-route-title{min-height:44px;margin-bottom:0;padding:9px 11px;border-left-width:4px;border-radius:9px;background:#f5f7f5}
.day-route-title strong{font-size:13px}
.day-route-title span{font-size:10px;text-align:right}
.day-route-group.dimmed{opacity:.38}

.local-drill-head{padding:10px 2px 14px}
.local-context{font-size:9px;letter-spacing:.05em}
.local-summary{font-size:11px;line-height:1.45}
.local-contents{font-size:10px}
.local-poi-list{gap:8px;padding-top:8px}
.local-poi.local-poi-card{grid-template-columns:34px 126px minmax(0,1fr);gap:11px;padding:10px;border-color:var(--line);border-radius:12px;box-shadow:var(--shadow-soft)}
.local-poi-photo{width:126px;height:88px;border-radius:9px}
.local-poi-title{font-size:13px}
.local-poi-description{font-size:11px;line-height:1.4}

.modal{background:rgba(14,22,19,.55);backdrop-filter:blur(3px)}
.modal-card{width:min(720px,95vw);padding:25px;border:1px solid rgba(255,255,255,.8);border-radius:18px}
.modal h2{font-size:24px;letter-spacing:-.02em}
.poi-lead{font-size:14px;line-height:1.55}
.detail-grid{gap:8px}
.detail-item{background:#f7f9f7;border:1px solid #edf0ee}

.loading{background:rgba(19,29,25,.38)}
.loading-card{background:#1c4034;border:1px solid rgba(255,255,255,.12)}
.toast{background:#26352f}

@media(max-width:1180px){
  .trip-grid{grid-template-columns:repeat(3,minmax(170px,1fr))}
  .result-grid{grid-template-columns:1fr}
  .map-card{position:relative;top:auto}
  #map{height:500px}
  .candidate-list{grid-template-columns:1fr}
}
@media(max-width:860px){
  .shell{padding:16px}
  .panel{padding:26px 24px 32px}
  .trip-grid,.constraint-grid{grid-template-columns:1fr 1fr}
  .filter-row{grid-template-columns:1fr 220px 90px}
}
@media(max-width:680px){
  .topbar{height:60px;padding:0 16px}
  .brand{font-size:21px}
  .shell{padding:0}
  .wizard{border:0;border-radius:0;box-shadow:none}
  .stepper{padding:0 6px}
  .step{padding:12px 8px;text-align:center;font-size:11px}
  .step span{display:grid;margin:0 auto 3px}
  .step.active:after{left:8px;right:8px}
  .panel{padding:22px 16px 30px}
  .panel-heading h1{font-size:24px}
  .trip-grid,.constraint-grid,.sliders,.stats,.solve-options,.itinerary-cards{grid-template-columns:1fr}
  .form-grid{padding:13px}
  .filter-row{grid-template-columns:1fr}
  .filter-row .value{text-align:left}
  .candidate-tools{position:static;flex-wrap:wrap}
  .candidate-tools span{width:100%;margin-left:0}
  .candidate{grid-template-columns:26px minmax(0,1fr)}
  .scorebox{grid-column:2;text-align:left;padding-left:0;display:flex;align-items:center;gap:6px}
  .score-label{display:none}
  .candidate-actions{gap:8px}
  .result-section-head{display:block}
  .result-section-head .muted{display:block;margin-top:2px;text-align:left}
  .route-step{grid-template-columns:32px minmax(0,1fr)}
  .route-step>div:last-child{grid-column:2;padding-top:0}
  #map{height:420px}
  .day-route-title{align-items:flex-start;flex-direction:column}
  .day-route-title span{text-align:left}
  .local-poi.local-poi-card{grid-template-columns:30px 86px minmax(0,1fr)}
  .local-poi-photo{width:86px;height:68px}
  .local-poi-description{grid-column:2/-1}
  .free-break-row{margin-left:42px}
}
.itinerary-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.itinerary-efficiency{display:inline-flex;padding:3px 6px;border-radius:999px;background:#f0f3f1;color:#53605a;font-size:9px;font-weight:700;white-space:nowrap}
.itinerary-card .big span{font-size:10px;font-weight:650;color:var(--muted)}
.itinerary-facts{margin-top:5px!important;color:#4f5c56!important;font-weight:650}
.itinerary-detail{margin-top:4px!important}

/* v0.36.3 — tester login and personal area ---------------------------------- */
input[type=email],input[type=password]{
  width:100%;min-height:40px;padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;color:var(--ink)
}
.topbar-actions{display:flex;align-items:center;gap:9px}
.topbar-user,.topbar-logout{min-height:34px;border-radius:9px;padding:7px 11px;font-size:11px;font-weight:700}
.topbar-user{border:1px solid rgba(255,255,255,.42);background:rgba(255,255,255,.1);color:#fff}
.topbar-user:hover{background:rgba(255,255,255,.17)}
.topbar-logout{border:0;background:transparent;color:rgba(255,255,255,.75)}
.topbar-logout:hover{color:#fff;background:rgba(255,255,255,.08)}
.auth-screen{position:fixed;inset:0;z-index:5000;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#17382e,#245b4a 55%,#e5eee9 170%)}
.auth-card{width:min(440px,94vw);padding:30px;border:1px solid rgba(255,255,255,.55);border-radius:20px;background:#fff;box-shadow:0 26px 70px rgba(12,31,24,.25)}
.auth-brand{font-size:30px;font-weight:800;letter-spacing:-.03em;color:var(--accent-strong)}
.auth-subtitle{margin:2px 0 22px;color:var(--muted);font-size:13px}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:4px;border-radius:11px;background:#f0f3f1;margin-bottom:18px}
.auth-tab{min-height:38px;border:0;border-radius:8px;background:transparent;color:#65706b;font-weight:700;font-size:12px}
.auth-tab.active{background:#fff;color:var(--accent-strong);box-shadow:0 2px 8px rgba(31,45,39,.08)}
.auth-form{display:grid;gap:13px}
.auth-form label{font-size:12px}
.auth-submit{margin-top:4px;min-height:43px}
.auth-hint{margin-top:-6px;color:var(--muted);font-size:11px;line-height:1.4}
.auth-message{min-height:18px;margin-top:14px;color:#8b3f2f;font-size:12px;line-height:1.4}
.auth-message.success{color:var(--accent)}
.result-heading-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.user-modal-card{width:min(820px,96vw)}
.user-area-head{display:flex;justify-content:space-between;gap:15px;margin-bottom:18px}
.user-area-head h2{margin-bottom:3px}
.profile-card,.saved-section{border:1px solid var(--line);border-radius:13px;background:#fbfcfb;padding:15px}
.saved-section{margin-top:14px}
.user-section-title{font-size:13px;font-weight:780;color:#314039;margin-bottom:11px}
.saved-title{display:flex;align-items:center;justify-content:space-between;gap:12px}
.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.profile-grid input[readonly]{background:#f1f3f1;color:#69736e}
.compact-actions{margin-top:11px}
.saved-itineraries{display:grid;gap:9px}
.saved-itinerary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:11px;background:#fff}
.saved-itinerary-title{font-size:13px;font-weight:760;line-height:1.35}
.saved-itinerary-meta{margin-top:3px;color:var(--muted);font-size:11px;line-height:1.45}
.saved-itinerary-actions{display:flex;gap:7px;align-items:center}
.saved-itinerary-actions button{white-space:nowrap}
.saved-empty{padding:18px 4px;color:var(--muted);font-size:12px;text-align:center}
@media(max-width:680px){
  .topbar-actions{gap:4px}.topbar-user,.topbar-logout{padding:6px 8px}.auth-card{padding:23px 20px}.result-heading-actions{width:100%;justify-content:stretch}.result-heading-actions button{flex:1}.profile-grid{grid-template-columns:1fr}.saved-itinerary{grid-template-columns:1fr}.saved-itinerary-actions{justify-content:flex-start}.user-modal-card{padding:22px 16px}
}

/* v0.36.3 UI colour refresh — tester preview ------------------------------- */
:root{
  --accent:#28745e;
  --accent-strong:#174b3a;
  --accent-soft:#e5f3ed;
  --accent-warm:#d88945;
  --accent-warm-strong:#ad6127;
  --accent-warm-soft:#fff2e5;
  --accent-sky:#4d8296;
  --accent-sky-soft:#e9f3f6;
  --surface-soft:#f7faf7;
  --line:#dbe4de;
  --line-strong:#c4d1ca;
}

body{
  background:
    radial-gradient(circle at 8% 2%,rgba(216,137,69,.10),transparent 26rem),
    radial-gradient(circle at 92% 10%,rgba(77,130,150,.09),transparent 30rem),
    var(--bg);
}

.topbar{
  background:linear-gradient(105deg,#143e31 0%,#1d5a47 58%,#366f65 100%);
  box-shadow:0 5px 22px rgba(19,57,46,.16);
}
.brand{position:relative;color:#fff}
.brand:after{
  content:"";display:inline-block;width:7px;height:7px;margin-left:7px;border-radius:50%;
  background:var(--accent-warm);vertical-align:super;box-shadow:0 0 0 4px rgba(216,137,69,.16)
}
.status-pill{background:rgba(255,255,255,.10)}
.topbar-user{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.48)}

.wizard{background:rgba(255,255,255,.97)}
.stepper{background:linear-gradient(90deg,#fbfdfb,#fafcfb)}
.step.active{color:var(--accent-strong)}
.step.active:after{background:linear-gradient(90deg,var(--accent),var(--accent-warm))}
.step.active span{background:linear-gradient(145deg,var(--accent),#34866e);box-shadow:0 3px 10px rgba(40,116,94,.22)}

.panel-heading h1{color:#183e32}
.section-title h2,.result-grid h2{color:#214c3e}
.section-title h2:before,.result-section-head h2:before{
  content:"";display:inline-block;width:5px;height:16px;margin-right:8px;border-radius:4px;
  background:linear-gradient(180deg,var(--accent-warm),#e3ae66);vertical-align:-2px
}

.form-grid,.solve-options{
  background:linear-gradient(135deg,#f7fbf8 0%,#fbfaf6 100%);
  border-color:#d7e3dc;
}
.constraint-card.active{
  background:linear-gradient(90deg,#f0f8f4,#fbfdfb);
  border-color:#a9c9b9;
  box-shadow:inset 4px 0 0 var(--accent),0 3px 12px rgba(34,91,71,.045)
}
.advanced-block>summary:hover{background:#f3f8f5}
.advanced-block[open]>summary{background:linear-gradient(90deg,#eff7f3,#fbfcfb)}
.weather-card{background:linear-gradient(135deg,var(--accent-sky-soft),#f9fbfa)}
.multiday-config{background:linear-gradient(135deg,#f3faf6,#fbfaf5)}

.primary{
  background:linear-gradient(135deg,var(--accent),#34866e);
  border-color:var(--accent);
  box-shadow:0 6px 16px rgba(40,116,94,.18)
}
.primary:hover{
  background:linear-gradient(135deg,var(--accent-strong),var(--accent));
  border-color:var(--accent-strong);
  box-shadow:0 8px 20px rgba(31,91,73,.22)
}
.secondary{border-color:#a8beb3;background:#fff;color:var(--accent-strong)}
.secondary:hover{background:var(--accent-soft);border-color:#84ab98}
.ghost:hover{background:#eaf2ed}

.notice{border-left:3px solid #bfd4c8;background:#fbfdfb}
.multiday-suggest{border-left-color:var(--accent-warm);background:var(--accent-warm-soft);color:#694b32}
.filter-legend{border-left:3px solid var(--accent-sky);background:var(--accent-sky-soft)}

.candidate{overflow:hidden}
.candidate:before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#dbe5df
}
.candidate:hover:before{background:var(--accent)}
.candidate.priority:before{background:var(--accent-warm)}
.candidate.constrained:before{background:#8470aa}
.score{background:linear-gradient(135deg,var(--accent-soft),#eef8f4);color:var(--accent-strong)}
.category-chip{background:#f1f6f3}

.itinerary-card{
  background:linear-gradient(180deg,#fff 0%,#fbfdfb 100%);
}
.itinerary-card.active{
  background:linear-gradient(135deg,#f3faf6 0%,#fffaf3 100%);
}
.itinerary-efficiency{background:var(--accent-sky-soft);color:#355f6d}

.stat:nth-child(3n+1){background:linear-gradient(135deg,#f4faf7,#fff)}
.stat:nth-child(3n+2){background:linear-gradient(135deg,#fff8ef,#fff)}
.stat:nth-child(3n){background:linear-gradient(135deg,#f1f7f9,#fff)}
.stat .v{color:#234d40}

.route-step.origin,.route-step.end{background:linear-gradient(90deg,#eef5f1,#f8faf8)}
.route-step.has-local{border-left-color:var(--accent-warm);background:linear-gradient(90deg,#fff3e7 0,#fff 38%)}
.city-route-action{background:var(--accent-warm-soft);color:var(--accent-warm-strong)}
.city-route-action:hover{background:#ffe5cc}
.service-badge{background:var(--accent-sky-soft);color:#3f6b78}
.free-break-row{border-left-color:var(--accent-warm);background:#fff8ed}

.map-card{border-color:#cfded6;box-shadow:0 8px 24px rgba(31,70,55,.07)}
.map-note{background:linear-gradient(90deg,#f7faf8,#fbfaf6)}

.auth-screen{
  background:
    radial-gradient(circle at 18% 15%,rgba(240,177,104,.30),transparent 24rem),
    radial-gradient(circle at 84% 82%,rgba(99,159,151,.28),transparent 28rem),
    linear-gradient(145deg,#123d30,#246852 58%,#315c62)
}
.auth-card{position:relative;overflow:hidden;border:0;box-shadow:0 30px 80px rgba(9,40,30,.28)}
.auth-card:before{
  content:"";position:absolute;left:0;right:0;top:0;height:6px;
  background:linear-gradient(90deg,var(--accent-warm),#e5b566 38%,var(--accent),var(--accent-sky))
}
.auth-brand{color:var(--accent-strong)}
.auth-tabs{background:linear-gradient(90deg,#edf5f0,#f6f3ed)}
.auth-tab.active{color:var(--accent-strong);box-shadow:0 2px 10px rgba(34,82,65,.10)}

.profile-card{
  background:linear-gradient(135deg,#f3faf6,#fbfdfb);
  border-color:#cfdfd6
}
.saved-section{
  background:linear-gradient(135deg,#fffaf3,#fbfcfb);
  border-color:#e6d8c6
}
.user-section-title{color:var(--accent-strong)}
.saved-itinerary:hover{border-color:#b9ccc2;box-shadow:0 5px 16px rgba(31,70,55,.06)}

@media(max-width:680px){
  body{background:var(--bg)}
  .topbar{background:linear-gradient(105deg,#143e31,#23604c)}
  .brand:after{width:6px;height:6px;margin-left:5px}
  .section-title h2:before,.result-section-head h2:before{height:14px;margin-right:6px}
  .auth-screen{padding:14px}
}

/* v0.36.4 beta user management ------------------------------------------- */
.admin-section{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,#f8fbf9,#fffaf5);padding:16px}
.admin-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.admin-section-head .user-section-title{margin-bottom:2px}
.admin-create-invite{display:grid;grid-template-columns:minmax(220px,1fr) 150px auto;gap:10px;align-items:end;padding:13px;border:1px solid #d7e3dc;border-radius:12px;background:#fff}
.admin-create-invite label{font-size:12px}
.admin-create-invite .primary{min-height:40px;white-space:nowrap}
.admin-new-invite{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:10px;padding:13px 14px;border:1px solid #edc18f;border-radius:12px;background:var(--accent-warm-soft)}
.admin-new-invite code{display:block;margin-top:4px;font-size:16px;font-weight:800;letter-spacing:.04em;color:#74451f;word-break:break-all}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.admin-box{min-width:0;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.admin-box-title{padding:11px 12px;border-bottom:1px solid var(--line);font-size:12px;font-weight:800;color:#30493f;background:#f7faf8}
.admin-list{display:grid}
.admin-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 12px;border-bottom:1px solid #edf1ee}
.admin-row:last-child{border-bottom:0}
.admin-row-title{font-size:12px;font-weight:760;line-height:1.4;color:#253b32}
.admin-row-meta{margin-top:3px;color:var(--muted);font-size:10.5px;line-height:1.45;overflow-wrap:anywhere}
.admin-row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.admin-status,.admin-badge{display:inline-flex;align-items:center;margin-left:5px;padding:2px 6px;border-radius:999px;background:#edf5f1;color:#315e4d;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;vertical-align:1px}
.admin-status.used{background:#eef1f3;color:#66727a}.admin-status.expired{background:#fff1df;color:#8c5a23}.admin-status.revoked{background:#f5eaea;color:#8a4f4f}
.admin-badge{background:#e6f2ec;color:var(--accent-strong)}.admin-badge.soft{background:#f0f2f1;color:#68716d}
.danger-action{color:#8d4a42}.danger-action:hover{background:#f9ecea;color:#7b3932}
@media(max-width:820px){
  .admin-grid{grid-template-columns:1fr}
  .admin-create-invite{grid-template-columns:1fr 140px}
  .admin-create-invite .primary{grid-column:1/-1}
}
@media(max-width:560px){
  .admin-section{padding:12px}
  .admin-create-invite{grid-template-columns:1fr}
  .admin-create-invite .primary{grid-column:auto;width:100%}
  .admin-new-invite{align-items:flex-start;flex-direction:column}
  .admin-row{grid-template-columns:1fr}
  .admin-row-actions{justify-content:flex-start}
}

/* v0.36.5 place/date weather forecast ------------------------------------ */
.weather-card{grid-template-columns:auto minmax(210px,1.25fr) minmax(145px,.8fr) minmax(135px,.7fr) auto}
.weather-forecast-toggle{align-self:center;margin-bottom:12px}
.weather-badge[title="Previsione Open-Meteo"]{max-width:100%;white-space:normal;line-height:1.25;margin-top:4px}
@media(max-width:1050px){.weather-card{grid-template-columns:1fr 1fr}.weather-card .constraint-toggle,.weather-current{grid-column:1/-1}.weather-card>button{justify-self:start}}
@media(max-width:600px){.weather-card{grid-template-columns:1fr}.weather-card .constraint-toggle,.weather-current{grid-column:1}.weather-card>button{width:100%}}
