:root{--system-blue: #007AFF;--system-blue-hover: #0062cc;--system-red: #FF3B30;--system-gray: #8E8E93;--system-gray-2: #AEAEB2;--system-gray-6: #F2F2F7;--bg-glass: rgba(255, 255, 255, .85);--bg-glass-hover: rgba(255, 255, 255, .95);--border-light: rgba(0, 0, 0, .05);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .04);--shadow-lg: 0 20px 40px rgba(0, 0, 0, .12);--text-primary: #1d1d1f;--text-secondary: #86868b;--radius-lg: 20px;--radius-md: 12px;--radius-sm: 8px;--font-stack: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-stack);color:var(--text-primary);height:100vh;width:100vw;overflow:hidden;background:#f5f5f7}#map{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}.glass-panel{position:absolute;top:20px;left:20px;width:360px;max-height:calc(100vh - 40px);background:#fffc;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-radius:20px;box-shadow:0 8px 32px #0000001f,0 0 0 1px #ffffff80 inset;display:flex;flex-direction:column;z-index:10;transition:all .6s cubic-bezier(.16,1,.3,1);overflow:hidden}.glass-panel.is-hero{top:50%;left:50%;transform:translate(-50%,-50%);width:600px;max-width:90vw;max-height:auto;background:#fffffff2;box-shadow:0 40px 80px #00000026}.stops-container,.bottom-section,.trip-title-wrapper{transition:opacity .3s ease,transform .3s ease;opacity:1;transform:translateY(0)}.glass-panel.is-hero .stops-container,.glass-panel.is-hero .bottom-section,.glass-panel.is-hero .trip-title-wrapper{display:none;opacity:0;transform:translateY(10px)}.glass-panel.is-hero .panel-header{padding-bottom:0;text-align:center}.glass-panel.is-hero .search-container{padding:32px 40px 48px}.glass-panel.is-hero .search-input-wrapper{height:56px;background:#0000000a}.glass-panel.is-hero #search-input{font-size:18px}.glass-panel.is-hero .ai-plan-btn{height:56px;font-size:17px}.hero-title{display:none;font-size:32px;font-weight:800;margin-bottom:8px;background:linear-gradient(135deg,#1d1d1f,#434344);-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.02em;animation:fadeIn .5s ease-out .1s backwards}.glass-panel.is-hero .hero-title{display:block}.hero-subtitle{display:none;font-size:17px;color:var(--text-secondary);margin-bottom:24px;animation:fadeIn .5s ease-out .2s backwards}.glass-panel.is-hero .hero-subtitle{display:block}.suggestion-chips{display:none;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:24px}.glass-panel.is-hero .suggestion-chips{display:flex}.chip{background:#0000000a;border:1px solid rgba(0,0,0,.02);padding:8px 16px;border-radius:20px;font-size:14px;font-weight:500;color:var(--text-primary);cursor:pointer;transition:all .2s ease;animation:slideUpFade .5s cubic-bezier(.16,1,.3,1) backwards}.chip:nth-child(1){animation-delay:.3s}.chip:nth-child(2){animation-delay:.35s}.chip:nth-child(3){animation-delay:.4s}.chip:nth-child(4){animation-delay:.45s}.chip:hover{background:#00000014;transform:translateY(-2px)}.chip-emoji{margin-right:6px}.panel-header{padding:24px 24px 16px}.trip-title-wrapper{position:relative;display:flex;align-items:center}.trip-name-input{width:100%;font-size:28px;font-weight:800;color:var(--text-primary);background:transparent;border:none;outline:none;padding:0;letter-spacing:-.03em;line-height:1.2}.trip-name-input::placeholder{color:var(--system-gray-2)}.edit-icon{position:absolute;right:0;color:var(--system-gray-2);opacity:0;transition:opacity .2s;pointer-events:none}.trip-title-wrapper:hover .edit-icon{opacity:1}.search-container{padding:12px 24px;position:relative;display:flex;flex-direction:column;gap:12px}.search-input-wrapper{position:relative;background:#7676801f;border-radius:12px;display:flex;align-items:center;padding:0 12px;height:44px;transition:all .2s cubic-bezier(.4,0,.2,1);border:1px solid transparent}.search-input-wrapper:focus-within{background:#fff;box-shadow:0 2px 8px #00000014;border-color:var(--system-blue)}.search-icon{color:var(--system-gray);margin-right:8px;opacity:.7}#search-input{flex:1;border:none;background:transparent;font-size:16px;color:var(--text-primary);outline:none;height:100%}.ai-plan-btn{width:100%;height:44px;background:var(--system-blue);border:none;border-radius:12px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s ease;box-shadow:0 2px 8px #007aff40}.ai-plan-btn:hover{background:var(--system-blue-hover);transform:translateY(-1px);box-shadow:0 4px 12px #007aff4d}.ai-plan-btn:active{transform:translateY(0);box-shadow:0 2px 4px #007aff33}.ai-plan-btn.loading{pointer-events:none;opacity:.8}.ai-plan-btn.loading svg{animation:spin 1s linear infinite}.search-results-popover{position:absolute;top:100%;left:20px;right:20px;background:#fff;border-radius:var(--radius-md);box-shadow:0 10px 30px #00000026;margin-top:8px;max-height:300px;overflow-y:auto;display:none;z-index:20}.search-results-popover.visible{display:block;animation:fadeIn .2s ease-out}.search-result{padding:12px 16px;border-bottom:1px solid var(--border-light);cursor:pointer;transition:background .1s}.search-result:last-child{border-bottom:none}.search-result:hover{background:var(--system-gray-6)}.result-name{font-weight:600;font-size:14px;color:var(--text-primary)}.result-address{font-size:12px;color:var(--text-secondary);margin-top:2px}.stops-container{flex:1;overflow-y:auto;padding:10px 24px;min-height:150px}.stops-list{display:flex;flex-direction:column;gap:12px;padding-bottom:20px}.stop-item{background:#fffc;border-radius:14px;padding:14px;box-shadow:0 1px 3px #0000000d;display:flex;align-items:flex-start;gap:12px;transition:all .2s ease;border:1px solid rgba(0,0,0,.03);position:relative;cursor:grab;animation:slideInRight .4s cubic-bezier(.16,1,.3,1) backwards}.stop-item:nth-child(1){animation-delay:.1s}.stop-item:nth-child(2){animation-delay:.15s}.stop-item:nth-child(3){animation-delay:.2s}.stop-item:nth-child(4){animation-delay:.25s}.stop-item:nth-child(5){animation-delay:.3s}.stop-item:nth-child(n+6){animation-delay:.35s}.stop-item:hover{background:#fff;box-shadow:0 4px 12px #00000014;transform:translateY(-1px);z-index:1}.stop-item.dragging{opacity:.8;transform:scale(.98);cursor:grabbing;box-shadow:0 8px 24px #0000001f;z-index:10;animation:none}.stop-item.highlighted{border-color:var(--system-blue);background:#f5f9ff;box-shadow:0 0 0 2px #007aff26}.stop-item:focus-visible{outline:2px solid var(--system-blue);outline-offset:2px}.stop-drag-handle{width:16px;height:100%;display:flex;align-items:center;justify-content:center;color:var(--system-gray-2);font-size:16px;cursor:grab;-webkit-user-select:none;user-select:none;opacity:.3;transition:opacity .2s}.stop-item:hover .stop-drag-handle{opacity:.8}.stop-number{background:var(--system-gray-6);color:var(--text-primary);width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;margin-top:0}.stop-content{flex:1;min-width:0;padding-top:2px}.stop-name{font-weight:600;font-size:15px;color:var(--text-primary);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}.stop-address{font-size:12px;color:var(--text-secondary);margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stop-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.stop-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text-secondary)}.retry-place-btn{margin-left:4px;padding:2px 8px;font-size:11px;background:var(--system-blue);color:#fff;border:none;border-radius:10px;cursor:pointer;transition:opacity .2s}.retry-place-btn:hover{opacity:.8}.retry-place-btn:active{opacity:.6}.stop-status .pulse{width:8px;height:8px;border-radius:50%;background:var(--system-blue);box-shadow:0 0 #007aff59;animation:pulse 1.5s infinite}.stop-status.ready .pulse{background:#0f9d58;box-shadow:0 0 #0f9d5859}.stop-status.error .pulse{background:var(--system-red);box-shadow:0 0 #ff3b3059}.meta-tag{background:#0000000a;padding:4px 10px;border-radius:8px;font-size:11px;color:var(--text-secondary);font-weight:600;display:flex;align-items:center;gap:4px;transition:background .2s}.stop-item:hover .meta-tag{background:#0000000f}.stop-remove{position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;border:none;background:transparent;color:var(--system-gray-2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;opacity:0;transition:all .2s}.stop-item:hover .stop-remove{opacity:1}.stop-remove:hover{background:var(--system-gray-6);color:var(--system-red)}.empty-state{text-align:center;padding:40px 20px;color:var(--text-secondary)}.empty-icon-bg{width:64px;height:64px;background:var(--system-gray-6);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:var(--system-gray)}.empty-state h3{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.empty-state p{font-size:13px}.panel-footer{padding:20px 24px;border-top:1px solid rgba(0,0,0,.05);display:flex;gap:12px;background:#ffffff80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:0 0 24px 24px}.bottom-section{position:sticky;bottom:0;left:0;width:100%;background:#ffffffeb;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:5;border-top:1px solid rgba(0,0,0,.05)}.action-btn{height:48px;border-radius:14px;border:none;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;gap:8px}.primary-btn{flex:1;background:linear-gradient(135deg,#007aff,#0055b3);color:#fff;box-shadow:0 4px 12px #007aff4d;font-weight:700;letter-spacing:-.01em}.primary-btn:hover:not(:disabled){background:linear-gradient(135deg,#0062cc,#004494);transform:translateY(-2px);box-shadow:0 8px 20px #007aff66}.primary-btn:disabled{background:#0000001a;color:#0000004d;cursor:not-allowed;box-shadow:none;transform:none}.icon-only-btn{width:48px;background:#0000000d;color:var(--text-primary);border-radius:14px}.icon-only-btn:hover{background:#0000001a;transform:scale(1.05)}.modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#0000004d;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:100;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s}.modal-backdrop.visible{opacity:1;pointer-events:auto}.modal-card{background:#fff;width:90%;max-width:400px;border-radius:24px;padding:32px;text-align:center;box-shadow:0 20px 60px #0003;transform:scale(.95);transition:transform .3s cubic-bezier(.16,1,.3,1)}.modal-backdrop.visible .modal-card{transform:scale(1)}.modal-icon{font-size:48px;margin-bottom:16px}.modal-card h2{font-size:24px;font-weight:700;margin-bottom:8px;letter-spacing:-.02em}.modal-card p{color:var(--text-secondary);margin-bottom:24px;line-height:1.5}.modal-actions{display:flex;flex-direction:column;gap:12px}.modal-btn{height:48px;border-radius:14px;border:none;font-size:16px;font-weight:600;cursor:pointer;transition:transform .1s}.modal-btn:active{transform:scale(.98)}.modal-btn.primary{background:var(--text-primary);color:#fff}.modal-btn.secondary{background:var(--system-gray-6);color:var(--text-primary)}.modal-btn.destructive{background:var(--system-red);color:#fff}.export-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:200;display:flex;align-items:center;justify-content:center;background:#0006;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.export-modal-content{background:#fff;padding:32px;border-radius:24px;width:320px;text-align:center;box-shadow:0 20px 40px #0003}.export-modal-content h3{font-size:20px;margin-bottom:12px}.export-actions{display:flex;flex-direction:column;gap:10px;margin-top:24px}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:12px 24px;border-radius:30px;font-weight:500;font-size:14px;z-index:1000;animation:slideUp .3s ease-out;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@keyframes slideUp{0%{transform:translate(-50%,20px);opacity:0}to{transform:translate(-50%);opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideUpFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.panel-credits{text-align:center;padding:8px 0 12px;font-size:11px;color:var(--text-secondary)}.panel-credits a{color:inherit;text-decoration:none;opacity:.7;transition:opacity .2s}.panel-credits a:hover{opacity:1;text-decoration:underline}@media(max-width:768px){.glass-panel{top:auto;left:0;bottom:0;width:100%;max-height:60vh;border-radius:24px 24px 0 0;border-bottom:none;border-left:none;border-right:none}.stops-container{padding-bottom:140px}.bottom-section{position:absolute;bottom:0;left:0;width:100%;background:#fffffff2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);padding-bottom:max(10px,env(safe-area-inset-bottom));z-index:5;border-top:1px solid var(--border-light)}.panel-footer{border-top:none;padding-bottom:0}}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#f5f5f7;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .5s ease-out}.loading-overlay.hidden{opacity:0;pointer-events:none}.loading-overlay.error{background:#fff5f5}.spinner{width:40px;height:40px;border:3px solid rgba(0,0,0,.1);border-radius:50%;border-top-color:var(--system-blue);animation:spin 1s linear infinite;margin-bottom:16px}.loading-text{font-size:16px;font-weight:500;color:var(--text-secondary);letter-spacing:-.01em}.loading-subtext{margin-top:6px;font-size:13px;color:var(--text-secondary);text-align:center;max-width:320px;line-height:1.4}.retry-btn{margin-top:14px;padding:10px 16px;border-radius:12px;border:1px solid rgba(0,0,0,.08);background:#fff;font-weight:600;cursor:pointer;box-shadow:0 4px 12px #00000014;transition:transform .2s ease,box-shadow .2s ease}.retry-btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px #0000001f}.retry-btn:active{transform:translateY(0)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%{box-shadow:0 0 #007aff59}70%{box-shadow:0 0 0 10px #007aff00}to{box-shadow:0 0 #007aff00}}
