:root {
  --bg:#f5f6f8; --panel:#fff; --panel-2:#f9fafb; --text:#111827; --muted:#667085; --border:#e5e7eb;
  --accent:#111827; --accent-soft:#e9f8ef; --accent-strong:#0f766e; --green:#047857; --amber:#b45309; --red:#b42318;
  --blue:#1d4ed8; --shadow:0 14px 36px rgba(17,24,39,.10); --radius:18px;
  font-family: Inter, Arial, "Noto Sans Hebrew", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
*{box-sizing:border-box} html{scroll-behavior:smooth;background:#dfe3e8} body{margin:0;min-width:320px;background:#dfe3e8;color:var(--text)}
button,input,select,textarea{font:inherit} button,a{-webkit-tap-highlight-color:transparent} button{cursor:pointer} a{color:inherit}.hidden{display:none!important}
.noscript{padding:16px;background:#fff1f2;color:#9f1239;text-align:center}
.desktop-stage{min-height:100vh}.app-shell{width:min(100%,520px);min-height:100vh;margin:0 auto;background:var(--bg);padding:10px 10px calc(96px + env(safe-area-inset-bottom));box-shadow:0 0 36px rgba(15,23,42,.14)}
.eyebrow{color:var(--accent-strong);font-weight:900;letter-spacing:.08em;font-size:10px}.muted-text,.section-copy{color:var(--muted);font-size:12px;line-height:1.55;margin:4px 0 12px}
.mobile-header{padding:8px 2px 10px}.header-main{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.header-main h1{margin:2px 0 2px;font-size:25px;letter-spacing:-.035em}.header-main p{margin:0;color:var(--muted);font-size:12px}.header-actions{display:flex;gap:7px}.icon-action{width:42px;height:42px;border:1px solid var(--border);background:#fff;border-radius:13px;font-size:19px}.icon-action.danger{color:var(--red)}
.header-status-row{display:flex;align-items:center;gap:7px;overflow-x:auto;margin-top:10px;padding-bottom:2px;scrollbar-width:none}.header-status-row::-webkit-scrollbar{display:none}.flight-reminder,.sync-status{white-space:nowrap;min-height:30px;display:inline-flex;align-items:center;padding:0 9px;border-radius:999px;font-size:10px;font-weight:800;background:#eef2f7;color:#475467}.sync-status.ok{background:#ecfdf3;color:var(--green)}.sync-status.busy{background:#eff6ff;color:var(--blue)}.sync-status.error{background:#fff1f2;color:var(--red)}.flight-reminder{background:#fff7ed;color:#9a3412}
.couple-bar{background:#fff;border:1px solid var(--border);border-radius:16px;padding:9px;margin-bottom:9px}.profile-switch{display:flex;gap:5px;background:#eef0f3;border-radius:12px;padding:4px}.profile-btn{flex:1;min-height:42px;border:0;background:transparent;border-radius:9px;display:flex;align-items:center;justify-content:center;gap:7px;font-weight:850}.profile-btn.is-active{background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.08)}.profile-btn:disabled{opacity:.65}.avatar{width:28px;height:28px;border-radius:999px;display:grid;place-items:center;background:#111827;color:#fff;font-size:11px}.couple-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:7px}.couple-stat{background:var(--panel-2);border-radius:9px;padding:6px 4px;text-align:center}.couple-stat strong{display:block;font-size:13px}.couple-stat span{font-size:8.5px;color:var(--muted)}
.trip-strip{display:grid;grid-template-columns:1fr .72fr 1fr;gap:6px;margin-bottom:13px}.trip-day{background:#fff;border:1px solid var(--border);border-radius:13px;padding:9px 8px;display:grid;gap:2px;min-width:0}.trip-day span,.trip-day small{font-size:9px;color:var(--muted)}.trip-day strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.active-day{border-color:#cfe5d7}.wedding-day{background:#f0f2f4;opacity:.78;text-align:center}
.view{display:none}.view.is-active{display:block}.mobile-section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:6px 2px 10px}.mobile-section-title h2{margin:2px 0 0;font-size:22px;letter-spacing:-.02em}.count-label{font-size:10px;color:var(--muted)}
.segmented{display:flex;background:#e9ebef;border-radius:12px;padding:4px;gap:3px}.segmented button{flex:1;min-height:42px;border:0;background:transparent;border-radius:9px;font-weight:800;font-size:12px}.segmented button.is-active{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.08)}.full-segment{width:100%}.day-switch{margin-bottom:9px}
.search-box{display:flex;align-items:center;gap:8px;height:48px;border:1px solid var(--border);border-radius:14px;background:#fff;padding:0 13px;margin-bottom:9px}.search-box input{width:100%;border:0;outline:0;background:transparent;font-size:16px;min-width:0}
.chip-row{display:flex;gap:7px;overflow-x:auto;padding:0 1px 9px;scrollbar-width:none}.chip-row::-webkit-scrollbar{display:none}.chip{white-space:nowrap;min-height:38px;padding:0 12px;border:1px solid var(--border);border-radius:999px;background:#fff;font-weight:750;color:#4b5563;font-size:11px}.chip.is-active{background:var(--accent);color:#fff;border-color:var(--accent)}
.filters-panel{background:#fff;border:1px solid var(--border);border-radius:13px;margin-bottom:11px}.filters-panel summary{list-style:none;cursor:pointer;padding:11px 13px;font-size:11px;font-weight:800}.filters-panel summary::-webkit-details-marker{display:none}.filters-content{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 10px 10px}.filters-content label,.planner-fields label{display:grid;gap:4px;color:var(--muted);font-size:10px;font-weight:750}.select,.planner-fields input[type=time]{width:100%;min-height:42px;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--text);padding:0 9px;font-size:12px}.section-head.compact{margin:12px 2px 8px}.section-head.compact h3{margin:0;font-size:14px}
.places-grid{display:grid;grid-template-columns:1fr;gap:9px}.place-card{background:#fff;border:1px solid var(--border);border-radius:17px;padding:13px;text-align:right;min-width:0}.place-card.is-selected{border-color:#9ec6ac}.place-card-top{display:flex;justify-content:space-between;gap:10px}.place-type{color:var(--muted);font-size:10px}.place-card h3{font-size:15px;margin:3px 0 5px}.rating-box{flex:0 0 auto;text-align:left}.rating-box strong{display:block;font-size:13px}.rating-box small{display:block;color:var(--muted);font-size:8.5px}.place-card p{color:var(--muted);font-size:11px;line-height:1.55;margin:7px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.meta-row{display:flex;flex-wrap:wrap;gap:5px 8px;color:#4b5563;font-size:9.5px}.pref-mini-row{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}.pref-mini{font-size:8.5px;border:1px solid var(--border);border-radius:999px;padding:3px 6px;background:#fff}.pref-mini.want{background:#ecfdf3;border-color:#bbf7d0;color:var(--green)}.pref-mini.maybe{background:#fffbeb;border-color:#fde68a;color:var(--amber)}.pref-mini.skip{background:#fff1f2;border-color:#fecdd3;color:var(--red)}.card-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.card-actions button{min-height:42px;border-radius:10px;border:1px solid var(--border);background:#fff;font-weight:800;font-size:11px}.card-actions .add-btn{background:var(--accent-soft);border-color:#cdebd8}.card-actions .add-btn.is-added{background:#fff;color:var(--green)}.empty-state{background:#fff;border:1px dashed var(--border);border-radius:14px;padding:20px;text-align:center;color:var(--muted);font-size:12px}
.preset-grid{display:grid;grid-template-columns:1fr;gap:9px;margin-top:10px}.preset-card{background:#fff;border:1px solid var(--border);border-radius:17px;padding:14px}.preset-number{font-size:9px;color:var(--accent-strong);font-weight:900}.preset-card h3{margin:3px 0;font-size:16px}.preset-card p{color:var(--muted);font-size:11px;line-height:1.55}.route-stops{display:flex;gap:5px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.route-stop{white-space:nowrap;border:1px solid var(--border);border-radius:999px;padding:5px 7px;background:var(--panel-2);font-size:9px}.preset-bottom{display:grid;gap:8px;margin-top:8px}.preset-stats{font-size:9.5px;color:var(--muted)}
.btn{min-height:42px;border-radius:11px;border:1px solid var(--border);padding:0 12px;background:#fff;color:var(--text);font-weight:800;font-size:11px}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-secondary{background:var(--accent-soft);border-color:#cdebd8}.btn-small{min-height:36px;padding:0 9px;font-size:10px}.wide-btn{width:100%}
.planner-controls-card,.timeline-card,.planner-map-card,.map-filter-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:10px;margin-bottom:9px}.planner-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.alert{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:12px;padding:10px;margin-bottom:9px;font-size:11px;line-height:1.5}
.timeline{display:grid}.timeline-item{display:grid;grid-template-columns:54px 22px minmax(0,1fr);gap:6px;position:relative}.timeline-time{font-size:10px;font-weight:850;padding-top:10px}.timeline-time small{display:block;color:var(--muted);font-size:8.5px;font-weight:500}.timeline-axis{position:relative;display:flex;justify-content:center}.timeline-axis:before{content:"";position:absolute;top:0;bottom:0;width:2px;background:#e5e7eb}.timeline-dot{position:relative;z-index:2;width:16px;height:16px;border-radius:999px;background:#111827;color:#fff;display:grid;place-items:center;font-size:8px;margin-top:10px}.timeline-content{background:var(--panel-2);border:1px solid var(--border);border-radius:11px;padding:9px;margin-bottom:7px;min-width:0}.timeline-content strong{display:block;font-size:11px}.timeline-content small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.timeline-actions{display:flex;gap:4px;justify-content:flex-end;margin-top:7px}.timeline-actions button{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;background:#fff}.timeline-travel{grid-column:3;color:var(--muted);font-size:8.5px;margin:-3px 0 5px}.planner-summary{border-top:1px solid var(--border);padding-top:9px;margin-top:5px}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;text-align:center}.summary-stat{background:var(--panel-2);border-radius:9px;padding:7px}.summary-stat strong{display:block;font-size:12px}.summary-stat span{font-size:8px;color:var(--muted)}.summary-end{font-size:10px;margin-top:8px}.map-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.map-card-head strong{display:block;font-size:11px}.map-card-head small{display:block;color:var(--muted);font-size:8.5px}.map-actions{display:flex;gap:5px}
.map-filter-card{display:grid;gap:8px}.map-footnote{font-size:9px;color:var(--muted);margin:7px 2px 0}.full-map-wrap{position:relative}.map-main,.map-planner{height:460px;min-height:460px;border-radius:14px}.map-legend{position:absolute;top:8px;right:8px;z-index:40;background:rgba(255,255,255,.95);border:1px solid var(--border);border-radius:10px;padding:7px;max-height:145px;overflow:auto;box-shadow:0 6px 18px rgba(0,0,0,.09)}.legend-row{display:flex;align-items:center;gap:5px;font-size:8.5px;margin:3px 0}.legend-dot{width:8px;height:8px;border-radius:999px}
footer{display:grid;gap:2px;color:var(--muted);font-size:8.5px;padding:16px 3px 6px;text-align:center}
.bottom-nav{position:fixed;z-index:90;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,520px);display:grid;grid-template-columns:repeat(4,1fr);gap:2px;padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);border-top:1px solid var(--border);backdrop-filter:blur(14px)}.main-tab{min-height:54px;border:0;background:transparent;border-radius:12px;color:#6b7280;display:grid;place-items:center;align-content:center;gap:1px}.main-tab>span{font-size:20px;line-height:1}.main-tab small{font-size:9px;font-weight:800}.main-tab.is-active{background:#f1f5f9;color:#111827}.badge{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:#111827;color:#fff;font-size:8px}
/* Place details modal / mobile bottom sheet */
.place-dialog,.share-dialog{width:min(100%,520px);height:100%;max-height:100%;margin:0 auto;border:0;padding:0;background:transparent;overflow:hidden}.place-dialog::backdrop,.share-dialog::backdrop{background:rgba(15,23,42,.52);backdrop-filter:blur(2px)}.modal-shell{position:absolute;inset:auto 0 0;height:min(92%,880px);background:#fff;border-radius:22px 22px 0 0;box-shadow:0 -18px 60px rgba(0,0,0,.2);display:flex;flex-direction:column;overflow:hidden}.modal-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border);background:#fff;flex:0 0 auto}.modal-topbar strong{display:block;font-size:15px}.modal-close{width:42px;height:42px;border:1px solid var(--border);background:#f8fafc;border-radius:12px;font-size:24px}.place-dialog-content,.share-content{overflow:auto;padding:14px 14px calc(22px + env(safe-area-inset-bottom));overscroll-behavior:contain}.share-shell{height:auto;max-height:82%}.share-content p{color:var(--muted);font-size:11px;line-height:1.55}.share-options{display:grid;gap:8px;margin:10px 0}.share-options label{display:grid;gap:4px;color:var(--muted);font-size:9px;font-weight:750}.share-options input{height:42px;border:1px solid var(--border);border-radius:10px;padding:0 9px;direction:ltr;font-size:11px}.copy-status{color:var(--green)!important;min-height:18px}
.detail-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.detail-hero h2{margin:3px 0 5px;font-size:21px}.fit-score{background:var(--accent-soft);color:var(--green);border-radius:999px;padding:5px 8px;font-weight:850;font-size:10px;white-space:nowrap}.rating-large{display:flex;align-items:baseline;gap:6px}.rating-large strong{font-size:18px}.rating-large span{color:var(--muted);font-size:9px}.detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 0}.detail-actions a,.detail-actions button{min-height:43px;border-radius:10px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;padding:7px;text-decoration:none;font-weight:800;font-size:10px;background:#fff}.detail-actions .primary-action{background:#111827;color:#fff;border-color:#111827}.detail-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}.meta-card{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:8px;min-width:0}.meta-card span{display:block;color:var(--muted);font-size:8px;margin-bottom:2px}.meta-card strong{display:block;font-size:9.5px;overflow-wrap:anywhere}.detail-section{border-top:1px solid var(--border);padding-top:11px;margin-top:11px}.detail-section h3,.preference-section h3{font-size:12px;margin:0 0 5px}.detail-section p{color:#4b5563;line-height:1.65;font-size:11px;margin:0}.pros-cons{display:grid;grid-template-columns:1fr;gap:7px}.procon{border:1px solid var(--border);border-radius:10px;padding:9px}.procon strong{font-size:10px}.recommendation{background:var(--accent-soft);border:0;border-radius:11px;padding:10px}.suggestion-grid{display:grid;grid-template-columns:1fr;gap:6px}.suggestion-btn{text-align:right;border:1px solid var(--border);border-radius:10px;padding:9px;background:#fff;min-height:49px}.suggestion-btn strong{display:block;font-size:10px}.suggestion-btn small{color:var(--muted);font-size:8.5px}.coord-note{font-size:8.5px!important;color:var(--amber)!important;margin-top:7px!important}.readonly-banner{border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:10px;padding:8px 9px;margin-bottom:10px;font-size:10px}.preference-section{margin-top:12px;border-top:1px solid var(--border);padding-top:11px}.preference-grid{display:grid;grid-template-columns:1fr;gap:7px}.preference-card{border:1px solid var(--border);border-radius:11px;padding:9px;background:#fff}.preference-card.is-active-user{border-color:#9ec6ac;box-shadow:0 0 0 2px rgba(4,120,87,.05)}.preference-head{display:flex;align-items:center;justify-content:space-between;gap:7px}.user-name{display:flex;align-items:center;gap:6px;font-weight:800;font-size:11px}.pref-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:7px}.pref-action{min-height:38px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:9px;font-weight:750}.pref-action.is-selected[data-status=want]{background:#ecfdf3;color:var(--green);border-color:#86efac}.pref-action.is-selected[data-status=maybe]{background:#fffbeb;color:var(--amber);border-color:#fcd34d}.pref-action.is-selected[data-status=skip]{background:#fff1f2;color:var(--red);border-color:#fda4af}.pref-note{margin-top:7px}.pref-note textarea{width:100%;min-height:62px;resize:vertical;border:1px solid var(--border);border-radius:8px;padding:7px;font:inherit;font-size:10px}.pref-note p{margin:0;font-size:9px;color:var(--muted);white-space:pre-wrap}.save-note-row{display:flex;justify-content:flex-end;margin-top:5px}
/* Custom independent map */
.map{position:relative;overflow:hidden;background:#dfe5e9;direction:ltr;user-select:none;touch-action:none}.map *{box-sizing:border-box}.sm-tile-pane,.sm-route-pane,.sm-marker-pane{position:absolute;inset:0;overflow:hidden;pointer-events:none}.sm-tile{position:absolute;width:256px;height:256px;max-width:none;border:0;user-select:none;-webkit-user-drag:none}.sm-route-pane{width:100%;height:100%;overflow:visible}.sm-route-line{fill:none;stroke:#111827;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;opacity:.82;vector-effect:non-scaling-stroke}.sm-route-fallback{stroke:#64748b;stroke-dasharray:9 9;opacity:.78}.sm-marker{position:absolute;width:38px;height:38px;border:0;background:transparent;padding:0;pointer-events:auto;transform:translate(-50%,-88%);cursor:pointer}.sm-marker-pin{width:34px;height:34px;border-radius:12px 12px 12px 3px;transform:rotate(-45deg);display:grid;place-items:center;box-shadow:0 4px 12px rgba(0,0,0,.22);border:2px solid #fff;color:#fff}.sm-marker-pin span{transform:rotate(45deg);font-size:15px;line-height:1}.sm-marker.route .sm-marker-pin{border-radius:999px;transform:none;background:#111827!important}.sm-marker.route .sm-marker-pin span{transform:none;font-weight:900;font-size:11px}.sm-marker.match .sm-marker-pin{box-shadow:0 0 0 4px rgba(34,197,94,.35),0 4px 12px rgba(0,0,0,.22)}.sm-controls{position:absolute;left:8px;top:8px;z-index:30;display:grid;gap:4px;pointer-events:auto}.sm-control{width:38px;height:38px;border:1px solid rgba(17,24,39,.18);background:rgba(255,255,255,.96);border-radius:9px;font-size:20px;box-shadow:0 3px 10px rgba(0,0,0,.08)}.sm-attribution{position:absolute;left:5px;bottom:4px;z-index:25;background:rgba(255,255,255,.88);border-radius:5px;padding:2px 5px;font-size:7px;color:#475467;pointer-events:auto}.sm-popup{position:absolute;z-index:35;min-width:175px;max-width:225px;background:#fff;border:1px solid var(--border);border-radius:11px;padding:9px;box-shadow:0 12px 30px rgba(0,0,0,.18);direction:rtl;text-align:right;pointer-events:auto;transform:translate(-50%,calc(-100% - 44px))}.sm-popup strong{display:block;font-size:11px}.sm-popup small{color:var(--muted);font-size:8.5px}.sm-popup button{width:100%;min-height:35px;border:0;background:#111827;color:#fff;border-radius:8px;margin-top:6px;font-weight:800;font-size:9px}.sm-tile-error{filter:grayscale(1);opacity:.2}.map-hint{position:absolute;bottom:8px;right:8px;z-index:20;background:rgba(17,24,39,.82);color:#fff;border-radius:999px;padding:5px 8px;font-size:7.5px;pointer-events:none}
@media (max-width:370px){.filters-content,.planner-fields,.card-actions,.detail-actions{grid-template-columns:1fr}.trip-strip{grid-template-columns:1fr 1fr}.wedding-day{display:none}.detail-meta{grid-template-columns:1fr 1fr}.map-main,.map-planner{height:410px;min-height:410px}}
@media (min-width:521px){body{padding:16px 0}.app-shell{border-radius:24px;overflow:visible;min-height:calc(100vh - 32px)}.bottom-nav{bottom:16px;border:1px solid var(--border);border-radius:18px;width:504px;box-shadow:var(--shadow)}.place-dialog,.share-dialog{max-width:520px}}
.timeline-content h4{margin:0;font-size:11px}.timeline-content p{margin:3px 0 0;color:var(--muted);font-size:9px}.timeline-content[role="button"]{cursor:pointer}.summary-grid{grid-template-columns:repeat(4,1fr)}
@media(max-width:370px){.summary-grid{grid-template-columns:repeat(2,1fr)}}
/* v3 mobile polish */
.modal-sticky-actions{position:sticky;bottom:-14px;z-index:12;display:grid;grid-template-columns:.8fr 1.2fr;gap:8px;margin:16px -14px -22px;padding:9px 14px calc(9px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);border-top:1px solid var(--border);backdrop-filter:blur(14px)}
.modal-sticky-actions button{min-height:48px;border:1px solid var(--border);border-radius:12px;background:#fff;font-weight:850;font-size:11px}.modal-sticky-actions .sticky-plan-action{background:var(--accent-soft);border-color:#b7e1c5}.modal-sticky-actions .sticky-plan-action.is-added{background:#ecfdf3;color:var(--green)}
.map-planner{height:310px;min-height:310px}.map-main{height:470px;min-height:470px}
@media(max-width:370px){.map-planner{height:280px;min-height:280px}.map-main{height:430px;min-height:430px}}

/* ===============================
   v4.0.0 — mobile-first hardening
   =============================== */
html,body{width:100%;max-width:100%;overflow-x:hidden}
body{overscroll-behavior-y:none}
img,svg,video,canvas{max-width:100%}
input,select,textarea,button{max-width:100%;min-width:0}
.app-shell,main,.view,.places-grid,.preset-grid,.timeline-card,.planner-map-card,.map-filter-card,.full-map-wrap,.place-card,.preset-card{min-width:0;max-width:100%}
.pwa-label{display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;margin-inline-start:4px;padding:2px 6px;border-radius:999px;background:#111827;color:#fff;font-size:8px;letter-spacing:.04em}
.install-action{background:#ecfdf3;color:var(--green);border-color:#b7e1c5}
.pending-status{white-space:nowrap;min-height:30px;display:inline-flex;align-items:center;padding:0 9px;border-radius:999px;font-size:10px;font-weight:800;background:#fffbeb;color:var(--amber)}
.offline-inline-note{margin:0 0 9px;padding:10px 11px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:12px;font-size:10px;line-height:1.55}
.pwa-install-card{margin:10px 0;padding:11px;border:1px solid var(--border);border-radius:12px;background:var(--panel-2)}
.pwa-install-card strong{font-size:11px}.pwa-install-card p{margin:4px 0 9px!important}

/* Routes: vertical timeline, never a horizontal strip */
.preset-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.preset-card{overflow:hidden;padding:13px}
.preset-card h3,.preset-card p{overflow-wrap:anywhere}
.route-stops{display:grid;grid-template-columns:minmax(0,1fr);gap:0;overflow:visible;padding:5px 0 2px}
.route-stop{position:relative;display:grid;grid-template-columns:30px minmax(0,1fr);gap:8px;align-items:start;white-space:normal;border:0;border-radius:0;padding:7px 0;background:transparent;font-size:10px;line-height:1.4;overflow-wrap:anywhere}
.route-stop::before{content:attr(data-step);width:26px;height:26px;display:grid;place-items:center;border-radius:999px;background:#111827;color:#fff;font-weight:900;font-size:9px;z-index:2}
.route-stop:not(:last-child)::after{content:"";position:absolute;right:12px;top:31px;bottom:-7px;width:2px;background:#e5e7eb}
.route-stop-copy{min-width:0;padding-top:4px}
.route-stop-copy strong{display:block;font-size:10.5px}
.route-stop-copy small{display:block;margin-top:1px;color:var(--muted);font-size:8.5px;line-height:1.4}
.preset-bottom{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:9px}
.preset-bottom .btn{width:100%;min-height:46px}
.preset-stats{display:block;line-height:1.5;overflow-wrap:anywhere}

/* Planner */
.planner-fields{grid-template-columns:minmax(0,1fr);gap:8px}
.planner-fields input[type=time],.planner-fields .select,.filters-content .select{font-size:16px;min-width:0}
.timeline-item{grid-template-columns:48px 20px minmax(0,1fr);gap:5px;width:100%;min-width:0}
.timeline-time{font-size:9.5px}.timeline-content{width:100%;min-width:0;overflow:hidden}
.timeline-content h4{overflow-wrap:anywhere;font-size:11px}
.timeline-actions{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-start;margin-top:8px}
.timeline-actions button{flex:0 0 38px;width:38px;height:38px}
.timeline-travel{grid-column:auto;margin:5px 0 0}
.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.map-card-head{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:start}
.map-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.map-actions .btn{width:100%;min-height:40px}

/* Cards and forms */
.filters-content{grid-template-columns:minmax(0,1fr);gap:8px}
.card-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
.card-actions button{white-space:normal;line-height:1.2;padding:5px}
.place-card-top{align-items:flex-start}.rating-box{max-width:90px}.rating-box small{white-space:normal}
.detail-actions{grid-template-columns:minmax(0,1fr)}
.detail-actions a,.detail-actions button{white-space:normal;line-height:1.3;overflow-wrap:anywhere}
.detail-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
.detail-meta .meta-card:last-child:nth-child(odd){grid-column:1/-1}
.preference-head{align-items:flex-start}.pref-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.pref-action{padding:4px;white-space:normal;line-height:1.2}
.suggestion-btn{overflow:hidden}.suggestion-btn strong,.suggestion-btn small{overflow-wrap:anywhere}
.share-options input{width:100%;min-width:0}

/* Maps: local schematic base under online/cached street tiles */
.map{background:#e8edf1 url('prague-offline-map.svg') center/cover no-repeat}
.sm-offline-pane,.sm-tile-pane,.sm-route-pane,.sm-marker-pane{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.sm-offline-pane{z-index:0}.sm-offline-map{position:absolute;max-width:none;opacity:.96;user-select:none;-webkit-user-drag:none}
.sm-tile-pane{z-index:1}.sm-route-pane{z-index:2}.sm-marker-pane{z-index:3}
.sm-tile-error{opacity:0!important}
.map-hint{max-width:60%;white-space:normal;text-align:center;line-height:1.3}
.map-main{height:430px;min-height:430px}.map-planner{height:300px;min-height:300px}
.map-legend{max-width:48%;max-height:125px}
.sm-popup{min-width:150px;max-width:min(220px,76vw);overflow-wrap:anywhere}

/* Dialogs */
.place-dialog,.share-dialog{max-width:100%;width:min(100%,520px)}
.modal-shell{max-width:100%;height:min(94%,900px)}
.modal-topbar{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
.place-dialog-content,.share-content{min-width:0;overflow-x:hidden}
.detail-hero{min-width:0}.detail-hero>div{min-width:0}.detail-hero h2{overflow-wrap:anywhere}
.modal-sticky-actions{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}
.modal-sticky-actions button{white-space:normal;line-height:1.2;padding:6px}

/* Bottom nav / safe areas */
.bottom-nav{max-width:520px;padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right))}
.main-tab{min-width:0}.main-tab small{white-space:nowrap}

/* narrow phones */
@media(max-width:360px){
  .app-shell{padding-left:7px;padding-right:7px}
  .header-main h1{font-size:22px}.header-actions{gap:4px}.icon-action{width:39px;height:39px}
  .trip-strip{grid-template-columns:1fr 1fr}.wedding-day{display:none}
  .couple-stat span{font-size:8px}
  .segmented button{font-size:11px;padding-inline:4px}
  .card-actions{grid-template-columns:minmax(0,1fr)}
  .detail-meta{grid-template-columns:minmax(0,1fr)}.detail-meta .meta-card:last-child:nth-child(odd){grid-column:auto}
  .pref-actions{grid-template-columns:minmax(0,1fr)}
  .map-main{height:390px;min-height:390px}.map-planner{height:260px;min-height:260px}
  .map-legend{max-width:56%;font-size:7px}
  .modal-sticky-actions{grid-template-columns:minmax(0,1fr)}
}

/* slightly wider phones / mobile shell desktop */
@media(min-width:400px){
  .planner-fields,.filters-content{grid-template-columns:repeat(2,minmax(0,1fr))}
  .detail-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pros-cons{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(min-width:521px){
  body{padding:16px 0}
  .app-shell{width:520px;max-width:520px;border-radius:24px;overflow:hidden;min-height:calc(100vh - 32px)}
  .bottom-nav{width:504px}
  .place-dialog,.share-dialog{width:520px}
}
/* v4 touch + tiny viewport safety */
body{min-width:0}
.chip{min-height:42px}.pref-action{min-height:44px}.timeline-actions button{width:42px;height:42px;flex-basis:42px}.sm-control{width:42px;height:42px}.btn-small{min-height:42px}
@media(max-width:520px){input,select,textarea{font-size:16px!important}}


/* v4.0.1 responsive hotfix: category chips + mobile containment */
.chip-row{
  display:flex;
  flex-wrap:nowrap;
  width:100%;
  max-width:100%;
  min-width:0;
  gap:7px;
  overflow-x:auto;
  overflow-y:hidden;
  padding:1px 1px 10px;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  scrollbar-width:none;
  scroll-snap-type:x proximity;
}
.chip-row::-webkit-scrollbar{display:none}
.chip{
  flex:0 0 auto;
  width:auto;
  max-width:none;
  min-width:max-content;
  white-space:nowrap;
  scroll-snap-align:start;
  padding-inline:12px;
}

/* Keep all segmented controls and card actions inside the mobile shell */
.segmented,.profile-switch,.day-switch,.card-actions,.map-actions,.pref-actions{
  min-width:0;
  max-width:100%;
}
.segmented button,.profile-btn,.card-actions button,.map-actions .btn,.pref-action{
  min-width:0;
  overflow-wrap:anywhere;
}

/* Route cards must never force horizontal layout */
#view-routes,.preset-grid,.preset-card,.route-stops,.route-stop,.route-stop-copy,.preset-bottom{
  width:100%;
  min-width:0;
  max-width:100%;
}
.preset-card{overflow:hidden}
.route-stop-copy strong,.route-stop-copy small{max-width:100%;overflow-wrap:anywhere;word-break:break-word}

/* Tiny phones: preserve usable chip width and avoid crowding */
@media(max-width:359px){
  .chip-row{gap:6px}
  .chip{font-size:10.5px;padding-inline:10px;min-height:40px}
  .mobile-section-title h2{font-size:20px}
  .preset-card{padding:11px}
  .preset-card h3{font-size:15px}
  .route-stop{grid-template-columns:28px minmax(0,1fr);gap:7px}
  .route-stop::before{width:24px;height:24px}
  .route-stop:not(:last-child)::after{right:11px;top:29px}
}
