:root{--ink:#1d1d1f;--muted:#76767d;--line:#e7e7eb;--page:#f5f5f7;--blue:#1769cf;--blue-soft:#eaf2ff;--shadow:0 12px 38px #1d1d1f0b}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{min-height:100%}
body{margin:0;background:var(--page);color:var(--ink);font:14px/1.5 'DM Sans','Noto Sans SC',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #68a1e9;outline-offset:2px}
.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 max(32px,calc((100vw - 1512px)/2));position:relative;z-index:10}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:21px;font-weight:800;letter-spacing:-.7px;white-space:nowrap}.brandmark{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--ink);color:#fff;font-size:22px;line-height:1}
.topbar-caption{color:#85858b;font-size:12px}.local-badge{margin-left:auto;color:#818189;font-size:11px}
.shell{max-width:1580px;margin:0 auto;padding:36px 32px 30px}.hero{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:24px}.hero-copy .eyebrow{margin-bottom:8px}.eyebrow{font-size:10px;letter-spacing:1.6px;color:#8d8d95;font-weight:700}.hero h1{font-size:clamp(28px,3vw,42px);line-height:1.18;letter-spacing:-1.8px;margin:0;font-weight:800}.hero p{font-size:13px;color:var(--muted);margin:11px 0 0}.hero-actions{display:flex;gap:9px;flex:none}
.button{border:1px solid #dedee3;border-radius:12px;padding:10px 16px;background:#fff;color:#37373c;font-size:12px;font-weight:700;white-space:nowrap;transition:transform .15s,background .15s,border-color .15s}.button:hover{background:#f7f7f9;transform:translateY(-1px)}.button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.button.primary:hover{background:#0759b9}.button.subtle{box-shadow:0 2px 4px #1d1d1f05}.text-button{border:0;background:transparent;color:var(--blue);font-size:11px;font-weight:700;padding:4px 0}.text-button:hover{text-decoration:underline}
.project-strip{display:flex;gap:10px;overflow-x:auto;padding:0 0 20px;scrollbar-width:thin}.project-chip{border:1px solid var(--line);background:#fff;border-radius:15px;padding:10px 14px;min-width:175px;max-width:230px;display:flex;align-items:center;gap:10px;text-align:left;color:var(--ink);transition:border-color .15s,box-shadow .15s}.project-chip.active{border-color:#9dc0ee;box-shadow:0 0 0 2px #dceaff}.project-chip:hover{border-color:#aebcd1}.project-chip-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#eff4fc;color:var(--blue);flex:none}.project-chip-icon svg{width:16px;height:16px}.project-chip strong,.project-chip small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-chip strong{font-size:11px}.project-chip small{color:#9898a0;font-size:9px;margin-top:2px}.project-add{border:1px dashed #cfd0d7;border-radius:15px;background:#f8f8fa;color:#6e6e76;padding:0 18px;min-width:120px;font-size:11px;font-weight:700}.project-add:hover{background:#fff;color:var(--blue)}
.workspace{display:grid;grid-template-columns:minmax(365px,435px) minmax(500px,1fr);gap:18px;align-items:stretch;min-height:735px}.panel{background:#fff;border:1px solid var(--line);border-radius:19px;box-shadow:var(--shadow);overflow:hidden}.itinerary{display:flex;flex-direction:column;min-height:735px}.panel-head{padding:23px 23px 14px;display:flex;justify-content:space-between;align-items:start;gap:12px}.panel-head h2{font-size:19px;letter-spacing:-.5px;margin:4px 0 0}.panel-head p{font-size:11px;color:#94949c;margin:5px 0 0}.panel-head .text-button{margin-top:14px;white-space:nowrap}
.days{display:flex;gap:7px;padding:0 23px 17px;overflow-x:auto}.day{flex:1;min-width:75px;text-align:left;border:1px solid #e7e7ed;background:#fff;border-radius:11px;padding:10px 9px;color:#8b8b94}.day strong{font-size:12px;display:block}.day small{font-size:9px;display:block;margin-top:4px}.day.active{background:var(--blue-soft);border-color:#bcd6f8;color:var(--blue)}
.section-label{display:flex;justify-content:space-between;align-items:center;padding:0 23px 8px;font-size:11px;font-weight:700}.filters{display:flex;gap:6px;flex-wrap:wrap;padding:0 23px 17px}.filter{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border:1px solid #e9e9ed;border-radius:18px;background:#fff;font-size:10px;color:#62626a}.filter.active{background:#f6f6f8;border-color:#dadce2;color:#28282d}.filter:not(.active){opacity:.48}.filter-icon{width:13px;height:13px;color:var(--tag-color);flex:none}.filter-icon svg{width:13px;height:13px}
.search-wrap{position:relative;padding:15px 23px 14px;border-top:1px solid #f0f0f2;border-bottom:1px solid #f0f0f2}.search-top{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:8px}.search-top label{font-size:11px;font-weight:700}.search-top span{font-size:10px;color:#a0a0a8}.search-input-row{height:40px;border:1px solid #e4e4e8;border-radius:10px;display:flex;align-items:center;gap:7px;padding:0 11px;background:#f8f8fa}.search-input-row:focus-within{border-color:#8eb9ef;background:#fff}.search-icon{font-size:21px;color:#92929a;line-height:1}.search-input-row input{min-width:0;flex:1;border:0;outline:none;background:transparent;font-size:11px;color:var(--ink)}.search-input-row input::placeholder{color:#a6a6ae}.search-input-row kbd{font-size:10px;color:#aaaab0;font-family:inherit}.search-results{position:absolute;z-index:700;left:23px;right:23px;top:88px;max-height:285px;overflow:auto;background:#fff;border:1px solid #e1e1e5;border-radius:12px;box-shadow:0 15px 35px #1d1d1f26;padding:5px}.search-result{width:100%;border:0;background:#fff;text-align:left;display:flex;align-items:center;gap:9px;border-radius:8px;padding:10px;color:var(--ink)}.search-result:hover,.search-result:focus-visible{background:#f2f6fb}.search-result .result-dot{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;background:#eaf2ff;color:var(--blue);flex:none}.result-dot svg{width:13px;height:13px}.result-copy{min-width:0}.result-copy strong,.result-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-copy strong{font-size:11px}.result-copy small{font-size:9px;color:#9999a1;margin-top:2px}.search-empty{padding:15px;font-size:11px;color:#8e8e97}
.route-controls{padding:15px 23px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:11px;font-weight:700}.segmented{display:flex;background:#f0f0f3;padding:3px;border-radius:10px;gap:2px}.segmented button{border:0;border-radius:8px;background:transparent;padding:6px 11px;color:#777780;font-size:10px}.segmented button.active{background:#fff;color:var(--blue);box-shadow:0 1px 4px #1d1d1f1c;font-weight:700}
.route-summary{display:flex;align-items:center;gap:11px;margin:14px 23px 4px;background:#f0f6ff;border:1px solid #e2eeff;border-radius:12px;padding:11px 12px;min-height:58px}.route-summary.error{background:#fcf6f2;border-color:#f4e9df}.route-symbol{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:#dcecff;color:var(--blue);font-size:18px;flex:none}.route-summary.error .route-symbol{background:#fae8dd;color:#b57751}.route-summary strong{display:block;font-size:11px;font-weight:700}.route-summary small{display:block;font-size:9px;color:#7e8b9b;margin-top:2px}
.timeline{padding:15px 23px 20px;overflow:auto;flex:1;min-height:210px}.stop{display:grid;grid-template-columns:44px 17px 1fr;column-gap:7px;min-height:78px}.stop-time{font-size:10px;color:#96969e;margin-top:3px}.stop-rail{position:relative;display:flex;justify-content:center}.stop-rail:before{position:absolute;content:'';top:8px;bottom:-10px;border-left:1px solid #e5e5e9}.stop:last-of-type .stop-rail:before{display:none}.stop-rail i{width:9px;height:9px;display:block;border:2px solid white;box-shadow:0 0 0 1px var(--tag-color);background:var(--tag-color);border-radius:50%;z-index:1;margin-top:4px}.stop-card{min-width:0;display:flex;align-items:flex-start;gap:9px;padding-bottom:16px;cursor:pointer}.stop-thumb{width:45px;height:45px;border-radius:10px;background:color-mix(in srgb,var(--tag-color) 12%,white);display:grid;place-items:center;color:var(--tag-color);flex:none}.stop-thumb svg{width:21px;height:21px}.stop-copy{min-width:0;flex:1}.stop-name{font-size:12px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stop-address{font-size:9px;color:#96969e;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stop-tag{display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb,var(--tag-color) 13%,white);color:var(--tag-color);padding:3px 7px;border-radius:5px;font-size:9px;font-weight:700;margin-top:7px}.stop-tag svg{width:10px;height:10px}.stop-note{margin:7px 0 0;color:#64646d;font-size:10px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.stop-actions{display:flex;flex-direction:column;gap:1px}.stop-actions button{width:21px;height:19px;display:grid;place-items:center;border:0;background:transparent;color:#a1a1a9;border-radius:4px;font-size:11px;padding:0}.stop-actions button:hover{background:#f0f4f9;color:var(--blue)}.stop-actions button:disabled{opacity:.3;cursor:default}.leg-inline{margin:-8px 0 10px 66px;color:#4780c6;font-size:9px;font-weight:700}.leg-inline span{font-size:12px}.empty-day{padding:27px 10px;border:1px dashed #dadbe1;border-radius:11px;text-align:center;color:#94949c;font-size:11px}.sidebar-foot{padding:12px 23px;border-top:1px solid #eeeef0;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#92929a}
.map-panel{min-height:735px;position:relative;background:#e5e9e6}.map{position:absolute;inset:0;z-index:0}.map-title{position:absolute;z-index:500;top:19px;left:19px;background:#fffffff0;box-shadow:0 4px 17px #26352a21;border:1px solid #fff;border-radius:12px;padding:9px 13px;display:flex;gap:9px;align-items:center;pointer-events:none;backdrop-filter:blur(14px)}.map-title-icon{font-size:19px;color:var(--blue)}.map-title strong,.map-title small{display:block}.map-title strong{font-size:11px}.map-title small{font-size:9px;color:#8a8a93}.map-hint{position:absolute;z-index:500;top:78px;left:19px;background:#fffffff0;border-radius:10px;padding:7px 11px;color:#75757d;font-size:10px;box-shadow:0 3px 12px #26352a19;pointer-events:none}.map-legend{position:absolute;z-index:500;bottom:28px;left:19px;background:#fffffff0;box-shadow:0 4px 17px #26352a21;border-radius:10px;padding:8px 11px;display:flex;gap:12px;flex-wrap:wrap;max-width:calc(100% - 60px);pointer-events:none;backdrop-filter:blur(14px)}.legend-item{display:flex;gap:4px;align-items:center;font-size:9px;color:#777780}.legend-item svg{width:12px;height:12px;stroke:var(--tag-color)}.map-notice{position:absolute;z-index:500;top:112px;left:19px;right:19px;max-width:350px;border-radius:10px;background:#fff;box-shadow:0 5px 18px #152b2026;padding:11px 13px;color:#6f7780;font-size:11px}.leaflet-container{font-family:'DM Sans','Noto Sans SC',sans-serif}.leaflet-control-zoom{border:none!important;box-shadow:0 4px 17px #26352a21!important;border-radius:9px;overflow:hidden}.leaflet-control-zoom a{color:var(--blue)!important;border-color:#e8e8eb!important}.leaflet-control-attribution{font-size:9px!important;background:#ffffffd9!important}.place-marker{display:flex;flex-direction:column;align-items:center;filter:drop-shadow(0 3px 6px #243b2b4a)}.marker-head{width:30px;height:30px;display:grid;place-items:center;background:var(--tag-color);color:#fff;border:2px solid #fff;border-radius:50% 50% 50% 6px;transform:rotate(-45deg)}.marker-head svg{width:14px;height:14px;transform:rotate(45deg)}.marker-label{margin-top:2px;max-width:120px;background:#fff;border-radius:6px;padding:3px 6px;font-size:9px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.marker-order{display:inline-block;margin-right:4px;color:var(--tag-color)}.leg-badge-wrap{pointer-events:none!important}.leg-badge{display:inline-block;min-width:120px;text-align:center;padding:4px 7px;border-radius:20px;background:#fff;color:#1769cf;border:1px solid #bed7f9;box-shadow:0 3px 9px #143e7233;font-size:10px;font-weight:800;white-space:nowrap}.leaflet-popup-content-wrapper{border-radius:11px}.popup-title{font-size:12px;font-weight:700}.popup-detail{font-size:10px;color:#85858d;margin-top:4px}.popup-note{font-size:10px;white-space:pre-wrap;margin-top:7px;color:#4e4e55}.source-note{font-size:10px;color:#a0a0a8;margin:12px 3px 0}
.dialog-backdrop{position:fixed;inset:0;z-index:1000;background:#11141abb;display:grid;place-items:center;padding:20px;backdrop-filter:blur(4px)}.dialog{width:min(450px,100%);max-height:min(90vh,760px);overflow:auto;background:#fff;border-radius:20px;box-shadow:0 20px 65px #11141a4a;padding:25px}.dialog-head{display:flex;justify-content:space-between;align-items:center}.close-button{border:0;background:transparent;font-size:23px;color:#92929a;line-height:1}.dialog h2{font-size:21px;letter-spacing:-.5px;margin:5px 0}.dialog-address{font-size:11px;color:#92929a;min-height:17px;margin:0 0 18px}.form-field{display:grid;gap:6px;font-size:11px;font-weight:700;color:#5f5f68;margin:12px 0}.form-field input,.form-field select,.form-field textarea{width:100%;border:1px solid #dedee3;border-radius:10px;padding:10px 11px;color:var(--ink);background:#fff;resize:vertical}.form-field textarea{min-height:75px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.icon-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}.icon-choice{height:43px;display:grid;place-items:center;border:1px solid #e2e2e6;border-radius:10px;background:#fff;color:#72727a}.icon-choice svg{width:20px;height:20px}.icon-choice.selected{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}.color-grid{display:flex;flex-wrap:wrap;gap:9px}.color-choice{width:29px;height:29px;border:3px solid #fff;box-shadow:0 0 0 1px #d4d4da;background:var(--swatch);border-radius:50%}.color-choice.selected{box-shadow:0 0 0 2px var(--blue)}.manager-dialog{width:min(540px,100%)}.manager-list{display:grid;gap:8px}.manager-row{border:1px solid #e9e9ed;border-radius:11px;padding:10px 12px;display:flex;justify-content:space-between;gap:10px;align-items:center}.manager-row strong,.manager-row small{display:block}.manager-row strong{font-size:11px}.manager-row small{font-size:9px;color:#96969f;margin-top:3px}.manager-row div{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.manager-row button{border:0;background:#f3f4f6;border-radius:7px;padding:5px 7px;color:#5e626b;font-size:9px}.manager-row button:hover{background:#eaf2ff;color:var(--blue)}.manager-row button:disabled{opacity:.35;cursor:default}.toast{position:fixed;z-index:1200;left:50%;bottom:24px;transform:translate(-50%,15px);opacity:0;transition:opacity .2s,transform .2s;background:#25262b;color:#fff;padding:10px 15px;border-radius:10px;pointer-events:none;font-size:11px;box-shadow:0 8px 24px #11141a33}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1000px){.workspace{grid-template-columns:minmax(340px,40%) 1fr}.shell{padding:26px 18px}.topbar{padding:0 18px}}
@media(max-width:720px){.topbar{height:60px}.topbar-caption{display:none}.local-badge{font-size:9px}.shell{padding:21px 12px 24px}.hero{align-items:flex-start;flex-direction:column;gap:15px}.hero h1{font-size:29px}.hero-actions{width:100%}.hero-actions .button{flex:1}.workspace{display:flex;flex-direction:column}.itinerary{order:2;min-height:580px}.map-panel{order:1;min-height:430px}.map-legend{gap:7px;bottom:24px}.source-note{line-height:1.6}.project-strip{padding-bottom:16px}.dialog{padding:21px}}
@media(max-width:390px){.form-grid{grid-template-columns:1fr}.segmented button{padding:5px 8px}.map-hint{font-size:9px}}
/* Iteration: mixed Arial/Songti type, segment controls, map search, and tag island. */
:root{--font-easytrip:Arial,"Songti SC","STSong","SimSun",serif}
body,.leaflet-container{font-family:var(--font-easytrip)}
button,input,select,textarea{font-family:var(--font-easytrip)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hero-actions{flex-wrap:wrap;justify-content:flex-end}
.map-search{position:absolute;z-index:650;top:19px;left:190px;right:76px;width:auto;padding:0;border:0;background:transparent;box-shadow:0 5px 18px #1d1d1f25;border-radius:13px}
.map-search .search-input-row{height:45px;background:#fffffff5;border:1px solid #fff;border-radius:13px;box-shadow:0 2px 8px #1d1d1f16;padding:0 14px;backdrop-filter:blur(16px)}
.map-search .search-input-row input{font-size:12px}
.map-search .search-results{left:0;right:0;top:51px;border-radius:13px}
.map-hint{top:79px}
.map-notice{top:118px}
.route-summary{margin-top:2px}
.leg-inline{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-7px 0 15px 65px;color:#5d6a7c;font-size:10px}
.leg-description{display:flex;gap:4px;align-items:center;min-width:0}
.leg-description strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}
.leg-description span{font-size:13px;color:#1769cf}
.leg-mode{display:flex;gap:1px;padding:2px;background:#f1f2f5;border-radius:8px;flex:none}
.leg-mode button{border:0;background:transparent;border-radius:6px;color:#777781;padding:4px 6px;font-size:9px;line-height:1.2}
.leg-mode button.active{background:#fff;color:#1769cf;box-shadow:0 1px 4px #1d1d1f20;font-weight:700}
.leg-badge{color:var(--mode-color);border-color:color-mix(in srgb,var(--mode-color) 35%,white)}
.map-tag-island{position:absolute;z-index:600;left:19px;bottom:28px;width:138px;max-height:44px;overflow:hidden;border-radius:23px;background:#1d1d1f;color:#fff;box-shadow:0 8px 24px #10151f45;transition:width .56s cubic-bezier(.24,1.52,.48,1),max-height .62s cubic-bezier(.25,1.45,.5,1),border-radius .48s cubic-bezier(.25,1.3,.45,1);will-change:width,max-height}
.map-tag-island.expanded{width:min(390px,calc(100vw - 50px));max-height:190px;border-radius:23px}
.map-tag-trigger{display:flex;align-items:center;gap:9px;width:100%;height:44px;padding:0 15px;border:0;background:transparent;color:#fff;text-align:left;font-size:11px;font-weight:700;white-space:nowrap}
.island-dot{width:8px;height:8px;background:#7fb9ff;border-radius:50%;box-shadow:0 0 0 3px #2767ab66;flex:none}
.island-chevron{margin-left:auto;font-size:15px;transition:transform .42s cubic-bezier(.25,1.5,.5,1)}
.map-tag-island.expanded .island-chevron{transform:rotate(180deg)}
.map-tag-island.pinned .island-dot{background:#8be7bc;box-shadow:0 0 0 3px #25765266}
.map-tag-island .map-legend{position:static;display:flex;align-content:flex-start;gap:7px 14px;flex-wrap:wrap;max-width:none;padding:0 15px 14px;margin:0;background:transparent;box-shadow:none;border-radius:0;opacity:0;transform:translateY(-7px) scale(.94);transform-origin:top left;pointer-events:none;transition:opacity .25s ease,transform .5s cubic-bezier(.24,1.5,.48,1)}
.map-tag-island.expanded .map-legend{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
.map-tag-island .legend-item{font-size:10px;color:#f0f1f4;min-width:72px}
.map-tag-island .legend-item svg{width:14px;height:14px}
.map-tag-island .legend-item::first-letter{color:#fff}
.manager-row.tag-manager-row{align-items:center}
.tag-manager-name{display:flex;align-items:center;gap:10px;min-width:0}
.tag-manager-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--tag-color) 14%,white);color:var(--tag-color);flex:none}
.tag-manager-icon svg{width:17px;height:17px}
.day-manager-row label{display:flex;align-items:center;gap:9px;min-width:0;flex:1;font-size:10px;color:#7c7c85}
.day-manager-row label span{white-space:nowrap}
.day-manager-row input{min-width:80px;max-width:170px;width:100%;border:1px solid #dedee3;border-radius:8px;padding:6px 8px;font-size:11px;color:#1d1d1f}
.export-options{display:grid;gap:9px;margin-top:16px}
.export-option{display:flex;align-items:flex-start;gap:11px;padding:14px;border:1px solid #e1e1e7;border-radius:12px;cursor:pointer}
.export-option:has(input:checked){border-color:#90b9ee;background:#f1f7ff;box-shadow:0 0 0 1px #d5e6fb}
.export-option input{accent-color:#1769cf;margin-top:3px}
.export-option strong,.export-option small{display:block}
.export-option strong{font-size:12px}
.export-option small{font-size:10px;color:#777781;line-height:1.55;margin-top:4px}
.export-note{font-size:10px;color:#92929a;margin:15px 2px 0;line-height:1.5}
@media(max-width:1000px){.map-search{left:18px;right:67px;top:78px}.map-hint{top:136px}.map-notice{top:174px}}
@media(max-width:720px){.map-search{left:18px;right:18px;top:72px}.map-hint{top:130px}.map-notice{top:168px}.hero-actions .button{flex:1}.map-tag-island{bottom:22px}.day-manager-row{flex-wrap:wrap}.day-manager-row label{flex-basis:100%}}
@media(max-width:390px){.leg-inline{margin-left:52px;flex-wrap:wrap}.map-search{top:70px}}
@media(prefers-reduced-motion:reduce){.map-tag-island,.map-tag-island .map-legend,.island-chevron{transition-duration:.01ms!important}}
/* Compact transparent map tags and per-leg animated mode capsule. */
.map-search{left:calc(50% + 54px);right:auto;top:19px;width:min(360px,calc(100% - 240px));transform:translateX(-50%)}
.map-search .search-input-row{height:43px}
.map-search .search-input-row kbd{display:none}
.map-hint{top:78px}
.map-notice{top:116px}
.map-tag-island,.map-tag-island.expanded{display:flex;align-items:center;gap:4px;width:auto;max-height:none;min-height:0;overflow:visible;border-radius:0;background:transparent;box-shadow:none;transition:none;will-change:auto}
.map-tag-island .map-legend,.map-tag-island.expanded .map-legend{display:flex;align-items:center;gap:7px;position:static;padding:0;margin:0;max-width:none;background:transparent;box-shadow:none;border-radius:0;opacity:1;transform:none;pointer-events:auto;transition:none}
.map-tag-island .legend-item{display:grid;place-items:center;width:25px;min-width:25px;height:29px;color:var(--tag-color);font-size:0;filter:drop-shadow(0 0 2px white) drop-shadow(0 1px 1px #27374766)}
.map-tag-island .legend-item svg{width:22px;height:22px;stroke:var(--tag-color)}
.map-tag-island .map-legend-extra{display:flex;align-items:center;gap:7px;max-width:0;height:29px;overflow:hidden;opacity:0;transform:translateX(-12px) scale(.7);transform-origin:left center;pointer-events:none;transition:max-width .52s cubic-bezier(.23,1.38,.48,1),opacity .28s ease,transform .52s cubic-bezier(.23,1.48,.48,1)}
.map-tag-island.expanded .map-legend-extra{max-width:min(250px,calc(100vw - 175px));overflow-x:auto;opacity:1;transform:translateX(0) scale(1);pointer-events:auto}
.map-tag-island .map-legend-extra .legend-item{flex:none}
.map-tag-trigger{display:grid;place-items:center;width:30px;height:29px;padding:0;border:0;background:transparent;color:#1d344a;text-shadow:0 0 3px #fff,0 1px 2px #fff;font:700 12px Arial,sans-serif;filter:drop-shadow(0 1px 1px #27374755)}
.map-tag-trigger:hover{color:#1769cf}
.map-tag-island.pinned .map-tag-trigger{color:#1769cf;text-decoration:underline;text-underline-offset:4px}
.map-tag-island .island-dot,.map-tag-island .island-chevron{display:none}
.panel-head p{font-size:12px}
.day strong{font-size:14px}.day small{font-size:12px}
.section-label{font-size:12px}
.filter{font-size:12px;padding:7px 10px}
.filter-icon,.filter-icon svg{width:15px;height:15px}
.route-summary strong{font-size:14px}.route-summary small{font-size:12px}
.stop-time{font-size:12px}.stop-name{font-size:15px}.stop-address{font-size:12px}
.stop-tag{font-size:11px}.stop-tag svg{width:12px;height:12px}
.stop-note{font-size:13px}.stop-actions button{font-size:14px}
.leg-description{font-size:12px}.empty-day{font-size:13px}.sidebar-foot{font-size:12px}
.leg-inline{position:relative;z-index:2;overflow:visible}
.leg-capsule{position:relative;flex:none}
.leg-capsule-current{display:flex;align-items:center;justify-content:center;gap:5px;min-width:79px;height:30px;padding:0 10px;border:1px solid #dce1e8;border-radius:999px;background:#f3f6fa;color:#244967;box-shadow:0 2px 5px #28466412;font-size:12px;font-weight:700;transition:min-width .42s cubic-bezier(.25,1.45,.5,1),background .2s}
.leg-capsule.open .leg-capsule-current{min-width:100px;background:#e8f1fd}
.capsule-stage{position:relative;display:grid;place-items:center;min-width:33px;height:22px;overflow:visible}
.capsule-current-text{display:inline-block;white-space:nowrap}
.capsule-current-text.slide-out{animation:capsuleTextOut .19s ease-in forwards}
.capsule-current-text.slide-in{animation:capsuleTextIn .31s cubic-bezier(.2,1.2,.4,1) both}
.capsule-transition-icon{position:absolute;left:50%;top:50%;width:20px;height:20px;opacity:0;color:#1769cf}
.capsule-transition-icon svg{width:20px;height:20px}
.capsule-transition-icon.travel{animation:capsuleIconTravel .45s ease-in-out both}
.capsule-chevron{font-size:13px;color:#6c8097;transition:transform .32s cubic-bezier(.25,1.4,.5,1)}
.leg-capsule.open .capsule-chevron{transform:rotate(180deg)}
.capsule-options{position:absolute;right:0;top:35px;z-index:40;display:flex;align-items:center;gap:3px;width:222px;padding:5px;border:1px solid #e0e6ed;border-radius:999px;background:#fffffff5;box-shadow:0 10px 25px #223d5a29;opacity:0;pointer-events:none;transform:translateY(-9px) scale(.78);transform-origin:top right;transition:opacity .22s ease,transform .42s cubic-bezier(.25,1.48,.5,1)}
.leg-capsule.open .capsule-options{opacity:1;pointer-events:auto;transform:translateY(0) scale(1)}
.leg-capsule.animating .capsule-options{opacity:0;pointer-events:none;transform:translateY(-7px) scale(.83)}
.capsule-options button{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;height:28px;padding:0 4px;border:0;border-radius:999px;background:transparent;color:#66758a;font-size:10px;white-space:nowrap}
.capsule-options button svg{width:15px;height:15px;flex:none}
.capsule-options button.active,.capsule-options button:hover{background:#eaf2ff;color:#1769cf;font-weight:700}
@keyframes capsuleTextOut{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(18px)}}
@keyframes capsuleIconTravel{0%{opacity:0;transform:translate(-33px,-50%) scale(.8)}30%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}62%{opacity:1;transform:translate(5px,-50%) scale(1)}100%{opacity:0;transform:translate(30px,-50%) scale(.82)}}
@keyframes capsuleTextIn{from{opacity:0;transform:translateX(-18px)}to{opacity:1;transform:translateX(0)}}
.leg-badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:82px;padding:3px 6px;font-size:10px}
.leg-badge svg{width:15px;height:15px;flex:none}
@media(max-width:1000px){.map-search{top:19px;left:calc(50% + 54px);right:auto;width:min(360px,calc(100% - 240px))}.map-hint{top:78px}.map-notice{top:116px}}
@media(max-width:720px){.map-search{top:19px;left:calc(50% + 54px);right:auto;width:min(360px,calc(100% - 240px))}.map-hint{top:78px}.map-notice{top:116px}}
@media(max-width:390px){.map-search{top:19px}.map-search .search-input-row{padding:0 8px}.map-search .search-icon{font-size:17px}.leg-inline{flex-wrap:nowrap}}
@media(max-width:850px){.workspace{display:flex;flex-direction:column}.itinerary{order:2;min-height:580px}.map-panel{order:1;min-height:500px}.map-search{width:min(340px,calc(100% - 220px))}}
@media(prefers-reduced-motion:reduce){.map-tag-island .map-legend-extra,.capsule-options,.capsule-current-text,.capsule-transition-icon{animation:none!important;transition-duration:.01ms!important}}
.empty-project{margin:16px 0 0;padding:68px 28px;text-align:center;border:1px dashed #cad2dd;border-radius:19px;background:#fff;box-shadow:var(--shadow)}
.empty-project h2{font-size:27px;margin:8px 0 4px}.empty-project p{color:var(--muted);font-size:14px;margin:0 0 24px}
.form-help{color:#8c6170;background:#fff5f7;border-radius:8px;padding:9px 11px;font-size:11px;line-height:1.5}
.manager-empty{margin:0;padding:24px;text-align:center;color:#777781;font-size:13px;background:#f7f8fa;border-radius:11px}
.manager-row>span{min-width:0}.manager-row>span strong,.manager-row>span small{overflow-wrap:anywhere}
@media(max-width:600px){.hero-actions{flex-wrap:wrap}.hero-actions .button{min-width:calc(50% - 5px)}.manager-row{flex-wrap:wrap}.manager-row>div{width:100%;justify-content:flex-start}}
