*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}input,button,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}button{cursor:pointer}*:focus-visible{outline:2px solid #3282b8;outline-offset:2px}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.questionnaire-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#84b5d9f2,#7193aff2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;box-sizing:border-box}.questionnaire-container{background:#fff;border-radius:20px;box-shadow:0 20px 60px #00000026;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;animation:slideInUp .4s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.questionnaire-header{background:linear-gradient(135deg,#84b5d9,#7193af);color:#fff;padding:30px;border-radius:20px 20px 0 0;text-align:center}.questionnaire-header h2{margin:0 0 10px;font-size:28px;font-weight:600}.questionnaire-header p{margin:0 0 20px;font-size:16px;opacity:.9;line-height:1.5}.step-indicator{display:flex;align-items:center;justify-content:center;gap:10px}.step{width:40px;height:40px;border-radius:50%;background:#fff3;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px;transition:all .3s ease}.step.active{background:#ffffffe6;color:#7193af;transform:scale(1.1)}.step-line{width:40px;height:2px;background:#ffffff4d;border-radius:1px}.questionnaire-form{padding:30px}.step-content h3{margin:0 0 25px;font-size:22px;color:#333;font-weight:600;text-align:center}.question-group{margin-bottom:25px}.question-label{display:block;font-size:18px;font-weight:500;color:#333;margin-bottom:15px;line-height:1.4}.datetime-row{display:flex;gap:15px;flex-wrap:wrap}.input-group{flex:1;min-width:150px}.input-group input[type=date],.input-group input[type=time]{width:100%;padding:12px 15px;border:2px solid #e1e5e9;border-radius:12px;font-size:16px;background:#f8f9fa;transition:all .3s ease;box-sizing:border-box}.input-group input[type=date]:focus,.input-group input[type=time]:focus{outline:none;border-color:#84b5d9;background:#fff;box-shadow:0 0 0 3px #84b5d91a}.input-group input.error{border-color:#e74c3c;background:#fdf2f2}.error-text{display:block;color:#e74c3c;font-size:14px;margin-top:5px;font-weight:500}.radio-group{display:flex;flex-direction:column;gap:12px}.radio-option{display:flex;align-items:center;padding:15px 20px;background:#f8f9fa;border:2px solid #e1e5e9;border-radius:12px;cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none}.radio-option:hover{background:#f1f3f5;border-color:#84b5d9}.radio-option input[type=radio]{margin-right:15px;transform:scale(1.3);accent-color:#84b5d9}.radio-option input[type=radio]:checked+.radio-text{color:#7193af;font-weight:600}.radio-option:has(input[type=radio]:checked){background:#f0f7ff;border-color:#84b5d9;box-shadow:0 0 0 3px #84b5d91a}.radio-text{font-size:16px;color:#333;line-height:1.4}.button-group{display:flex;gap:15px;justify-content:center;margin-top:30px;flex-wrap:wrap}.next-btn,.prev-btn,.submit-btn{padding:14px 28px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;min-width:120px}.next-btn,.submit-btn{background:linear-gradient(135deg,#84b5d9,#7193af);color:#fff}.next-btn:hover,.submit-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px #84b5d966}.prev-btn{background:#e9ecef;color:#6c757d}.prev-btn:hover{background:#dee2e6;transform:translateY(-2px)}.submit-btn{background:linear-gradient(135deg,#28a745,#20c997);font-size:18px;padding:16px 32px}.submit-btn:hover{box-shadow:0 8px 25px #28a74566}@media (max-width: 768px){.questionnaire-overlay{padding:10px}.questionnaire-container{border-radius:15px;max-height:95vh}.questionnaire-header{padding:20px;border-radius:15px 15px 0 0}.questionnaire-header h2{font-size:24px}.questionnaire-header p{font-size:14px}.questionnaire-form{padding:20px}.step-content h3{font-size:20px;margin-bottom:20px}.question-label{font-size:16px}.datetime-row{flex-direction:column;gap:10px}.input-group{min-width:auto}.radio-option{padding:12px 15px}.radio-text{font-size:15px}.button-group{gap:10px;margin-top:25px}.next-btn,.prev-btn,.submit-btn{padding:12px 20px;font-size:15px;min-width:100px}.submit-btn{font-size:16px;padding:14px 24px}}@media (max-width: 480px){.questionnaire-header{padding:15px}.questionnaire-header h2{font-size:22px}.questionnaire-form{padding:15px}.step{width:35px;height:35px;font-size:14px}.step-line{width:30px}.button-group{flex-direction:column}.next-btn,.prev-btn,.submit-btn{width:100%}}.questionnaire-container::-webkit-scrollbar{width:6px}.questionnaire-container::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.questionnaire-container::-webkit-scrollbar-thumb{background:#84b5d9;border-radius:3px}.questionnaire-container::-webkit-scrollbar-thumb:hover{background:#7193af}*{margin:0;padding:0;box-sizing:border-box}:root{--morandi-sage: #a8a195;--morandi-dust: #c4b5a0;--morandi-fog: #b7c4cf;--morandi-clay: #d4b5a8;--morandi-pearl: #f5f3f0;--morandi-stone: #8b7d6b;--morandi-mist: #e8e6e3;--morandi-shadow: #6b6157;--morandi-accent: #9aaba2;--morandi-soft: #f9f8f6;--color-error: #d73a49;--color-warning: #f66a0a;--color-success: #28a745;--color-info: #0366d6;--font-primary: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;--font-mono: "SF Mono", "Monaco", "Cascadia Code", "Consolas", monospace;--text-xs: clamp(.75rem, .7rem + .25vw, .875rem);--text-sm: clamp(.875rem, .8rem + .375vw, 1rem);--text-base: clamp(1rem, .9rem + .5vw, 1.125rem);--text-lg: clamp(1.125rem, 1rem + .625vw, 1.25rem);--text-xl: clamp(1.25rem, 1.1rem + .75vw, 1.5rem);--text-2xl: clamp(1.5rem, 1.3rem + 1vw, 2rem);--text-3xl: clamp(1.875rem, 1.6rem + 1.375vw, 2.5rem);--space-xs: clamp(.25rem, .2rem + .25vw, .375rem);--space-sm: clamp(.5rem, .4rem + .5vw, .75rem);--space-md: clamp(1rem, .8rem + 1vw, 1.5rem);--space-lg: clamp(1.5rem, 1.2rem + 1.5vw, 2.25rem);--space-xl: clamp(2rem, 1.6rem + 2vw, 3rem);--space-2xl: clamp(2.5rem, 2rem + 2.5vw, 4rem)}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1}body{font-family:var(--font-primary);background-color:var(--morandi-soft);color:var(--morandi-shadow);line-height:1.6;font-size:var(--text-base);overflow-x:hidden}.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}.skip-link{position:absolute;top:-40px;left:6px;background:var(--morandi-shadow);color:var(--morandi-pearl);padding:8px;text-decoration:none;border-radius:4px;z-index:1000}.skip-link:focus{top:6px}.app{min-height:100vh;background-color:var(--morandi-soft);display:flex;justify-content:center;padding:0;width:100%}.error-boundary{background:var(--morandi-pearl);border:2px solid var(--color-error);border-radius:16px;padding:var(--space-xl);max-width:min(500px,90vw);width:100%;margin:var(--space-lg) auto;text-align:center;box-shadow:0 4px 24px #d73a491a}.error-boundary h2{color:var(--color-error);margin-bottom:var(--space-md);font-size:var(--text-xl)}.error-boundary p{color:var(--morandi-stone);margin-bottom:var(--space-lg);font-size:var(--text-sm)}.error-boundary button{background:var(--color-error);color:#fff;border:none;padding:var(--space-sm) var(--space-lg);border-radius:20px;font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all .2s ease}.error-boundary button:hover{background:#c82333;transform:translateY(-1px)}.offline-indicator{background:linear-gradient(90deg,var(--color-warning),#ff8c42);color:#fff;padding:var(--space-sm) var(--space-lg);text-align:center;font-weight:600;font-size:var(--text-sm);position:sticky;top:0;z-index:150;box-shadow:0 2px 8px #f66a0a33;animation:slideDown .3s ease}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.api-key-container{background:var(--morandi-pearl);border-radius:clamp(12px,1vw + 8px,20px);padding:var(--space-2xl) var(--space-xl);max-width:min(500px,90vw);width:100%;margin:var(--space-lg) auto;box-shadow:0 4px 24px #6b615714;border:1px solid var(--morandi-mist)}.api-key-container:before{content:"🏝️";font-size:clamp(32px,4vw,48px);display:block;text-align:center;margin-bottom:var(--space-lg)}.api-key-container h1{color:var(--morandi-shadow);margin-bottom:var(--space-md);font-size:var(--text-2xl);font-weight:600;text-align:center;letter-spacing:-.3px;line-height:1.2}.api-key-container p{color:var(--morandi-stone);margin-bottom:var(--space-lg);font-size:var(--text-sm);line-height:1.5;text-align:center}.code-block{background:var(--morandi-mist);border:1px solid var(--morandi-dust);border-radius:12px;padding:var(--space-lg);margin:var(--space-lg) 0;font-family:var(--font-mono);overflow-x:auto}.code-block code{color:var(--morandi-shadow);font-size:var(--text-xs);font-weight:500;word-break:break-all}.api-key-container a{color:var(--morandi-accent);text-decoration:none;font-weight:500;word-break:break-word}.api-key-container a:hover{text-decoration:underline}.hint{color:var(--morandi-stone);font-size:var(--text-xs);margin-top:var(--space-lg);text-align:center;opacity:.8}.chat-container{width:100%;max-width:none;height:100vh;display:flex;flex-direction:column;background-color:var(--morandi-soft);position:relative}.chat-header{background:var(--morandi-pearl);color:var(--morandi-shadow);padding:var(--space-md) var(--space-lg);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--morandi-mist);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);position:sticky;top:0;z-index:100;min-height:60px}.chat-header h1{font-size:var(--text-lg);font-weight:600;margin:0;letter-spacing:-.2px;line-height:1.2;flex-shrink:0}.header-actions{display:flex;gap:var(--space-sm);flex-shrink:0}.edit-info-btn,.clear-btn{padding:var(--space-sm) var(--space-md);border:1px solid var(--morandi-dust);background:transparent;border-radius:20px;cursor:pointer;font-size:var(--text-xs);font-weight:500;transition:all .2s ease;min-height:44px;white-space:nowrap}.edit-info-btn{color:var(--morandi-accent);border-color:var(--morandi-accent)}.edit-info-btn:hover{background:var(--morandi-accent);color:var(--morandi-pearl)}.clear-btn{color:var(--morandi-stone)}.clear-btn:hover{background:var(--morandi-mist);border-color:var(--morandi-sage)}.clear-btn:active{transform:scale(.98)}.clear-btn:focus{outline:2px solid var(--morandi-accent);outline-offset:2px}.messages-container{flex:1;overflow-y:auto;background-color:var(--morandi-soft);position:relative;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.messages-content{max-width:min(768px,100vw);margin:0 auto;padding:var(--space-lg) var(--space-md);min-height:100%}.welcome-message{text-align:center;padding:var(--space-2xl) var(--space-md);max-width:min(600px,90vw);margin:0 auto}.welcome-message h2{color:var(--morandi-shadow);margin-bottom:var(--space-md);font-size:var(--text-3xl);font-weight:600;letter-spacing:-.5px;line-height:1.2}.welcome-message>p{margin-bottom:var(--space-md);font-size:var(--text-base);color:var(--morandi-stone);font-weight:400}.welcome-tips{background:var(--morandi-pearl);border-radius:16px;padding:var(--space-xl);margin-top:var(--space-xl);border:1px solid var(--morandi-mist)}.welcome-tips p{font-weight:600;color:var(--morandi-shadow);margin-bottom:var(--space-lg);font-size:var(--text-lg)}.welcome-tips ul{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:var(--space-sm)}.welcome-tips li{padding:var(--space-md);color:var(--morandi-stone);font-size:var(--text-sm);font-weight:500;background:var(--morandi-soft);border-radius:8px;border:1px solid var(--morandi-mist);transition:all .2s ease}.welcome-tips li:hover{border-color:var(--morandi-dust);background:var(--morandi-pearl);transform:translateY(-1px)}.message{width:100%;margin-bottom:var(--space-lg);animation:fadeInUp .3s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message.user{background:var(--morandi-mist);padding:var(--space-md) var(--space-lg);margin:0 calc(-1 * var(--space-lg)) var(--space-lg);border-radius:0 0 12px 12px}.message.assistant{background:transparent;padding:var(--space-md) var(--space-lg);margin:0 calc(-1 * var(--space-lg)) var(--space-lg)}.message-content{max-width:min(768px,100%);margin:0 auto;word-wrap:break-word;white-space:pre-wrap;line-height:1.7;font-size:var(--text-base);font-weight:400;overflow-wrap:break-word}.message.user .message-content{color:var(--morandi-shadow);position:relative}.message.user .message-content:before{content:"你：";font-weight:600;color:var(--morandi-stone);display:block;margin-bottom:var(--space-sm);font-size:var(--text-xs)}.message.assistant .message-content{color:var(--morandi-shadow);position:relative}.message.assistant .message-content:before{content:"澎湖旅遊規劃師：";font-weight:600;color:var(--morandi-accent);display:block;margin-bottom:var(--space-sm);font-size:var(--text-xs)}.typing-indicator{display:flex;gap:4px;padding:var(--space-sm) 0;align-items:center}.typing-indicator span{width:6px;height:6px;background:var(--morandi-sage);border-radius:50%;animation:bounce 1.4s infinite ease-in-out}.typing-indicator span:nth-child(1){animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1);opacity:1}}.input-form{position:sticky;bottom:0;background:var(--morandi-soft);padding:var(--space-lg);border-top:1px solid var(--morandi-mist);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);padding-bottom:max(var(--space-lg),env(safe-area-inset-bottom))}.input-container{max-width:min(768px,100%);margin:0 auto;display:flex;gap:var(--space-sm);align-items:flex-end}.message-input{flex:1;padding:var(--space-md);border:1.5px solid var(--morandi-dust);font-size:var(--text-base);outline:none;transition:all .2s ease;background:var(--morandi-pearl);color:var(--morandi-shadow);font-weight:400;resize:none;min-height:44px;max-height:min(120px,30vh);line-height:1.4;font-family:var(--font-primary);-webkit-appearance:none;border-radius:24px}.message-input:focus{border-color:var(--morandi-accent);box-shadow:0 0 0 3px #9aaba21a}.message-input:disabled{background:var(--morandi-mist);opacity:.6}.message-input::placeholder{color:var(--morandi-stone)}.send-button{padding:var(--space-md) var(--space-lg);background:var(--morandi-accent);color:var(--morandi-pearl);border:none;border-radius:24px;font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all .2s ease;min-width:80px;min-height:44px;flex-shrink:0}.send-button:hover:not(:disabled){background:var(--morandi-sage);transform:translateY(-1px)}.send-button:active{transform:scale(.98)}.send-button:disabled{background:var(--morandi-dust);cursor:not-allowed;transform:none}.send-button:focus{outline:2px solid var(--morandi-accent);outline-offset:2px}.retry-button{background:var(--color-warning);color:#fff;border:none;padding:var(--space-sm) var(--space-md);border-radius:20px;font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:var(--space-sm);display:block;margin-left:auto;margin-right:auto;min-height:40px}.retry-button:hover{background:#e55a00;transform:translateY(-1px)}.retry-button:focus{outline:2px solid var(--color-warning);outline-offset:2px}.messages-container::-webkit-scrollbar{width:6px}.messages-container::-webkit-scrollbar-track{background:transparent}.messages-container::-webkit-scrollbar-thumb{background:var(--morandi-dust);border-radius:3px}.messages-container::-webkit-scrollbar-thumb:hover{background:var(--morandi-sage)}@media (max-width: 768px){.chat-header{padding:var(--space-sm) var(--space-md)}.chat-header h1{font-size:var(--text-base)}.messages-content{padding:var(--space-md) var(--space-sm)}.message.user,.message.assistant{padding:var(--space-sm) var(--space-md);margin:0 calc(-1 * var(--space-md)) var(--space-md)}.input-form{padding:var(--space-md);padding-bottom:max(var(--space-md),env(safe-area-inset-bottom))}.welcome-message{padding:var(--space-xl) var(--space-sm)}.welcome-tips{padding:var(--space-lg)}.api-key-container{margin:var(--space-md);padding:var(--space-xl) var(--space-lg)}.offline-indicator{font-size:var(--text-xs);padding:var(--space-xs) var(--space-md)}}@media (max-width: 480px){.clear-btn{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs)}.send-button{min-width:70px;padding:var(--space-sm) var(--space-md)}.input-container{gap:var(--space-xs)}.welcome-tips ul{grid-template-columns:1fr}.retry-button{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs)}}@media (min-width: 769px) and (max-width: 1024px){.messages-content{padding:var(--space-xl) var(--space-lg)}.welcome-tips ul{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1200px){.messages-content{padding:var(--space-2xl) var(--space-xl)}}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi){.chat-header,.input-form{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.message,.offline-indicator{animation:none}}@media (prefers-contrast: high){:root{--morandi-shadow: #2d2a26;--morandi-stone: #5a5248}}@media (hover: none) and (pointer: coarse){.clear-btn,.send-button,.welcome-tips li,.retry-button{min-height:44px;min-width:44px}.clear-btn:hover,.send-button:hover,.welcome-tips li:hover,.retry-button:hover{transform:none}.clear-btn:active,.send-button:active{background:var(--morandi-sage)}.retry-button:active{background:#e55a00}}@media (prefers-reduced-motion: no-preference){:focus-visible{outline:2px solid var(--morandi-accent);outline-offset:2px;border-radius:4px}}@media print{.chat-header,.input-form,.offline-indicator,.retry-button{display:none}.messages-container{height:auto;overflow:visible}.message{break-inside:avoid;margin-bottom:var(--space-md)}.welcome-tips{break-inside:avoid}}
