:root{--color-primary: #0891b2;--color-primary-light: #22d3ee;--color-primary-dark: #0e7490;--color-secondary: #f97316;--color-secondary-light: #fb923c;--color-secondary-dark: #ea580c;--color-bg: #f8fafc;--color-bg-secondary: #f1f5f9;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-success: #10b981;--color-error: #ef4444;--color-warning: #f59e0b;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--transition-fast: .15s ease;--transition-normal: .25s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.6}.app{min-height:100vh;display:flex;flex-direction:column}.app.loading-state{justify-content:center;align-items:center}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--spacing-md) var(--spacing-xl);position:sticky;top:0;z-index:100}.header-content{display:flex;justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto}.logo{display:flex;align-items:center;gap:var(--spacing-sm)}.logo-icon{font-size:1.75rem}.logo h1{font-size:1.5rem;font-weight:700;color:var(--color-primary-dark)}.header-actions{display:flex;align-items:center;gap:var(--spacing-md)}.redis-status{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.875rem;color:var(--color-text-secondary)}.status-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-text-muted)}.redis-status.connected .status-dot{background:var(--color-success)}.redis-status.disconnected .status-dot{background:var(--color-warning)}.reset-btn{padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;font-size:.875rem;transition:var(--transition-fast)}.reset-btn:hover{background:var(--color-bg-secondary);color:var(--color-text)}.phase-indicator{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding-top:var(--spacing-md);max-width:600px;margin:0 auto}.phase-step{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs)}.phase-icon{width:40px;height:40px;border-radius:var(--radius-full);background:var(--color-bg-secondary);display:flex;align-items:center;justify-content:center;font-size:1rem;transition:var(--transition-normal)}.phase-step.active .phase-icon{background:var(--color-primary);color:#fff}.phase-step.completed .phase-icon{background:var(--color-success);color:#fff}.phase-label{font-size:.75rem;color:var(--color-text-muted)}.phase-step.active .phase-label{color:var(--color-primary);font-weight:600}.phase-connector{width:40px;height:2px;background:var(--color-border);margin-bottom:20px}.phase-connector.completed{background:var(--color-success)}.app-main{flex:1;max-width:1400px;width:100%;margin:0 auto;padding:var(--spacing-xl)}.onboarding-container{max-width:600px;margin:0 auto}.onboarding-intro{text-align:center;margin-bottom:var(--spacing-2xl)}.onboarding-intro h2{font-size:2rem;color:var(--color-primary-dark);margin-bottom:var(--spacing-sm)}.onboarding-intro p{color:var(--color-text-secondary)}.preference-flow{background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--spacing-xl);box-shadow:var(--shadow-lg)}.flow-header{margin-bottom:var(--spacing-xl)}.flow-progress{height:4px;background:var(--color-bg-secondary);border-radius:var(--radius-full);overflow:hidden}.flow-progress-bar{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-primary-light));transition:width var(--transition-normal)}.flow-step-indicator{display:block;text-align:right;font-size:.875rem;color:var(--color-text-muted);margin-top:var(--spacing-sm)}.flow-content{margin-bottom:var(--spacing-xl)}.flow-question{font-size:1.5rem;color:var(--color-text);margin-bottom:var(--spacing-lg);text-align:center}.flow-options{display:flex;flex-direction:column;gap:var(--spacing-sm)}.flow-option{padding:var(--spacing-md) var(--spacing-lg);background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius-lg);text-align:left;cursor:pointer;transition:var(--transition-fast);font-size:1rem;display:flex;align-items:center;gap:var(--spacing-sm)}.flow-option:hover{border-color:var(--color-primary-light);background:var(--color-bg-secondary)}.flow-option.selected{border-color:var(--color-primary);background:#0891b21a}.option-checkbox{width:20px;height:20px;border:2px solid var(--color-border);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:.75rem;color:#fff}.flow-option.selected .option-checkbox{background:var(--color-primary);border-color:var(--color-primary)}.flow-text-input{display:flex;justify-content:center}.flow-text-input input{width:100%;max-width:400px;padding:var(--spacing-md) var(--spacing-lg);font-size:1.25rem;border:2px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;transition:var(--transition-fast)}.flow-text-input input:focus{outline:none;border-color:var(--color-primary)}.flow-text-input input::placeholder{color:var(--color-text-muted)}.flow-actions{display:flex;justify-content:space-between;gap:var(--spacing-md)}.flow-back-btn,.flow-next-btn{padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-lg);font-size:1rem;font-weight:600;cursor:pointer;transition:var(--transition-fast)}.flow-back-btn{background:transparent;border:1px solid var(--color-border);color:var(--color-text-secondary)}.flow-back-btn:hover{background:var(--color-bg-secondary)}.flow-next-btn{background:var(--color-primary);border:none;color:#fff;margin-left:auto}.flow-next-btn:hover:not(:disabled){background:var(--color-primary-dark)}.flow-next-btn:disabled{opacity:.5;cursor:not-allowed}.chat-container{display:flex;flex-direction:column;height:calc(100vh - 200px);background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);overflow:hidden}.chat-main{flex:1;overflow-y:auto;padding:var(--spacing-lg)}.message-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.message-list-empty{display:flex;align-items:center;justify-content:center;height:100%}.empty-state{text-align:center;color:var(--color-text-secondary)}.empty-icon{font-size:4rem;display:block;margin-bottom:var(--spacing-md)}.empty-state h3{font-size:1.5rem;color:var(--color-text);margin-bottom:var(--spacing-sm)}.suggestion-chips{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);justify-content:center;margin-top:var(--spacing-lg)}.chip{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border:none;border-radius:var(--radius-full);font-size:.875rem;font-family:inherit;color:var(--color-primary);cursor:pointer;transition:var(--transition-fast)}.chip:hover{background:var(--color-primary);color:#fff}.message-bubble{display:flex;gap:var(--spacing-md);max-width:85%}.message-bubble.user{margin-left:auto;flex-direction:row-reverse}.message-avatar{width:36px;height:36px;border-radius:var(--radius-full);background:var(--color-bg-secondary);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.message-bubble.user .message-avatar{background:var(--color-primary)}.message-content{background:var(--color-bg);padding:var(--spacing-md);border-radius:var(--radius-lg)}.message-bubble.user .message-content{background:var(--color-primary);color:#fff}.message-content p{margin-bottom:var(--spacing-sm)}.message-content p:last-child{margin-bottom:0}.message-content h3,.message-content h4{margin:var(--spacing-md) 0 var(--spacing-sm)}.message-list-item{padding-left:var(--spacing-md);position:relative}.message-list-item:before{content:"•";position:absolute;left:0;color:var(--color-primary)}.message-ordered-list{padding-left:var(--spacing-lg)}.message-ordered-list li{margin-bottom:var(--spacing-xs)}.message-content.typing{display:flex;align-items:center;gap:var(--spacing-sm)}.preference-update-badge{margin-top:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);background:#10b9811a;color:var(--color-success);border-radius:var(--radius-sm);font-size:.875rem}.message-table{width:100%;border-collapse:collapse;margin:var(--spacing-md) 0;font-size:.875rem}.message-table th,.message-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border:1px solid var(--color-border)}.message-table th{background:var(--color-primary);color:#fff;font-weight:600}.message-table tr:nth-child(2n){background:var(--color-bg-secondary)}.message-table tr:hover{background:#0891b21a}.message-content code{background:var(--color-bg-secondary);padding:2px 6px;border-radius:var(--radius-sm);font-family:Monaco,Menlo,monospace;font-size:.85em}.message-content em{color:var(--color-text-secondary)}.itinerary-container{margin:var(--spacing-md) 0}.itinerary-day-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.day-header-inline{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.day-badge{background:var(--color-primary);color:#fff;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-md);font-weight:600;font-size:.875rem}.day-header-inline h4{margin:0;color:var(--color-text)}.activities-timeline{display:flex;flex-direction:column;gap:var(--spacing-sm)}.activity-item{display:flex;gap:var(--spacing-md);padding:var(--spacing-sm);background:var(--color-bg);border-radius:var(--radius-md)}.activity-time-col{min-width:80px;display:flex;flex-direction:column;align-items:center}.activity-time{background:var(--color-primary-light);color:var(--color-primary-dark);padding:2px 8px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600}.activity-duration{font-size:.7rem;color:var(--color-text-muted);margin-top:2px}.activity-details{flex:1}.activity-details strong{display:block;margin-bottom:2px}.activity-details p{margin:0;font-size:.875rem;color:var(--color-text-secondary)}.activity-cost{display:inline-block;background:#10b9811a;color:var(--color-success);padding:2px 6px;border-radius:var(--radius-sm);font-size:.75rem;margin-left:var(--spacing-sm)}.meals-section{margin-top:var(--spacing-md);padding-top:var(--spacing-sm);border-top:1px solid var(--color-border)}.meals-list{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin-top:var(--spacing-xs)}.meals-list span{font-size:.875rem;color:var(--color-text-secondary)}.day-notes-inline{margin-top:var(--spacing-sm);padding:var(--spacing-sm);background:#f973161a;border-radius:var(--radius-sm);font-size:.875rem;color:var(--color-secondary-dark)}.chat-input-form{padding:var(--spacing-md);border-top:1px solid var(--color-border);background:var(--color-surface)}.chat-input-container{display:flex;gap:var(--spacing-sm);align-items:flex-end}.chat-input{flex:1;padding:var(--spacing-md);border:2px solid var(--color-border);border-radius:var(--radius-lg);font-size:1rem;font-family:inherit;resize:none;max-height:150px;transition:var(--transition-fast)}.chat-input:focus{outline:none;border-color:var(--color-primary)}.send-button{width:48px;height:48px;border-radius:var(--radius-lg);background:var(--color-primary);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast)}.send-button:hover:not(:disabled){background:var(--color-primary-dark)}.send-button:disabled{opacity:.5;cursor:not-allowed}.send-button svg{width:20px;height:20px}.chat-input-hint{font-size:.75rem;color:var(--color-text-muted);text-align:center;margin-top:var(--spacing-xs)}.destinations-panel{margin-top:var(--spacing-xl);padding-top:var(--spacing-xl);border-top:1px solid var(--color-border)}.destinations-panel h3{font-size:1.25rem;color:var(--color-text);margin-bottom:var(--spacing-lg)}.destination-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--spacing-lg)}.destination-card{background:var(--color-surface);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md);cursor:pointer;transition:var(--transition-normal)}.destination-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.destination-image-container{position:relative;height:200px;overflow:hidden}.destination-image-wrapper{width:100%;height:100%}.destination-image{width:100%;height:100%;object-fit:cover;transition:var(--transition-normal)}.destination-image.loading{opacity:0}.image-loading-skeleton{position:absolute;top:0;left:0;background:linear-gradient(90deg,var(--color-bg-secondary) 0%,var(--color-bg) 50%,var(--color-bg-secondary) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.destination-image-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--color-bg-secondary);color:var(--color-text-muted)}.placeholder-icon{font-size:2rem}.destination-weather-badge{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);background:#fffffff2;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);font-size:.875rem;display:flex;align-items:center;gap:var(--spacing-xs)}.destination-content{padding:var(--spacing-md)}.destination-title{font-size:1.25rem;color:var(--color-text);margin-bottom:var(--spacing-xs)}.destination-description{color:var(--color-text-secondary);font-size:.875rem;margin-bottom:var(--spacing-md);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.destination-highlights{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.highlight-tag{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--radius-full);font-size:.75rem;color:var(--color-text-secondary)}.destination-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.destination-cost{font-size:.875rem}.cost-label{color:var(--color-text-muted)}.cost-value{color:var(--color-success);font-weight:600}.destination-tags{display:flex;gap:var(--spacing-xs)}.best-for-tag{padding:var(--spacing-xs) var(--spacing-sm);background:#0891b21a;color:var(--color-primary);border-radius:var(--radius-full);font-size:.75rem}.destination-select-btn{width:100%;padding:var(--spacing-md);background:var(--color-primary);border:none;border-radius:var(--radius-md);color:#fff;font-weight:600;cursor:pointer;transition:var(--transition-fast)}.destination-select-btn:hover{background:var(--color-primary-dark)}.itinerary-display{max-width:800px;margin:0 auto}.itinerary-header{position:relative;border-radius:var(--radius-xl);overflow:hidden;margin-bottom:var(--spacing-xl)}.itinerary-hero-image{width:100%;height:300px}.itinerary-hero-image .destination-image{height:300px}.itinerary-header-content{position:absolute;bottom:0;left:0;right:0;padding:var(--spacing-xl);background:linear-gradient(transparent,#000c);color:#fff}.itinerary-header-content h2{font-size:2rem;margin-bottom:var(--spacing-sm)}.itinerary-meta{display:flex;gap:var(--spacing-lg)}.meta-item{display:flex;align-items:center;gap:var(--spacing-xs)}.day-card{background:var(--color-surface);border-radius:var(--radius-lg);margin-bottom:var(--spacing-md);box-shadow:var(--shadow-sm);overflow:hidden}.day-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) var(--spacing-lg);cursor:pointer;transition:var(--transition-fast)}.day-header:hover{background:var(--color-bg-secondary)}.day-title-section{display:flex;align-items:center;gap:var(--spacing-md)}.day-number{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-primary);color:#fff;border-radius:var(--radius-md);font-size:.875rem;font-weight:600}.day-title{font-size:1.125rem}.day-meta{display:flex;align-items:center;gap:var(--spacing-md)}.day-weather{display:flex;align-items:center;gap:var(--spacing-xs);font-size:.875rem;color:var(--color-text-secondary)}.expand-icon{font-size:.75rem;color:var(--color-text-muted)}.day-content{padding:0 var(--spacing-lg) var(--spacing-lg);border-top:1px solid var(--color-border)}.activities-list{padding-top:var(--spacing-md)}.activity-card{display:flex;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-bg);border-radius:var(--radius-md);margin-bottom:var(--spacing-sm)}.activity-time{display:flex;flex-direction:column;align-items:center;min-width:80px}.time-badge{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600}.duration{font-size:.75rem;color:var(--color-text-muted);margin-top:var(--spacing-xs)}.activity-content{flex:1}.activity-name{font-size:1rem;margin-bottom:var(--spacing-xs)}.activity-description{font-size:.875rem;color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.activity-location{font-size:.875rem;color:var(--color-text-muted);margin-bottom:var(--spacing-sm)}.location-icon{margin-right:var(--spacing-xs)}.activity-meta{display:flex;gap:var(--spacing-md)}.activity-cost{padding:var(--spacing-xs) var(--spacing-sm);background:#10b9811a;color:var(--color-success);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600}.activity-accessibility{font-size:.75rem;color:var(--color-text-muted)}.activity-tips{margin-top:var(--spacing-sm);padding:var(--spacing-sm);background:#f973161a;border-radius:var(--radius-sm);font-size:.875rem;color:var(--color-secondary-dark)}.tip-icon{margin-right:var(--spacing-xs)}.day-meals{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.day-meals h4{font-size:1rem;margin-bottom:var(--spacing-md)}.meals-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--spacing-md)}.meal-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--color-bg);border-radius:var(--radius-md)}.meal-icon{font-size:1.25rem}.meal-label{display:block;font-size:.75rem;color:var(--color-text-muted)}.meal-name{font-size:.875rem}.day-notes{margin-top:var(--spacing-md);padding:var(--spacing-md);background:var(--color-bg-secondary);border-radius:var(--radius-md);font-size:.875rem;color:var(--color-text-secondary)}.notes-icon{margin-right:var(--spacing-sm)}.itinerary-section{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-top:var(--spacing-lg);box-shadow:var(--shadow-sm)}.itinerary-section h3{font-size:1.25rem;margin-bottom:var(--spacing-md)}.itinerary-section ul{padding-left:var(--spacing-lg)}.itinerary-section li{margin-bottom:var(--spacing-sm);color:var(--color-text-secondary)}.loading-spinner-container{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.loading-spinner{position:relative}.spinner-small{width:20px;height:20px}.spinner-medium{width:40px;height:40px}.spinner-large{width:60px;height:60px}.spinner-ring{position:absolute;width:100%;height:100%;border:3px solid var(--color-bg-secondary);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}.spinner-ring:nth-child(2){width:75%;height:75%;top:12.5%;left:12.5%;border-top-color:var(--color-primary-light);animation-duration:.8s;animation-direction:reverse}.spinner-ring:nth-child(3){width:50%;height:50%;top:25%;left:25%;border-top-color:var(--color-secondary);animation-duration:.6s}@keyframes spin{to{transform:rotate(360deg)}}.spinner-message{color:var(--color-text-secondary);font-size:.875rem}.app-footer{background:var(--color-surface);border-top:1px solid var(--color-border);padding:var(--spacing-md) var(--spacing-xl);text-align:center}.app-footer p{color:var(--color-text-muted);font-size:.875rem}.footer-prefs{margin-top:var(--spacing-xs);color:var(--color-text-secondary)!important}@media (max-width: 768px){.app-header{padding:var(--spacing-sm) var(--spacing-md)}.logo h1{font-size:1.25rem}.app-main{padding:var(--spacing-md)}.chat-container{height:calc(100vh - 160px)}.destination-grid{grid-template-columns:1fr}.phase-indicator{display:none}.message-bubble{max-width:95%}}
