:root{--paper:#fff8fb;--card:#fff;--ink:#33242e;--muted:#927985;--rose:#dd5b86;--rose2:#fcdfeb;--lilac:#ece1fb;--cream:#fff0dc;--mint:#dff5ed;--line:#f0dce5;--shadow:0 10px 28px #62304112}*{box-sizing:border-box}html,body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.45 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;overscroll-behavior-y:none}button,input,textarea,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:active{transform:translateY(1px)}.hidden{display:none!important}.screen{width:min(760px,100%);min-height:100vh;margin:auto;padding:max(12px,env(safe-area-inset-top)) 16px calc(92px + env(safe-area-inset-bottom))}.hero{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:8px 2px 18px}.hero p,.eyebrow,.modal-head p{margin:0;color:var(--rose);font-size:11px;font-weight:800;letter-spacing:.7px}.hero h1{margin:4px 0 2px;font-size:31px;letter-spacing:-1.2px}.hero small{color:var(--muted)}.actions{display:flex;gap:9px}.round,.fab{border:0;display:grid;place-items:center;background:#fff;box-shadow:0 5px 0 #e8d9df,0 9px 18px #5a243013;color:var(--rose);font-weight:900}.round{width:47px;height:47px;border-radius:17px;font-size:19px}.round i{font-size:10px;font-style:normal;position:absolute;margin-top:27px}.primary-round,.fab{background:linear-gradient(145deg,#ec769d,#cc3f6c);color:#fff;box-shadow:0 5px 0 #b93c62,0 10px 21px #d4567d44}.install-tip{display:flex;align-items:center;gap:10px;background:#fff0f5;border:1px solid #f9d8e5;border-radius:17px;padding:10px 12px;color:#8e6071;font-size:12px;margin-bottom:18px}.install-tip b{color:var(--rose);font-size:18px}.install-tip span{flex:1}.install-tip button{border:0;background:transparent;color:#bc8295;font-size:18px}.home-switch{display:flex;gap:9px;border-bottom:1px solid var(--line);margin-bottom:12px}.home-switch button{border:0;background:transparent;padding:10px 4px;color:var(--muted);font-weight:800}.home-switch button.active{color:var(--rose);border-bottom:3px solid var(--rose)}.heading{display:flex;align-items:end;justify-content:space-between;margin:16px 2px 10px}.heading h2{font-size:18px;margin:0}.heading p{color:var(--muted);font-size:11px;margin:0}.trip-list{display:grid;gap:12px}.trip{border:0;width:100%;text-align:left;padding:11px;background:#fff;border-radius:23px;display:flex;gap:12px;align-items:center;box-shadow:var(--shadow);transition:transform .18s ease,box-shadow .18s ease}.trip:active{transform:scale(.985)}.trip.selected{outline:2px solid var(--rose)}.cover{width:78px;height:84px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(145deg,#f2bad0,#df648e);font-size:29px;overflow:hidden;flex:none}.cover img,.cover-preview img,.thumb img{width:100%;height:100%;object-fit:cover}.cover.lilac{background:linear-gradient(145deg,#d5bff6,#a384d2)}.cover.cream{background:linear-gradient(145deg,#ffe0b4,#f6aa74)}.cover.mint{background:linear-gradient(145deg,#b8e6d4,#65bfa5)}.trip-copy{min-width:0;flex:1}.trip h3{font-size:16px;margin:0 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trip p{margin:0 0 7px;color:var(--muted);font-size:12px}.trip small{color:var(--rose);font-size:11px;font-weight:800}.mark{color:var(--muted);font-size:22px}.empty,.setting-card,.map-card,.weather-card{background:#fff;border-radius:21px;padding:20px;text-align:center;box-shadow:var(--shadow);color:var(--muted)}.empty b{display:block;color:var(--rose);font-size:25px;margin-bottom:7px}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.quick{border:0;border-radius:17px;background:#fff;min-height:80px;display:grid;place-content:center;gap:6px;color:var(--ink);box-shadow:0 4px 12px #5c183a0c}.quick b{font-size:20px;color:var(--rose)}.quick span{font-size:11px;font-weight:800}.quick:nth-child(1){background:var(--rose2)}.quick:nth-child(2){background:var(--cream)}.quick:nth-child(3){background:var(--lilac)}.quick:nth-child(4){background:var(--mint)}.fab{position:fixed;right:max(20px,calc((100vw - 728px)/2));bottom:max(24px,env(safe-area-inset-bottom));width:58px;height:58px;border-radius:22px;font-size:31px;z-index:4}.detail{position:fixed;inset:0;z-index:5;background:var(--paper);overflow:auto;overscroll-behavior:contain}.detail-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;background:#fff8fbee;backdrop-filter:blur(12px);padding:5px 0 10px}.detail-head>div{text-align:center;min-width:0;max-width:65%}.detail-head h2{margin:0;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-head small{color:var(--muted);font-size:11px}.plain{border:0;background:transparent;color:var(--rose);padding:9px;font-weight:800}.back{font-size:34px;line-height:16px}.summary{background:linear-gradient(135deg,#fff,#fff0f5);padding:16px 17px;border-radius:21px;box-shadow:var(--shadow);margin:4px 0 13px}.summary b{font-size:18px}.summary p{margin:6px 0 0;color:var(--muted);font-size:12px}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chip,.badge{display:inline-flex;align-items:center;gap:3px;padding:4px 8px;border-radius:99px;background:var(--rose2);color:#b94b72;font-size:11px;font-weight:800}.tabs{display:flex;gap:4px;background:#f4eaf0;padding:4px;border-radius:16px;position:sticky;top:55px;z-index:2}.tabs button{border:0;background:transparent;min-width:0;flex:1;padding:10px 4px;border-radius:12px;color:var(--muted);font-size:12px;font-weight:800}.tabs button.active{background:#fff;color:var(--rose);box-shadow:0 2px 8px #7c3f5814}.toolbar{display:flex;justify-content:space-between;align-items:center;margin:16px 0 10px;gap:9px}.toolbar h3{margin:0;font-size:17px}.toolbar .hint{margin:3px 0 0;color:var(--muted);font-size:11px}.add{border:0;border-radius:15px;padding:10px 13px;background:linear-gradient(145deg,#ec769d,#cc3f6c);box-shadow:0 3px 0 #b93c62;color:#fff;font-weight:900;white-space:nowrap}.timeline{display:grid;gap:10px}.day-separator{font-size:12px;color:#a96782;font-weight:900;margin:8px 2px 0}.place{background:#fff;border-radius:19px;padding:12px;display:flex;gap:10px;align-items:flex-start;box-shadow:0 5px 16px #5a243009}.place-photo{width:60px;height:60px;flex:none;border-radius:14px;background:var(--rose2);display:grid;place-items:center;overflow:hidden;font-size:24px}.time{width:45px;flex:none;color:var(--rose);font-size:12px;font-weight:900;padding-top:5px}.place-main{min-width:0;flex:1}.place-main b{font-size:15px}.place-main p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45;word-break:break-word}.place-note{white-space:pre-wrap}.place-edit{border:0;background:var(--rose2);color:var(--rose);border-radius:11px;padding:8px;font-size:12px}.emptyline{font-size:13px;color:var(--muted);text-align:center;padding:24px}.map-card{margin-top:14px;padding:0;overflow:hidden;text-align:left}.route-map{height:300px}.map-card-copy{display:flex;align-items:center;justify-content:space-between;padding:12px 14px}.map-card-copy b{display:block}.map-card-copy small{color:var(--muted)}.transport-toggle{display:flex;gap:7px;padding:12px 12px 0;overflow-x:auto}.transport-toggle button{border:0;border-radius:12px;background:#f7eef2;color:var(--muted);padding:8px 10px;font-size:12px;white-space:nowrap}.transport-toggle button.active{background:var(--rose);color:#fff}.route-info{padding:9px 14px 13px;color:var(--muted);font-size:12px}.marker-number{border:0!important;background:transparent!important}.marker-number span{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:var(--rose);color:#fff;font-weight:900;border:3px solid white;box-shadow:0 2px 7px #79304766}.check-row,.expense,.order-row{background:#fff;border-radius:16px;padding:12px;display:flex;align-items:center;gap:10px;margin-bottom:9px;box-shadow:0 4px 13px #5a243008}.check-row input{width:19px;height:19px;accent-color:var(--rose)}.check-row span{flex:1}.check-row.done span{text-decoration:line-through;color:var(--muted)}.mini-delete{border:0;background:transparent;color:#c64262;font-size:18px}.budget-total{background:linear-gradient(135deg,#e16a91,#9e79b6);color:#fff;border-radius:21px;padding:20px;margin:16px 0}.budget-total b{font-size:30px;display:block;margin-top:5px}.category{display:flex;justify-content:space-between;background:#fff;border-radius:14px;padding:12px;margin:8px 0}.budget-chart{height:9px;background:#f1e6eb;border-radius:99px;overflow:hidden;margin:6px 0 14px}.budget-chart i{display:block;height:100%;background:linear-gradient(90deg,#ee7ca0,#b783cb);border-radius:inherit}.more-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}.more-grid button{border:0;background:#fff;border-radius:18px;padding:16px;text-align:left;box-shadow:var(--shadow);color:var(--ink);font-weight:800}.more-grid b{display:block;color:var(--rose);font-size:20px;margin-bottom:7px}.overlay{position:fixed;inset:0;z-index:20;background:#30242b78;display:flex;align-items:flex-end;justify-content:center}.modal{width:min(760px,100%);max-height:93vh;overflow:auto;background:var(--paper);border-radius:28px 28px 0 0;padding:20px 17px calc(env(safe-area-inset-bottom) + 20px);box-shadow:0 -10px 40px #1e071023}.modal.small{max-width:560px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:9px}.modal h2{margin:3px 0 0;font-size:21px}.close{border:0;background:#fff;border-radius:50%;width:37px;height:37px;color:var(--muted);font-size:25px}.soft-copy{font-size:13px;color:var(--muted);line-height:1.55}label{display:grid;gap:6px;margin-top:11px;color:#a66682;font-size:12px;font-weight:900}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--ink);padding:12px;outline:none;box-shadow:inset 0 1px 0 #fff}textarea{resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.submit,.secondary,.danger{border:0;border-radius:16px;padding:14px;margin-top:16px;width:100%;font-weight:900}.submit{background:linear-gradient(145deg,#ec769d,#cc3f6c);color:#fff;box-shadow:0 4px 0 #b93c62}.secondary{background:var(--cream);color:#8d5a44}.danger{background:#c64262;color:#fff}.compact{width:auto;margin:0;padding:11px 13px}.cover-picker{background:#fff;border:1px solid var(--line);border-radius:16px;padding:11px;margin-top:12px;display:flex;align-items:center;gap:9px;color:#a66682;font-size:12px;font-weight:900}.cover-preview{height:45px;width:54px;border-radius:11px;background:var(--rose2);display:grid;place-items:center;overflow:hidden;margin-left:auto}.file-pill{display:inline-flex;align-items:center;justify-content:center;border:0;background:var(--lilac);color:#755b98;padding:9px 11px;border-radius:12px;cursor:pointer;white-space:nowrap}.file-pill input{display:none}.file-pill.full{margin:10px 0 0;width:100%}.text-btn{border:0;background:transparent;color:var(--rose);font-size:11px;font-weight:800}.map-pick-btn{width:100%;border:1px solid #f3cedc;background:#fff0f5;border-radius:15px;padding:12px;text-align:left;color:#b44871;font-weight:900}.map-pick-btn small{display:block;color:#a27687;font-weight:500;margin-top:2px}.image-strip{display:flex;gap:8px;margin-top:8px;min-height:0}.image-strip .thumb{width:58px;height:58px;border-radius:13px;overflow:hidden;background:var(--rose2)}.map-modal{max-width:760px}.search-row{display:flex;gap:8px}.search-row input{flex:1}.search-row button{border:0;border-radius:14px;background:var(--rose);color:white;font-weight:900;padding:0 15px}.poi-results{max-height:130px;overflow:auto;margin:7px 0}.poi-result{width:100%;border:0;background:#fff;border-radius:12px;padding:9px;text-align:left;margin:4px 0;color:var(--ink)}.poi-result small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}.picker-map{height:min(46vh,390px);border-radius:18px;overflow:hidden;border:1px solid var(--line)}.picked-place{min-height:38px;font-size:12px;color:var(--muted);margin:10px 2px}.map-actions{display:flex;justify-content:space-between;gap:10px}.chat{display:grid;gap:8px;margin:10px 0;max-height:220px;overflow:auto}.bubble{max-width:90%;padding:12px 14px;border-radius:18px;font-size:13px;line-height:1.55}.assistant{background:#fff;border:1px solid #f1dce6}.user{background:var(--rose);color:#fff;justify-self:end}.ai-grid details{margin-top:11px;background:#fff;border:1px solid var(--line);padding:11px;border-radius:14px}.ai-grid summary{color:#a66682;font-size:12px;font-weight:900;cursor:pointer}.sticky-actions{position:sticky;bottom:-20px;background:linear-gradient(transparent,var(--paper) 25%);display:grid;grid-template-columns:.8fr 1.4fr;gap:9px;padding:20px 0 0}.sticky-actions .submit,.sticky-actions .secondary{margin:0}.import-preview{background:#fff;border-radius:15px;padding:12px;margin-top:13px;max-height:180px;overflow:auto;font-size:13px}.setting-card{text-align:left;margin:10px 0;padding:15px}.setting-card b{color:var(--ink)}.setting-card p{margin:6px 0;color:var(--muted);font-size:12px}.setting-card .submit,.setting-card .secondary{margin-top:8px}.toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:50;background:#34252e;color:white;border-radius:99px;padding:10px 16px;font-size:13px;box-shadow:0 5px 20px #0003;max-width:88%;text-align:center}.leaflet-popup-content{font-family:inherit;font-size:13px}.leaflet-control-attribution{font-size:9px!important}.note{color:var(--muted);font-size:11px;text-align:center;line-height:1.5}@media(max-width:380px){.two{grid-template-columns:1fr}.quick-grid{grid-template-columns:repeat(2,1fr)}.tabs button{font-size:11px}.cover{width:66px;height:74px}.trip h3{font-size:15px}}/* v10 mobile viewport and AMap refinements */
html,body{width:100%;min-height:100%;overflow-x:hidden}.screen{min-height:100dvh}.detail{min-height:100dvh}.overlay{padding-top:env(safe-area-inset-top)}.picker-map,.route-map{width:100%;background:#f7eef2}.amap-missing{height:300px;display:grid;place-content:center;text-align:center;padding:24px;color:var(--muted);background:linear-gradient(145deg,#fff,#fff0f6)}.amap-missing b{color:var(--rose);font-size:17px;margin-bottom:7px}.amap-brand{font-size:11px;color:#a66682;margin:0 14px 12px}.route-map .amap-logo,.picker-map .amap-logo{opacity:.72}@media(max-width:540px){.screen{width:100%;padding-left:14px;padding-right:14px}.hero{padding-top:6px}.detail-head{padding-left:0;padding-right:0}.modal{width:100vw;border-radius:25px 25px 0 0}.map-modal{padding-left:14px;padding-right:14px}.picker-map{height:48dvh;min-height:310px}.route-map{height:42dvh;min-height:280px}.trip{border-radius:20px}.cover{width:72px;height:78px}.trip-copy{min-width:0}.trip h3{font-size:16px}.home-switch{position:sticky;top:0;z-index:3;background:var(--paper)}.tabs{top:0}}
.trip{touch-action:manipulation;-webkit-user-select:none;user-select:none}

.ai-choice-wrap{max-width:100%}.ai-options{display:grid;gap:8px;margin-top:10px}.ai-option{border:1px solid var(--line);background:#fff8fb;border-radius:14px;padding:11px;text-align:left;color:var(--ink)}.ai-option b,.ai-option span,.ai-option small{display:block}.ai-option span{color:var(--rose);font-size:12px;margin:3px 0}.ai-option small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-option.selected{outline:2px solid var(--rose);background:#fff0f5}

/* v24 map and detail scrolling refinements */
.detail-head{position:relative!important;top:auto!important;z-index:auto!important;background:transparent!important;backdrop-filter:none!important;padding:5px 0 10px}.tabs{position:relative!important;top:auto!important;z-index:auto!important;margin:0 0 12px}.route-map{height:390px}.transport-toggle{gap:10px;padding:16px 14px 8px}.transport-toggle button{min-height:46px;padding:12px 16px;border-radius:15px;font-size:13px;font-weight:800}.route-info{padding:12px 15px 16px}@media(max-width:540px){.route-map{height:54dvh;min-height:360px}.transport-toggle{padding:16px 14px 8px}.transport-toggle button{min-height:48px;padding:12px 16px}}

/* v25 adaptive sheets, home selection and favorites */
html,body{width:100%;min-width:0;min-height:100dvh}.screen,.detail,.modal,.modal *{min-width:0}.overlay{padding:max(env(safe-area-inset-top),8px) 0 0;overflow:hidden}.modal{width:min(760px,100vw);max-height:calc(100dvh - max(env(safe-area-inset-top),8px));min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.modal label,.modal input,.modal textarea,.modal select{max-width:100%}.modal .two>*{min-width:0}.trip{position:relative;touch-action:manipulation;-webkit-touch-callout:none}.trip-favorite{width:38px;height:38px;flex:none;border:0;border-radius:14px;background:#fff0f5;color:var(--rose);font-size:22px;line-height:1}.trip-favorite.active{background:var(--rose);color:#fff}.trip-favorite:active{transform:scale(.94)}@media(max-width:540px){.overlay{align-items:flex-end;padding:max(env(safe-area-inset-top),6px) 0 0}.modal{width:100%;max-height:calc(100dvh - max(env(safe-area-inset-top),6px));border-radius:26px 26px 0 0;padding:18px 14px calc(env(safe-area-inset-bottom) + 20px)}.modal-head{position:sticky;top:-18px;z-index:4;background:var(--paper);padding-top:18px}.modal .two{gap:9px}.trip{gap:10px;padding:10px}.trip-favorite{width:36px;height:36px}.cover{width:70px;height:76px}}

/* v26 selection mode */
.trip.selection-mode{cursor:pointer}.selection-check{width:40px;height:40px;flex:none;border:2px solid #c9b5bf;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:23px;font-weight:900;background:#fff}.selection-check.checked{border-color:var(--rose);background:var(--rose);box-shadow:0 4px 0 #b93c62}.trip.selection-mode .trip-copy{padding-right:2px}@media(max-width:540px){.selection-check{width:38px;height:38px;font-size:22px}}

/* v27: conversation-first AI and one safe-area inset only */
.ai-chat-modal{display:flex;flex-direction:column;gap:0;min-height:min(700px,calc(100dvh - max(env(safe-area-inset-top),12px)));padding-bottom:calc(16px + env(safe-area-inset-bottom))}.ai-chat-head{flex:none}.ai-service-state{min-height:18px;margin:0 0 8px;text-align:left}.ai-dialogue{flex:1;min-height:240px;max-height:none;margin:0 -2px 8px;padding:4px 2px 12px;overflow:auto}.ai-dialogue .bubble{max-width:86%}.ai-suggestion-row{display:flex;gap:7px;overflow:auto;padding:8px 2px 4px}.ai-suggestion-row button{flex:none;border:1px solid #f3cddd;border-radius:999px;background:#fff0f5;color:#b44b71;padding:8px 11px;font-size:12px;font-weight:800}.ai-composer{display:flex;align-items:center;gap:8px;border:1px solid #efcfdb;background:#fff;border-radius:22px;padding:6px;box-shadow:0 8px 18px #8a365a12;flex:none}.ai-composer input{border:0;box-shadow:none;background:transparent;padding:9px 2px;min-width:0;flex:1}.ai-plus,.ai-send{width:38px;height:38px;flex:none;border:0;border-radius:14px;font-size:23px;font-weight:900;display:grid;place-items:center}.ai-plus{background:#f9e5ee;color:#c04a75}.ai-send{background:linear-gradient(145deg,#ec769d,#cc3f6c);color:#fff;box-shadow:0 3px 0 #b93c62}.ai-tools-panel{background:linear-gradient(145deg,#fff,#fff3f7);border:1px solid #f1d5e0;border-radius:20px;margin:2px 0 10px;padding:12px;box-shadow:0 8px 18px #8a365a0c;max-height:44dvh;overflow:auto}.ai-tools-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;color:#a94870}.ai-tools-title button{border:0;background:transparent;color:#9f6c80;font-size:22px}.ai-tools-panel label{margin-top:7px}.ai-tools-panel details{margin-top:8px}.ai-tools-panel summary{color:#a66682;font-size:12px;font-weight:900;cursor:pointer}.ai-tool-actions{display:flex;gap:8px;margin-top:12px}.ai-tool-actions .secondary{margin:0;flex:1}.ai-result-actions{display:grid;gap:7px;margin-top:8px}.ai-result-actions .secondary{margin:0}.ai-chat-modal .note:last-child{margin:8px 2px 0;text-align:left}@media(max-width:540px){.ai-chat-modal{height:calc(100dvh - max(env(safe-area-inset-top),6px));min-height:0;border-radius:26px 26px 0 0}.ai-dialogue{min-height:0}.ai-tools-panel{max-height:38dvh}.screen{padding-top:max(10px,env(safe-area-inset-top))}}
/* v28 full-screen AI chat sync */
#ai-modal.overlay{align-items:stretch;padding:0;background:var(--paper)}
#ai-modal .ai-chat-modal{width:100%;max-width:none;width:100vw;height:100dvh;min-height:100dvh;max-height:none;border-radius:0;padding:max(14px,env(safe-area-inset-top)) 16px calc(12px + env(safe-area-inset-bottom));box-shadow:none}
#ai-modal .ai-dialogue{min-height:0;margin-bottom:8px;padding-bottom:10px}
#ai-modal .ai-suggestion-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;overflow:visible;padding:7px 0 4px}
#ai-modal .ai-suggestion-row button{min-width:0;height:32px;padding:0 2px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#ai-modal .ai-photo-status{margin:4px 2px 0;color:var(--muted);font-size:12px;line-height:1.45}
#ai-modal .ai-composer{align-items:flex-end;gap:6px;border-radius:20px;padding:5px 6px}
#ai-modal .ai-composer textarea{display:block;flex:1;min-width:0;max-height:126px;min-height:42px;resize:none;overflow:auto;border:0;box-shadow:none;background:transparent;padding:10px 2px 8px;line-height:1.35}
#ai-modal .ai-plus,#ai-modal .ai-send{width:40px;height:40px;border-radius:13px}
#ai-modal .ai-tool-dock{display:flex;align-items:center;gap:9px;min-height:38px;padding:4px 1px 0}
#ai-modal .ai-tools-toggle{border:0;border-radius:13px;background:#fde8f0;color:#bb4c75;font-size:12px;font-weight:900;padding:8px 11px;white-space:nowrap}
#ai-modal .ai-tool-dock span{color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#ai-modal .ai-tools-panel{margin:2px 0 7px;padding:10px;max-height:40dvh}
#ai-modal .ai-day-quick{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:6px 0 5px}
#ai-modal .ai-day-quick button{border:1px solid #f0cad8;border-radius:10px;background:#fff5f8;color:#b74d73;font-weight:800;font-size:11px;padding:7px 0;white-space:nowrap}
#ai-modal .ai-day-quick button.selected{background:#dd5b86;color:#fff;border-color:#dd5b86}
#ai-modal .ai-chat-note{margin:5px 2px 0;text-align:left;font-size:11px}
@media(max-width:380px){#ai-modal .ai-chat-modal{padding-left:12px;padding-right:12px}#ai-modal .ai-suggestion-row button{font-size:10px}#ai-modal .ai-day-quick button{font-size:10px}}
/* v29 camera + hold-to-talk bottom composer */
#ai-modal .ai-tools-panel{order:3;margin:2px 0 7px;max-height:39dvh}
#ai-modal .ai-composer{order:4;min-height:60px;align-items:flex-end;border-radius:28px;padding:6px 8px;box-shadow:0 10px 24px #6c2f491c}
#ai-modal .ai-composer textarea{min-height:48px;padding:13px 3px 10px;font-size:16px}
#ai-modal .ai-camera,#ai-modal .ai-voice,#ai-modal .ai-plus{width:44px;height:44px;flex:none;border:0;border-radius:16px;background:transparent;color:#111;font-weight:900;font-size:25px;display:grid;place-items:center}
#ai-modal .ai-camera{font-size:23px}
#ai-modal .ai-voice{font-size:28px}
#ai-modal .ai-plus{font-size:30px}
#ai-modal .ai-tool-dock,#ai-modal .ai-photo-status,#ai-modal .ai-chat-note{display:none!important}
#ai-modal .ai-result-actions{order:2}#ai-modal .ai-tools-panel{order:3}#ai-modal .ai-composer{order:4}

/* v30 compact polished AI sheet */
#ai-modal.overlay{align-items:flex-end}
#ai-modal .ai-chat-modal{height:min(80dvh,720px);min-height:0;border-radius:30px 30px 0 0;padding-top:14px}
#ai-modal .ai-dialogue{padding-top:0}
#ai-modal .bubble{padding:8px 11px;line-height:1.42;font-size:13px}
#ai-modal .ai-suggestion-row{padding-top:5px;gap:5px}
#ai-modal .ai-suggestion-row button{height:46px;white-space:normal;line-height:1.13;overflow:visible;text-overflow:clip;padding:3px;font-size:10.5px}
#ai-modal .ai-composer{align-items:center;justify-content:center;min-height:62px}
#ai-modal .ai-composer textarea{align-self:center;padding-top:11px;padding-bottom:8px}
#ai-modal .ai-camera svg,#ai-modal .ai-voice svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
#ai-modal .ai-camera,#ai-modal .ai-voice{display:grid;place-items:center;padding:0}
.ai-plan-overlay{position:fixed;inset:0;z-index:80;background:#2f202966;display:flex;align-items:flex-end;justify-content:center;padding:0}
.ai-plan-preview{width:min(760px,100%);height:min(88dvh,820px);background:var(--paper);border-radius:28px 28px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;box-shadow:0 -10px 40px #1e071033}
.ai-plan-preview header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.ai-plan-preview header p{margin:0;color:var(--rose);font-size:12px;font-weight:900}.ai-plan-preview h2{margin:3px 0 0;font-size:20px}.ai-plan-scroll{overflow:auto;flex:1;padding:8px 1px}.ai-plan-day{margin:10px 0;background:#fff;border:1px solid var(--line);border-radius:17px;padding:10px}.ai-plan-day h3{margin:0 0 7px;color:#b24e73;font-size:14px}.ai-plan-day article{display:grid;grid-template-columns:49px 1fr;gap:8px;border-top:1px solid #f5e7ed;padding:9px 0}.ai-plan-day article:first-of-type{border-top:0}.ai-plan-day time{font-size:12px;color:var(--rose);font-weight:900}.ai-plan-day b{font-size:14px}.ai-plan-day p,.ai-plan-day small{display:block;margin:3px 0;color:var(--muted);font-size:12px;line-height:1.4}.ai-plan-day em{display:block;color:#ad6c44;font-size:12px;font-style:normal;margin-top:3px}.ai-plan-extra{background:#fff4f7;border-radius:15px;padding:11px;margin:10px 0}.ai-plan-extra p{margin:5px 0;color:var(--muted);font-size:12px}.ai-plan-preview .submit{margin:8px 0 0;flex:none}
/* v31 reduce web top gap and compact AI greeting */
.screen{padding-top:calc(env(safe-area-inset-top) + 4px)}
.hero{padding-top:4px}
#ai-modal .bubble{padding:6px 10px;line-height:1.35}
#ai-modal .ai-dialogue .bubble.assistant:first-child{max-width:78%;margin-top:0}
/* v32 one-line travel recommendations */
#ai-modal .ai-suggestion-row button{height:34px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1;padding:0 3px;font-size:10px}
/* v33 complete one-line labels in two rows */
#ai-modal .ai-suggestion-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
#ai-modal .ai-suggestion-row button{height:35px;white-space:nowrap;overflow:visible;text-overflow:clip;font-size:11px;padding:0 2px}
/* v34 align AI chat content to top and tighten recommendation rows */
#ai-modal .ai-chat-modal{padding-top:8px}
#ai-modal .ai-chat-head{margin-bottom:0}
#ai-modal .ai-service-state{display:none!important}
#ai-modal .ai-dialogue{margin-top:0;padding-top:0}
#ai-modal .ai-dialogue .bubble.assistant:first-child{width:fit-content;max-width:100%;margin-top:0;padding:6px 10px}
#ai-modal .ai-suggestion-row{grid-auto-rows:34px;row-gap:2px;column-gap:5px;padding:3px 0 2px;align-content:start}
#ai-modal .ai-suggestion-row button{height:34px;margin:0}

/* v35 unified interaction polish: safe-area AI header, history drawer, copyable messages and stable map filters */
#ai-modal{padding-top:env(safe-area-inset-top);align-items:stretch}
#ai-modal .ai-chat-modal{position:relative;width:min(760px,100%);height:100dvh;min-height:0;max-height:none;border-radius:0;padding:calc(8px + env(safe-area-inset-top)) 14px calc(8px + env(safe-area-inset-bottom));overflow:hidden}
#ai-modal .ai-chat-head{height:56px;position:relative;display:grid;grid-template-columns:48px 1fr 48px;align-items:center;margin:0 -2px 4px}
#ai-modal .ai-chat-title{text-align:center;min-width:0;line-height:1.15}
#ai-modal .ai-chat-title b{display:block;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:800}
#ai-modal .ai-chat-title span{display:block;color:#b9aab1;font-size:11px;margin-top:5px;white-space:nowrap}
#ai-modal .ai-menu{width:36px;height:36px;border:0;background:transparent;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:5px;padding:5px 2px}
#ai-modal .ai-menu span{display:block;width:25px;height:3px;border-radius:2px;background:#171218}
#ai-modal .ai-close{justify-self:end;background:transparent;width:36px;height:36px;color:#9b6a7d;font-size:25px}
#ai-modal .ai-history-panel{position:absolute;z-index:5;left:0;top:calc(62px + env(safe-area-inset-top));bottom:0;width:min(320px,88vw);background:#fffafb;border-right:1px solid var(--line);box-shadow:12px 0 30px #47223518;padding:14px 12px;overflow:auto}
#ai-modal .ai-history-head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 12px;border-bottom:1px solid var(--line)}
#ai-modal .ai-history-head b{font-size:16px}
#ai-modal .ai-history-head button{border:0;background:var(--rose2);color:#b44871;padding:7px 10px;border-radius:10px;font-size:12px;font-weight:800}
#ai-modal .ai-history-row{position:relative;display:flex;align-items:stretch;overflow:hidden;border-bottom:1px solid #f4e6ec;min-height:58px;background:#fffafb}
#ai-modal .ai-history-main{position:relative;z-index:1;display:grid;align-content:center;gap:3px;text-align:left;flex:1;border:0;background:#fffafb;padding:10px 8px;transition:transform .18s ease}
#ai-modal .ai-history-main b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#ai-modal .ai-history-main small{color:var(--muted);font-size:10px}
#ai-modal .ai-history-delete{position:absolute;right:0;top:0;bottom:0;width:66px;border:0;border-radius:0;background:#cf4d6e;color:#fff;font-size:12px;opacity:0;transition:opacity .18s ease}
#ai-modal .ai-history-row.revealed .ai-history-main{transform:translateX(-66px)}
#ai-modal .ai-history-row.revealed .ai-history-delete{opacity:1}
#ai-modal .ai-dialogue{position:relative;z-index:1}
#ai-modal .bubble{position:relative;padding-right:42px}
#ai-modal .ai-copy-message{position:absolute;right:8px;bottom:7px;border:0;background:transparent;color:#bd7891;font-size:10px;padding:2px 0}
#ai-modal .bubble.user .ai-copy-message{color:#fff8fb}
#ai-modal .ai-photo-message{display:grid;gap:6px}
#ai-modal .ai-photo-message img{display:block;width:min(180px,70vw);max-height:180px;object-fit:cover;border-radius:12px}
#ai-modal .ai-composer{min-height:54px;height:58px;border:0;border-radius:25px;background:#fff;padding:4px 6px;box-shadow:0 7px 18px #8a365a16}
#ai-modal .ai-composer textarea{min-height:42px;height:42px;padding:10px 3px 8px;border:0!important;background:transparent;box-shadow:none!important}
#ai-modal .ai-camera,#ai-modal .ai-voice,#ai-modal .ai-plus{width:40px;height:40px}
#ai-modal .ai-plus{border-radius:50%;background:var(--rose);color:#fff;font-size:23px}
#ai-modal .ai-result-actions{flex:none}
.map-day-toggle{display:flex;gap:7px;padding:14px 14px 0;overflow-x:auto;border-bottom:0}
.map-day-toggle button{flex:none;border:1px solid #eadfe4;border-radius:12px;background:#fff;color:var(--muted);padding:8px 15px;font-size:12px;font-weight:800;white-space:nowrap}
.map-day-toggle button.active{border-color:var(--rose);background:var(--rose);color:#fff}
.map-card .transport-toggle{padding-top:10px}
.map-card .marker-number span{width:30px;height:30px;font-size:13px;line-height:1;font-variant-numeric:tabular-nums}
@media(max-width:540px){#ai-modal .ai-chat-modal{padding-left:12px;padding-right:12px}.map-day-toggle{padding-left:12px;padding-right:12px}}

/* v36 screenshot fix: natural-height conversation flow, visible recommendations, compact centered composer */
#ai-modal .ai-chat-modal{padding-top:max(3px,env(safe-area-inset-top));padding-bottom:max(5px,env(safe-area-inset-bottom))}
#ai-modal .ai-chat-head{height:48px;margin-bottom:2px}
#ai-modal .ai-dialogue{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;min-height:0;overflow-y:auto;overflow-x:hidden;padding:2px 0 8px;margin:0;flex:1}
#ai-modal .ai-dialogue .bubble{flex:none;align-self:flex-start;height:auto;min-height:0;margin:0;max-height:none}
#ai-modal .ai-dialogue .bubble.user{align-self:flex-end}
#ai-modal .ai-dialogue .bubble.assistant:first-child{width:auto;max-width:100%;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}
#ai-modal .ai-suggestion-row{width:100%;flex:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;overflow:visible;padding:0 0 2px}
#ai-modal .ai-suggestion-row button{width:100%;min-width:0;height:34px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#ai-modal .ai-composer{height:52px;min-height:52px;flex:none;align-items:center;gap:5px;padding:3px 5px;border-radius:24px}
#ai-modal .ai-composer textarea{height:38px;min-height:38px;max-height:38px;align-self:center;padding:8px 3px;font-size:15px;line-height:1.35}
#ai-modal .ai-camera,#ai-modal .ai-voice,#ai-modal .ai-plus{width:38px;height:38px;min-width:38px;align-self:center;border-radius:50%;padding:0;display:grid;place-items:center}
#ai-modal .ai-camera svg,#ai-modal .ai-voice svg{width:27px;height:27px}
#ai-modal .ai-plus{font-size:22px}
#ai-modal .ai-history-panel{width:min(276px,76vw);top:calc(52px + env(safe-area-inset-top));padding:12px 10px}

/* v37 Android-parity AI layout: white canvas, compact header, recommendation empty state and keyboard-safe composer */
#ai-modal,#ai-modal .ai-chat-modal,#ai-modal .ai-dialogue{background:#fff}
#ai-modal .ai-chat-modal{padding-top:max(14px,env(safe-area-inset-top));padding-bottom:calc(66px + env(safe-area-inset-bottom));color:#211b20}
#ai-modal .ai-chat-head{height:54px;margin-bottom:12px}
#ai-modal .ai-chat-title span{display:none!important}
#ai-modal .ai-dialogue{background:#fff;gap:14px;padding:0 0 18px}
#ai-modal .ai-dialogue .bubble.assistant:first-child{display:none}
#ai-modal .ai-suggestion-row{width:100%;display:block;padding:0;margin:0}
#ai-modal .ai-recommend-title{display:block;margin:0 0 16px;font-size:18px;line-height:1.35;color:#6f636b}
#ai-modal .ai-recommend-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px}
#ai-modal .ai-recommend-grid button{width:100%;height:56px;border:1px solid #f2dce5;border-radius:22px;background:#fff5f8;color:#bd5277;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 5px #6d294012}
#ai-modal .ai-recommend-grid button:last-child{grid-column:1/-1}
#ai-modal .ai-composer{position:fixed;z-index:12;left:50%;bottom:calc(var(--ai-keyboard-offset,0px) + env(safe-area-inset-bottom) + 8px);transform:translateX(-50%);width:min(760px,calc(100% - 24px));height:58px;min-height:58px;border:0;border-radius:29px;background:#fff;box-shadow:0 5px 16px #6d294018;padding:5px 7px}
#ai-modal .ai-composer textarea{height:42px;min-height:42px;max-height:42px;line-height:1.35;padding:10px 3px}
#ai-modal .ai-camera,#ai-modal .ai-voice,#ai-modal .ai-plus{width:42px;height:42px;min-width:42px}
#ai-modal .ai-plus{background:#000;color:#fff}
#ai-modal .ai-history-panel{width:min(278px,76vw);top:calc(68px + env(safe-area-inset-top));background:#fff}
@media(max-width:540px){#ai-modal .ai-chat-modal{padding-left:14px;padding-right:14px}.ai-recommend-grid{gap:11px 9px}}

/* v38: hard-reset the AI viewport to white and let the browser resize content for the IME. */
html,body{background:#fff}
#ai-modal.overlay{background:#fff!important;padding:0!important;align-items:stretch}
#ai-modal .ai-chat-modal{background:#fff!important;height:100dvh;min-height:100dvh;padding-top:max(12px,env(safe-area-inset-top));padding-bottom:calc(8px + env(safe-area-inset-bottom));overflow:hidden}
#ai-modal .ai-dialogue{background:#fff!important;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
#ai-modal .ai-composer{bottom:calc(env(safe-area-inset-bottom) + 8px);margin:0}
#ai-modal .ai-recommend-grid button:last-child{grid-column:auto}
#ai-modal .ai-history-row{touch-action:pan-y}
#ai-modal .ai-history-delete{pointer-events:none}
#ai-modal .ai-history-row.revealed .ai-history-delete{pointer-events:auto}

/* v40: keep five destinations in two balanced rows and use one surface color for the whole AI shell. */
#ai-modal .ai-chat-head{background:#fff!important}
#ai-modal .ai-recommend-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px 8px}
#ai-modal .ai-recommend-grid button{grid-column:span 2}
#ai-modal .ai-recommend-grid button:nth-child(n+4){grid-column:span 3}
#ai-modal .ai-recommend-grid button:last-child{grid-column:span 3}
@media(max-width:540px){#ai-modal .ai-recommend-grid{gap:9px 6px}#ai-modal .ai-recommend-grid button{font-size:13px}}

/* v44: the home screen owns vertical scrolling on mobile; fixed detail/map layers stay isolated. */
html,body{height:100%;overflow:hidden}
#home.screen{height:100dvh;min-height:100dvh;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
