#willem-toggle{position:fixed;bottom:28px;right:28px;z-index:9999;width:60px;height:60px;border-radius:var(--radius-full);border:none;cursor:pointer;box-shadow:var(--shadow-xl);padding:0;overflow:hidden;background:var(--color-brand-600);transition:transform var(--transition-fast),box-shadow var(--transition-fast);display:flex;align-items:center;justify-content:center}#willem-toggle:hover{transform:scale(1.07);box-shadow:0 25px 35px -5px #0003}#willem-toggle img{width:60px;height:60px;object-fit:cover;border-radius:var(--radius-full);display:block}#willem-panel{position:fixed;bottom:100px;right:28px;z-index:9998;width:380px;max-width:calc(100vw - 40px);max-height:min(520px,calc(100vh - 160px));background:var(--surface-primary);border:1px solid var(--border-primary);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;overflow:hidden;transition:transform var(--transition-slow),opacity var(--transition-slow);transform-origin:bottom right}#willem-panel.hidden{display:none}.willem-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:linear-gradient(135deg,var(--color-brand-600) 0%,var(--color-brand-700) 100%);color:#fff;flex-shrink:0}.willem-header-avatar{width:40px;height:40px;border-radius:var(--radius-full);border:2px solid rgba(255,255,255,.4);object-fit:cover;flex-shrink:0}.willem-header-info{flex:1;min-width:0}.willem-header-name{font-size:var(--text-sm);font-weight:var(--font-semibold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.willem-header-status{font-size:var(--text-xs);opacity:.8;display:flex;align-items:center;gap:4px}.willem-header-status:before{content:"";display:inline-block;width:7px;height:7px;background:#4ade80;border-radius:var(--radius-full);flex-shrink:0}.willem-close-btn{background:none;border:none;color:#fffc;cursor:pointer;padding:var(--space-1);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),color var(--transition-fast);flex-shrink:0}.willem-close-btn:hover{background:#ffffff26;color:#fff}.willem-messages{flex:1;overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);min-height:240px;max-height:400px;scroll-behavior:smooth}.willem-messages::-webkit-scrollbar{width:4px}.willem-messages::-webkit-scrollbar-track{background:transparent}.willem-messages::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-full)}.chat-msg{display:flex;gap:var(--space-2);max-width:100%;animation:msgAppear .2s ease}@keyframes msgAppear{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.chat-msg.from-willem{align-items:flex-end}.chat-msg.from-user{align-items:flex-end;flex-direction:row-reverse}.chat-msg-avatar{width:28px;height:28px;border-radius:var(--radius-full);object-fit:cover;flex-shrink:0;margin-bottom:2px}.chat-bubble{max-width:calc(100% - 40px);padding:var(--space-2) var(--space-3);border-radius:var(--radius-xl);font-size:var(--text-sm);line-height:var(--leading-relaxed);word-break:break-word}.from-willem .chat-bubble{background:var(--color-gray-100);color:var(--text-primary);border-bottom-left-radius:var(--radius-sm)}.from-user .chat-bubble{background:var(--color-brand-600);color:#fff;border-bottom-right-radius:var(--radius-sm)}.chat-typing{display:flex;gap:5px;align-items:center;padding:var(--space-2) var(--space-3)}.chat-typing span{width:8px;height:8px;background:var(--color-gray-400);border-radius:var(--radius-full);animation:typingBounce 1.2s infinite ease-in-out}.chat-typing span:nth-child(2){animation-delay:.2s}.chat-typing span:nth-child(3){animation-delay:.4s}@keyframes typingBounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}.chat-choices{display:flex;flex-direction:column;gap:var(--space-2);padding:0 var(--space-2)}.chat-choice-btn{width:100%;padding:var(--space-3) var(--space-4);background:var(--surface-primary);border:2px solid var(--color-brand-200);border-radius:var(--radius-lg);color:var(--color-brand-700);font-size:var(--text-sm);font-weight:var(--font-semibold);cursor:pointer;text-align:left;transition:all var(--transition-fast);display:flex;align-items:center;gap:var(--space-3)}.chat-choice-btn:hover{background:var(--color-brand-50);border-color:var(--color-brand-400);transform:translate(3px)}.chat-choice-btn .choice-icon{font-size:1.3em;flex-shrink:0}.chat-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:0 var(--space-2) var(--space-1)}.chat-action-btn{padding:var(--space-2) var(--space-3);background:var(--color-brand-50);border:1px solid var(--color-brand-200);border-radius:var(--radius-md);color:var(--color-brand-700);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast)}.chat-action-btn:hover{background:var(--color-brand-100);border-color:var(--color-brand-400)}.chat-action-btn.primary{background:var(--color-brand-600);border-color:var(--color-brand-600);color:#fff}.chat-action-btn.primary:hover{background:var(--color-brand-700);border-color:var(--color-brand-700)}.chat-upload-area{margin:0 var(--space-2);padding:var(--space-4);border:2px dashed var(--color-brand-300);border-radius:var(--radius-lg);text-align:center;cursor:pointer;transition:all var(--transition-fast);background:var(--color-brand-50)}.chat-upload-area:hover,.chat-upload-area.drag-over{border-color:var(--color-brand-500);background:var(--color-brand-100)}.chat-upload-area input[type=file]{display:none}.chat-upload-label{font-size:var(--text-sm);color:var(--color-brand-700);font-weight:var(--font-medium);cursor:pointer}.chat-upload-icon{font-size:2rem;display:block;margin-bottom:var(--space-2)}.chat-upload-hint{font-size:var(--text-xs);color:var(--text-secondary);margin-top:var(--space-1)}.willem-input-area{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-primary);display:flex;gap:var(--space-2);flex-shrink:0;background:var(--surface-primary)}.willem-input{flex:1;padding:var(--space-2) var(--space-3);border:1px solid var(--border-primary);border-radius:var(--radius-full);font-size:var(--text-sm);font-family:var(--font-family);background:var(--surface-secondary);color:var(--text-primary);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);resize:none;min-height:36px;max-height:100px;line-height:var(--leading-relaxed)}.willem-input:focus{border-color:var(--border-focus);box-shadow:var(--shadow-focus);background:#fff}.willem-input:disabled{opacity:.5;cursor:not-allowed}.willem-send-btn{width:36px;height:36px;border-radius:var(--radius-full);background:var(--color-brand-600);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--transition-fast),transform var(--transition-fast);color:#fff;align-self:flex-end}.willem-send-btn:hover:not(:disabled){background:var(--color-brand-700);transform:scale(1.08)}.willem-send-btn:disabled{opacity:.4;cursor:not-allowed}.willem-reset-btn{padding:var(--space-1) var(--space-2);background:#ffffff26;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius-md);color:#fff;font-size:var(--text-xs);cursor:pointer;transition:all var(--transition-fast)}.willem-reset-btn:hover{background:#ffffff40;border-color:#fff9}.chat-info-card{background:var(--surface-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-3);margin:var(--space-1) 0;font-size:var(--text-xs)}.chat-info-card-title{font-weight:var(--font-semibold);font-size:var(--text-sm);margin-bottom:var(--space-2);color:var(--text-primary)}.chat-info-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2);padding:2px 0;border-bottom:1px solid var(--border-secondary)}.chat-info-row:last-child{border-bottom:none}.chat-info-label{color:var(--text-secondary);flex-shrink:0}.chat-info-value{color:var(--text-primary);font-weight:var(--font-medium);text-align:right;word-break:break-all}.chat-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--color-gray-300);border-top-color:var(--color-brand-600);border-radius:var(--radius-full);animation:spin .7s linear infinite;vertical-align:middle;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}.chat-divider{text-align:center;font-size:var(--text-xs);color:var(--text-tertiary);padding:var(--space-1) 0;position:relative}.chat-divider:before,.chat-divider:after{content:"";position:absolute;top:50%;width:30%;height:1px;background:var(--border-primary)}.chat-divider:before{left:0}.chat-divider:after{right:0}.chat-progress{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-4);border-top:1px solid var(--border-secondary);background:var(--surface-secondary);font-size:var(--text-xs);color:var(--text-secondary);flex-shrink:0}.chat-progress-step{font-weight:var(--font-medium);color:var(--color-brand-600)}.willem-modal-overlay{position:fixed;inset:0;z-index:10000;background:#0006;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;animation:willemFadeIn .15s ease}@keyframes willemFadeIn{0%{opacity:0}to{opacity:1}}.willem-modal{background:var(--surface-primary);border:1px solid var(--border-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);padding:var(--space-6);width:340px;max-width:calc(100vw - 40px);animation:willemSlideUp .2s ease}@keyframes willemSlideUp{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.willem-modal-title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--text-primary);margin-bottom:var(--space-2)}.willem-modal-message{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.5;margin-bottom:var(--space-5)}.willem-modal-buttons{display:flex;gap:var(--space-3);justify-content:flex-end}.willem-modal-btn{padding:var(--space-2) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast);border:none}.willem-modal-cancel{background:var(--surface-secondary);color:var(--text-secondary);border:1px solid var(--border-primary)}.willem-modal-cancel:hover{background:var(--color-gray-200);color:var(--text-primary)}.willem-modal-confirm{background:var(--color-brand-600);color:#fff}.willem-modal-confirm:hover{background:var(--color-brand-700)}@media(max-width:480px){#willem-panel{right:8px;bottom:90px;width:calc(100vw - 16px)}#willem-toggle{bottom:16px;right:16px}}
