*{margin:0;padding:0;box-sizing:border-box;font-family:Inter,system-ui,sans-serif}body{background:radial-gradient(circle at top,#0f172a,#020617);color:#fff}.app{max-width:850px;margin:auto;padding:40px 20px;height:100vh;display:flex;flex-direction:column}.header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.logo{font-size:32px}.header h1{font-size:22px}.header p{opacity:.6;font-size:14px}.chat{flex:1;overflow-y:auto;padding:20px;border-radius:20px;background:linear-gradient(145deg,#020617,#020617aa);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 30px 80px #00000080}.msg{margin-bottom:16px;max-width:75%}.msg.user{margin-left:auto;text-align:right}.bubble{padding:14px 16px;border-radius:14px;line-height:1.5;animation:fadeIn .25s ease}.msg.user .bubble{background:linear-gradient(135deg,#3b82f6,#9333ea)}.msg.assistant .bubble{background:#1e293b}.time{font-size:11px;opacity:.4;margin-top:4px;display:block}.calendar-btn{display:inline-block;margin-top:8px;font-size:13px;color:#60a5fa;text-decoration:none}.calendar-btn:hover{text-decoration:underline}.typing span{display:inline-block;width:6px;height:6px;margin-right:4px;background:#94a3b8;border-radius:50%;animation:blink 1.2s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,to{opacity:.2;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.mic{margin-top:20px;position:relative;padding:16px;border-radius:16px;border:none;background:linear-gradient(135deg,#3b82f6,#9333ea);font-weight:600;cursor:pointer;overflow:hidden;transition:.2s}.mic:hover{transform:translateY(-2px)}.mic.active{background:linear-gradient(135deg,#ef4444,#f97316)}.pulse{position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle,rgba(255,255,255,.2),transparent);opacity:0}.mic.active .pulse{animation:pulse 1.2s infinite}@keyframes pulse{0%{opacity:.3;transform:scale(1)}to{opacity:0;transform:scale(1.6)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
